在zabbix使用过程中,可能会有大批量监控性能测试的场景,这时候可能需要模拟生成大批量的监控项用于测试,这里演示使用自动发现的方式进行创建。
配置自动发现
Low-Level Discovery是 Zabbix 的一种自动发现机制,允许你自动检测并添加多个具有相同结构的监控项,比如:服务器上的磁盘分区、网络接口、数据库中的表、自定义资源(如进程、日志文件等)。
LLD 的核心是返回一个特定格式的 JSON,例如:
{
"data": [
{ "{#DISKNAME}": "sda1" },
{ "{#DISKNAME}": "sda2" }
]
}
了解了以上原理后,首先我们编写一个Python脚本,用于输出符合LLD格式的JSON数据,举例如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import json
# 生成 A1 到 A1000 的磁盘名
disk_list = ["A{}".format(i) for i in range(1, 1001)]
# 构造符合 Zabbix LLD 的数据结构
lld_data = {
"data": [
{"{#DISKNAME}": disk} for disk in disk_list
]
}
# 输出 JSON 格式
print(json.dumps(lld_data, indent=4, ensure_ascii=False))
将以上脚本放到zabbix外部检查脚本目录下后,创建一台用于生成指标的主机
在此主机下,创建一个自动发现规则,类型选择外部检查,键值选择我们刚才新建的脚本即可
在此发现规则下,创建一个监控项原型,类型选择zabbix采集器,方便进行接收数据
创建好之后,即可手动执行此发现规则
执行后,可以看到生成了1000个监控项目
发送监控数据
以上步骤做好之后,还需要往监控项上报数据,这里通过zabbix_sender的方式进行。
以下为脚本举例:
#!/bin/bash
for i in $(seq 1 1000); do
#echo "A[A$i]"
/itops/zabbix/bin/zabbix_sender -z 127.0.0.1 -s test -k "A[A$i]" -o '0.01'
执行此脚本后,可看到监控项已有数据。
至此,已简单实现批量生成监控项目。后续也可根据实际需求,进行监控类型,信息类型的更改,用于测试更复杂的场景~