首页 > 其他分享 >zabbix自定义监控项

zabbix自定义监控项

时间:2023-02-05 11:55:31浏览次数:43  
标签:监控 自定义 ping zabbix UserParameter mysqld key mysql

有时候当我们监控的项目在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

相关文章