监控系统是整个 IT 架构中的重中之重,小到故障排查、问题定位,大到业务预测、运营管理,都离不开监控系统,可以说一个稳定、健康的 IT 架构中必然会有一个可信赖的监控系统。本文介绍了一些好用的开源监控工具,以供开发人员参考。
1.Prometheus
这是云原生应用程序最受认可的时间序列监控解决方案,由 CNCF 托管,使用 Go 语言开发,是 Google BorgMon 监控系统的类似实现。该方案使用的是 Pull 模型,Prometheus Server 通过 HTTP 的 pull 方式到各个目标拉取监控数据。
2.Graphite
这是一款用 Python 写的开源企业级监控绘图工具,可以在廉价机硬件上运行。它是一个基于推送的系统,通过让应用程序推送数据到 Graphite 的 Carbon 组件中,从应用程序接收数据,实时收集、存储、显示时间序列类型的数据。
3.InfluxDB
这是一个相对较新的时序数据库,使用 Go 语言编写,不需要外部依赖,安装配置也非常方便,适合构建大型分布式系统的监控系统。其设计目标是实现分布式和水平伸缩扩展。
4.OpenTSDB
这是一个基于 HBase 的分布式、可伸缩的时序数据库,确切地说,二手QQ购买只是一个 HBase 的应用。它的主要用途就是做监控系统,例如收集大规模集群(包括网络设备、操作系统、应用程序、环境状态)的监控数据并进行存储、查询。
5.ELK
它是 Elasticsearch、Logstash 和 Kibana 的缩写,在实时数据检索和分析场合中,三者通常是配合共用的,是市场上最受欢迎的开源日志聚合工具。Elasticsearch 本质上是一个 NoSQL,以 Lucene 搜索引擎实现。Logstash 是一个日志管道系统,可以提取、转换数据并将其加载到像 Elasticsearch 这样的商店中。Kibana 是 Elasticsearch 之上的可视化层。
6.Graylog
这是一个强大的日志管理、分析工具,基于 Elasticsearch、Java 和 MongoDB,这使得它像 ELK 堆栈一样运行起来很复杂,甚至更加复杂。但是,Graylog 开源版本带有内置的警报,以及其他一些值得注意的功能,如流式传输,消息重写和地理定位等问题。