【第一章】zabbix3.4监控Windows-CPU使用率磁盘IO磁盘监控阈值邮件报警详细配置

本文详细介绍了如何在Windows服务器上安装Zabbix-agent,实现CPU使用率、磁盘IO性能及磁盘空间监控,并配置邮件报警功能。此外,还提供了监控阈值调整、网卡自动发现规则优化的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • Windows安装zabbix-agent
  • 监控Windows-CPU使用率
  • 监控Windows-磁盘IO性能监控
  • 监控Windows/Linux-磁盘触发器阈值更改
  • 监控Windows-网卡自动发现规则
  • 配置服务端邮件报警功能
 

1、Windows服务器需要先安装zabbix-agent代理

Zabbix-agent3.4版本:https://www.zabbix.com/downloads/3.4.6/zabbix_agents_3.4.6.win.zip
Zabbix手册安装方法:https://www.zabbix.com/documentation/3.4/zh/manual/concepts/agent
概况

Zabbix agent部署在监控的目标上,主动监测本地的资源和应用(硬件驱动,内存,处理器统计等)。

Zabbix agent收集本地的操作信息并将数据报告给Zabbix server用于进一步处理。一旦出现异常 (比如硬盘空间已满或者有崩溃的服务进程), Zabbix server会主动警告管理员指定机器上的异常。

Zabbix agents的极端高效缘于它可以利用本地系统调用来完成统计数据的收集。

被动(passive)和主动(active)检查

Zabbix agents可以执行被动和主动两种检查方式。

Windows上的Zabbix agent是以Windows服务的形式运行的。

您可以在主机上运行Zabbix agent的单个实例或多个实例。

单个实例可以使用默认配置文件或命令行中指定的配置文件。

在多个实例的情况下,每个agent实例必须有自己独立的配置文件(其中一个实例可以使用默认配置文件)。

以下命令参数可以在Zabbix agent中使用:

参数描述n
UNIX 和 Windows agent
-c --config <config-file>配置文件的绝对路径。
您可以使用此选项来制定配置文件,而不是使用默认文件。\\在UNIX中, 默认文件是/usr/local/etc/zabbix_agentd.conf 要么通过 compile-time 变量 --sysconfdir 或者 --prefix来设置
在Windows中,默认文件是 c:\zabbix_agentd.conf
-p --print显示已知监控项并推出
Note: 为了同时返回用户参数user parameter 您必须制定配置文件 (如果不是在指定位置的话).
-t --test <item key>测试指定监控项并退出。
Note:为了同时返回用户参数 user parameter 您必须制定配置文件 (如果不是在指定位置的话).
-h --help显示帮助信息
-V --version显示版本号
仅UNIX agent
-R --runtime-control <option>执行管理功能。参见 运行时控制. runtime control.
仅Windows agent
-m --multiple-agents使用多agent实例 (使用 -i,-d,-s,-x )。
T为了区分实例的服务名称,每项服务名都会包涵来自配置文件里的主机名值。
仅Windows agent (功能)
-i --install以服务的形式安装Zabbix Windows agent
-d --uninstall卸载Zabbix indows agent服务
-s --start开始Zabbix Windows agent服务
-x --stop停止bbix Windows agent 服务

将上面下载的zabbix_agents_3.4.6.win.zip文件解压放到c盘里面

然后需要修改conf里面的zabbix_agentd.win.conf这个是配置文件

需要修改的配置选项:
LogFile=C:\zabbix_agents_3.4.6.win\log\zabbix_agentd.log ##这个是日志存放的地址
Server=192.168.10.10 ##这个是zabbix服务端的地址
ServerActive=192.168.10.10:10050 ##10050是zabbix-server和zabbix-agent通信的端口
Hostname=192.168.10.11 ##这个填写需要监控的Windows服务器IP

管理员权限运行cmd,如下图显示installed successfully代表成功了,再去服务里面启动zabbix-agent

##下面这一串命令是把agentd服务启动
C:\zabbix_agents_3.4.6.win\bin\win64\zabbix_agentd -i -m -c C:\zabbix_agents_3.4.6.win\conf\zabbix_agentd.win.conf

 

2、监控Windows-CPU使用率

在zabbix中,默认的模板不带CPU使用率的监控,为减少重复工作率,在template模板下创建一个模板
然后下次新增监控的主机服务器直接关联相关的模板即可!
在配置---->模板---->创建模板
模板名称:Template Windows CPU usage
 

 

创建完模板就开始创建监控项
名称:CPU usage%
键值:perf_counter[\Processor(_Total)\% Processor Time]
信息类型:浮点数
单位:%

 

创建完监控项以后新建触发器,可以在表达式构造器测试这个触发器是否有用

名称:cpu used  is more than 80%

严重性:一般严重

表达式:{Template Windows CPU usage:perf_counter[\Processor(_Total)\% Processor Time].avg(5m)}>80

创建完触发器再添加一个图形查看cpu使用率图表

名称:CPU使用率

监控项:Template Windows CPU usage: CPU使用率

