Zabbix 系统监控详解

1 介绍

1.1 摘要

本文深入浅出,切近实际运维应用,由 zabbix 3.4 版本入手,学习 zabbix 监控告警实现方式,由 zabbix 5.0 浅出实现快速部署、快速应用。本人从业多年,关注 zabbix 开源社区,以及 zabbix 官方组织的各种峰会,了解到的前沿技术,因随着运维监控软件的不断发展,未来软件将是开箱即用的模式,运维人员在使用监控软件,不必再去花精力编写运维监控程序,而是完善监控项,这样的方式对于初学者越来越不容易学习。因此,学习 zabbix 3.4 版本是非常必要的, zabbix 官方那时候还没有集成更多的模板以直接使用,那里有大量的监控项需要自己编写实现,不仅全面了解了 zabbix ,也是对 linux 命令、 shell 脚本、 Python 语言等的很好学习,也有助于二次开发,自定义监控项的配置。

1.2 背景

以下是部署实施基于 zabbix 监控系统的建设背景,以解决诸多运维实际问题:

目前公司系统运维主要采用人工检查的方式,问题发现的时效性较低,容易出现问题不被立刻发现,人工也容易疏忽漏查,导致问题处理不及时,影响信息化系统服务效果,就需要更好保障系统稳定运行。

公司信息化系统、操作系统、设备种类多,各类信息化系统如:OA 、 U9 , PLM 、企业邮箱等,又有 Linux 、 Windows 、 VMware 、 EMC 等系统,设备有服务器、交换机、存储等,机房环境有动环系统进行监测。如此众多的信息化系统平台,当然需要统一运维界面,实时监测各系统运行状况,为运维工作提供便利。

为适应时代的发展,未来是个智能化的时代,运维工作要实现自动化,运维工作者要向开发去转变,开发即运维,或许有一天人工智能将代替运维人员,而今的运维人员希望是人工智能创造者的一份子,了解自动化运维,与时俱进是非常必要的。

综上,为了提高运维效率,节约人力资源,对设备、机房环境实时监控,能有效、实时发出告警信息,从而及时发现问题快速响应。急需一套能满足以上需求的监控系统,经考量 zabbix 监控系统应用广泛,可实现上述功能。

1.3 系统简介

Zabbix 是一个企业级解决方案,支持实时监控数千台服务器,虚拟机和网络设备,采集百万级监控指标。Zabbix 完全开源免费。

Zabbix 的主要特点有:

  1. 指标收集:从任何设备、系统、应用程序上进行指标采集
  2. 问题监测:定义智能阈值
  3. 可视化:单一界面管理平台
  4. 告警和修复:确保及时、有效的告警
  5. 安全和认证:保护您所有层级的数据
  6. 轻松搭建部署:大批模板,开箱即用,节省您宝贵的时间
  7. 自动发现:自动监控大型动态环境
  8. 分布式监控:无限制扩展
  9. ZABBIX API :将 Zabbix 集成到您 IT 环境的其他任何部分

1.4 名词术语

Zabbix 系统有一些自己定义的专业术语,为更好的熟悉系统名词,下面主要介绍本文以及 zabbix 常用的术语。

主机( host)

一台你想监控的服务器、工作站、交换机等网络设备,用 IP 或者域名表示。

主机组( host group)

多台具有某种相同角色、属性的集合。例如,所有 windows 服务器放在一个叫 “windows server” 的主机组中。

监控项( item)

你想要监控、获取主机或主机组的哪些数据。例如:我想监控所有机器的 CPU 使用情况,则需要建一个监控项,用于获取所有服务器的 CPU 使用率。

触发器( trigger)

由逻辑表达式组成的按照预先设置好的阀值来评估由监控项采集到的数据。触发器有两种状态,分别为 “ 问题 ” 和 “ 已解决 ” 。例如:在上述通过监控项获取了 CPU 的使用率,假如我想超过 CPU 使用超过 80% 的就预警,则可以创建一个触发器,当监控项获取的值超过 80% 时就按照预设的情况报警,状态为 “ 问题 ” ;低于 80% 时认为报警解除,状态恢复为 “ 已解决 ” 。

