系统监控方案:
当下主流的监控方案有三个,分别是:
- Zabbix
- Prometheus
- Open-falon
一、简介
Zabbix
zabbix是一个老牌监控系统,基于web界面的企业级开源监控软件。Zabbix服务器需要LAMP环境或LNMP环境,提供分布式系统监控与网络监视功能。其具备主机的性能监控,网络设备性能监控,数据库性能监控,多种告警方式,详细报表、图表的绘制等功能。监测对象可以是Linux或Windows服务器,也可以是路由器、交换机等网络设备,通过SNMP、zabbix Agent、PING、端口监视等方法提供对远程网络服务器等监控、数据收集等功能。
特点:可以监控服务器,路由器,交换机
Prometheus(普罗米修斯)
Prometheus是由SoundCloud开发的开源监控系统的开源版本。2016年,由Google发起的Linux基金会(Cloud Native Computing Foundation,CNCF)将Prometheus纳入其第二大开源项目。Prometheus在开源社区也十分活跃。Prometheus是与kubernetes是师兄弟关系,CNCF开源第一个项目是k8s,第二项目就是prometheus。
特点:更适合云环境下监控,特别是k8s系统下的服务监控
Open-falcon
Open-Falcon是小米运维部门开源出来的互联网企业级监控系统,目前包括小米、金山云、美团、京东金融、赶集网等都在使用Open-Falcon。Open-Falcon 整体可以分为两部分,即绘图组件、告警组件。
“绘图组件”负责数据的采集、收集、存储、归档、采样、查询、展示(Dashboard/Screen)等功能,可以单独工作,作为time-series data的一种存储展示方案。
“告警组件”负责告警策略配置(portal)、告警判定(judge)、告警处理(alarm/sender)、用户组管理(uic)等,
特点:国产监控系统,资料丰富
总结:
Zabbix文档资料较少,配置项不多,功能不够丰富,优点是直接可以在页面上进行配置;
Prometheus功能比Zabbix多,比Open-falcon少,配置项多但文档不够详细;Open-falcon功能丰富,官方文档也比较详细。
二、安装部署难度
Zabbix:
- 安装zabbix-server端
- 使用web页面配置
- 增加client端的监控都在web上完成
Prometheus
- 安装go 语言环境
- 在监控服务器上安装prometheus
- 在被监控环境上安装客户端export
- 安装grafana(可以不装)
Open-falcon
- 安装redis
- 安装mysql
- 安装go语言环境
- 安装后端模块
- 安装客户端模块
三、数据采集
zabbix
Zabbix 通过 SNMP、Agent、ICMP、SSH、IPMI 等对系统进行数据采集。数据量大时,展示需要直接读取数据库,会卡慢
节点监控规模:1000+
prometheus
Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。这样做非常适合做虚拟化环境监控系统,比如VM、Docker、Kubernetes等。输出被监控组件信息的HTTP接口被叫做exporter 。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux系统信息(包括磁盘、内存、CPU、网络等等)。
Prometheus采集的数据包括了主机性能监控、容器性能监控、Nginx访问流量、Kubernetes状态以及平台各个组件的性能指标。目前Prometheus本地数据指保留一个月,历史数据保存到M3DB中。
节点监控规模:1000+
Open-falcon
Open-falcon数据传输基于tcp协议。agent节点能自动获取到系统的基础监控指标,并上报给transfer,agent与transfer建立了TCP长连接,每隔60秒发送一次数据到transfer。
open-falcon的agent组件直接支持CPU、Load、内存、磁盘、IO、网络相关、内核参数、ss 统计输出、端口采集、核心服务的进程存活信息采集、关键业务进程资源消耗、NTP offset采集、DNS解析采集。还有第三方扩展组件可以支持更多的数据采集。
节点监控规模:1000+
四、数据存储
Zabbix
存储:mysql prostgresql
Zabbix存储在MySQL上,也可以存储在其他数据库服务。Zabbix由于使用了关系型数据存储时序数据,所以在监控大规模集群时常常在数据存储方面捉襟见肘。所以从Zabbix 4.2版本后开始支持TimescaleDB时序数据库,不过目前成熟度还不高。
Prometheus
存储:opentsdb
Prometheus自研一套高性能的时序数据库,在V3版本可以达到每秒千万级别的数据存储,通过对接第三方时序数据库扩展历史数据的存储。
为了解决单节点存储的限制,prometheus没有自己实现集群存储,而是提供了远程读写的接口,让用户自己选择合适的时序数据库来实现prometheus存储的扩展性。
Open-falcon
存储:归档用RRD 存储用mysql +redis+opentsdb
Open-Falcon都采用RDD数据存储,Open-Falcon还加入了一致性hash算法分片数据,并且可以对接到OpenTSDB。
RRD 全称是 Round Robin Database ,即「环型数据库」。顾名思义,它是一种循环使用存储空间的数据库,适用于存储和时间序列相关的数据。
RRD 数据库在被创建的时候就已经定义好了大小,当空间存储满了以后,又从头开始覆盖旧的数据,所以和其他线性增长的数据库不同,RRD 的大小可控且不用维护。
总结:
如果只是短期存储和查询,那么Prometheus、Open-falcon、zabbix现有的都能满足要求。但如果要对大量数据进行分析预测等过程,则三者都需要转用其他可接入spark、mapreduce等的数据库。Open-falcon需要进行二次开发,Prometheus提供了远程读写的接口。Zabbix后台用C开发,二次开发的难度比较大。
五、告警监控
1.Zabbix 可以实现复杂的多条报警信息
电话报警、邮件报警、微信报警、短信报警、报警升级机制等(无论什么报警都可以)。
2.Prometheuss
目前支持邮件、slack、微信和webhook,如果是对接钉钉,便可以通过webhook方式触发钉钉的客户端发送告警。
3.Open-falcon
短信、微信、邮件、电话。
可配置报警级别,比如P0/P1/P2等等,每个及别的报警都会对应不同的redis队列。
六、选择方案
安装复杂度 |
数据采集支持 |
数据存储难度 |
告警支持 |
|
Zabbix |
中 |
低 |
高 |
高 |
Prometheuss |
低 |
高 |
高 |
中 |
Open-falcon |
高 |
中 |
低 |
中 |
对比三种监控数据的各个特征指标,能够得出结论open-falcon不是功能最强大的,但是是使用最简单便捷的。特别是数据存储方面不用担心数据量一直增加而出现的磁盘问题,节省运维成本。同时考虑目前openlab系统的服务器规模,功能需求不复杂以及可能需要的告警扩展,open-falcon都能够满足需求。