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和进程也无效。

posted @ 2024-08-11 15:14  零の守墓人  阅读(8)  评论(0编辑  收藏  举报