事件( event)

单次发生的需要注意的事情,例如上述触发器状态由问题变成了正常或者由正常变成了问题,均可以称为一个事件。事件包括触发器事件、自动发现事件、自动注册事件和内部事件 4 个部分。

动作( action)

一个对事件做出反应的预定义的操作;例如 CPU 使用超过 80% 时,触发器状态变成了问题,即产生了一个事件,我们可以针对此事件预设一个动作(比如执行命令 reboot ),则系统会自动针对此事件的预设动作执行命令 reboot 。

媒介( media)

发送告警通知的手段或途径。例如:当 CPU 超过 80% 报警后,通过媒介(邮件、短信、自定义脚本、微信等)形式告知。

模板( template)

一组可以被应用到一个或多个主机上的实体(监控项,触发器,图形,聚合图形,应用, web 场景等)的集合。简单的说,即多个监控项的集合。

应用集( application)

一组监控项组成的逻辑分组。例如, CPU 的监控项,归集至 cpu ,在想查看有关 cpu 方面的信息时,可以直接在界面上提供的搜索框内查询所有有关 cpu 的信息。

zabbix server

zabbix 系统实现监控的核心程序,主要功能是与被监控主机、代理机等进行交互、触发器计算、发送告警通知、收集数据并存储等。

zabbix agent

一个部署在监控对象上的,能够主动监控本地资源和应用的程序;一般来讲,我们需要在所有被监控服务器上安装此程序。

zabbix proxy

一个帮助 zabbix server 收集数据,分担 zabbix server 的负载压力的程序;另外,还可以用在 server 与 agent 机器网络不通,使用 proxy 作为网络代理,实现两者的通信功能。

1.5 系统架构

系统结构说明:由 web 、 linux 、 php 、 mysql 等组件部署安装,实现 zabbix server 服务端;由被监控对象例如:Windows 系统, linux 系统、 Vmware 虚拟化平台、交换机,存储等组成了 agent 端。Zabbix server 可采用主动模式,获取 agent 上数据,也可采用被动模式,接收 agent 定时发送的数据。

2 指标

2.1 软件版本

版本选择说明:目前 zabbix 3 版本成熟稳定,各大企业公司运维监控系统运行于该平台上,提供的监控项比 zabbix 第 1 和 2 版本丰富,完全能满足监控对象的需要;至今 zabbix 第 3 版已持续发布 4 年多时间,开源系统积累了大量的资料与研究人员,可供交流学习,能很好服务于 zabbix 定制化;zabbix 4.0 版本 2018 年 10 月正式发布, 4.2 版本于 2019 年 4 月正式发布,目前最新的是 zabbix 5.2 版本,版本持续更新满足未来升级发展的需要,新版本增加了 ELK 、时序数据库,以及前端 web 优化,但监控本质并未发生大的变化。

2.1 硬件指标

Zabbix 可以运行于虚拟环境也可以部署在服务器上,因 zabbix 采集数据主要是文本,对网络带宽要求不高,千兆速率足矣,只要满足性能上的要求即可,主要为 CPU 、内存和硬盘三项。结合 zabbix 官网给出的指标、实际监控项数量、历史记录保存时间长度。根据上表的参考标准,测试环境建议小型化部署。

名称CPU/内存数据库可监控主机数量
小型4核心/16GMySQL + 500GB普通硬盘500台以内
中型4核心/32GMySQL + 500GB普通硬盘500-1000台
大型8核心/64GMySQL + 1TB RAID存储盘1000-3000台
超大型16核心/128GMySQL + 2TB RAID存储盘3000台以上

3 安装部署

Zabbix 安装方式主要是两种:1 、 yum 源安装 2 、 zabbix 源码安装,安装方法互联网上搜索非常多,这里就不再阐述。主要安装组件:PHP 、 Apache 或 Nginx 、 Mysql 、 Zabbix 软件包。

4 windows 系统状态监控

