zabbix自动发现
zabbix自动发现
环境介绍:
本例中安装zabbix
开源软件和postgres
,软件版本信息如下:
软件 | 版本 |
---|---|
zabbix | Zabbix6.4.0 |
postgres | 14.7 |
zabbix-agent | 6.4.17 |
主机信息如下:
Red Hat Enterprise Linux Server 7.9 (Maipo)
主机名 | 主机地址 | 用途 |
---|---|---|
zib_server | 192.168.101.238 | zabbix的服务器地址 |
pgsql_master | 192.168.101.232 | pgsql的主服务器 |
pgsql_backup | 192.168.101.239 | pgsql的备服务器 |
1. 对于端口扫描的自动发现
1.1 需求
zabbix 服务器可以手动加入zabbix-agent客户端,对于少量的机器,这没有什么。但到了线上,我们有大量的服务器需要监控时,如果再一个个的手动加的话,工作量势必会增加很多。这时,zabbix-server 的Discovery 自动发现 功能便派上了用场。
1.2 条件
1. zabbix server 已经部署好,所需要加入的服务器zabbix-agent已经安装。
2. 防火墙都开放端口,主要是10050、10051端口,或者关闭整个iptables
1.3 zabbix-server的Web界面操作
1.3.1 进入自动发现创建页面
点击页面的数据采集
> 自动发现
,在这个页面点击右上角的创建发现规则
。进入自动发现创建页面。
1.3.2 自动发现页面配置
进入之后对页面内容进行配置,如图所示。
其中的ip范围则是zabbix-server进行扫描的范围,建议设置不要太大,否则时间会很久,更新间隔则是进行扫描的间隔,设置的较小一些,而检查则是针对端口。下面是对检查的设置,如图所示。
完成之后点击添加
即可。
1.3.3 创建发现动作
一般进行扫描到之后就应该将扫描到的服务添加到主机上,这就需要用到发现动作了,点击告警
> 动作
> 发现动作
进入页面。点击右上角的创建动作
即可进入创建页面。如图所示。
1.3.4 发现动作配置
在动作页面上进行触发条件的设置,在操作页面上进行触发之后的操作。
动作页面设置如图所示。
操作页面设置如图所示。
完成设置之后点击添加
即可。
1.4 结果查看
点击监测
> 自动发现
即可查看自动发现的结果。如图所示。
查看主机
,是否进行了操作。
2. 对于主机上添加自动发现
2.1 进入创建发现规则页面
添加主机 > 自动发现,再点击右上角的创建发现规则进入创建页面。如图所示。
2.2 配置创建发现规则
如图所示。获取自定义监控项很像。
需要在zabbix-agentd
端创建脚本和自定义配置名称。
在portall.conf
文件中:
UserParameter=portall[*],"$1"/python/postjson.py
在postjson.py
文件中:
#!/usr/bin/env python
import json
import os
cmd=os.popen("""netstat -ntl|tail -n +3|awk '{print $4}'|awk -F: '{print $NF}'|sort|uniq""")
ports=[]
for port in cmd.readlines():
r=port.strip()
ports+=[{'{#PORT}':r}]
print json.dumps({'data':ports},sort_keys=True,indent=4,separators=(',',':'))
最后点击添加
即可。
2.3 配置监控项原型
进入配置监控项原型页面,就在页面上方有导航栏可见。
最后点击添加
即可。
疑问:
问题1:
按照这样配置在创建发现规则测试中可以正常拿到json数据。
{
"data":[
{
"{#NETPORT}":"10050"
},
{
"{#NETPORT}":"22"
},
{
"{#NETPORT}":"25"
},
{
"{#NETPORT}":"8432"
}
]
}
修改后:
{
"data":[
{
"prot":"10050"
},
{
"prot":"22"
},
{
"prot":"25"
},
{
"prot":"8432"
}
]
}
但是不知道为什么在监控项原型中无法拿到{#PORT},就算额外配置了LLD和进程也无效。