添加成功以后可以查看CPU图形表了,有数据代表成功监控了!

 

3、监控Windows-磁盘IO性能监控

注意:这个IO模版是收集整个服务器所有物理硬盘的IO数据的
比如:服务器有一个固态硬盘,一个机械硬盘,他是固态硬盘和机械硬盘数据加起来显示出来
监控数据库服务器的时候,最好分别对待固态硬盘和机械硬盘,使用不同的触发器阀值
因为是机器上所有硬盘加起来的,要针对固态硬盘和机械硬盘区分开触发器就非常困难了

WIN下的IO性能监控,是通过调用性能计数器中的参数来获取

目前已经统计成模板,可直接使用,模板包括了图形和上图所示的监控项

模板下载地址:https://files.cnblogs.com/files/Sungeek/Windows%E7%9B%91%E6%8E%A7%E7%A3%81%E7%9B%98IO.xml

 4、监控Windows-磁盘触发器阈值更改

选择配置--->模板--->(Template OS Linux/Template OS Windows)

我这边是监控Windows所以修改Windows的模板,如果是监控Linux可以修改Linux的模板

默认是1小时更新一次,修改成600秒,就是10分钟更新一次,10分钟后就能看到网卡和磁盘的监控值了!

 

选择配置--->模板--->(Template OS Linux/Template OS Windows)--->Mounted filesystem discovery--->触发器类型

我这边是已经修改好的了,没有修改的或者没有这一触发项的,可以点击右上角(创建触发器原型)

