自动发现配置参考链接(不小白,不友好)
zabbix-get介绍
1配置
- zabbix server:版本7(不影响),IP地址:192.168.0.60
- zabbix agent:版本agent1(不影响),ip地址:192.168.0.51
2server UI界面配置自动发现(监控项原型和触发器原型)
去看参考链接里面–“服务端配置”这个章节。我创建的和他一模一样
将主机链接到模板他没讲,本着小白教程我讲讲
-
创建一个主机,然后在“模板”的那里输入你刚才创建的模板名字,选择并链接就行了
-
如下图所示
3 agent端配置(虽然也是参考链接,但是我讲详细点,也精简了一下)
3.1修改zabbix_agentd.conf文件
vim /etc/zabbix/zabbix_agentd.conf
#将相应的地方修改为下面的代码
UnsafeUserParameters=1
UserParameter=readPorts,/etc/zabbix/scripts/readPorts.sh
- 解释一下:
- UnsafeUserParameters这个参数是允许用户自定义的参数字符通过,否则不通过(识别不到)
- UserParameter这个参数(可以先看看官网的userparameters),“readPorts,/etc/zabbix/scripts/readPorts.sh”里面的“readPorts”就是我们在zabbixserver的ui界面上创建自动发现规则的时候填入的键:readPorts(两个要一一对应,不能写错),“/etc/zabbix/scripts/readPorts.sh”就是当使用“readPorts”这个键时就去agent端的/etc/zabbix/scripts/readPorts.sh这个文件拿东西做操作(具体做什么操作就看readPorts.sh里面怎么写了)
3.2创建目标文件
- 目的:用于存放zabbix要访问的文件
(1)在/etc/zabbix下创建scripts文件夹
mkdir scripts
- 然后在script下有这几个文件
(2)创建readProts.sh
- 上一小节说明了这个文件是干什么的,看下面代码就知道:这个文件就是去当前目录拿ports.json文件的
vim readPorts.sh
#将下面代码粘贴到文件readPorts.sh中
#!/bin/sh
mypath=$(cd `dirname $0`; pwd)
cat $mypath/ports.json
- 创建了readPorts.sh后再chmod一下,否则待会我们zabbix_get的时候没有权限
chmod +x /etc/zabbix/scripts/readPorts.sh
(3)生成ports.json文件
- 参考教程的原话是这样的:
自动发现需监控的服务/端口,难点不在于读取,而在于自动生成json数据文件。此处的ports.json是根据ports.ini转换而来的。ports.ini文件需人工填写。
我给你解释一下:就是工作中ports.ini我们自己填的,里面填了服务和服务端口。再用个py或者其他文件(参考教程是getPorts.py)去取ports.ini的数据再生成ports.json文件。
- 我们直接把要的数据填入到ports.json(自己想跟着参考教程做一遍就去看看参考教程的这一步)
vim ports.json
#把下面这些代码复制到文件中去
{
"data": [
{
"{#SERVICE}": "mymysql",
"{#TCP_PORT}": "20081"
},
{
"{#SERVICE}": "yangli",
"{#TCP_PORT}": "8089"
}
]
}
- 解释一下:
- {#SERVICE}就是zabbix server的UI中我们设置的宏{#SERVICE}对应
- {#TCP_PORT}"同上
- 20081、8089记一下,待会看看界面上有没有
(4)现在都创建完了,我们source、restart一下
source /etc/zabbix/zabbix_agentd.conf
source /etc/zabbix/scripts/readPorts.sh
systemctl restart zabbix-agent
4测试验证
4.1zabbix server端测试
- 使用zabbix-get测试
zabbix_get -s 192.168.0.51 -k "readPorts"
- 结果
4.2前端界面去看看
- 看看是不是自动识别出来并创建了监控项和触发器了