亲宝软件园·资讯

展开

zabbix自定义监控项

日行一善 人气:0

一.监控端口

关系说明

触发器: 根据客户端的脚本获取值,当客户端的某项值达到要求后,将发出告警

监控项:根据客户端的脚本获取值,可设定采集值得间隔时间,将值保留记录下来,可形成曲线图

应用集:用来分类存放监控项,比如将监控80,8080等web服务的监控项放在WEB应用集中,将监控22,21等小服务的监控项放入SMALL应用集中。

模板:模板是一套定义好的监控项的合集,任何主机连接模板,则将模板中的监控项等等在主机上应用,但要修改这些监控项只能去模板中修改,并且修改后其他连接的主机也会跟着变动。

操作

1.创建模板,模板名称用来表示,这里监控端口,取名为Port,模板必须加入某群组,可单独创建群组来区分。

2.创建应用集,应用集只用取名字即可

3.创建监控项,名称用来区分监控的哪些值,可能是监控nginx的访问数量,也可能是mysql的读数量。

键值有2种,一种是点击选择使用系统自带值,另一种自定义脚本key。

这里选择net.tcp.listen[port],通过telnet来查找某主机是否监听某端口,[port]填写需要监控的端口号。

4.创建触发器,{HOST.NAME}将获取主机名,用作报警显示。表达式点击添加,或复制其他自带触发器的值进行修改。
连接监控项,这个就是刚刚创建的监控项,其余不动。

5.选择相应群组,从群组里找到刚建立的监控项。

6.Port是模板名,如果这里选择写主机名或主机ip,则会变成单个主机的监控项,而不是模板的。

二.监控服务

关系说明

脚本:执行脚本获得值
配置文件:允许自定义key,将key的键值和脚本获取值关联起来。
服务端测试: 服务端发送指令给客户端,客户端运行脚本获取值再返回给服务端。

操作

1.创建脚本,用于获取值
cd /etc/zabbix/script

vim web_status.sh

#!/bin/bash

case $1 in
Lian)
    netstat -anptu | grep 172.26.98.247:80 | wc -l ;;
Ping)
    netstat -unltp | grep -w 80 &>/dev/null && echo 1 || echo 0 ;;
 *)
    echo "Lian | Ping" ;;
esac

测试脚本 ./web_status.sh Ping,看是否可以获得1

2.修改客户端配置文件,让他允许自定义key
vim /etc/zabbix/zabbix_agentd.conf

Include=/etc/zabbix/zabbix_agentd.conf.d/*.conf #加载其他配置文件
UnsafeUserParameters=1 #开启允许自定义 Key

systemctl restart zabbix-agent

3.修改配置文件,设定键值的名字和脚本所在位置,这样配置文件才能知道这个键值需要执行哪个脚本获得

web.ping是自定义的键值名字,后面是脚本路径
vim /etc/zabbix/zabbix_agentd.d/web_status.conf

UserParameter=web.ping,/etc/zabbix/script/web_status.sh Ping
UserParameter=web.lian,/etc/zabbix/script/web_status.sh Lian

如果执行的是命令要用绝对路径,如下也能获取值,并不一定要用脚本。
比如

UserParameter=web.shu,/bin/netstat -anptu | wc -l

4.检测,客户端测试
zabbix_agentd -t web.ping #返回1则正确

服务端测试:
/ops/server/zabbix/bin/zabbix_get -s 192.168.1.1 -k web.ping #获得1则正确

5.出现(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)

是因为脚本中用netstat 这个命令,但是客户端使用zabbix这个用户启动脚本,没有权限用这个命令。

客户端执行chmod +x /bin/netstat即可

网页操作:
键值是找不到的,手动写上,触发器的表达式也是连接这个监控项。

三.模板的导入和导出

导入:

导出:
选择模板拉倒最下面

加载全部内容

相关教程
猜你喜欢
用户评论