一、zabbix监控基础架构
zabbix-agent(数据采集) --> zabbix-server(数据分析\报警) --> 数据库(数据存储) --> zabbix-web(数据展示)
二、自定义监控项格式
需求:监控登录服务器的用户会话数量
### Option: UserParameter
# User-defined parameter to monitor. There can be several user-defined parameters.
# Format: UserParameter=<key>,<shell command>
# See 'zabbix_agentd' directory for examples.
#官方示例
UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin ping | grep -c alive
UserParameter=mysql.version,mysql -V
#单参数语法 :
UserParameter=<key>,<command>
简单的命令:
UserParameter=ping,echo 1
UserParameter=mysql.ping,mysqladmin -uroot ping | grep -c alive
例子 : [root@10_56_80_254 ~]# mysqladmin -uroot -proot | grep -c alive
1
# 多参数语法:
方法一 : 在配置文件zabbix_agentd.conf内配置多个
UserParameter=zabbix_name,hostname
UserParameter=zabbix_ifconfig,ifconfig
方法二 : 在zabbix_agentd.d目录下定义*.conf文件
[root@10_56_80_254 zabbix_agentd.d]# pwd
/etc/zabbix/zabbix_agentd.d #该路径下创建*.conf文件
[root@10_56_80_254 zabbix_agentd.d]# cat test.conf
UserParameter=zabbix_id,id zabbix | awk '{print$2}'
UserParameter=zabbix_name,hostname
UserParameter=zabbix_ifconfig,ifconfig
UserParameter=zabbix_a,/bin/sh /tmp/test/a.sh #获取脚本信息时,刷新间隔时间短会产生无数据
灵活的用户参数使用Key接受参数。这样一个灵活的用户参数可以作为创建几个监控项的基础。
灵活的用户参数具有以下语法:
UserParameter=key[*],command
参数 |
描述 |
Key |
唯一的监控项Key。[*]定义该Key接收括号内的参数。在配置监控项时给出参数。 |
Command |
执行命令以评估Key的值。仅适用于灵活的用户参数:你可以使用命令中的位置引用$ 1 … $ 9来引用监控项Key中的相应参数。Zabbix解析监控项Key的[]中包含的参数,并相应地替换$ 1,…,$ 9。$ 0将由原始命令(在扩展$ 0,…,$ 9之前)替换为运行。不管它们是用双引号(“)还是单引号(')括起来,都会解析位置引用。要使用位置引用不变,请指定双美元符号 - 例如,awk'{print $$2}'。 在这种情况下,执行命令时,“$$2”实际上会变成“$2”。 |
三、自定义监控项第一步
#1.自定义监控首先在配置文件开启监控脚本
[root@prd-apm001 ~]$ vim /etc/zabbix/zabbix_agentd.conf
UnsafeUserParameters=1 #是否启用用户自定义监控脚本
Include=/etc/zabbix/zabbix_agentd.d/*.conf #该路径下定义监控
#2.使用命令查看服务器当前登录用户会话数量
[root@redis01 ~]# uptime |awk '{print $6}'
四、自定义监控项第二步
#方法一 : 在配置文件/etc/zabbix/zabbix_agentd.conf内配置多个
UserParameter=zabbix_name,hostname
UserParameter=zabbix_ifconfig,ifconfig
#方法二 : 在zabbix_agentd.d目录下定义*.conf文件
[root@prd-apm001 ~]# cd /etc/zabbix/zabbix_agentd.d/
[root@prd-apm001 /etc/zabbix/zabbix_agentd.d]$ cat test.conf
UserParameter=zabbix_id,id zabbix | awk '{print$2}'
UserParameter=zabbix_name,hostname
UserParameter=zabbix_ifconfig,ifconfig
UserParameter=zabbix_a,/bin/sh /tmp/test/a.sh #获取脚本信息时,刷新间隔时间短会产生无数据
#把命令加入配置文件并起名
[root@prd-apm001 ~]$ cd /etc/zabbix/zabbix_agentd.d/
[root@prd-apm001 /etc/zabbix/zabbix_agentd.d]$ cat test.conf
UserParameter=user.count,uptime |awk '{print $6}'
#重启服务
[root@prd-apm001 /etc/zabbix/zabbix_agentd.d]$ systemctl restart zabbix-agent.service
五、自定义监控项第三步
#客户端,查看监控项
[root@prd-apm001 ~]$ zabbix_agentd -p |grep user.count
user.count [t|1]
六、自定义监控项第四步
在zabbix-server端获取agent端数据,使用zabbix_get命令
#安装zabbix_get命令
[root@prd-apm001 ~]$ rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-get-5.0.0-1.el7.x86_64.rpm
#语法
[root@prd-apm001 ~]$ zabbix_get
usage:
zabbix_get -s host-name-or-IP [-p port-number] [-I IP-address] -k item-key
zabbix_get -s host-name-or-IP [-p port-number] [-I IP-address]
--tls-connect cert --tls-ca-file CA-file
[--tls-crl-file CRL-file] [--tls-agent-cert-issuer cert-issuer]
[--tls-agent-cert-subject cert-subject]
--tls-cert-file cert-file --tls-key-file key-file -k item-key
zabbix_get -s host-name-or-IP [-p port-number] [-I IP-address]
--tls-connect psk --tls-psk-identity PSK-identity
--tls-psk-file PSK-file -k item-key
zabbix_get -h
zabbix_get -V
#获取数据
[root@prd-apm001 ~]$ zabbix_get -s 127.0.0.1 -k user.count
1
七、自定义监控项第五步
#1.在web页面添加监控项,选择配置主机中的监控项。
#2.创建监控项
#3.填写监控项
1、监控项名称
2、键值为自定义配置时的key名称
3、选择主机接口
4、填写新的应用集
5、添加描述
6、点击测试,测试完成后点击添加
#4.查看应用集,可以看到我们新创建的应用集
#5.点击查看监控项即可
八、自定义监控项第六步
添加触发器:当用户登录超过2人的时候,就要报警
#1.点击配置主机中的触发器
#2.点击新建触发器
#3.创建触发器
1、添加触发器名称
2、选择报警的严重性
3、添加表达式
1)选择监控项
2)结果> 2
4、点击插入
5、添加触发器描述
6、点击添加
#4.多用户登录测试
#5.优化触发器名称
用zabbix内置变量,来优化触发器的名称,此处使用的是
主机名变量:{HOST.NAME}
IP地址变量:{HOST.IP}
Monitor Login User Count Problem 主机名:{HOST.NAME} IP地址:{HOST.IP}
#6.再次查看问题触发器信息
#7.前端web页面告警
九、自定义监控项第七步
添加图形化界面
#1.点击配置主机中的图形
#2.点击创建图形
#3.添加图像化
1.填写图形化名称
2.添加监控项
3.点击添加
#4.查看图形化界面
十、自定义监控项第八步
给触发器,添加动作,邮件告警
如果事件源是触发器,那么就会触发动作,触发什么动作呢?就需要自己来创建了。
自定义触发器--->动作--->通知
如果事件源是触发器-->则创建一个触发的动作-->通知
1.我怎么通知。通过介质(配置一个邮箱的发件人)
2.通知给谁。(接收的邮箱)
3.通知的内容(内容可以自定义
#1.创建动作
#2.添加触发器
#3.设置邮件告警发送人
#4.配置邮件服务
#5.添加管理员邮件地址
#6.查看邮件