主流数据监控运维系统简单对比

  

系统监控方案:

当下主流的监控方案有三个,分别是:

  1. Zabbix
  2. Prometheus
  3. 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:

  1. 安装zabbix-server端
  2. 使用web页面配置
  3. 增加client端的监控都在web上完成

 

Prometheus

  1. 安装go 语言环境
  2. 在监控服务器上安装prometheus
  3. 在被监控环境上安装客户端export
  4. 安装grafana(可以不装)

 

Open-falcon

  1. 安装redis
  2. 安装mysql
  3. 安装go语言环境
  4. 安装后端模块
  5. 安装客户端模块

 

  

 三、数据采集

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都能够满足需求。

 

 

 

 

 

posted @ 2020-03-31 21:34  金色旭光  阅读(2810)  评论(0编辑  收藏  举报