本节介绍实现对 windows 系统状态监控。使用zabbix 3.4版本,一起了解学习zabbix监控数据采集过程,这样对我们自定义监控项非常有帮助,提供方法扩展思路 。诚然zabbix 5.0 版本等高版本,许多监控项已经被zabbix agent集成,但那并不利于初学者学习与实践。

通过在被监控主机上,部署安装 zabbix_agent ,实现事件查看器监控、 CPU 监控、内存监控、磁盘读写监控、磁盘容量监控、网卡流量监控、系统时间监控、系统进程和服务监控。

考虑到公司使用的服务器目前多数为 windows server ,对于个别服务器安装了PC 操作系统不深入研究,经测试 Windows 版本支持情况如下表:

版本是否支持备注
Windows server 2003需要运行32位程序
Windows server 2008
Windows server 2012
Windows 7
Windows 10测试zabbix-agent程序有报错

4.1 windows 部署 zabbix_agent

为了监控 window 系统,首先需要在该系统下部署 zabbix_agent 代理,用于收集该系统信息。

自研程序包列表:

角色安装包说明适用版本
基于zabbix-agent-3.4.6Zabbix目录bin conf scriptWindows server 2003、2008、2012

4.1.1 解压安装

Zabbix agent 的原始文件为 zabbix_agents_3.4.6.win.zip ,一般部署是:解压在 window 服务器 C 盘根目录下,再改写 conf 下的配置文件。为了部署方便快捷,现提供已经配置成熟的 zabbix 目录,直接复制 zabbix 目录到 window 服务器的 C 盘根目录下,最后进行程序安装和启动。因此,涉及 C:zabbixscriptconfzabbix_agentd.win.conf 文件的均可以忽略,供学习与交流。

cmd 或 powershell 下安装和启停命令如下:
cd C:zabbixbinwin64
.zabbix_agentd.exe -c C:zabbixconfzabbix_agentd.win.conf -i 安装
.zabbix_agentd.exe -c C:zabbixconfzabbix_agentd.win.conf -s 启动
.zabbix_agentd.exe -c C:zabbixconfzabbix_agentd.win.conf -x 停止

4.1.2 添加端口

Windows 防火墙需要添加端口的出站和入站规则,将 TCP 协议 10050 、 10051 端口开放。不然 zabbix 主动或被动模式就获取不到该设备的数据。10050 10051 是 zabbix 程序使用端口。

4.1.3 配置自启动

Zabbix agent 安装过程中,会自动将 zabbix agent 服务、开机自启动配置好,只需要检查下, agent 是否正常运行即可。

4.2 windows 事件查看器监控

对 windows 系统下 事件查看器中系统日志进行监控和信息获取,将事件查看器中的错误( Error )、关键( Critical )等系统、程序重要信息打印在 zabbix 界面中,也可以添加监控项,触发器来针对某个信息实现告警。例如:当事件查看器中,有磁盘坏块告警信息时, zabbix 界面会进行告警提示。或是配合研发部门程序日志,程序可将告警信息写入到事件查看器中,zabbix 对其进行监控告警。

4.2.1 zabbix 官网指导说明

https://www.zabbix.com/documentation/3.4/manual/config/items/itemtypes/zabbix_agent/win_keys

截图如下:

4.2.2 创建监控项

类型:必须是 zabbix 客户端(主动式)
键值:参考 zabbix 官方文档,例子

eventlog[System,,"Critical|Error"] 将事件查看器中 “ 系统 ” 栏中 “Critical|Error” 类型的信息过滤出来

eventlog[System,,"Error",".Disk."] 事件查看器中 “ 系统 ” 栏中 “Critical|Error” 类型的信息过滤,并使用正则表达式匹配详细信息中的来源:Disk 的关键字

eventlog[Security,,"Success Audit",,^4624$,,skip].nodata(60)}=0 and

eventlog[Security,,"Success Audit",,^4624$,,skip].regexp(administrator,1)}=0

如果在 60 秒内有监控到数据,并且监控内容不包含字符串 "administrator" 则触发告警,如果 60 秒内没有新的数据了,则触发器恢复 OK 。简单点说就是,用户登录后触发器触发至少会持续 60 秒,如果用户不断的登录成功,间隔小于 60 秒,则触发器一直是 problem 状态。

