我的zabbix-server是安装在另一台虚拟机上的,用来监控下图中的这台虚拟机
先修改zabbix的客户端配置文件,增加UserParameter那行,这里我只是用来测试,所以就随便起了一个名为ping的key,重启zabbix客户端
其中ping是key的名字,后面的echo 99是执行的命令。本来想换一个命令的,发现不知道换什么其它的命令,先大概知道一下自定义key的用法算了
进入zabbix给已经被监控的主机增加一个item,如图,key那里可以直接写刚才定义的那个key名ping,其它地方照着写,或者默认就可以了
然后在lastdata那里查看这个item的数据,可以看到,一直显示打印出来的值99
下面我们可以尝试使用自定义脚本配置自定义监控项
修改agent配置文件
配置文件路径/usr/lib/tmpfiles.d/zabbix-agent.conf,如不是该路径,可直接find查找。
首先zabbix_agent的server相关的ip需要从127改为具体ip。同时修改以下两个参数
UnsafeUserParameters=1#允许使用用户自定义参数
UserParameter=sshattacktime,sudo /root/test/sshattacktimes.sh#定义一个sshattacktime键值,对应的脚本为sshattacktimes.sh,使用绝对路径。需要加sudo,否则会提示没有权限
因为使用sudo,所以我们还需要修改一下sudoers配置文件。NOPASSWD是因为我们的Zabbix是没有登录shell的,也就是没有密码的,添加这个参数后,就可以跳过密码正常执行
重启zabbix-agent
在服务器端上测试是否可以正常获取到数据zabbix_get -s 127.0.0.1 -p 10050 -k 'sshattacktime'
zabbix_get命令是在server端用来检查agent端的一个命令。
这里我因为服务器端和客户端都在同一台服务器上,所以写了127.0.0.1,但是这种情况下写本地的实际ip会报错,这个要注意。实际情况下-s后应该写客户端的ip,-p指端口,-k指键值,也就是我们上面UserParameter后定义的sshattacktime
补充: 发现一条比较实用的命令,可以用来检测mysql是否正在运行
mysqadmin -uroot -p ping |grep alive
来看一下
[root@localhost ~]# mysqladmin -uroot -p ping |grep -c alive #管道前一部分是用来检测mysql是否运行的,感觉这条语句很机智
Enter password:
1
扩展一下