很多监控项目是在模版里面配置体现出来的,但有时候会有一些个性化的需求,比如就是想知道某一个业务的数据,运营人员想知道网站注册量,和会员活动每天的活跃度,这些数据实际上是可以通过数据库里面的表体现出来的,但是在Zabbix不可以提供这么详细的监控项目,当遇到这种需求怎么办? 当遇到这种需求需要一个在客户端写一个shell脚本,把这个数值展现出来,通过一个监控项目,再去形成图表,给运营人员分析每星期的数值,以及每个月的数值趋势走向. zabbix在这点上还是不错的,可以自定义去监控一个项目.
需求:监控某台80端口的连接数,并出图
说明:首先是要获得这个连接数,拿到数值后到zabbix中心创建监控项目,然后针对这个项目做一个图形.
第1步:到客户端上定义一个脚本
vim /usr/local/sbin/estab.sh
#! /bin/bash
## 获取80端口并发连接数
netstat -ant |grep ':80' |grep -c ESTABLISHED
注:netstat -ant 是可以查看连接数的.
# 赋予执行权限
chmod 755 /usr/local/sbin/estab.sh
注:其实是赋予zabbix用户 执行权限,因为最终是zabbix用户执行这个脚本
第2步:编辑客户端的配置文件
vim /etc/zabbix/zabbix_agentd.conf
UnsafeUserParameters=1 --> 表示使用自定义脚本,(0表示关闭使用自定义脚本,1表示使用自定义脚本)
UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh --> 定义脚本路径, 后面的[*]里面写脚本的参数,如果没有参数则可以省略.
#修改配置文件后,重启zabbix-agent服务
systemctl restart zabbix-agent
在服务端测试客户端写的脚本是否有效
zabbix_get -s 192.168.179.129 -p 10050 -k 'my.estab.count'
如提示
zabbix_get [28999]: Get value error: cannot connect to [[192.168.2.116]:10050]: [113] No route to host
注:提示没有找到这个host
#解决
检查防火墙是否关闭
[root@root-01 ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since 日 2017-09-10 12:12:51 CST; 21h ago
Docs: man:firewalld(1)
Main PID: 592 (firewalld)
CGroup: /system.slice/firewalld.service
└─592 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
9月 10 12:12:45 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...
9月 10 12:12:51 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.
[root@root-02 ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since 日 2017-09-10 12:13:17 CST; 21h ago
Docs: man:firewalld(1)
Main PID: 583 (firewalld)
CGroup: /system.slice/firewalld.service
└─583 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
9月 10 12:13:10 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...
9月 10 12:13:17 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.
说明:测试不成功的是原因是因为防火墙没有关闭
#关闭客户端&服务端的防火墙
[root@root-01 ~]# systemctl stop firewalld
[root@root-02 ~]# systemctl stop firewalld
#重新测试就OK了
说明: 显示0, 说明可以获得数值
Zabbix监控中心配置,增加监控项目
说明:点击配置 --> 主机 --> 选择root-02 的监控项 -->点击创建监控项
名称(自定义) --> 键值 -->添加
给添加的并发连接数监控项目做图形
说明:点击图形 --> 创建图形 -->名称 --并发连接数 --> 添加 -->选中并发连接数 -->选择 -->添加
#并发连接数图形创建成功
给并发连接数监控项目做个触发器
说明:点击触发器 -->创建触发器 --> 名称 :并发连接数 --> 严重性 -- 选择告警 -->表达式 --添加 --> 监控项目 --点击选择--> 选中并发连接数 --> 功能 选择 最新的T值<N --> N 定义为200 (意思是并发数达到200就告警) -->添加