约 1078 字大约 4 分钟
相关信息
zabbix版本:7.4.0&7.4.6
交换机:华为S接入、汇聚的V200R022版本
自动发现规则负责生成列表,监控项原型定义数据采集的细节及采集内容
扫描整个表,查看有哪些索引存在
snmpget -v 2c -c community 192.168.1.1 .1.3.6.1.4.1.2011.5.25.31.1.1.1.1.5.1准备工作
安装net-snmp-utils
- Ubuntu/Debian
apt-get install snmp snmp-mibs-downloader- CentOS/RHEL
yum install net-snmp-utils修改配置文件
编辑/etc/snmp/snmp.conf,添加以下行让系统加载所有 MIB:
mibs +ALL重启zabbix服务
systemctl restart zabbix-server将mib文件上传至服务器
将下载好的mib文件上传至zabbix服务器的/usr/share/snmp/mibs目录下
zabbix操作
监控项
提示
适用于唯一且固定的场景
整个设备只有一个的指标。例如:交换机的系统运行时间(UpTime)、整机 CPU 利用率、整机内存使用率。
基本资产信息:设备名称(SysName)、设备型号、序列号(如果设备支持单 OID 获取)。
名称-->此监控项的描述
键值-->可使用厂商mib节点名+索引ID,索引ID可通过扫描表的命令获取
信息类型-->由oid读取的值决定(例:电源状态通过oid获取的值为1或2,则信息类型选择“数字(无正负)”)
其他参数根据需求调整或者使用默认配置
自动发现规则
提示
自动发现规则与监控项原型的关系:自动发现规则扫描主机“有什么”,监控项原型是需要“做什么”
适用多实例且动态的场景
物理接口:交换机有 24 口还是 48 口?是否有 VLAN 接口?你不需要手动建 48 次,LLD 会自动扫描并为每个 Up 的接口生成监控。
- 名称:“Entity Hardware Discovery”
- 键值:“hwEntityName.discovery”
- SNMP OID:“discovery[{#ENT_NAME},1.3.6.1.2.1.47.1.1.1.1.7,{#ENT_CLASS},1.3.6.1.2.1.47.1.1.1.1.5]”
相关信息
{#ENT_NAME},1.3.6.1.2.1.47.1.1.1.1.7读取主机物理组件名
监控项原型
- 名称:CPU利用率:
- 信息类型:数字(无正负)
- 键值:hwEntityCpuUsage[{#SNMPINDEX}]
- SNMP OID:1.3.6.1.4.1.2011.5.25.31.1.1.1.1.5.
相关信息
{#ENT_NAME} 是来自父级“自动发现规则”的宏变量。
效果:如果 LLD 发现了多个板卡,Zabbix 会自动生成类似 CPU利用率: MPUA Board 或 CPU利用率: Slot 0 这样易读的名称,而不是一串枯燥的数字。
键值:hwEntityCpuUsage[{#SNMPINDEX}]是监控项在 Zabbix 系统内的唯一身份证。
{#SNMPINDEX} 是关键。当 LLD 规则运行时,它会抓取每个硬件实体的 SNMP 索引(例如 67108867),并将其填入中括号。
前缀 1.3.6.1.4.1.2011.5.25.31.1.1.1.1.5 是华为私有 MIB 库中定义 hwEntityCpuUsage 的固定位置。后缀 .{#SNMPINDEX} 是动态补全。生成最终的查询ID:1.3.6.1.4.1.2011.5.25.31.1.1.1.1.5.67108867。
过滤器/覆盖
相关信息
上述OID会扫描出所有物理组件名(接口、电源、风扇、内存等),但是针对接口状态、流量的监控项原型不需要内存、电源等信息
故需过滤器/覆盖以达到接口的监控项原型只显示接口
电源、内存等监控项原型只显示电源、内存
- 名称:CPU
- 过滤器:{#ENT_NAME} 不匹配 .MPU.
- 操作:监控项原型 包含 CPU 发现 否
告警媒介
注意
须修改脚本中的主机群组、手机号
参数
| 名称 | 值 |
|---|---|
| To | |
| Subject | |
| Message | |
| Trigger_Groups | |
| HTTPProxy |
脚本
try {
// 1. 解析来自 Zabbix 的参数
var params = JSON.parse(value);
var req = new HttpRequest();
// 2. 获取当前时间并转为 UTC+8(北京时间)
var date = new Date();
var utc8Time = new Date(date.getTime() + 8 * 60 * 60 * 1000);
var timeStr = utc8Time.toISOString().replace('T', ' ').substring(0, 19);
// 3. 逻辑判断:根据主机群组决定艾特谁
var groups = params.Trigger_Groups || "";
var targetMobiles = [];
var atText = "";
// 匹配“交换机/办公”或“服务器”群组
if (groups.indexOf("交换机/办公") !== -1 || groups.indexOf("服务器") !== -1) {
targetMobiles = ["123456789"];
// 钉钉要求:content文本中必须包含手机号,@ 才会真正生效并触发强提醒
atText = "\n通知值班员: @123456789";
}
// 4. 构造钉钉消息体
var msg = {
msgtype: 'text',
text: {
content: '[时间] ' + timeStr + '\n' +
'[主题] ' + params.Subject + '\n' +
'[详情] ' + params.Message + atText
},
at: {
atMobiles: targetMobiles,
isAtAll: false
}
};
// 5. 设置 HTTP 代理(如有)
if (params.HTTPProxy && params.HTTPProxy !== '') {
req.setProxy(params.HTTPProxy);
}
// 6. 添加请求头
req.addHeader('Content-Type: application/json');
// 7. 发送 POST 请求到钉钉 Webhook 地址 (To)
var resp = req.post(params.To, JSON.stringify(msg));
// 8. 响应校验
if (req.getStatus() != 200) {
throw 'HTTP 状态码异常: ' + req.getStatus() + ', 响应内容: ' + resp;
}
return '发送成功';
} catch (error) {
throw '告警脚本执行失败: ' + error;
}更新日志
97512-Rename 4.zabbix.md to 4.zabbix监控项.md于38f58-Update 4.zabbix.md于023f5-Update 4.zabbix.md于49963-Update 4.zabbix.md于e4482-Update 4.zabbix.md于88c48-更新 4.zabbix.md于846ef-更新 4.zabbix.md于f7f33-Update 4.zabbix.md于54afe-Update 4.zabbix.md于4bbc3-Update 4.zabbix.md于