zabbix客户端自定义键值

Zabbix自定义监控配置与报错解决
本文介绍了Zabbix自定义监控的配置过程。先编写自定义监控脚本,以监控以太坊私链出块为例;接着修改配置文件、自定义键值文件,重启Zabbix agent使配置生效,并用zabbix_get命令验证自定义key。还给出了自定义监控中常见报错及解决方法。


zabbix自带的默认模版里包括了很多监控项,有时候为了满足业务需求,需要根据自己的监控项目自定义监控项,此文档为自定义监控项的方式。

zabbix获取键值的原理为:

zabbix-server请求zabbix-agent的key,agent的key向server端返回对应的值
1、编写自定义监控脚本

首先编写自定义监控脚本,本文以监控以太坊私链是否自动出块为例。

  • 脚本名称:eth-height.sh
  • 脚本目录(这个目录可以自定义):/etc/zabbix/script
  • 脚本内容:
#!/bin/bash

# 获取前一个区块高度
frontblock=`cat /etc/zabbix/script/block.txt`

# 在宿主机中执行docker容器中/mnt目录下的脚本,获取miner服务区块高度
newblock1=$(docker exec -i bsc-miner /bin/bash -c 'bash /mnt/block.sh'|awk -F '"' '{print $10}')

# 将获取到的16进制区块高度转换为10进制
newblock2=`printf %d $newblock1`

#将获取的最新的区块高度与前一个值进行对比
value=$((newblock2-frontblock))

#输出差值
echo $value

# 将当前获取的最新区块高度重定向至/etc/zabbix/script/block.txt
echo $newblock2 > /etc/zabbix/script/block.txt

  • 脚本说明:通过以太坊命令获取当前节点最新区块高度,并且输出节点当前最新区块高度与上一个高度的差值,通过zabbix判断是否实时出块
