4、自定义监控项
版权声明:原创作品,谢绝转载!否则将追究法律责任。 ————— 作者:kirin
7.1.什么是监控项
监控项:就是我们想要监控的指标,例如剩余内存,磁盘空间,服务的状态等等。
每一个监控项,都有一个唯一的key,简洁明了(相当于shell脚本的变量名)。
只需要安装zabbix-agent,默认就支持大量的监控项,但是linux模板并没有使用所有监控项。Template OS Linux by Zabbix agent主要监控了cpu,内存,磁盘,网卡,安全,它们都属于通用监控。
应用集:是监控项的分组
监控项的类型
Zabbix客户端模式(被动) | 通用,常用,配合模板或自定义监控使用 |
---|---|
Zabbix客户端(主动模式) | zabbix客户端默认是被动模式, 主动模式 zabbix 客户端主动把数据发送给服务端. |
简单检查 | 不需要客户端,功能少,只能检查网络情况(ping,tcp,udp) |
SNMP | Simple Network Management Protocal 简单网络管理协议 zabbix监控网络设备使用. |
内存检查 | 内部检查可以监控Zabbix的内部进程。未来优化可以用用. |
HTTP代理 | 此模式 由zabbix server发出http请求给客户端,根据响应进行二次处理加工. |
JMX | 监控java程序 |
IPMI | 监控硬件 |
#查看zabbix-agent2都支持哪些监控项,可以再命令行里看到
[root@web01 ~]# zabbix_agent2 -p
agent.hostname [s|Zabbix server]
agent.ping [s|1]
agent.version [s|5.0.8]
system.localtime[utc] [s|1626186266]
system.run[echo test] [m|ZBX_NOTSUPPORTED] [Unknown metric system.run]
web.page.get[localhost,,80] [s|HTTP/1.1 200 OK
Connection: close
Content-Length: 4833
Accept-Ranges: bytes
Content-Type: text/html
Date: Tue, 13 Jul 2021 14:24:26 GMT
Etag: "53762af0-12e1"
Last-Modified: Fri, 16 May 2014 15:12:48 GMT
Server: nginx/1.20.1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Welcome to CentOS</title>
<style rel="stylesheet" type="text/css">
html {
………………
7.2.使用内置key监控nginx的状态
#注意:添加监控项之前最好使用zabbix-get测试取值
[root@zabbix-server ~]# yum install zabbix-get -y
[root@zabbix-server ~]# zabbix_get -s 10.0.0.7 -k proc.num[nginx]
#注释
-s 被监控主机的ip地址
-p 端口
-k 指定监控项的key
#需要填写的参数
监控项名称:nginx运行状态
键值:proc.num[nginx] ##根据取值结果,选择数据类型
主机以及接口:10.0.0.7:10051
信息类型:数字(无正负)
更新时间:30s ##监控的频率
历史数据保留时长:暂时不修改、默认
趋势存储时间:暂时不修改、默认
新的应用集:填填写为nginx群组
最后一步点击:添加
#添加成功后,应用集那一行会多出一个nginx,是因为我们上一步添加的,点击nginx继续下一步
#通过以上方法还可以监测很多服务,例如SSHD、Mysql等
7.3 使用自定义的监控项来监控nginx
修改agent配置文件
#如果是zabbix-agent则修改如下文件
vim /etc/zabbix/zabbix_agentd.conf
#如果使用的是zabbix-agent2则修改如下文件
vim /etc/zabbix/zabbix_agent2.conf
#搜索【# UserParameter】在文件里增加一行,其实对配置文件没要求,加在哪一行都行
UserParameter=nginx_status,netstat -lntp|grep -c nginx
#改完以后重启agent生效
[root@web01 ~]# systemctl restart zabbix-agent2.service
#使用zabbix-get测试取值
#只能在zabbix-server上执行
[root@zabbix-server ~]# zabbix_get -s 10.0.0.7 -k nginx_status
#注意 zabbix-agent 取值的时候权限不足解决方法:
1:使用sudo来执行(配置麻烦,不推荐)
2:使用suid来执行 (推荐使用)
[root@web01 ~]# chmod u+s /usr/bin/netstat
3:使用root用户来运行zabbix-agent (不推荐使用、权限太大)
[root@web01 ~]# ll /usr/bin/netstat
-rwxr-xr-x. 1 root root 155008 Aug 9 2019 /usr/bin/netstat
[root@web01 ~]# chmod u+s /usr/bin/netstat
[root@web01 ~]# ll /usr/bin/netstat
-rwsr-xr-x. 1 root root 155008 Aug 9 2019 /usr/bin/netstat
[root@web01 ~]# chmod u-s /usr/bin/netstat
[root@web01 ~]# vim /usr/lib/systemd/system/zabbix-agent2.service
[root@web01 ~]# cat /usr/lib/systemd/system/zabbix-agent2.service|grep root
User=root
Group=root
[root@web01 ~]# systemctl daemon-reload
[root@web01 ~]# systemctl restart zabbix-agent2.service
[root@web01 ~]# ps -ef|grep nginx
root 1447 1 0 Jul14 ? 00:00:00 nginx: master process /usr/sbin/nginx
nginx 1448 1447 0 Jul14 ? 00:00:00 nginx: worker process
root 2502 1661 0 01:17 pts/0 00:00:00 grep --color=auto nginx
[root@zabbix-server ~]# zabbix_get -s 10.0.0.7 -k nginx_status
1
接下来去web界面添加监控项
PS:如果没有最新数据就重启下zabbix-server
7.4 自定义带参数的监控项
说明:
agent配置文件中有一个Include,这个Include语法与Nginx的Include是一样的。
那么我们什么时候用到Include呢?我们需要的监控的指标有很多,不能把所有指标都写到一个配置文件中,建议把agent自定义监控项独立成一个配置文件、方便复用、管理也更方便。后期甚至可以用ansible推送。
#所以我们需要做文件拆分
#注意:配置文件里的内容不能与Include文件内容相同!否则冲突,服务起不来!
#把配置文件中的nginx监控指标注释
[root@web01 ~]# vim /etc/zabbix/zabbix_agent2.conf
#UserParameter=nginx_status,netstat -lntp|grep -c nginx
[root@web01 ~]# egrep -v '^$|#' /etc/zabbix/zabbix_agent2.conf|cat -A
PidFile=/var/run/zabbix/zabbix_agent2.pid$
LogFile=/var/log/zabbix/zabbix_agent2.log$
LogFileSize=0$
Server=10.0.0.71$
ServerActive=127.0.0.1$
Hostname=Zabbix server$
Include=/etc/zabbix/zabbix_agent2.d/*.conf$
ControlSocket=/tmp/agent.sock$
#新建文件写入
[root@web01 ~]# vim /etc/zabbix/zabbix_agent2.d/zbx_nginx.conf
[root@web01 ~]# cat /etc/zabbix/zabbix_agent2.d/zbx_nginx.conf
UserParameter=nginx_status,netstat -lntp|grep -c nginx
#接下来监控web-10.0.0.7主机的数据库
#下载安装数据库并且启动、加入开启自启
[root@web01 ~]# yum install -y mariadb-server
[root@web01 ~]# systemctl start mariadb.service
[root@web01 ~]# systemctl enable mariadb.service
#查看mysql的指标
[root@web01 ~]# echo 'show status;'|mysql
[root@web01 ~]# echo 'show status;'|mysql|wc -l
414 ##四百多行。随便挑几个
#编辑配置文件(对应有规律的监控项,适合使用带参数的自定义监控项)
[root@web01 ~]# vim /etc/zabbix/zabbix_agent2.d/zbx_mysql.conf
[root@web01 ~]# cat /etc/zabbix/zabbix_agent2.d/zbx_mysql.conf
#监控数据库启动时间,单位:s
#UserParameter=mysql_Uptime,echo 'show status;'|mysql -uroot|grep -w 'Uptime'|awk '{print $2}'
#监控数据库被查询了多少次,单位:每秒
#UserParameter=mysql_Com_select,echo 'show status;'|mysql -uroot|grep -w 'Com_select'|awk '{print $2}'
#监控数据库删除的次数
#UserParameter=mysql_Com_delete,echo 'show status;'|mysql -uroot|grep -w 'Com_delete'|awk '{print $2}'
#以上写法可以精简为一行,使用传参的方式
UserParameter=mysql_define[*],echo 'show status;'|mysql -uroot|grep -w "$1"|awk '{print $$2}'
#重启服务
[root@web01 ~]# systemctl restart zabbix-agent2.service
#服务端测试取值
[root@zabbix-server ~]# zabbix_get -s 10.0.0.7 -k mysql_define[Uptime]
1985
[root@zabbix-server ~]# zabbix_get -s 10.0.0.7 -k mysql_define[Com_select]
1
[root@zabbix-server ~]# zabbix_get -s 10.0.0.7 -k mysql_define[Com_insert]
本文来自博客园,作者:kirin(麒麟),转载请注明原文链接:https://www.cnblogs.com/kirin365/articles/16137723.html