运维人必须掌握的5种常用运维监控工具
运维监控工具千千万,仅开源的解决方案就有流量监控(MRTG、Cacti、SmokePing、Graphite 等)和性能告警(Nagios、Zabbix、Zenoss Core、Ganglia、OpenTSDB等)可供选择。
并且每种软件都有自己的特点和功能,各自的侧重点和目标不完全相同,在设计理念和实现方法上也大同小异,但都具有共同特征。例如,采集数据、分析展示、告警以及简单的故障自动处理。最终都能达到对 IT 系统服务可用性的一个完全展示。
下面我们将针对目前行业内常用的五种监控工具(Cacti、Nagios、Zabbix、Grafana、Prometheus)详细介绍各自的特点。
Cacti
Cacti(英文含义为仙人掌)是一套基于 PHP、MySQL、SNMP 和 RRDtool开发的网络流量监测图形分析工具。
它通过 snmpget 来获取数据,使用 RRDtool 绘图,但使用者无须了解 RRDtool 复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、主机设备以及任何一张图,还可以与 LDAP 结合进行用户认证,同时也能自定义模板,在历史数据的展示监控方面,其功能相当不错。
Cacti 通过添加模板,使不同设备的监控添加具有可复用性,并且具备可自定义绘图的功能,具有强大的运算能力(数据的叠加功能)。
Nagios
Nagios 是一个企业级的监控系统,可监控服务的运行状态和网络信息等,并能监视所指定的本地或远程主机参数以及服务,同时提供异常告警通知功能等。
Nagios 可运行在 Linux 和 UNIX 平台上,同时提供一个可选的基于浏览器的Web 界面,以方便系统管理人员查看网络状态、各种系统问题,以及日志等。Nagios 的功能侧重于监控服务的可用性,能及时根据触发条件告警。
目前,Nagios 也占领了一定的市场份额,不过从观察来看,Nagios 并没有与时俱进,已经不能满足于多变的监控需求,架构的扩展性和使用的便捷性有待增强,其高级功能集成在商业版 Nagios XI 中。
Zabbix
Zabbix 是一个分布式监控系统,支持多种采集方式和采集客户端,有专用的Agent(代理),也可以支持 SNMP、IPMI、JMX、Telnet、SSH 等多种协议,它将采集到的数据存放到数据库,然后对其进行分析整理,达到条件触发告警。
Zabbix拥有良好的扩展性,同时它的功能十分丰富,可以监控CPU负荷、内存使用、磁盘使用、网络状况、端口监视、日志监视等。
但是因为消耗资源较多的缘故,如果监控的主机非常多时,可能会出现监控超时、告警超时等现象。
Prometheus
Prometheus 作为一个数据监控解决方案,它由一个大型社区支持,有来自700多家公司的6300个贡献者,13500个代码提交和7200个拉取请求。
Prometheus具有以下特性:
多维的数据模型(基于时间序列的Key、Value键值对)
灵活的查询和聚合语言PromQL
提供本地存储和分布式存储
通过基于HTTP的Pull模型采集时间序列数据
可利用Pushgateway(Prometheus的可选中间件)实现Push模式
可通过动态服务发现或静态配置发现目标机器
支持多种图表和数据大盘
Grafana
Grafana 是一款采用 go 语言编写的开源应用,主要用于大规模指标数据的可视化展现。
Grafana支持许多不同的数据源。每个数据源都有一个特定的查询编辑器,该编辑器定制的特性和功能是公开的特定数据来源。官方支持以下数据源:Graphite,Elasticsearch,InfluxDB,Prometheus,Cloudwatch,MySQL和OpenTSDB等。
每个数据源的查询语言和能力都是不同的。你可以把来自多个数据源的数据组合到一个仪表板,但每一个面板被绑定到一个特定的数据源,它就属于一个特定的组织。
每个监控工具的优势和能力都是不同的。你可以根据实际应用需求,选择适合的监控工具。