应用集:Event 事件日志

4.2.3 创建触发器

名称:{HOST.NAME} 代表主机名

表达式:添加 “ 最新一条日志级别不等于 N” , N 取值是 0 、 1 或其他, 0 表示正常, 1 和其他值表示不正常。所以 N 取值不等于 0 ,触发告警。

4.2.4 事件查看器注意事项

系统:System 安全:Security

级别:错误( Error )、关键( Critical )、信息( Information )等,参考 zabbix 官网指导说明

来源:一定要看详细信息中的 Provider Name ,次截图上,详细信息与常规来源不一致,一个是 Microsoft-Windows-TerminalServices-Printers ,一个是 TerminalServices-Printers 。容易导致正则匹配出错,建议使用含有匹配的方式。

4.2.5 监控结果

4.3 windows 系统 CPU 监控

4.3.1 监控 CPU 使用率

因为 zabbix 未提供能查看 cpu 使用率的监控项,只提供了 cpu 负载的监控项,就需新增建监控项,监控 CPU 用户使用率与其类似,不再说明。(zabbix 3.4版本)

4.3.2 创建监控项

名称:CPU 使用率

键值:为了规范命名 cpu_time

信息类型:浮点数

更新时间:1m

单位:%

应用集:CPU 状态

4.3.3 创建触发器

名称:CPU 使用率过高:{HOST.NAME}

表达式:{Windows Server Model:cpu_time.avg(5m)}>90 5 分钟均值大于 90% 告警

4.3.4 配置图形

注:根据需要调整绘图风格

4.3.5 配置 zabbix_agentd.win.conf

最后行添加

# CPU 使用率
PerfCounter=cpu_time,"Processor(_Total)% Processor Time",60
# CPU 用户使用率
PerfCounter=cpu_usertime,"Processor(_Total)% User Time",60

注:cpu_time 为 zabbix 界面上监控项配置的键值,虽然可以自定义,但要规范命名。
60 为数据更新时间,单位秒,要小于等于 zabbix 界面上监控项配置 “ 更新时间 ” ,这样才有更新的意义。

配置完成后,重启 zabbix_agentd 生效

cd C:zabbixbinwin64
.zabbix_agentd.exe -c C:zabbixconfzabbix_agentd.win.conf -x
.zabbix_agentd.exe -c C:zabbixconfzabbix_agentd.win.conf -s

4.3.6 监控结果

4.4 windows 系统内存监控

应用集:Memory 内存状态

Memory 内存状态主要监控项有:Memory 内存使用率、 Memory 内存使用量、 Memory 内存总量(带上 Memory 方便了排序归类)。Swap 交换分区使用率、 Swap 交换分区使用量、 Swap 交换分区总量。

zabbix 自带内存监控项,可以直接创建使用。

监控项配置:

说明:windows 系统下没有支持 system.swap.size[pused] , swap 使用率监控项,一般 swap 分区被使用了,就可以说明物理内存不足,可以使用 pfree 替代。

4.4.1 创建监控项

以监控内存使用率为例:

名称:内存使用率

键值:vm.memory.size[pused]

其他键值:vm.memory.size[used] vm.memory.size[total]

信息类型:浮点数

更新时间:1m

单位:%

应用集:Memory 内存状态

4.4.2 创建触发器

名称:内存使用率过高:{HOST.NAME}

表达式:{Windows Server Model:vm.memory.size[pused].avg(5m)}>90 5 分钟均值大于 90% 告警

4.4.3 配置图形

4.4.5 监控结果

4.5 windows 磁盘读写监控

Windows 下磁盘监控,可以细分到监控各个磁盘数据如 C 、 D 、 E 等,目前未想到到自发现规则配置,就对所有磁盘进行监控取总体值,以总体值为例进行监控配置。

细分:

LogicalDisk(E:)Disk Write Bytes/sec

LogicalDisk(C:)Disk Write Bytes/sec

LogicalDisk(D:)Disk Write Bytes/sec

LogicalDisk(_Total)Disk Write Bytes/sec

