有时候当我们监控的项目在zabbix预定义的key中没有定义时,这时候我们可以通过编写zabbix的用户参数的方法来监控我们要求的项目item。
形象一点说zabbix代理端配置文件中的User parameters就相当于通过脚本获取要监控的值,然后把相关的脚本或者命令写入到配置文件中的User parameter中,然后zabbix server读取配置文件中的返回值通过处理前端的方式返回给用户。
1、zabbix agent端开启Userparameter指令
在zabbix_agent.conf文件中开启如下参数,
UnsafeUserParameters=1
启用agent端自定义item功能,设置此参数为1
后,就可以使用UserParameter指令了。UserParameter用于自定义itme。
UserParameter参数的语法
UserParameter=<key>,<command>
其中:
UserParameter
为关键字key
为用户自定义key名字可以随便起,在server端获取就是通过这个key来获取<command>
为我们要运行的命令或者脚本。
一个简单的例子:
UserParameter=ping,echo 1
代理程序程序将会永远的返回1当我们在服务器端添加item的key为 ping时候。
稍微复杂的例子:
UserParameter=mysql.ping, /usr/local/mysql/bin/mysqladmin ping|grep -c alive
当我们执行mysqladmin -uroot ping
命令的时候如果mysq存活要返回mysqld is alive,我们通过grep –c
来计算mysqld is alive的个数,如果mysql存活着,则个数为1,如果不存活很明显mysqld is alive的个数为0,通过这种方法我们可以来判断mysql的存活状态。
当我们在服务器端添加item的key为mysql.ping时候,对于zabbix代理程序,如果mysql存活,则状态将返回1,否则,状态将返回0。
2、让key接受参数
让key也接受参数的方法,使item添加时更具备了灵活性
例如系统预定义key :vm.memory.size[<mode>]
其中的mode模式就是用户要接受的参数,当我们填写为free时则返回的为内存的剩余大小,如果我们填入的为userd时这返回的是内存已经使用的大小。
相关语法
UserParameter=key[*],command
描述
-
Key:Key的值在主机系统中必须是唯一的,其中
*
代表命令中接受的参数 -
命令:客户端系统中可执行的命令
举例:
UserParameter=ping[*],echo $1
-
ping[0] – 将一直返回 '0'
-
ping[aaa] – 将一直返回 'aaa'
实际操作
安装测试库mysql
$ wget https://dev.mysql.com/get/mysql80-community-release-el7-6.noarch.rpm
$ rpm -ivh mysql80-community-release-el7-6.noarch.rpm
$ yum makecache fast
$ yum install mysql-server mysql mysql-devel -y
$ systemctl start mysqld
$ vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
validate_password.policy=0
validate_password.length=4
validate_password.number_count=0
validate_password.mixed_case_count=0
validate_password.special_char_count=0
$ systemctl restart mysqld
$ cat /var/log/mysqld.log | grep password
2022-06-08T15:39:20.959503Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: IQF4R<IAeMR.
2022-06-08T15:40:06.694345Z 0 [ERROR] [MY-000067] [Server] unknown variable 'validate_password_policy=0'
$ mysql -uroot -p
Enter password:IQF4R<IAeMR.
mysql> alter user 'root'@'localhost' identified by '111111';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
在zabbix-agent端设置参数
先设置UnsafeUserParameters=1
$ vim /etc/zabbix/zabbix_agent2.conf
Include=/etc/zabbix/zabbix_agent2.d/*.conf
UnsafeUserParameters=1
然后设置自定义的key
不带参数的key
$ vim /etc/zabbix/zabbix_agent2.d/test.conf
UserParameter=mysql.V,mysql -V | tr -s ' ' | cut -d' ' -f3
UserParameter=user.count,who | wc -l
#HOME是指定命令的目录
UserParameter=mysql.active,HOME=/usr/bin mysqladmin -uroot -p111111 ping 2> /dev/null | grep -c alive
重启zabbix-agentd
$ systemctl restart zabbix-agent2.service
在服务端获取key的值
$ docker-compose exec zabbix-server-mysql zabbix_get -s 10.0.0.6 -k mysql.V
8.0.29
$ docker-compose exec zabbix-server-mysql zabbix_get -s 10.0.0.6 -k user.count
5
$ docker-compose exec zabbix-server-mysql zabbix_get -s 10.0.0.6 -k mysql.active
1
获取成功
带参数的key
$ vim /etc/zabbix/zabbix_agent2.d/test.conf
UserParameter=process.num[*],ps -ef | grep -v grep | grep -c $1
重启zabbix-agentd
$ systemctl restart zabbix-agent2.service
在服务端获取key的值
docker-compose exec zabbix-server-mysql zabbix_get -s 10.0.0.6 -k process.num[sshd]
11
docker-compose exec zabbix-server-mysql zabbix_get -s 10.0.0.6 -k process.num[zabbix]
2
在web端添加监控项
点击对应主机的监控项
然后查看最新数据
会发现已经有了
标签:监控,自定义,ping,zabbix,UserParameter,mysqld,key,mysql From: https://www.cnblogs.com/guangdelw/p/17093116.html