系列开篇先介绍两个集成了多种监控指标的轮子:zabbix和aida64,后面再按每一类监控项讲一讲如何自己去实现。

一、zabbix

1. 简介:

老牌系统监控软件,分布式部署,可监控多台服务器的指标(硬件、软件层面的指标均有),支持主流的各大操作系统(zabbix-server不支持安装在windows),当前的主流大版是3.x, 4.x, 5.x。一套完整的zabbix监控系统,分为以下几个部分:

  • host
    被监控端,一般通过部署zabbix-agent的方式来收集数据。
  • host-group
    作为资源管理的一种形式,分组是一个逻辑上的概念,同组的服务器之间在各种意义上都不具有任何相关性,单纯人为地按“特定属性”进行规划。
  • zabbix-server
    主要用于数据存储、展示、资源管理,数据来自zabbix-agent,也支持SNMP, IPMI和JMX作为数据源。
  • zabbix-agent
    部署于被监控端(即host),收集各项指标并汇报给server。
  • zabbix-proxy
    代理端,在较大型的网络中才会使用,目的是替server分担管理上的和数据收集方面的压力。
  • item
    这是zabbix数据的基本单元,每个item有自己的值定义和具体数值,是一对KV键值对结构的数据。
  • trigger
    触发器本质是一个为item值设置的阈值,它决定了数据状态变化,例如硬盘占用这个item,当对应值发生变化触到trigger设定的线时,该项指标即被判定为Problem状态,而清理完数据后,item值将回落到正常水平,此时会再次触发trigger,将值标记为OK状态。
  • action
    由两部分组成:何种情况下,做何种动作;用于“报警/提醒”功能。
  • template
    这是一整套item, trigger, graphic等内容的集合,用于快速向指定host应用监控指标、监控展示等设置,例如向zabbix-server应用zabbix-server模板,向linux服务器应用Linux Servers模板,一旦应用,将会为host配置好各项监控,而无需人工一项一项手动添加。
  • Application这是相关度较高的一类item的集合,例如Memory这个Application,就包含了以下监控项:
    • Available memory
    • Free swap space
    • Free swap space in %
    • Memory utilization
    • Total memory
    • Total swap space

2. 安装(CentOS8.1 + Nginx1.14 + Mariadb10.3)
2.1 打开下载页面https://www.zabbix.com/download?zabbix=5.0,选择zabbix版本、安装环境(操作系统发行版、操作系统版本、数据库类型、WEB服务器)后,页面会提示所需安装的包有哪些。

主要的安装包如下:

  • zabbix-server-mysql,zabbix的核心部分,安装在zabbix-server角色服务器上;
  • zabbix-web-mysql,web前端资源,安装在zabbix-server角色服务器上;
  • zabbix-nginx-conf,nginx的vhost配置,安装在zabbix-server角色服务器上;
  • zabbix-agent, 安装在各个host,对监控指标进行数据收集的程序,在所有服务器上安装(zabbix-server服务器也需要监控,所以也要安装)。

2.2 软件的安装就不多罗嗦了,下载页面把所有用到的软件包、以及命令都列得很清楚,一步一步执行就行。流程是:

  • 所有服务器上安装zabbix源;
  • server上安装mariadb-server,然后再安装上述提到的四个包;
  • server上创建数据库并导入初始化数据文件;
  • server上配置php、zabbix-server.conf中的数据库信息、nginx相关的一些配置;
  • 登录zabbix-server的web后台,进行初始化安装;
  • 在包括zabbix-server在内的所有服务器上,安装zabbix-agent,并修改conf文件指定zabbix-server的位置。

3. 常见监控项登陆web管理后台,Monitoring -> Latest data下,可以查看每个监控项的最新值;除此之外,还可以查看zabbix利用监控项历史数据绘制出来的图形(也可以切换到text mode,直接查看历史值,不绘制图形)。

  • General
  • CPU
  • 文件系统
  • 网络接口
  • 内存

4. 视图模式

zabbix在查看一项item的历史曲线时,可以查看Graph模式下的历史曲线,也可以查看Text Mode下的历史值总记录。

  • 内存使用率(Graph Mode)
  • CPU使用率 (Values Mode)

以上所有这些常见的指标,像CPU、内存、硬盘、文件系统、网络接口等等信息,都是zabbix预设的监控项目,为特定Host分配Template后,系统会自动监控Template提供的item。除此之外,还可以借助脚本输出相关的值,为某一个复杂指标建立item进行监控。

5. zabbix-server作为数据源提供数据

zabbix集成了一套API,可以通过/api_jsonrpc.php这个接口进行调用,如果希望获取zabbix数据为自己所用,可通过指定的方法进行抓取(例如希望展示服务器最新状态的相关信息,可以利用item.get方法获取指定item的最新值)。

二、Aida64

与zabbix不同,这是一个适用于Windows操作系统的单机软件,用于系统的软/硬件综合信息采集,另外还提供了比较全面的基础性能测试功能。

1. 常用数据

aida64采集的数据覆盖了软硬件的方方面面,而且不仅采集动态的实时数据,还会提供硬件的基本配置信息查看。

1.1 CPU

1.2 内存

1.3 硬盘S.M.A.R.T信息

1.4 文件系统

1.5 网络

2. 报表

报表功能是aida64的另一项重要功能,它可以生成指定范围(或全部)的html/text/csv/xml等类型的报告。除了在软件界面手动创建报告任务,还可以在命令行指定相关参数来启动aida生成数据报表。

例如,希望生成CPU、内存和硬盘的使用率,以及硬盘S.M.A.R.T信息的报告,就可以在自定义选择里,选择主板大类下的CPU、内存,存储设备大类下的逻辑驱动器和SMART这几小项。

3. 命令行

命令行需要商务版才支持。软件GUI其实并不重要,如果我们需要定时获取系统资源,真正用到的是命令行,通过命令行对指定范围的项目创建报告,借此获取监控值。

生成报表的命令格式是:

aida64 /R D:\result.csv /CUSTOM D:\xxx.rpf /CSV
# result.csv 指定生成的报告文件位置
# /CUSTOM file.rpf 自定义报告,通过D:\xxx.rpf指定字段
# /CSV生成csv格式的报表
# D:\xxx.rpf 文件内容
InfoPage="Motherboard;CPU"
InfoPage="Motherboard;Memory"
InfoPage="Storage;Logical Drives"
InfoPage="Storage;SMART"

为命令行建立定时任务,就可以规律地持续获取系统状态值。如果把数据存入数据库,再按历史数据绘制曲线,即可实现zabbix一样的效果。如果有多台服务器需要监控,则需要在每台服务器运行,并将报表文件集中存放。