监控背景:
监控所做的一切都是为了网关和服务出现异常时能快速知晓并定位、解决问题。因此需要实时知道这些指标的值,如果超出规定的范围发出通知(prometheus/flink)。开发者收到异常通知时能快速通过日志找到原因(ELK)。提高线上感知问题的能力,能迅速定位问题,用最小的成本把问题带来的损失降到最低。
目的:
- 掌握系统的运行状态,保障系统平稳运行
- 系统出现异常时,能及时告警或提前预警
- 事后追踪问题,通过日志或异常发生时的各种指标
- 性能分析
几个维度:
- 指标类:系统指标(服务是否健康,内存,cpu使用情况),业务指标(交易成功率),自定义指标
- 日志类:可以方便地查看系统日志
- 链路类:监控一个请求经过的链路,可分析其耗时
监控对象:
- 开放平台服务:系统健康状况,cpu占用率, jvm指标(gc次数及频率,线程数)
- 核心网关:交易成功率,业务异常率
- 中间件:mysql,es,redis cluster,zookeeper,kafka,activemq,linux指标及是否正常
在开放平台的应用:
- 目前使用prometheus+grafana对系统指标进行监控,包括各个服务,核心网关,数据库,中间件。
- 使用grafana展示网关交易情况,es为数据源,只做展示
- Kibana:网关交易的复杂计算,监控es
- 使用alertmanager告警,common-service暴露短信接口进行告警
使用ELK聚合日志,在管理端的运维查看画面:
- 通过流水号查看正常/异常的网关交易及链路日志
- 查看异常的服务日志,根据流水号查看详细日志
- Skywalking进行链路监控
- 使用redis-manager监控及运维redis集群
告警:
- Prometheus可对指标进行告警
flink cep
- 对网关交易感兴趣的报错码进行告警
- 对开放平台服务的日志关键字进行告警
示意图:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。