自定义监控基础 自定义监控的应用场景(为什么要自定义监控):
默认的模板中没有我们需要的监控项
删减不必要的监控项,可以提升zabbix服务端的性能
自定义监控的关键是定义键值对,键名可以自定义,而键值,是要能够通过命令取出来的内容,都能够做自定义监控。
创建监控项 下图所示,web01主机当前的监控项 有78个,它们被分类到不同的应用集(包含CPU、磁盘、内存等),如果当前的监控项不能满足监控需求,可以创建监控项
创建监控项本质上,是zabbix客户端处自定义一个键值对,在zabbix服务端进行配置,获取到这个键值对,经过处理后展示出来。
在zabbix客户端中内置了一些键值对,可以通过zabbix_agent2 -p | awk '/^[a-z]+\./{print $1}'
命令查看(使用awk简单处理)
自定义键值
自定义键值的内容需要写在zabbix客户端的配置文件中
1 2 3 4 5 vim /etc/zabbix/zabbix_agent2.d/xxx.conf UserParameter=nginx.alive,ss -tunlp | grep -wc 80
GUI配置
进入zabbix监控的web界面,侧边栏 >配置 >主机 ,点击相应主机的监控项 按钮,进入监控项页面。
点击右上角创建监控项,填入相关信息,先测试后添加。
创建触发器 创建完监控项之后,需要创建一个触发器,作用是指定一个触发条件,让监控项作出反映。此部分只需要在GUI界面配置
进入zabbix监控的web界面,侧边栏 >配置 >主机 ,点击相应主机的触发器 按钮,进入触发器页面。
点击右上角创建触发器,填入相关信息,添加即可。
注意:触发器可以在创建监控项的时候创建,也可以在监控项创建完成之后再创建。
创建图形 创建完监控项和触发器之后,为了直观地显示监控内容,可以配置一个图形信息。此部分只需要在GUI界面配置
进入zabbix监控的web界面,侧边栏 >配置 >主机 ,点击相应主机的图形 按钮,进入触发器页面。
点击右上角创建图形,填入相关信息,添加即可。
注意:图形可以在创建监控项和触发器的时候创建,也可以在监控项和触发器创建完成之后再创建。
自定义监控进阶 脚本自定义键值 在基础的自定义监控中已经了解到可以通过命令来自定义键值对,然后创建监控项,进阶的用法是还可以通过脚本来自定义键值,并且在执行脚本的过程中,可以传递参数。此处以获取nginx的状态为例。
编辑nginx配置文件
1 2 3 4 5 [root@web01 ~]$ vim /etc/nginx/conf.d/xxx.conf location /nginx_status { stub_status; }
编写脚本文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 [root@web01 ~]$ vim /srever/scripts/nginx_status.sh CMD='curl -s 127.0.0.1/nginx_status' case "$1 " in active) $CMD |awk 'NR==1{print $NF}' ;; accept*) $CMD |awk 'NR==3{print $1}' ;; handle*) $CMD |awk 'NR==3{print $2}' ;; request*) $CMD |awk 'NR==3{print $3}' ;; read *) $CMD |awk 'END{print $2}' ;; writ*) $CMD |awk 'END{print $4}' ;; wait *) $CMD |awk 'END{print $6}' ;; *) echo "Usage: $0 {active|accept|handle|request|reading|writing|waiting}" esac [root@web01 ~]$ chmod +x /srever/scripts/nginx_status.sh
自定义键值(传参)
1 2 3 [root@web01 ~]$ vim /etc/zabbix/zabbix_agent2.d/nginx.conf UserParameter=nginx.status[*],sh /server/scripts/nginx_status.sh "$1 " [root@web01 ~]$ systemctl restart zabbix-agent2.service
测试
1 2 zabbix_get -s web01 -k nginx.status[request]
GUI操作
创建监控项和图形,不再赘述
注意:
当有多个相似的监控项需要添加时,可以使用监控项的克隆功能,更改小部分选项快速添加监控项
当监控项获取的数值较为复杂时,可以使用预处理功能,添加正则表达式来获取纯净的数据。
故障排除
zabbix客户端运行的用户是zabbix用户,执行命令时可能出现权限故障: permission denied
1 2 3 4 5 [root@web01 ~]$ visudo zabbix ALL=(ALL) NOPASSWD: ALL
脚本/命令执行超时: ZBX_NOTSUPPORTED: Timeout while executing a shell script.
1 2 3 4 5 6 7 8 9 [root@m01 ~]$ vim /etc/zabbix/zabbix_server.conf [root@m01 ~]$ grep -n ^Timeout /etc/zabbix/zabbix_server.conf 480:Timeout=30 [root@m01 ~]$ vim /etc/zabbix/zabbix_agent2.conf [root@web01 ~]# grep -n ^Timeout= /etc/zabbix/zabbix_agent2.conf 258:Timeout=30
自定义模板 当有大量的监控项需要从一个主机克隆到另一个主机时,可以自定义模板来快速克隆。
创建模板
进入zabbix监控的web界面,侧边栏 >配置 >模板 ,点击右上角创建模板 ,进入创建模板界面。
填写模板名称和群组,点击添加 即可。
创建应用集、监控项、触发器、图形
找到刚刚创建的模板,此时为空,依次点击应用集 、监控项 、触发器 、图形 分别创建。
注意:如果从未添加过上面内容,需要首次创建,如果在其他机器上已经存在了上面内容,可以直接复制过来,以监控项为例:
将主机与模板关联
进入zabbix监控的web界面,侧边栏 >配置 >主机 ,点击需要关联模板的主机名称。
点击主机旁边的模板,在链接新模板中选择需要关联的模板,点击更新即可。
自定义告警 监控告警有以下几种类型
告警方式
应用场景
邮件
传统告警方式,免费,可以选择个人邮箱或者企业邮箱
企业微信
免费,需要配置代码,需要用到企业微信
OA系统(钉钉)
免费,需要配置代码
短信
收费,需要配置代码
电话
收费,需要配置代码
第三方告警平台
如one alert ,简单快捷,但是有收费限制
邮件告警
配置报警媒介
进入zabbix监控的web界面,侧边栏 >管理 >报警媒介类型 ,点击右上角的创建媒体类型 (也可以选择已有的类型)
填写相关信息
25端口是SMTP服务开放的端口用于发送邮件。465端口是为SMTP SSL(SMTP-over-SSL)协议服务开放的端口,可防止邮件泄露。
密码是授权码,可以在邮箱安全设置中的授权密码中添加。
配置消息模板
点击消息模板,点击添加,可以添加不同类型的消息模板,包括问题、问题恢复、问题更新、自动发现、自动注册等。一般添加问题和问题恢复两种即可。
模板内容解释:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Problem started at {EVENT.TIME} on {EVENT.DATE} Problem name: {EVENT.NAME} Host: {HOST.NAME} Severity: {EVENT.SEVERITY} Operational data: {EVENT.OPDATA} Original problem ID: {EVENT.ID} {TRIGGER.URL} Problem has been resolved at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE} Problem name: {EVENT.NAME} Problem duration: {EVENT.DURATION} Host: {HOST.NAME} Severity: {EVENT.SEVERITY} Original problem ID: {EVENT.ID} {TRIGGER.URL}
添加完成后进行测试。
配置收件人
配置收件人需要配置已有的用户
进入zabbix监控的web界面,侧边栏 >管理 >用户 ,选择一个用户,点击用户名称。
点击报警媒介,添加,添加相关信息后点击添加即可。
配置动作
有了告警媒介和收件人之后,还需要添加一个告警动作。
进入zabbix监控的web界面,侧边栏 >配置 >动作 ,选择一个用户,点击右上角创建动作 。
填写动作 相关信息,可以添加不同的条件
填写操作相关信息,填写操作细节。完成后点击添加即可。
企业微信告警 企业微信、OA系统、短信、电话等告警的配置方式类似,都是通过脚本调用API,此处以企业微信为例。
使用脚本调用企业微信api接口
1 2 3 4 5 6 vim /usr/lib/zabbix/alertscripts/wechat.py 脚本中需要配置企业微信id 、告警机器人id 和密码 登录企业微信后台,可以获取企业微信id (企业ID) 在应用管理中添加告警机器人,可以获取告警机器人id (AgentId)和密码(Secret) 此处省略脚本内容
配置好脚本之后需要进行测试
配置报警媒介
不再赘述,需要注意:
类型选择脚本
参数是脚本需要的参数,此处为三个,分别是发送到人员、主题、信息内容,参数的值填写的是zabbix内置的宏。
消息模板与邮件相同
添加后需要进行测试,收件人选择企业微信成员账号
配置收件人
不再赘述
配置动作
不再赘述