总体:

PhysicalDisk(_Total)Disk Read Bytes/sec

4.5.1 创建监控项

磁盘读写监控项较多,配置监控项如下图:

键值:

disk_read_speed 、 disk_write_speed 、 disk_free_percent 、 disk_rw_percent 、 disk_rw_percent 等。

C:zabbixscriptconfzabbix_agentd.win.conf 文件配置为:

# Disk 磁盘读速率 Bytes/s
PerfCounter=disk_read_speed,"PhysicalDisk(_Total)Disk Read Bytes/sec",60

# Disk 磁盘写速率 Bytes/s
PerfCounter=disk_write_speed,"PhysicalDisk(_Total)Disk Write Bytes/sec",60

# Disk 磁盘空闲状态百分比
PerfCounter=disk_free_percent,"PhysicalDisk(_Total)% Idle Time",60

# Disk 磁盘读和写总共用时百分比
PerfCounter=disk_rw_percent,"PhysicalDisk(_Total)% Disk Time",60

# Disk 磁盘读用时百分比
PerfCounter=disk_read_percent,"PhysicalDisk(_Total)% Disk Read Time",60

# Disk 磁盘写用时百分比
PerfCounter=disk_write_percent,"PhysicalDisk(_Total)% Disk Write Time",60

# Disk 磁盘平均读写队列长度
PerfCounter=disk_queue_length,"PhysicalDisk(_Total)Avg. Disk Queue Length",60

# Disk 磁盘平均读队列长度
PerfCounter=disk_read_queue_length,"PhysicalDisk(_Total)Avg. Disk Read Queue Length",60

# Disk 磁盘平均读队列长度
PerfCounter=disk_write_queue_length,"PhysicalDisk(_Total)Avg. Disk Write Queue Length",60

4.5.2 配置图形

Disk 磁盘读写用时百分比:选择

Windows 系统监控 模板 : Disk 磁盘读用时百分比

Windows 系统监控 模板 : Disk 磁盘写用时百分比

Windows 系统监控 模板 : Disk 磁盘读和写总共用时百分比

调整线条以及颜色

4.5.3 监控结果

4.6 windows 磁盘容量监控

Zabbix 自带监控模板,在自动发现规则 Mounted filesystem discovery 已经配置。可用来来监控 CDEF 等分区容量。可以改成中文易读。如下图:

4.7 windows 网卡流量监控

Zabbix 自带监控模板,在自动发现规则 Network interface discovery 已经配置。

需要过滤掉不需要监控的端口,只显示真实的网卡流量,在 zabbix 界面,管理 - 一般 - 正则表达式中找到 Network interfaces for discovery 项,添加过滤规则。例如:

4.8 windows 系统时间监控

需要创建两个监控项,一个是绝对时间用于触发器告警,另一个是易读时间显示。通过获取到被监控系统时间与 zabbix server 做时差比较,超过 10 分钟告警。

4.8.1 创建监控项

键值:system.localtime[local] 易读时间

键值:system.localtime[] 绝对时间

4.8.2 创建触发器

名称:与 zabbix 主机时差超过 10 分钟:{HOST.NAME}

表达式:{Windows Server Model:system.localtime[].fuzzytime(600)}=0

4.9 windows 系统进程监控

Windows 的进程或程序监控,是通过监控进程数量,以此为状态标志位来判断进程是否已停止运行。

当最新进程数为 0 时,判断进程已停止运行;当 5 分钟内,平均值大于等于 1 时,恢复触发器,判断进程已恢复运行;当最新进程数不为 0 时,判断进程正在运行。

下面以监控 Xshell.exe 程序,运行进程为例,来创建实施监控。

4.9.1 创建监控项

键值:proc.num[Xshell.exe]

Zabbix 官网样例 proc.num[,,,,]

信息类型:数字(无正负) 方便看图形,标志位

更新间隔:1m 1 分钟同一规定

注:windows 下 只支持进程名和用户名称

4.9.2 创建触发器

名称:Xshell 程序已停止运行:{HOST.NAME}