名称:Free disk space is less than 50GB on volume {#FSNAME}

表达式:{Template OS Windows:vfs.fs.size[{#FSNAME},free].last(0)}<50000000000

选择配置--->模板--->(Template OS Linux/Template OS Windows)--->Mounted filesystem discovery--->监控项类型

我这边是已经修改好的了,没有修改的或者没有这一监控项的,可以点击右上角(创建监控项原型)

名称:Free disk space on $1

表达式:vfs.fs.size[{#FSNAME},free]

单位:B

更新间隔:1m或者60s都可以

 

5、监控Windows-网卡自动发现规则

问题描述:这个一般是默认的windows模板里面包含自动发现服务器网卡的,但是会自动发现很多其他的网卡什么之类的图形东东

解决办法:你直接删除对应的图形是没用的,因为自动发现规则会再次自动发现,所以需要把规则改一下

1.自动发现规则里面---->Windows service discovery(这个可以禁用掉)

2.管理--->一般--->正则表达式--->Network interfaces for discovery(加入下图的参数,这样就设定不会自动发现以这些参数网卡了)

 

1    »    Microsoft    [结果为假]
2    »    Teredo    [结果为假]
3    »    Qos    [结果为假]
4    »    WFP    [结果为假]
5    »    RAS    [结果为假]
6    »    WAN    [结果为假]
7    »    ^Nu[0-9.]*$    [结果为假]
8    »    ^[Ss]ystem$    [结果为假]
9    »    ^[Ll]o[0-9.]*$    [结果为假]
10    »    ^NULL[0-9.]*$    [结果为假]
11    »    ^(In)?[Ll]oop[Bb]ack[0-9._]*$    [结果为假]
12    »    ^Software Loopback Interface    [结果为假]
13    »    Network traffic on Broadcom NetXtreme Gigabit Ethernet    [结果为假]

 

 

6、配置服务端邮件报警功能

我这边用到的是腾讯企业邮箱

如下图所示,管理--->报警媒介类型--->Email

要注意的是用户名称这里要写你的企业邮箱账号,密码填写密码

一开始我以为是发邮件的名称,搞得没法发邮件,可以使用QQ邮箱

SMTP服务器:smtp.exmail.qq.com

端口:465

SMTP电邮:XXXX@qq.com

用户名称:XXXX@qq.com

配置--->动作--->触发器

创建一个触发器来发邮件报警

操作:

默认标题:故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!

消息内容:

告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE}{EVENT.TIME}
告警等级:{TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{ENET.ID}

 

恢复操作:

默认标题:恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!

消息内容:

告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE}{EVENT.TIME}
告警等级:{TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{ENET.ID}

 

确认操作:

默认标题:已确认: {TRIGGER.NAME}

消息内容:

{USER.FULLNAME} 已经确认的问题 {ACK.DATE} {ACK.TIME} 以下消息:
{ACK.MESSAGE}

目前的问题状态是{EVENT.STATUS}

最后配置报警媒介,也就是触发报警条件,要下发邮件通知道哪个邮箱里面

点击那个小头像,然后进入到用户基本资料,选择报警媒介进行设置

可以自己选择严重性级别,设置完启用了以后,报警功能就设置完成了!

<think>好的,我需要解释用户提到的“NODE_disk_write_latency_more_than_150ms”这个指标。首先,这个名称看起来像是一个监控系统中的指标名称,可能与磁盘性能相关。用户希望了解它的含义、可能的原因以及解决方法。 首先,我应该拆解这个指标的名称。NODE可能指的是节点,通常指服务器或某个计算节点。disk_write_latency是磁盘写入延迟,即从发起写入请求到完成写入所需的时间。more_than_150ms表示超过150毫秒的情况。所以这个指标可能用来监控节点磁盘写入延迟超过150毫秒的情况。 接下来需要确认,这个指标的具体定义是什么。通常,写入延迟过高可能意味着磁盘性能问题。可能的原因包括磁盘过载、硬件故障、配置不当或文件系统问题等。我需要列举常见原因,并解释每个原因如何导致延迟升高。 然后,应该说明这个指标的重要性。高写入延迟会影响系统整体性能,导致应用响应变慢,甚至超时错误。在数据库或高IO场景中,这种情况尤其严重。 接下来需要提供解决方法。可能包括检查磁盘负载、查看是否有其他进程占用过高IO、升级硬件、优化写入策略、检查RAID配置或文件系统错误等。此外,监控报警设置也是关键,帮助及时发现问题。 需要注意用户可能需要进一步确认他们的具体环境,比如是物理机、虚拟机还是云环境,不同的环境排查方法可能不同。同时,建议使用工具如iostat、iotop等来诊断磁盘性能问题。 最后,要确保用中文清晰解释,结构分明,使用LaTeX格式时正确应用数学表达式,但在这个问题中可能涉及较少公式,更多是描述性内容。需要避免技术术语过于晦涩,让用户容易理解。</think>关于 **NODE_disk_write_latency_more_than_150ms**,这是一个用于监控系统磁盘写入延迟的指标,通常出现在分布式系统、云平台或运维监控工具(如 Prometheus、Zabbix)中。以下是详细解释: --- ### **1. 指标含义** - **NODE**:表示监控对象是某个计算节点(物理服务器、虚拟机或容器)。 - **disk_write_latency**:磁盘写入延迟,即从发起写入请求到数据成功写入磁盘的时间。 - **more_than_150ms**:阈值设定为 **150 毫秒**,表示当单次写入延迟超过此值时触发告警或记录事件。 --- ### **2. 为什么需要关注此指标?** 高磁盘写入延迟会导致: - 应用程序响应变慢(例如数据库写入卡顿)。 - 系统整体吞吐量下降。 - 严重时可能引发超时错误或服务不可用。 --- ### **3. 常见原因** #### **3.1 硬件问题** - **磁盘性能不足**:机械硬盘(HDD)的随机写入性能通常较差,尤其是高并发场景。 - **磁盘故障**:坏道、固件问题或连接线路异常。 - **RAID 配置不当**:例如 RAID 5/6 在写入时需计算校验值,可能增加延迟。 #### **3.2 系统负载** - **IO 过载**:其他进程(如日志写入、备份任务)占用大量磁盘带宽。 - **CPU 瓶颈**:若系统 CPU 繁忙,可能导致 IO 请求队列堆积。 #### **3.3 文件系统或配置** - **文件系统碎片化**:EXT4/XFS 等文件系统长期使用后碎片增多。 - **挂载参数不合理**:例如未启用 `noatime` 或使用了同步写入模式。 #### **3.4 虚拟化或云环境** - **共享存储争用**:云盘的性能受其他租户影响(如 AWS EBS、阿里云云盘)。 - **网络附加存储(NAS)延迟**:网络传输引入额外开销。 --- ### **4. 诊断方法** #### **4.1 使用工具检查** - **iostat**:查看磁盘利用率(`%util`)和平均响应时间(`await`): ```bash iostat -x 1 ``` - **iotop**:定位高 IO 的进程: ```bash iotop -o ``` - **fio**:测试磁盘基准性能: ```bash fio --name=test --ioengine=libaio --rw=randwrite --bs=4k --numjobs=1 --size=1G --runtime=60s ``` #### **4.2 日志分析** - 检查系统日志(`/var/log/syslog` 或 `dmesg`)是否有磁盘错误记录。 - 查看应用程序日志,确认是否在写入时发生超时。 --- ### **5. 解决方案** #### **5.1 硬件优化** - 替换为 SSD(显著降低延迟)。 - 检查 RAID 配置,优先使用 RAID 10 或单独 SSD。 #### **5.2 系统调优** - 调整文件系统挂载参数(例如添加 `noatime,data=writeback`)。 - 限制后台任务的 IO 优先级(通过 `ionice`)。 - 升级内核或磁盘驱动。 #### **5.3 应用层优化** - 批量写入(减少小文件频繁写入)。 - 使用内存缓存(如 Redis)缓解磁盘压力。 #### **5.4 云环境建议** - 选择更高性能的云盘(如 AWS Provisioned IOPS)。 - 避免将高 IO 应用部署在共享存储上。 --- ### **6. 监控建议** - 设置告警阈值(例如持续 5 分钟 >150ms 才触发)。 - 结合其他指标(如 CPU、内存、网络)综合分析根因。 如果需要更具体的排查步骤,请提供您的环境信息(如操作系统、磁盘类型、云服务商)!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值