2、修改zabbix_agentd.conf配置文件
<think>我们正在讨论Zabbix自定义监控项的配置。根据引用内容,配置自定义监控项主要涉及以下几个步骤:1.**在Zabbix客户端配置自定义监控项**:-编辑Zabbix客户端的配置文件`/etc/zabbix/zabbix_agentd.conf`(或`/usr/local/etc/zabbix_agentd.conf`,具体路径可能因安装方式而异)。-确保配置文件中启用了`UnsafeUserParameters`(设置为1)[^4]。-添加`UserParameter`项,格式为:`UserParameter=<key>[*],<command>`。其中:-`<key>`是自定义键值名称,用于在Zabbix服务器端获取数据。-`[*]`表示可以传递参数(可选),后面的`<command>`是执行的命令或脚本,`$1`,`$2`等表示传递的参数[^4]。示例配置(监控某个进程是否存在):```UnsafeUserParameters=1UserParameter=check_process[*],/bin/bash/scripts/check_process.sh$1```2.**编写监控脚本(如果需要)**:-在客户端创建脚本(如`/scripts/check_process.sh`),并赋予执行权限[^4]。-脚本应返回监控数据(如进程存在返回0,不存在返回1)[^4]。示例脚本(`check_process.sh`):```bash#!/bin/bashstatus=$(ps-ef|grep$1|grep-Ev"$0|grep"|wc-l)if[$status-eq0];thenecho'1'elseecho'0'fi```3.**重启Zabbix客户端服务**:-修改配置后,重启客户端服务使配置生效[^2][^4]。```bashkillallzabbix_agentdzabbix_agentd```4.**在Zabbix服务器端测试自定义监控项**:-使用`zabbix_get`命令测试是否能获取数据[^2][^3]。```bashzabbix_get-s<客户端IP>-p10050-k"check_process[进程名]"```5.**在ZabbixWeb界面配置监控项**:-登录ZabbixWeb,进入“配置”->“模板”或“主机”。-创建监控项(Item):-键值(Key)填写自定义键值名称(如`check_process[进程名]`)。-根据需求设置其他参数(如数据类型、更新间隔等)[^2][^4]。**注意事项**:-确保Zabbix客户端配置中允许服务器连接(`Server`和`ServerActive`设置为Zabbix服务器的IP)[^1]。-脚本路径和权限需正确,确保Zabbix客户端用户(通常为`zabbix`)有执行权限。通过以上步骤,即可实现自定义监控项的配置。下面我们通过一个实际例子(监控Nginx进程)来具体说明。###示例:监控Nginx进程1.**在Zabbix客户端**:-创建脚本`/scripts/check_nginx.sh`:```bash#!/bin/bash#检查Nginx进程是否存在ifpgrep-x"nginx">/dev/null;thenecho"1"elseecho"0"fi```(注意:脚本逻辑根据需求调整,这里假设存在返回1,不存在返回0)-修改配置文件`zabbix_agentd.conf`:```UnsafeUserParameters=1UserParameter=nginx.status,/bin/bash/scripts/check_nginx.sh```-重启客户端服务。2.**在Zabbix服务器端测试**:```bashzabbix_get-s客户端IP-k"nginx.status"```3.**在ZabbixWeb界面**:-选择目标主机或模板,创建监控项:-名称:NginxStatus-键值:`nginx.status`-数据类型:字符型(或根据返回值选择)-创建触发器(Trigger),当返回值为0时触发报警(表示Nginx未运行)。这样就完成了自定义监控项的配置。§§相关问题§§1.如何监控多个进程?2.自定义监控项返回的数据类型有哪些?3.如何配置自定义监控项的触发器?4.Zabbix自定义监控项支持哪些类型的命令或脚本?5.自定义监控项的安全性如何保障?</think>### Zabbix自定义监控项配置指南 在Zabbix中配置自定义监控项需要完成以下核心步骤,以监控服务器进程状态为例(参考引用[4]): #### 一、客户端配置 1. **创建监控脚本** ```bash # 创建脚本目录 mkdir /scripts vim /scripts/check_process.sh ``` 脚本内容(监控指定进程是否存在): ```bash #!/bin/bash status=$(ps -ef | grep $1 | grep -Ev "$0|grep" | wc -l) if [ $status -eq 0 ]; then echo '1' # 进程不存在 else echo '0' # 进程存在 fi ``` ```bash chmod +x /scripts/check_process.sh # 添加执行权限 ``` 2. **修改Agent配置** ```bash vim /etc/zabbix/zabbix_agentd.conf ``` 关键配置项: ```ini UnsafeUserParameters=1 # 启用自定义参数 UserParameter=check_process[*],/bin/bash /scripts/check_process.sh $1 # 定义监控键值 ``` > 注:`[*]`表示支持参数传递,`$1`接收第一个参数 3. **重启Agent服务** ```bash killall zabbix_agentd zabbix_agentd ``` #### 二、服务端验证 ```bash zabbix_get -s <客户端IP> -p 10050 -k "check_process[nginx]" ``` 预期返回: `0`(nginx进程存在)或 `1`(进程不存在) #### 三、Web界面配置 1. **创建监控项** - 路径:`配置` → `主机` → 选择目标主机 → `监控项` → `创建监控项` - 关键参数: ``` 名称:Nginx进程状态 键值:check_process[nginx] # 方括号内为脚本参数 数据类型:数字(整数) 更新间隔:30s ``` 2. **配置触发器**(可选) - 路径:`触发器` → `创建触发器` - 表达式: `{HOST:check_process[nginx].last()}=1` (当返回值为1时触发告警) 3. **查看数据** - 路径:`监测` → `最新数据` → 筛选主机 > 关键说明: > - **参数传递**:通过`UserParameter=key[*],command $1 $2`实现多参数传递[^4] > - **安全限制**:`UnsafeUserParameters=1`允许执行系统命令(需评估风险)[^1] > - **脚本调试**:先用`zabbix_get`命令验证数据获取[^3] ### 自定义监控类型扩展 | 监控场景 | 脚本示例 | 键值配置 | |----------------|-------------------------------|--------------------------| | 文件行数监控 | `wc -l /path/file \| awk '{print $1}'` | `UserParameter=file.line.count,wc -l /etc/passwd \| awk '{print $1}'`[^2] | | 内存使用率 | `free \| grep Mem \| awk '{print $3/$2*100}'` | `UserParameter=mem.usage,free \| grep Mem \| ...` | | 自定义TCP连接数| `netstat -ant \| grep ':80 ' \| wc -l` | `UserParameter=tcp.80.conn,netstat -ant \| ...` | > 最佳实践: > 1. 复杂监控推荐将脚本输出转为JSON格式 > 2. 敏感操作脚本需设置严格权限(如`chown zabbix:zabbix /scripts/`) > 3. 生产环境建议通过`Include`加载独立配置文件(如`/etc/zabbix/zabbix_agentd.d/*.conf`)[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杰哥的技术杂货铺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值