问题表现形式:{Windows Server Model:proc.num[Xshell.exe].last()}=0

恢复表达式:{Windows Server Model:proc.num[Xshell.exe].avg(5m)}>1 or {Windows Server Model:proc.num[Xshell.exe].avg(5m)}=1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/418467.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业邮箱:定义、功能与优势一览

本文将为大家讲解:1、企业邮箱的定义;2、企业邮箱的主要功能特点;3、企业邮箱如何选择和部署;4、企业邮箱的运营与维护;5、企业邮箱在实际工作中的应用与挑战;6、2024年最新五大企业邮箱盘点 下面提到的功能…

【kali后续配置】Kali Linux 换源更新及配置SSH服务一文通(一键换源脚本)

在前面,我们已经下载并安装了Kali Linux 2023版本,因为一些事情的耽误,后面的一些操作教程没有发出来,今天给大家补上。 Kali Linux安装 前置准备: VMware安装kali Linux 镜像下载 kali源 官方源 deb http://htt…

基于JavaWeb+SSM+Vue基于微信小程序的网上商城系统的设计和实现

基于JavaWebSSMVue基于微信小程序的网上商城系统的设计和实现 滑到文末获取源码Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 滑到文末获取源码 Lun文目录 目录 1系统概述 1 1.1 研究背景 1 1.2研究目的 1 1.3系统设计思想…

UE5 蓝图编辑美化学习

虚幻引擎中干净整洁蓝图的15个提示_哔哩哔哩_bilibili 1.双击线段成节点。 好用,爱用 2.用序列节点 好用,爱用 3.用枚举。 好用,能避免一些的拼写错误 4.对齐节点 两点一水平线 5.节点上下贴节点 (以前不懂,现在经常…

Java 内存模型深度解析

优质博文:IT-BLOG-CN 一、并发编程模型的两个关键问题 【1】并发中常见的两个问题:线程之间如何通信及线程之间如何同步。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:内存共享和消息传递&…

Python利用Excel读取和存储测试数据完成接口自动化教程

http_request2.py用于发起http请求 #读取多条测试用例#1、导入requests模块import requests#从 class_12_19.do_excel1导入read_data函数from do_excel2 import read_datafrom do_excel2 import write_datafrom do_excel2 import count_case#定义http请求函数COOKIENonedef ht…

深入理解Redis数据结构

目录 Redis的单线程 Redis单线程快的原因 Redis 单线程处理高并发客户端连接 Redis数据结构 字符串(String) 常用方法 数据结构 哈希表(Hash) 常用方法 数据结构 列表(List) 常用方法 数据结构…

微信小程序之WXML 模板语法之数据绑定、事件绑定、wx:if和列表渲染

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需…

Java深度解析:类的生命周期与类加载过程

文章目录 加载阶段连接阶段-验证连接阶段-准备连接阶段-解析初始化阶段使用卸载 最近在学习Java 虚拟机,学到了类的声明周期,有些比较难理解的点,特地来总结一下。 类的生命周期从大体上来看的话,有五个阶段,分别是加载…

十八周周报

文章目录 摘要文献阅读3D reconstruction of human bodies from single-view and multi-view images: A systematic review简介研究方法搜索策略选择标准搜索结果 三维重建方法单个视图中使用的技术基于参数化人体模型的回归基于非参数人体模型的回归 多个视图中使用的技术基于…

ARMv8-AArch64 的异常处理模型详解之异常类型 Exception types

异常类型详解 Exception types 一, 什么是异常二,同步异常(synchronous exceptions)2.1 无效的指令和陷阱异常(Invalid instructions and trap exceptions)2.2 内存访问产生的异常2.3 产生异常的指令2.4 调…

使用残差网络识别手写数字及MNIST 数据集介绍

MNIST 数据集已经是一个几乎每个初学者都会接触的数据集, 很多实验、很多模型都会以MNIST 数据集作为训练对象, 不过有些人可能对它还不是很了解, 那么今天我们一起来学习一下MNIST 数据集。 1.MNIST 介绍 MNIST 数据集来自美国国家标准与技术研究所, National Institute of S…