精华内容
下载资源
问答
  • 自动发现
    千次阅读
    2022-02-23 22:47:50

    自动发现(LLD)提供了一种在计算机上为不同实体自动创建监控项,触发器和图形的方法。
    例如,Zabbix可以在你的机器上自动开始监控文件系统或网络接口,而无需为每个文件系统或网络接口手动创建监控项;还可以配置Zabbix根据定期执行发现后的得到实际结果,来移除不需要的监控。

    除了 Linux 系统自带的发现字段外,还支持通过 snmp OID 来进行自动发现

    用户可以自己定义发现类型,只要脚本的返回值是遵循特定的 JSON 格式。

    配置自动发现过程的一般如下:
    首先,用户在“配置”→“模板”→“发现”列中创建一个发现规则。发现规则包括(1)发现必要实体(例如,文件系统或网络接口)的项 和(2)应该根据该项的值创建的监控项,触发器和图形的原型。


    下面表达的 zabbix 内置关键字 可以理解为 zabbix 底层的一个函数/接口,用户可以通过调用这个函数/接口(或调用时为其传参)来获得指定格式的值;如果需要自定义发现规则, zabbix 内置关键字 可以是用户自己编写的脚本/函数/接口。

    SNMP OID 自动发现

    以一个通过 SNMP 发现接口入方向流量的例子作为解析:
    在这里插入图片描述

    上图中:

    • Key 字段:net.if.discovery 是为了标识自动发现规则的名字,一般使用 . 分隔的字符来方便理解这个规则的作用(当然你也可以写你觉得顺口好记的名字)
    • SNMP OID 字段:discovery 为 zabbix 内置关键字,可以通过传的值来执行类似 snmpwalk 的操作,获取设备的信息

    这个步骤用来获取自动发现规则中的键值:
    discovery[{#IFDESCR},1.3.6.1.2.1.2.2.1.2,{#IFTYPE},1.3.6.1.2.1.2.2.1.3] 的行为可以约等于:

    {#IFDESCR} = snmpwalk -v 2c -c public 192.168.1.1 1.3.6.1.2.1.2.2.1.2
    {#IFTYPE} = snmpwalk -v 2c -c public 192.168.1.1 1.3.6.1.2.1.2.2.1.3
    

    因为 snmpwalk 遍历出来的值很多,假设 snmpwalk 出来的结果为

    $ snmpwalk -v 2c -c public 192.168.1.1 1.3.6.1.2.1.2.2.1.2
    1.3.6.1.2.1.2.2.1.2.1 = STRING: G1/0/1
    1.3.6.1.2.1.2.2.1.2.2 = STRING: G1/0/2
    1.3.6.1.2.1.2.2.1.2.3 = STRING: G1/0/3
    
    $ snmpwalk -v 2c -c public 192.168.1.1 1.3.6.1.2.1.2.2.1.3
    1.3.6.1.2.1.2.2.1.3.1 = STRING: route
    1.3.6.1.2.1.2.2.1.3.2 = STRING: bridge
    1.3.6.1.2.1.2.2.1.3.3 = STRING: ppp
    

    snmp 一般是靠索引来定位的,zabbix 内置关键字 discovery 为返回结果自动添加了索引,所以discovery[{#IFDESCR},1.3.6.1.2.1.2.2.1.2,{#IFTYPE},1.3.6.1.2.1.2.2.1.3] 最终获取出来的结果为(JSON格式也是定义好的,我们只是填充了值):

    {
        "data": [
            {
                "{#SNMPINDEX}": "1",
                "{#IFDESCR}": "G1/0/1",
                "{#IFTYPE}": "route"
            },
            {
                "{#SNMPINDEX}": "2",
                "{#IFDESCR}": "G1/0/2",
                "{#IFTYPE}": "bridge"
            },
            {
                "{#SNMPINDEX}": "3",
                "{#IFDESCR}": "G1/0/3",
                "{#IFTYPE}": "ppp"
            }
        ]
    }
    

    zabbix 规定了自动发现规则必须是上面这种 JSON 格式,即:以 data 为字典的键,值为字典组成的列表,字典中为用户自定义的变量和根据关键字获取到的值。(实际测试,自定义的脚本只有值(字典组成的列表)也是可以的)。


    接下来就是添加【监控项原型】,原型顾名思义就是一个模板,用来生成一系列监控项。
    在这里插入图片描述

    上图中:

    • Key 字段:ifInOctets 为了标识这个监控项的名字(同net.if.discovery),后面跟着自动发现规则中定义的变量,用来自动生成监控项时区分出不同的接口
    • SNMP OID 字段:使用 IF-MIB::ifInOctets 这个 OID 在加上具体接口的 index,即内置discovery自动生成的变量 {$SNMPINDEX} ,来获取指定接口的入方向流量

    最后,将这个自动发现规则应用在设备上之后,可以获得三个监控项,分别是:

    名称key流量获取方法
    Incoming traffic on interface G1/0/1ifInOctets[G1/0/1]通过 OID IF-MIB::ifInOctets.1 获取
    Incoming traffic on interface G1/0/3ifInOctets[G1/0/2]通过 OID IF-MIB::ifInOctets.2 获取
    Incoming traffic on interface G1/0/3ifInOctets[G1/0/3]通过 OID IF-MIB::ifInOctets.3 获取

    以上是就是一个通过 snmp oid 获取自动发现接口入方向流量的例子。

    自定义自动发现规则

    为了加深理解,可以自己手动添加一个自定义发现规则。

    以一个自动返回 ping 结果的自动发现规则为例,首先编写如下脚本,返回的 JSON 必须遵循固定格式:

    #!/root/bin/python3
    import sys
    import json
    import subprocess
    
    dns_ip_map = {
      "baidu" : "180.76.76.76",
      "ali" : "223.5.5.5",
      "tencent" : "119.29.29.29",
    }
    
    def ping(ip):
        cmd = "ping -c 2 -W 2 %s" %(ip)
        result = subprocess.getstatusoutput(cmd)[0]
        return result
    
    
    if __name__ == "__main__":
        # 不加任何参数的时候,返回自动发现的变量,遵循指定的 JSON 格式,经 zabbix 5.0 版本测试
        # 仅返回列表,没有 `data` 作为键也可以
        if len(sys.argv) == 1:
            lld_key_list = [
                {"{#DNS_IP}": ip } for ip in dns_ip_map.keys()
            ]
            print(json.dumps(lld_key_list))
        # 传入参数的时候,即:将变量 {$DNS_IP} 对应的值传入的时候,可以获取到对应的执行结果 
        if len(sys.argv) == 2:
            result = ping(dns_ip_map.get(sys.argv[1]))
            print(result)
    
    

    脚本有两个功能:

    • 不加参数运行时输出自定义变量列表,可以作为【自动发现规则】的 key
    • 加参数运行时输出指定 ip 的 ping 结果,ip 不存在时返回 -1,可以作为【监控项原型】的 key

    执行结果如下:

    # 直接执行
    python3 dns_ping.py
    [{"{#DNS_IP}": "baidu"}, {"{#DNS_IP}": "ali"}, {"{#DNS_IP}": "tencent"}]
    # 加参数,网络是通的,返回 0
    python3 ./dns_ping.py baidu
    0
    # 加参数,ip 不存在,返回 -1
    python3 ./dns_ping.py baidu111
    -1
    

    一般情况下,实现这两个功能的脚本应该是分开的,示例为了简单放在一起了。

    接下来在添加自动发现规则,以在 agent 添加自定义 key 为例:

    # 修改 agent 的配置文件,添加客户端自定义 key,允许传参
    AllowRoot=1
    UserParameter=dns_ping[*],/root/dns_ping.py $1
    

    页面上添加自动发现规则:

    添加完成后,点进规则里面,添加【监控项原型】
    在这里插入图片描述

    在这里插入图片描述

    添加完成后,手动执行一下发现规则:
    在这里插入图片描述

    查看自动发现的监控项:
    在这里插入图片描述

    查看获取到的数据:
    在这里插入图片描述

    参考资料:https://www.zabbix.com/documentation/5.0/zh/manual/discovery/low_level_discovery

    更多相关内容
  • Zabbix的自动发现

    万次阅读 2018-10-19 15:36:04
    Zabbix自动发现是通过(1)网络扫描或(2)代理主动发现实现监控。本文主要介绍网络扫描的发现方式,并深入介绍底层监控项的主动发现功能。 网络发现(Discovery) 对于网络发现最需要理解的就是工作流程,不然觉得这个...

    Zabbix自动发现是通过(1)网络扫描或(2)代理主动发现实现监控。本文主要介绍网络扫描的发现方式,并深入介绍底层监控项的主动发现功能。

    网络发现(Discovery)

    对于网络发现最需要理解的就是工作流程,不然觉得这个发现功能很奇怪,理解之后,就觉得这个设计很合理了。而且使用起来也很正常,而大部分文章只是讲解了如何使用,官方文件简单的提到了工作流程,不小心很容易忽略。
    参考文档: https://www.zabbix.com/documentation/4.0/manual/discovery/network_discovery

    自动发现主要是希望通过发现网络中的主机,并自动把主机添加到监控中,并关联特定的模板,实现自动监控。例如在办公网络中,希望通过Zabbix Agent监控所有工作电脑,只需要把新安装的电脑开放防火墙10050端口,那么电脑就可以自动通过发现新机器,并开始监控。如果网络中可能存在Windows和Linux系统,就需要通过Zabbix Agent判断自动添加的主机是Windows还是Linux。
    以上这个过程需要分为两个步骤:

    1. 通过网络扫描制定的服务,本例为Zabbix Agent是否可以访问system.uname指标
    2. 发现主机之后需要执行添加的动作,这个过程由动作(Action)完成

    Zabbix 自动发现工作示意图

    下图为配置扫描是的方法:
    自动发现流程图
    Zabbix自动发现配置页面
    扫描到网端内存在新机器时,就会出现在监控(Monitoring)->发现(Discovery)中:
    自动发现主机列表
    如果希望把新发现的机器添加到Zabbix监控范围,就需要通过动作来实现主机添加,模板关联了。如下图所示,在配置(Configuration)->动作(Action),选择事件源为发现(Discovery)。通过创建一个新动作,配置好条件和动作实现自动添加主机功能。
    配置自动发现动作
    工作流程如下:
    自动发现动作示意图

    如图,如果网络中有新的机器加入,Zabbix Server扫描到了该机器的代理服务,并且满足动作的条件,则会执行添加主机的动作,并自动关联模板。如果需要分别添加Windows和Linux主机,则需要分别创建两个规则,并通过Zabbix主机发现制定的检查值(本例为system.uname指标)判断是否包含windows或者linux字样来判断是否采用特定的规则。

    底层自动发现(Low Level Discovery)

    什么叫底层发现?底层发现是相对与网络发现的,这里翻译为“底层”有点儿不好理解,“低级别”的发现也不是很合理,最好的理解是:发现监控项,相对于添加主机而言,监控项是位于主机之下的,所以有“底层发现”之说。底层发现主要是发现监控主机的监控项,并自动进行监控的一个功能。主要可以实现自动添加监控项,添加触发器,添加图,也可以添加另外的主机。通过底层发现规则自动添加的规则叫做原型。
    参考文档:https://www.zabbix.com/documentation/4.0/manual/discovery/low_level_discovery
    底层发现执行需要在特定的主机之上才可以执行,而且只能通过模板来添加(添加多项,就是复制操作,需要原型来定义)。他的工作原理如下:

    1. 通过采集主机的特定指标,获得一个JSON对象
    2. 解析JSON对象,匹配原型,获得需要执行的添加项的具体内容
    3. 检查该模型是否已经添加,有则结束
    4. 添加具体的内容,如果有多项,则添加多项(监控项,触发器,图,其他主机)

    下面以监控Java进程的内存使用情况为例,分析如何实现自动发现机器上运行的Java进程,并主动监控Java进程的内存使用情况,本例仅实现监控进程的内存回收时间和执行回收的次数。
    监控Java进程在JDK中有一个jps工具,可以监控Java的进程名称和进程号,例如执行如下命令:

    [root@upass-server scripts]# jps -l
    1760 upaas-config-server-1.1.0.jar
    1906 content-uauth-client-1.1-SNAPSHOT.jar
    1735 upaas-eureka-server-1.1.0.jar
    1831 content-uauth-service-1.1-SNAPSHOT.jar
    4360 org.apache.catalina.startup.Bootstrap
    22670 sun.tools.jps.Jps
    

    例如上面系统运行了Tomcat服务和Spring Cloud的几个微服务,希望通过进程IP获得每一个进程的内存回收数据。这可以通过jstat获得。

    [root@upass-server scripts]# jstat -gc 1760
     S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT   
    1536.0 6656.0 1184.0  0.0   158720.0 14280.5   70144.0    29983.1   60888.0 57833.7 7936.0 7439.1     36   53.392   3      0.318   53.711
    

    具体指令参考:https://blog.csdn.net/wayne_2015/article/details/71159813
    要实现自动发现Java进程,需要通过一个脚本实现发现,并配置到Zabbix Agent中。
    发现脚本:zbx_java_discovery.sh

    #!/bin/bash
    javaProcessList=`sudo $JAVA_HOME/bin/jps -l | grep -v Jps | grep -v Jstat | awk '{print $1"#"$2}' | grep "^[0-9]*#[a-zA-Z].*" `
    echo "{\"data\":["
    first=1
    for javaProcess in $javaProcessList;
    do
        IFS='#' read -r -a items <<< "$javaProcess";
        if [ $first == 1 ]; then
            echo "{\"{#JAVAPSNAME}\":\"${items[1]}\",\"{#JAVAPSPID}\":\"${items[0]}\"}";
            first=0
        else
            echo ",{\"{#JAVAPSNAME}\":\"${items[1]}\",\"{#JAVAPSPID}\":\"${items[0]}\"}";
        fi
    done;
    
    echo "]}";
    

    检查Java进程内存回收的脚本: zbx_java_stat.sh

    #!/bin/sh
    
    #jstat -gc $PID
    # S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT
    #512.0  512.0   0.0    0.0    4416.0   1982.6   10944.0      0.0     4480.0 866.8  384.0   73.9       0    0.000   0      0.000    0.000
    if [ 'YGC' == $2 ]; then
        pos=13
    elif [ 'YGCT' = $2 ]; then
        pos=14
    elif [ 'FGC' == $2 ]; then
        pos=15
    elif [ 'FGCT' == $2 ]; then
        pos=16
    elif [ 'GCT' == $2 ]; then
        pos=17
    else
        pos=0
    fi
    sudo $JAVA_HOME/bin/jstat -gc $1 | grep -v YGC | awk -v p=$pos '{print $p}'
    

    把上面两个脚本添加到Zabbx agent UserParameter中:

    ### Option: UserParameter
    #	User-defined parameter to monitor. There can be several user-defined parameters.
    #	Format: UserParameter=<key>,<shell command>
    #	See 'zabbix_agentd' directory for examples.
    #
    # Mandatory: no
    # Default:
    # UserParameter=
    UserParameter=javaps,/etc/zabbix/scripts/zbx_java_discovery.sh
    UserParameter=javastat[*],/etc/zabbix/scripts/zbx_java_stat.sh $1 $2
    

    这样就可以通过Zabbix Agent调用脚本了。
    例如,调用javaps查看java进程信息:

    [zabbix@upass-server ~]$ /etc/zabbix/sbin/zabbix_agentd -c /etc/zabbix/conf/zabbix_agentd.conf -t javaps
    javaps                                        [t|{"data":[
    {"{#JAVAPSNAME}":"upaas-config-server-1.1.0.jar","{#JAVAPSPID}":"1760"}
    ,{"{#JAVAPSNAME}":"content-uauth-client-1.1-SNAPSHOT.jar","{#JAVAPSPID}":"1906"}
    ,{"{#JAVAPSNAME}":"upaas-eureka-server-1.1.0.jar","{#JAVAPSPID}":"1735"}
    ,{"{#JAVAPSNAME}":"content-uauth-service-1.1-SNAPSHOT.jar","{#JAVAPSPID}":"1831"}
    ,{"{#JAVAPSNAME}":"org.apache.catalina.startup.Bootstrap","{#JAVAPSPID}":"4360"}
    ]}]
    

    就可以输出底层发现要求的JSON格式了。
    调用javastat就可以获得特定进程的内存回收状态了,格式为javastat[PID|YGC|YGCT|FGC|
    FGCT|GCT]

    [zabbix@upass-server ~]$ /etc/zabbix/sbin/zabbix_agentd -c /etc/zabbix/conf/zabbix_agentd.conf -t javastat[1760,YGC]
    javastat[1760,YGC]                            [t|36]
    

    这里需要注意:

    1. Zabbix Agent要求用非Root用户运行,如果java进程用其他用户,或者root用户运行,可能jps无法查询,所以需要配置zabbix用户的sudo,请参考:https://blog.csdn.net/huangzhijie3918/article/details/51345178
    2. Zabbix Agent测试时要注意,如果不是确实配置文件位置,那么需要在执行命令时制定配置文件,才可以正确执行。

    通过以上工作,zabbix agent就可以实现java进程的内存回收监控了,下面在Zabbix Server上实现自动发现监控。
    流程如下:

    1. 创建一个监控的模板
    2. 在该模板上添加一个自动发现规则
    3. 在新添加的规则上添加监控项原型(prototype)
    4. 把新模板关联到部署好的主机(也可以添加到上一节中自动发现规则的自动添加模板中)

    下面图示配置内容:
    添加一个模板,并关联一个模板组:
    添加底层自动发现模板
    在模板中添加底层自动发现(Low Level Discovery),实现自定义的java内存监控,这里需要选择采用zabbix agent,并输入关键字(key)为前面编写的javaps命令,该命令执行zbx_java_discovery.sh脚本,获得当前进程列表的JSON数据。
    添加底层自动发现规则
    在通过底层自动发现模板,添加监控项(Item)模板,实现自动监控当前运行的有效Java进程。
    添加监控项原型(prototype)
    一共添加了5个监控项,分别获取Java年轻代内存回收次数,时间,全内存回收(FGC)次数和时间,内存回收总耗时。
    经过Zabbix自动发现后,就会自动添加监控项,并开始监控,如果存在错误,会有告警提示。
    监控项的结果

    注意:
    如果在调试过程中发现不对劲的地方,可以通过调高日志级别,获取更多的日志信息,有助于解决问题。
    下面指令调高服务器日志级别:
    zabbix_server -c /usr/local/etc/zabbix_server.conf -R log_level_increase
    具体文档参考:
    https://www.zabbix.com/documentation/4.0/manual/concepts/server

    展开全文
  • 【Zabbix】Zabbix网络自动发现

    千次阅读 2022-02-25 20:45:52
    二、Zabbix网络自动发现介绍 Zabbix为用户提供了高效灵活的网络自动发现功能。 适当的网络发现配置可以: 加快Zabbix部署 简化管理 无需过多管理,也能在快速变化的环境中使用Zabbix Zabbix网络发现基于以下信息:...

    一、参考链接

    阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 (aliyun.com)

    zabbix镜像-zabbix下载地址-zabbix安装教程-阿里巴巴开源镜像站 (aliyun.com)

    1 网络发现 (zabbix.com)

    二、Zabbix网络自动发现介绍

    Zabbix为用户提供了高效灵活的网络自动发现功能。

    适当的网络发现配置可以:

    • 加快Zabbix部署
    • 简化管理
    • 无需过多管理,也能在快速变化的环境中使用Zabbix

    Zabbix网络发现基于以下信息:

    • IP范围
    • 可用的外部服务(FTP,SSH,WEB,POP3,IMAP,TCP等)
    • 来自 zabbix agent 的信息(仅支持未加密模式)
    • 来自 snmp agent 的信息

    不支持:

    • 发现网络拓扑

    网络发现由两个阶段组成:发现(discovery)和动作(actions)。

    1、发现

    Zabbix定期检测网络发现规则中定义的IP范围,并为每个规则单独配置检查的频次。

    请注意,一个发现规则始终由单一发现进程处理,IP范围主机不会被分拆到多个发现进程处理。

    每个规则中都定义了一组需要检测的服务。

    网络发现模块每次检测到 service 和 host(IP)都会生成一个 discovery 事件

    事件名称 对应的查结果
    Service Discovered服务首次被发现或者由’down’变’up’
    Service Up服务持续 'up’
    Service Lost服务由 ‘up’ 变 'down’
    Service Down服务持续 'down’
    Host Discovered在主机的所有服务都 ‘down’ 之后,至少一个服务是’up’。
    Host Up主机至少有一个服务是 ‘up’ 状态
    Host Lost主机的所有服务在至少一个是 ‘up’ 之后全部是 ‘down’。
    Host Down所有服务都持续 'down’

    2、动作

    Zabbix 所有动作都是基于发现事件,例如:

    • 发送通知
    • 添加/删除主机
    • 启用/禁用主机
    • 添加主机到组
    • 从组中删除主机
    • 将主机链接到/取消链接模板
    • 执行远程脚本命令

    基于事件的网络发现动作, 可以根据设备类型、IP地址、状态、运行时间/停机时间等进行配置,查看操作 and 条件页面。

    3、创建主机

    如果在动作→操作选择添加主机操作,那么主机会被添加, 即使添加主机操作未被执行,通过下列的操作仍然可以添加主机,这样的操作是:

    • 启用主机
    • 禁用主机
    • 添加主机到主机组
    • 将主机链接到模板

    当添加主机时, 如果反向查找失败,那么主机名就是DNS反向查找的结果或者是IP地址。查找是从Zabbix服务器或Zabbix代理执行的,具体取决于自动发现的执行。如果在Zabbix proxy上查找失败,则不会在Zabbix server上重试。如果具有相同名称的主机已经存在,那么下一个主机将会把_2附加在主机名后,依次附加_3等。

    创建的主机会被添加到主机群组中的Discovered hosts下(默认情况下,在管理一般其他 可以进行配置),如果希望将主机添加到另一个主机群组中, 可以从动作→操作选择添加一个 从主机群组中删除 的操作类型(需要指定“Discovered hosts”),当然也可以选择添加到主机群组的操作类型(需要指定其他的主机群组),因为主机必须属于主机群组。**

    如果主机已经存在, 且自动发现中同时存在已发现的IP地址,那么将不会创建新的主机,但是,如果自动发现的操作包含(链接模板,添加到主机群组等),则会在已经存在的主机上执行相应的操作。

    4、移除主机

    从Zabbix 2.4.0开始,如果已发现的实体不在自动发现规则的IP范围内,则由网络发现规则创建的主机将会被自动删除。主机将立即删除

    5、添加主机时的创建接口

    当网络自动发现,添加主机时,它们的接口根据以下规律来创建的:

    • 检测到服务 - 例如,如果SNMP检查成功,那么将会创建一个SNMP接口;
    • 如果主机响应Zabbix agent和SNMP的请求,那么这两种类型的接口都会被创建;
    • 如果唯一性准则是是Zabbix agent键值或是SNMP OID返回的数据, 这第一个接口发现的主机将会被创建,而这个接口将会被作为默认接口,其他IP地址将会作为附加接口被添加。
    • 如果主机只响应agent检查,则只能创建agent接口。如果稍后开始响应SNMP的检查,那么将添加SNMP接口为附加接口。
    • 如果最初创建了3个独立的主机,他们都被自动发现的唯一性准则“IP”发现,然后修改自动发现规则,为了使A、B和C自动发现的唯一性准则结果是相同的,那么接口B和C作为接口A的附加接口来创建第一个主机。主机B和C作为个体主机仍然存在。在监控中 → 自动发现中,添加的接口将以黑色字体和缩进形式显示在“已发现的设备”这一列中,但在“已监控的主机”这一列将只显示第一个创建的主机A。由于被认为附加接口的IP,所以不测量主机B和C的“在线时间/断线时间”。

    实战演示—配置网络发现 Network dsicovery

    Ⅰ、准备一台可被扫描发现的主机

    1、安装agent端的相关包

    [root@zabbix-agent-02 ~]# yum install -y zabbix-agent zabbix-sender
    

    image-20220215150536389

    2、设置zabbix-agent端的配置文件

    [root@zabbix-agent-02 ~]# vim /etc/zabbix/zabbix_agentd.conf
    修改内容如下
    # zabbix 服务端地址
    Server=192.168.200.60
    # zabbix活动服务器地址
    ServerActive=192.168.200.60
    # 主机名,在web页面添加主机时需设置相同
    Hostname=zabbix-agent-02
    按:wq保存退出。
    

    3、visudo修改sudo的配置

    [root@zabbix-agent-02 ~]# visudo
    ## Allow root to run any commands anywhere
    root    ALL=(ALL)       ALL
    zabbix  ALL=(ALL)       NOPASSWD:ALL
    

    4、启动agent服务

    [root@zabbix-agent-02 ~]# systemctl start zabbix-agent
    [root@zabbix-agent-02 ~]# systemctl status zabbix-agent
    

    Ⅱ、创建自动网络发现规则—discovery

    • 创建发现规则

    image-20220215151431925

    • 配置规则

    image-20220215152112590

    • 添加完成

    image-20220215152133515

    • 测试
    [root@zabbix-server ~]# zabbix_get -s 192.168.200.100 -p 10050 -k 'system.hostname'
    zabbix-agent-02
    [root@zabbix-server ~]# zabbix_get -s 192.168.200.100 -p 10050 -k 'system.uname'
    Linux zabbix-agent-02 3.10.0-1160.53.1.el7.x86_64 #1 SMP Fri Jan 14 13:59:45 UTC 2022 x86_64
    [root@zabbix-server ~]#
    

    Ⅲ、设置自动发现 discovery的动作action

    • 创建动作

    image-20220215152941087

    • 设置action动作

    image-20220215154307103

    image-20220215154322303

    image-20220215154338871

    image-20220215162812118

    展开全文
  • Zabbix自动发现和自动注册

    千次阅读 2019-02-21 13:34:28
    文章目录Zabbix自动发现和自动注册前言客户端配置指定服务器自动发现添加自动发现规则创建自动发现动作添加linux主机自动发现动作添加Windows自动发现动作查看客户端日记信息:active已经连接上自动注册: ...

    Zabbix自动发现和自动注册

    前言

    对于监控服务器越来越多的情况,如果还单独一个一个添加,那效率也太低,因此就要实现批量添加监控服务器的操作,Zabbix提供两种批量自动监控的方式:

    1. 自动发现:由服务端主动发起,Zabbix Server开启发现进程,定时扫描局域网中IP服务器、设备。

    2. 自动注册:由客户端主动发起,客户端必须安装并启动Agentd,否则无法被自动注册添加至主机列表。对于使用SNMP的就要采用自动发现了。

    在看下面文章后可参考学习Zabbix的自动发现文章里的底层自动发现概念

    客户端配置指定服务器

    zabbix_agentd.conf中指定Zabbix server配置信息,这个在前期批量安装客户端的时候,就需要一起批量修改。

    Server=192.168.101.78     
    ServerActive=192.168.101.78  
    HostMetadataItem=system.uname
    

    HostMetadataItem:主机元数据,默读是system.uname

    当agent程序向服务器发送自动注册请求时,会发送其主机名。在某些情况下,Zabbix服务器的主机名不足以区分发现的主机。主机元数据可将其他信息从agent发送到服务器。

    主机元数据在zabbix_agentd.conf中配置。在配置文件中指定主机元数据有两种方式:(两种不能同时用)

    1. HostMetadataItem
    
    HostMetadataItem=system.uname
    

    system.uname用于获取包含“Linux”或“Windows”等信息,具体取决于运行agent的主机。
    主机元数据示例如下:

    Linux: Linux server3 3.2.0-4-686-pae #1 SMP Debian 3.2.41-2 i686 GNU/Linux
    Windows: Windows WIN-0PXGGSTYNHO 6.0.6001 Windows Server 2008 Service Pack 1 Intel IA-32
    
    1. HostMetadata
      可选参数用来定义主机元数据,只有主机自动注册时才用到主机元数据。如果没有定义,该值通过 HostMetadataItem 获得。根据需求设置不同模板进行分组:
    HostMetadata=Linux或HostMetadata=Windows或HostMetadata=Router或HostMetadata=SMNP
    

    自动发现

    添加自动发现规则

    更新间隔:120s-300s,服务器性能不好可以设置久一点

    system.uname:这个是用来匹配的客户端的.

    在这里插入图片描述

    创建自动发现动作

    配置->动作->事件源选择,自动发现,点击创建动作

    添加linux主机自动发现动作

    image.png

    操作:添加主机、添加Linux server组、添加模板,其他自己设置。

    image.png

    添加Windows自动发现动作

    image.png

    操作:添加Windows server分组

    image.png

    查看客户端日记信息:active已经连接上

    image.png

    查看服务端信息:已经自动添加到Windows server和Linux server组中

    image.png

    自动注册:

    由客户端主动发起,客户端必须安装并启动Agentd,否则无法被自动注册添加至主机列表。

    1. 活动的Zabbix agent可以自动注册到服务器进行监控。这种方式无需在服务器上手动配置它们。

    2. 使用SNMP或者其他方式监控的,无法使用自动注册,只能使用自动发现。

    3. 配置—动作—自动注册—创建动作

    名称:Auto Linux server

    条件:主机元数据似 Linux

    操作:添加主机

    操作:添加到主机组:Linux server

    操作:链接到模板:Template OS Linux

    image.png

    展开全文
  • Prometheus自动发现Exporter方案实现1. 基础准备1.1 环境准备1.2 物料准备2. 注册中心拉起3. 自动发现Exporter模板的拉起3.1 关键配置修改(application-prod.yml)3.2 声明ExporterMetric3.3 书写业务逻辑4. ...
  • zabbix5.0配置自动发现交换机

    千次阅读 2020-12-24 14:59:16
    zabbix5.0配置自动发现交换机
  • 一、需求  zabbix 服务器可以手动加入zabbix-agent客户端...这时,zabbix-server 的Discovery 自动发现 功能便派上了用场。 二、条件  1.zabbix server 已经部署好,所需要加入的服务器zabbix-agent已经安装。 ...
  • 解决Zabbix Server无法自动发现Agent的问题
  • zabbix 自动发现规则配置(详解)

    千次阅读 2019-12-09 20:50:14
    对于很多情况下手动创建监控项是很费劲的事,所以zabbix提供了自动发现的功能,我这里以自动发现agent端活动端口为例,再借助zabbix自带的端口监控项来实现自动监控。废话不多说,直接来硬的。 一、修改agent端...
  • Zabbix 使用自动发现功能 发现并添加交换机 版本Zabbix 4.2 1、配置发现规则 在发现规则中,指定IP范围后需要选择发现方式,为了方便后续的信息获取,我在此处实现发现的设备自动获取设备名作为主机名称,不需要...
  • 1、准备一台可被扫描发现的主机 1、安装 agent 段的包 192.168.182.130 node2为例 [root@node1 ~]# yum -y install zabbix-agent zabbix-sender 2、设置 agent 配置,可以把之前设置好的node1的配置传过来 [root@...
  • zabbix discovery / zabbix 自动发现

    万次阅读 多人点赞 2017-07-25 14:03:53
    对于zabbix 我们并不陌生 他是开源的监控系统,现在的一部分企业都在用zabbix,今天给大家分享的是企业级监控zabbix的自动发现规则,有了它我们自定义监控的时候根据宏值可以让他自动发现对应的value 从而省去我们一...
  • 网络发现是zabbix 最具特色的功能之一,它能够根据用户事先定义的规则自动添加监控的主机或服务等 优点: 加快Zabbix部署 简化管理 在快速变化的环境中使用Zabbix,而不需要过度管理 发现方式: ip地址范围; ...
  • 自动发现正确设置后,我们可以实现加快运维管理。几百台Web前端通过自动化进行部署,人工一台一台添加显然不太可行。此时,Zabbix可以通过自动发现结合模板来为符合条件的主机进行自动监控配置。 如下自动发现步骤...
  • 文章目录zabbix4.0学习七:自动发现和发现原型(监控原型,触发器原型)前言low_level-discovery自定义监控项zabbix-agent配置自定义监控项添加low_level-discovery自动发现规则创建发现规则创建自动发现的监控项原型...
  • Zabbix自动发现规则

    千次阅读 2019-04-04 16:10:08
    Zabbix自动发现接口配置模板 1、创建模板 2、创建模板命名 3、点击自动发现规则,并创建发现规则 4、 键值:ifDescr SNMP OID:discovery[{#SNMPVALUE},IF-MIB::ifDescr] SNMP COMMUNUTY:{$SNMP_...
  • 1 案例1:实现Zabbix报警功能 1.1 问题 沿用第5天Zabbix练习,使用Zabbix实现报警功能,实现以下目标: 监控Linux服务器系统账户创建Media,...自定义的监控项默认不会自动报警,首页也不会提示错误,需要配置触发...
  • 网络拓扑自动发现

    千次阅读 2017-12-18 10:18:51
    网络拓扑自动发现  SiteView拓扑王全面支持支持SNMP V1、V2、V3、RMON1.2 和ICMP等协议,可以从任一节点,动态搜索整个网络内的所有子网和网段,全面呈现网络的拓扑结构。SiteView拓扑王搜索的范围包括网络...
  • zabbix 自动发现/自定义宏

    千次阅读 2018-01-25 20:58:12
    hi,大家好,今天给大家分享的是 zabbix监控服的Discovery 自动发现规则以及自定义宏操作, 之前入过坑,结果是 自动发现没有报错,就是监控项没有发现出来,今天整理了一下资料,帮你们解坑 自定义宏(多个宏) 1...
  • zabbix自动发现主机

    千次阅读 2018-06-15 18:02:52
    zabbix有自动发现这个功能,真多添加主机数量较多的情况很好用。从发现到添加完成需要经过以下几个步骤。后面会将一些错误原因进行分析。 1、创建自动发现规则 延迟选项尽量不要选择时间过长,否则会导致主机发现...
  • 详解Prometheus自动发现之file_sd_config

    千次阅读 2020-05-19 15:06:43
    Prometheus提供了自动发现的功能,对于开源组件,我们选择基于文件的自动发现,即<file_sd_config>,实现方式如下: 1. prometheus.yml配置 修改prometheus.yml文件,添加自动发现文件信息,具体如下: scrape...
  • 它可以自动扫描指定子网络的所有设备,绘制并布局网络拓扑图,监控设备的服务并在服务出现问题时发出警报提醒。(官方简介链接) 下载: 下载页面:https://mikrotik.com/download 1.下载 The Du...
  • kubernetes-filebeat自动发现容器日志

    千次阅读 2019-05-09 22:41:28
    自动发现 在容器上运行应用程序时,它们会成为监视系统的移动目标。自动发现允许您跟踪它们并在发生变化时调整设置。通过定义配置模板,自动发现子系统可以在服务开始运行时对其进行监控。 您可以filebeat....
  • zabbix自动发现华为,H3C交换机

    万次阅读 2018-08-24 16:00:17
    添加自动发现规则 1.ip范围尽量别太大 zabbix是通过ARP来搜索符合条件的主机的 2.团体名和交换机要一样。这个OID值是提取系统信息的 在OID这块遇到个坑 我用Getif查询到的是1.3.6.1.2.1.1.1 是没有0的 然后导致...
  • zabbix 自动发现Discovery无法获取主机

    千次阅读 2017-09-05 14:23:49
    在正确配置了zabbix的 Discovery和Actions后,等待一段时间,发现zabbix并没有和预想中的一样获取到主机信息。 检查zabbix的日志文件 tail -n 100 /tmp/zabbix_server.log ##倒序查看日志文件 发现有报错 ...
  • 自动发现>>创建发现规则 添加发现规则 启用自动发现规则 配置>>动作>>选择自动发现>>创建动作 添加一个动作名称(等下需要用到),添加触发条件,选上之前创建好的自动发现规则 ...
  • prometheus之自动发现-file_sd_configs

    万次阅读 2019-03-28 13:12:03
    自动发现机制方便我们在监控系统中动态的添加或者删除资源。比如zabbix可以自动发现监控主机以及监控资源。而prometheus作为一个可以与zabbix旗鼓相当的监控系统,自然也有它的自动发现机制。file_sd_configs可以...
  • zabbix使用自动发现添加主机

    千次阅读 2018-09-27 14:10:04
    zabbix自动发现主机

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,230,741
精华内容 892,296
关键字:

自动发现