系统监控“供给侧改革”之“需求匹配” ,鞍钢数据中心系统运维监控平台建设实践

2021-09-08 11:34:12 浏览数 (1)

本文整理自冉令楠在Zabbix forum深圳站的演讲。

冉令楠,鞍钢集团信息产业有限公司项目经理,鞍钢数据中心系统运维监控平台建设负责人。

点击获取ppt

从2019年开始使用Zabbix就参加Zabbix大会,因为每届大会都有许多业内专家进行技术分享,我都认真学习,受益匪浅。今天我分享的主题是系统监控供给侧改革之需求匹配,标题很时髦,从题目可以看出要讲的是如何更好地满足需求。从用户的需求方面来分享在系统运维监控平台建设推广阶段,如何简单快速的满足用户的关键需求,用户的需求就是我的需求。

1 场景需求介绍

2018年由我公司承建的鞍钢数据中心建成投运,建筑面积5000平米。截止目前数据中心有柜120个,物理服务器300多台,GPU约7000c,内存约18TB,存储量约600TB,虚拟机约700套,承载的运用系统近百套,主要为鞍钢集团各子企业提供高性能、高可用性、高可扩展和高安全性的软硬件平台及技术支持。

我们数据中心承载的业务系统有许多,业主单位、开发单位、运维单位也有许多,有的是我们鞍钢自己的,有的是鞍钢内部其他单位的,还有的是鞍钢外部单位。

2 监控平台服务需求

随着承载业务量的增加,为了提高数据中心的服务质量和水平,从2019年开始,我们着手研究和搭建我们自己的系统运维监控平台。在时间有限,人员有限技术有限的情况下,从用户需求出发,聚焦用户关键需求,最大限度的匹配用户关键需求,是我们建设监控平台初期的首要宗旨。

从应用角度来看,我们数据中心的用户分为两类,一类是开发使用运维都是我们鞍信自己来做,另一类是开发使用运维中有某些个环节不是鞍信来做。对于要在被监控对象上安装agent来实现监控这个问题上,这两类用户有不同的想法。

对于我们自己的系统,采用什么方式来监控都没有异议,反正都是我们自己人,如果出了问题也都好商量解决。但对于他人的系统,无论是不是我们负责任运维,这些用户都不愿意接受在他们的系统里安装agent来实现监控。他们觉得你在我的系统里安装agent,会占用我的系统资源,会增加我的系统负载。出了问题就是你的agent造成的。

既然监控需求端提出了要求,我们监控供给侧一定要想办法匹配,同时也是为了避免麻烦和解释。经过统筹考虑,我们选择在能够满足监控需求的情况下,首选无代理方式来实现监控。我也很理解那些用户的想法,这就类似于看病,如果能通过中医号脉就能查清病症,没有人愿意下胃管下肠镜或者开刀,支持无代理的监控方式,也是我们在众多开源监控软件中选择Zabbix的重要原因之一。

在监控系统使用之初能够让用户广泛接纳也是很重要的。之前确实有一些监控产品,因为需要安装使用agent被用户拒绝使用。在社区群交流中,有人说agent不香吗?为什么不用agent?但这是没法强求用户接受的。其实用户并不关心你的监控平台架构是如何搭建的,也不会关注我们的监控功能是如何实现的,用户更关注自己的监控需求是否能被满足。

既然是决定使用无代理的方式来实现监控,用户的关键需求是不是都能够满足呢?我们把各系统用户的监控需求做了个梳理,主要有三大类,操作系统、数据库和应用服务。因为绝大多数应用系统都是部署在我们的金刚云上,所以对于硬件的异常情况,应用系统用户并不太关心,反而是我们数据中心自己比较关心。

3 agentless下的agent借用

agent跳转机

在研究使用在Zabbix一段时间后,我们发现对于一些监控指标的获取,这种方式是可以实现的。我们的方法是建立独立的agent跳转机。大家都知道如果要使用Zabbix agent模板及监控项必须安装Zabbix agent。既然是不允许在被监控对象上安装,我们就单独找个机器安装。我们称这台安装zabbix agent的机器为agent跳转机,我们既可以从这台agent跳转机通过各种协议远程连接到被监控对象采集监控数据,又可以通过它将监控数据上传给zabbix server。下面我就以三个例子来阐述一下,使用这种方式对数据库JVM、DNS监控的具体实现。

常规使用ODBC监控 - 数据库

对数据库的监控,常规套路如果不使用zabbix agent,若要实现对数据库的监控,需要在zabbix server机器上对odbc.ini文件进行编辑,在其中添加被监控数据库实例的IP、端口号、数据库ID、用户名及口令等连接参数,使zabbix server能够通过odbc连接到这个数据库实例。之后在zabbix web端添加被监控主机,创建database monitor类型监控项,实现对数据库实例运行状态的监控。但是这种方式要求所有数据库的连接都是通过zabbix server服务器来实现的,如果被监控数据库有很多的话,势必会对zabbix server服务器造成很大的压力。而zabbix server是我们监控系统的核心,是重点保护对象,显然这种实现方式不理想,而且这种方式也无法服用系统自带的zabbix agent类型模板及监控项。

