指标监控
应用程序的核心指标,不再是资源的使用情况,而是请求数、错误率和响应时间
**第一个,是应用进程的资源使用情况,**比如进程占用的 CPU、内存、磁盘 I/O、网络等。使用过多的系统资源,导致应用程序响应缓慢或者错误数升高,是一个最常见的性能问题。
**第二个,是应用程序之间调用情况,**比如调用频率、错误数、延时等。由于应用程序并不是孤立的,如果其依赖的其他应用出现了性能问题,应用自身性能也会受到影响。
**第三个,是应用程序内部核心逻辑的运行情况,**比如关键环节的耗时以及执行过程中的错误等。由于这是应用程序内部的状态,从外部通常无法直接获取到详细的性能数据。所以,应用程序在设计和开发时,就应该把这些指标提供出来,以便监控系统可以了解其内部运行状态。
可以使用 Zipkin、Jaeger、Pinpoint 等各类开源工具,来构建全链路跟踪系统。
(图片来自Jaeger 文档)
日志监控
经典的 ELK 架构图:
(图片来自elastic.co)
- Logstash 负责对从各个日志源采集日志,然后进行预处理,最后再把初步处理过的日志,发送给 Elasticsearch 进行索引。
- Elasticsearch 负责对日志进行索引,并提供了一个完整的全文搜索引擎,这样就可以方便你从日志中检索需要的数据。
- Kibana 则负责对日志进行可视化分析,包括日志搜索、处理以及绚丽的仪表板展示等。