关于运维:系统学习-Zabbix-系统监控一

3次阅读

共计 8262 个字符,预计需要花费 21 分钟才能阅读完成。

文介绍了 zabbix 基本概念及其特点,论述 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 官网给出的指标、理论监控项数量、历史记录保留工夫长度。依据上表的参考规范,测试环境倡议小型化部署。

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 版本反对状况如下表:
4.1 windows 部署 zabbix_agent
为了监控 window 零碎,首先须要在该零碎下部署 zabbix_agent 代理,用于收集该零碎信息。

自研程序包列表:
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/docume…

截图如下:

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% 告警


最初行增加

1、#CPU 使用率
PerfCounter=cpu_time,”Processor(_Total)% Processor Time”,60
2、#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 程序,运行过程为例,来创立施行监控。

正文完
 0