全链路监控是广义的概念,不仅仅指APM(Appliation Perfance Manager&Monitor),包含三大部分:
Loggong:日志覆盖系统日志,业务日志,框架日志
Mertic(指标或者度量):覆盖系统指标,业务指标,中间件指标
Trancing(追踪):覆盖微服务,存储,中间件
这三者结合起来构成完整的全链路监控体系。是梳理业务,排查问题的基石。
测试环境部署硬件最低要求(所有组件都是单台机器即可):
组件 | 作用 | CPU | 内存 | 磁盘类型 | 磁盘大小 |
---|---|---|---|---|---|
ElasticSearch集群1 | 统一存储日志 | 4核 | 32GB | SSD最好 | 500GB |
Kibana | 查看日志的平台 | 2核 | 4GB | 普通磁盘 | 500GB |
Logstash | 日志处理中间件 | 4核 | 16GB | 普通磁盘 | 500GB |
ElasticSearch集群2 | Skywalking Trace数据收集 | 4核 | 32GB | SSD最好 | 500GB |
Skywalking | Skywalking服务端 & 管理台 | 4核 | 16GB | 普通磁盘 | 500GB |
InfluxDb | 存储指标的时间序列数据库 | 4核 | 16GB | SSD最好 | 500GB |
Grafana | 查看指标的平台 | 2核 | 4GB | 普通磁盘 | 500GB |
监控详情讨论,监控覆盖的几个方面。
- Metrics线(蓝色)- 业务监控:
- 使用Spring Boot Actuator标准提供各种打点和应用程序健康信息的HTTP端点
- 由普罗米修斯服务器定时拉取信息
- 送入时间序列数据库Influxdb(Counter + Tags)
- 通过在Grafana配置监控Dashboard面板,实时监控程序的业务曲线(可以配置各种条件)
- Metrics线(蓝色)- 系统监控:(*不知道现在是不是这样,或者现在是用Zabbix的?)
- 使用普罗米修斯的Exporter来暴露各种系统指标和中间件的数据指标
- 由普罗米修斯服务器定时拉取信息
- 通过在Grafana配置监控Dashboard面板,实时进行系统监控
- 日志线(红色)- 程序日志保存:
- 由框架提供统一的日志服务行程标准化的日志(含全链路监控的Trace&Span&Tags)
- 由Filebeat代理收集服务器的日志送入Kafka消息队列进行缓冲
- 送入Logstash进行日志解析处理(邮件+IM报警?)
- 送入ElasticSearch集群保存日志数据
- 通过Kibana连接ElasticSearch进行应用程序日志搜索(允许直接搜索Trace)
- 日志线(红色)- 程序日志计算:
- 由框架提供统一的日志服务行程标准化的日志
- 由Filebeat代理收集服务器的日志送入Kafka消息队列进行缓冲
- 送入Flink进行实时计算
- 随后可以把日志送入数据仓库保存或把计算结果送入MySQL等
- 通过数据仓库等进行后续离线数据分析(机器学习etc.)
- 全链路监控线(绿色):
- 由Skywalking Agent收集全链路监控信息(服务调用+HTTP调用+数据源访问+MQ链路)
- 由Skywalking Collector收集处理数据
- 送入ElasticSearch集群保存监控数据
- 通过Skywalking UI管理台查看全链路监控