监控系统
资料来源:极客时间->从0开始学微服务->15 | 如何搭建一个可靠的监控系统?
- ELK 的技术栈比较成熟,应用范围也比较广,除了可用作监控系统外,还可以用作日志查询
和分析。 - Graphite 是基于时间序列数据库存储的监控系统,并且提供了功能强大的各种聚合函数比如
sum、average、top5 等可用于监控分析,而且对外提供了 API 也可以接入其他图形化监控
系统如 Grafana。 - TICK 的核心在于其时间序列数据库 InfluxDB 的存储功能强大,且支持类似 SQL 语言的复杂
数据处理操作。 - Prometheus 的独特之处在于它采用了拉数据的方式,对业务影响较小,同时也采用了时间序
列数据库存储,而且支持独有的 PromQL 查询语言,功能强大而且简洁。
从对实时性要求角度考虑,时间序列数据库的实时性要好于 ELK,通常可以做到 10s 级别内的
延迟,如果对实时性敏感的话,建议选择时间序列数据库解决方案。
从使用的灵活性角度考虑,几种时间序列数据库的监控处理功能都要比 ELK 更加丰富,使用更
灵活也更现代化。
所以如果要搭建一套新的监控系统,建议可以考虑采用 Graphite、TICK 或者 Prometheus 其 中之一。不过 Graphite
还需要搭配数据采集系统比如 StatsD 或者 Collectd 使用,而且界面展 示建议使用 Grafana 接入 Graphite
的数据源,它的效果要比 Graphite Web 本身提供的界面美 观很多。TICK
提供了完整的监控系统框架,包括从数据采集、数据传输、数据处理再到数据展 示,不过在数据展示方面同样也建议用 Grafana 替换掉 TICK
默认的数据展示组件 Chronograf,这样展示效果更好。Prometheus 因为采用拉数据的方式,所以对业务的侵入性最 小,比较适合
Docker 封装好的云原生应用,比如 Kubernetes 默认就采用了 Prometheus 作为 监控系统。