我以监控两套mysql数据库实例为例,介绍采用agent跳转机是如何实现对数据库的监控的。总共9步。

更多ppt内容请联系填表获取

使用agent跳转机监控-JVM

使用agent跳转机监控-DNS

总结:

  • 只要是能够通过IP及端口号进行远程连接访问的监控数据,基本都可以利用agent跳转机来实现。
  • 即使不在被监控对象上安装agent仍然可以使用zabbix agent类型模板及监控项来实现监控。
  • 可以最大限度的服用,这个是系统自带的监控模板及监控校
  • 用户很易于接受。

4 agentless下的标准服务

但是还有一些不能直接通过IPC端口号实现远程访问的监控需求,在不安装agent的情况下怎么来实现呢?

为了不让用户有疑虑,思路还是能用系统自带的标准服务来实现的,就首选使用标准服务。对于服务器硬件状态监控,我们开启了服务器带外管理的snmp服务,通过snmp标准服务来获取服务器硬件状态。

我们数据中心还有一些IBM小型机,使用hmc来统一管理,对于这些小型机的硬件状态,就统一使用hmc来读取。在zabbix外部端直接建立ssh agent的监控项指向 hmc,就相当于通过ssh连接hmc,在hmc上执行监控项目中定义的shell命令。之后将shall命令执行的结果返回给zabbix server就可以了。主要是在hm上可以执行的命令,基本都可以通过这种方式来实现,因为小型机的硬件状态在hmc系上基本都可以获取,所以用这种方式很管用。

对于操作系统的性能监控,我们也是使用操作系统自带的snmp服务来实现的,对于CPU使用率、内存使用率、文件系统使用率、网卡流量等等这些常规数据都能获取。但对于用户比较关心的磁盘IO、snmp无法获取。在Zabbix5.0版本,我们可以使用监控项的预处理,取每秒的变化量,间接作为磁盘IO的值。

对于外部服务监控,使用zabbix系统自带的web监控,或者是simple check就可以实现。要说到的还有一个需求,按正常套路好像不太好实现。现在的zabbix监控系统要求zabbix server或者是zabbix proxy要与被监控对象是可联通的,但这种以zabbix server和zabbix proxy为中心的新型架构中,若要监控两个被监控对象间的通讯状态就不太好实现。

如图所示, zabbix server实现了对系统一和系统二两台服务系统的监控,但现在想监控系统一和系统二之间的通信情况怎么弄?针对这个需求,我们还是利用了ssh agent或者是Telnet agent或者是 External Check将相应的shell命令发送到系统一或者系统二上来,监控其与对方的通信状态。

通过上述这些方式,对于各类系统的关键监控需求,在不使用agent的方式下,也在尽可能利用agent现有模板及现有监控项,且不增加在这个server服务器负载的情况下得以实现。如果从高可用负载均衡的角度考虑,也可以按数据库和其他远程服务等监控对象分类,部署多台agent的跳转机。当然未来对于一些复杂的监控需求,在必要的时候,我们也还是会考虑使用zabbix agent的。

5 期盼功能

我对zabbix是一见钟情,对zabbix是寄予厚望,所以有一些功能看看咱们zabbix可不可以考虑解决一下。

第一个,俗语说得好,打铁还需自身硬。监控平台只有自身健壮才能完成对其他系统的监控任务,但现在我觉得监控平台,数据库本身的管理是监控平台的一个薄弱环节,使用zabbix的人并不都是数据库管理员,在咱们的社区群交流中可以看出,有的使用者的数据库管理能力是很有限的。更何况现在监控平台使用的数据库还在演进,从之前mysql到现在的pgsql,想要很快的提高各种数据库的管理技能,也是需要时间的。

我认为监控平台自身的数据库在其使用上有其典型性和通用性。例如持续性强,数据量大,完全可以形成治理的通用方案。如果能够制定一套监控平台自身数据库的优化方案及监控模板,既可以使监控平台更健壮,也可以降低监控平台使用的难度和技术门槛,我觉得这个是需要优先解决的需求。

第二个,能不能提供APM端到端性能监控,真的是只想用一套监控软件来完成各类监控需求,不想用多少套。如果咱们Zabbix是能实现APM,我就是咱们zabbix的绝对忠粉。

第三个,能不能实现方便的日志提取分析。日志很多时候是事前预警的重要的一环,zabbix监控好像没有太好的实现方式。

第四个,我们现在对用户开放的是grafana端的大屏展示,所以希望用户想看的内容都可以通过grafana来实现。尤其是一些统计数据,不想让用户看图的时候用的是grafana,看统计数据的时候用的是zabbix web,这样的来回切换不太好。现在对于用户想看的数据,通过在zabbix基本都能采集上来,但有些类型数据在grafana上显示格式不太好,例如txt类型的数据在grafana上显示空格等对其格式化的处理支持的不好,就像ppt显示的那样,很不好看。不知道这个有没有什么好的处理办法。

以上就是我要分享的内容,谢谢大家。

0 人点赞