下面是我们平时会用到的一些监控手段,主要有logging,Metrics,Tracing。这些应该比价好理解。
- 日志: 就是我们平时会在代码中添加一些系统日志和业务日志
- Metrics: 对一些数据指标进行埋点,聚合和计算
- **Tracing: ** 链路追踪
一般我们排查报错的时候,主要的步骤就是根据错误,查看链路调用的上下文,结合具体的日志,一般的问题我们都可以解决掉。
从这个图中,我们可以看到,调试问题的主要手段还是依赖Tracing和Logs,少部分的场景下还需要借助Metrics。
而在监控告警部分,Metrics可以根据指定的规则或者设置的阈值进行告警,而左边心跳检测则会更早的发现系统中的问题。
Metrics一般做分层监控比较合理!如下:
- 系统层面: 一般指的是运维人员负责处理的监控,比如CPU,内存,网络等
- 应用层面: 多为业务开发人员负责的一些埋点
- 业务层面: 多为业务人员设计埋点,比如日活。
- Metrics收集器一般有两种方式去汇集数据,Pull或者服务方Push两种方式。
- 当数据到达Metrics收集器之后,一般是存储在时间序列数据库或者叫做Metrics中
- Metrics查询引擎可以查询数据,通过Dashboard展示或者Alters进行告警
大部分的监控告警模式都是如此。
Premetheus就是采用Pull的方式拉去服务的监控数据。一般采用Grafana进行展示。