为什么要做业务监控?
通常情况下,大部分企业都会做基础设施监控,觉得做好基础设施监控就可以解决大部分问题。至于业务方面监控,等有人来说了再处理就行。殊不知这种想法会有诸多隐患:
1、运维比业务部门经常晚发现业务有问题。
因为业务有问题会最先爆出来,等到基础设施出问题往往已经过了几分钟了。此时业务可能已经焦头烂额了。
2、由于发现业务问题较晚,这个时候有相互调用关系的业务可能也出现了问题。
导致业务故障定位较困难。如果做了业务监控,且做到妙极监控,那么当大量业务出现问题时,我们就能根据最先告警的来判断是哪个业务故障引起的。
3、危害公司利益和自身前途。
第三点也是最要命的,由于上述两个问题导致运维在业务部门乃至整个公司留下不良的影响,长此以往不仅会给公司带来经济损失,对自己的前途也是非常不利的。
因此做好业务监控,可以说是每个运维人员必须要完成的一个任务。
业务监控要做哪些?
1、Web站点监控
对公网服务的Web站点,无论是SAAS的还是在我们自己部署的站点都需要进行站点URL监控。公网站点监控建议使用商业服务进行监控,因为这些服务通常可以从多个地域来检测你当前站点的访问情况,通常是站点状态码和响应速度的监控。
对内网服务的Web站点也需要监控,因为内网是无法从公网访问的,所以内网建议使用自建Prometheus去监控站点的状态和响应速度。
2、健康检查接口
此处做服务健康检查接口监控,提供一个或多个监控API,监控应用自身状态、监控应用和数据库连接状态,监控应用和中间件连接状态。
健康检查接口建议统一使用/health路径的接口,如果是三个接口那么/app_health代表服务、/db_name_health代表数据库连接状态、/middleware_name_health代表中间件连接状态。
单独接口返回APP_OK,db_name_OK,middleware_name_OK,多个接口返回OK表示服务和数据库和中间件正常。
有些JAVA的Sprint框架是自带健康检查接口的,这些直接使用即可。
3、日志监控
首先,所有业务日志要接入日志中心。哪些关键字需要做告警?需要项目经理和开发负责人讨论给出。确保有必要的关键字做告警,避免告警的泛滥。
4、链路追踪
链路追踪可以有选择性的接入,如果业务比较简单平时运行着也没有什么问题可以不用接入。一般业务如果上下游调用链较多,且业务逻辑比较复杂,同时会有大并发需求,对响应速度要求也比较高的可以接入。
主要给用户解决找出响应时间较长的API,并查看是否函数中存在问题。有些商业的链路追踪工具还可以看到SQL语句的问题。这些都可以帮助开发人员更好更快的解决业务代码中的问题。
5、大屏监控
针对业务大屏,首先我们要考虑哪些业务数据要放到大屏中?这里建议放业务负责人或管理层关心的数据。比如:
· 用户在线人数。
· 用户订单实时量数据。
这些数据能让业务负责人或管理层直观的看到当前的业务状况.还可以针对一些预估的异常值进行告警配置。
如何做好业务监控
做好业务监控并不容易,所以这也是很多企业没有做或做的不够完善的原因。要做好业务监控得一步步来。首先,你要有业务监控其次我们需要对业务监控进行梳理,确保所有的监控项都是有意义的。最后,我们要有业务监控巡检和告警处理的流程和机制,确保所有业务监控被发现和及时处理。
另外,业务监控并非仅限于上面所描述的5类,如果一个企业有和业务相关的需要被监控,且并不再上面描述的类型中,都可以通过一些工具或自定义的手段来完成定制化的业务监控需求。
做好业务监控,我们才能让运维的价值得到充分的体现。