01 - zabbix | LLD自动发现

01 - zabbix | LLD自动发现

1. 原理

zabbix支持设置变量,用{#VAR_NAME}来表示。然后有一些系统保留的变量

### 配置 Zabbix LLD 以实现自动化监控 Zabbix 的低级别自动发现LLD)是一种强大的功能,它允许你根据 Agent 端的实际情况动态创建监控项、触发器和图形。这种机制特别适用于需要监控大量类似资源的情况,例如磁盘分区、网络接口、TCP 端口等。 #### 基本配置流程 1. **编写自定义脚本** 在 Zabbix Agent 上创建一个返回 JSON 格式数据的脚本,用于描述需要监控的对象。假设我们要自动发现所有监听中的 TCP 端口: ```bash #!/bin/bash # discovertcpport.sh PORTS=$(ss -tulnp | awk 'NR>1 {print $5}' | cut -d: -f2 | sort -u) echo -n '{"data":[' COMMA="" for PORT in $PORTS; do echo -n "$COMMA{\"{#TCP_PORT}\":\"$PORT\"}" COMMA="," done echo "]}" ``` 将该脚本保存为 `/etc/zabbix/scripts/discovertcpport.sh` 并赋予执行权限。 2. **在 `zabbix_agentd.conf` 中注册用户参数** ```conf UserParameter=tcpportlisten,/etc/zabbix/scripts/discovertcpport.sh ``` 3. **重启 Zabbix Agent** ```bash systemctl restart zabbix-agent ``` 4. **在 Zabbix Web 界面中创建自动发现规则** - 登录 Zabbix Web 界面。 - 进入 **Configuration > Discovery > Create discovery rule**。 - 设置如下字段: - **Name**: TCP Port Discovery - **Type**: Zabbix agent 或 Zabbix agent (active) - **Key**: `tcpportlisten` - **Update interval**: 比如 `1h`(根据需求调整) - **Check periodically** - **Other options**: 可选地设置过滤器以排除特定端口。 - 提交规则。 5. **创建监控项原型** - 在发现规则页面中点击 **Create item prototype**。 - 设置如下字段: - **Name**: TCP Port {#TCP_PORT} Listen Status - **Type**: Zabbix agent 或 Zabbix agent (active) - **Key**: `net.tcp.service[tcp,,{#TCP_PORT}]` - **Interval**: 如 `5m` - **History storage period**: 默认 `90d` - **Item type**: Numeric (unsigned) - **Units**: none - **Other options**: 可选启用趋势、历史保留等。 - 提交原型。 6. **创建触发器原型** - 在发现规则页面中点击 **Create trigger prototype**。 - 设置如下字段: - **Name**: No TCP Port {#TCP_PORT} Listening - **Expression**: ``` {HOST.HOST:net.tcp.service[tcp,,{#TCP_PORT}].last()}=0 ``` - **Severity**: Warning 或其他合适等级。 - 提交原型。 7. **可选:创建图形原型** - 如果需要为每个发现的端口生成性能图,可以创建图形原型。 - 在发现规则页面中点击 **Create graph prototype**。 - 添加相关监控项到图形中,并设定适当的图表样式。 #### 使用场景示例 - **监控 Redis 实例** 可以通过类似方式发现并监控多个 Redis 实例。使用自定义键值 `UserParameter=check_redis[*],sudo /etc/zabbix/scripts/redis_monitor.sh $1` 来获取 Redis 相关指标 [^2]。 - **监控磁盘分区** Zabbix 自带了对磁盘分区的自动发现支持,可以直接使用 `vfs.fs.discovery` 键值来自动发现所有挂载点并创建监控项 [^1]。 - **监控网卡接口** 使用 `net.if.discovery` 键值可以自动发现主机上的网络接口,并为其创建流量监控项 [^3]。 #### 注意事项 - 脚本输出必须严格遵循 JSON 格式,否则 Zabbix 将无法解析。 - 发现规则的更新间隔应合理设置,避免频繁查询影响性能。 - 可以使用宏 `{#MACRO}` 来传递动态值到监控项、触发器或图形中 [^4]。 - 对于复杂的监控需求,建议结合自定义脚本与 Zabbix 的高级特性(如宏、预处理、依赖项等)进行扩展。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值