Zabbix-自动注册服务器到Zabbix的三种方式介绍

背景

在项目中,有很多情况下我们没有办法一台一台服务器手动添加,例如

  1. 服务器数量过多
  2. 使用Auto scale等技术自动扩缩容,服务器随时可能被创建或删除
    这种情况下,我们就需要配置自动添加服务器了,Zabbix也是提供了丰富的配置来帮助我们实现这一功能,接下来我们看一下具体可以怎么实现

实操

Autoregistration actions

Autoregistration actions可以说是我心目中最简单的配置了,我来分享一下我是怎么配置的

服务器中配置HostMetadata=RPP-Bankconnector

在/etc/zabbix/zabbix_agent.conf中配置如下

复制代码
HostMetadata=xxx

记得重启agent

配置Autoregistration actions

Alerts -> Actions -> Autoregistration actions,点击左上角Create action

Name: 这个action的名称,可根据意图填写

Conditions: 条件,这边有三个选项,HostName, HostMetadata, Proxy, 由于HostName是唯一的,不可能用来作为条件,所以一般我都选择使用hostmetadata

再看Operations这一个tab

这个tab就是用来设定所有发现主机后需要做的操作,由于实在太多了,我把官网文档里说的粘贴一下

  • Add host
  • Remove host
  • Enable host
  • Disable host
  • Add to host group
  • Remove from host group
  • Add host tags
  • Remove host tags
  • Link template
  • Unlink template
  • Set host inventory mode
    可以看到,操作还是很多的,只需要选择需要的操作进行添加就可以了

Discovery

Data collection -> Discovery中,点击Create Discovery Rules来创建新的Discovery

IP range

在这边我们需要设定我们discover的IP范围,话不多说直接复制官网

复制代码
需要发现的IP地址范围。包括下列格式:
单IP: 192.168.1.33
IP地址范围: 192.168.1-10.1-255。IP地址范围取决于包含的所有地址数量(小于64K)。
IP子网掩码: 192.168.4.0/24
支持的IP掩码:
/16 - /30 用于 IPv4地址
/112 - /128用于IPv6地址
列表: 192.168.1.1-255, 192.168.2.1-100, 192.168.2.200, 192.168.4.0/24
从Zabbix 3.0.0起支持空格、制表符和多行。

Checks

检查项,其实就是用来判断你的host能不能被discover到

复制代码
Zabbix会使用此检查列表来执行网络发现。点击  在弹窗中配置一个新检查。
支持的检查: SSH, LDAP, SMTP, FTP, HTTP, HTTPS, POP, NNTP, IMAP, TCP, Telnet, Zabbix agent, SNMPv1 agent, SNMPv2 agent, SNMPv3 agent, ICMP ping.
基于协议的自动发现使用net.tcp.service[] 功能来检测每台主机,查询SNMP OID的SNMP服务不在此列。通过查询未加密模式的监控项来探测Zabbix agent的存在。请查阅agent监控项获取更多信息。
'端口'参数的格式如下:
单一端口: 22
端口范围: 22-45
列表: 22-45,55,60-70

注意,很多文章中只配置了一个check,但是如果有两个check项,会怎么样呢?其实是完全没有问题的,完全可以设置两个Zabbix agent type的check

其他几个不谈,其实很简单,配置过一个host的应该都知道这几个参数

配置discovery actions

接下来需要去到Alerts -> Actions -> Discovery actions,在这里面配置如果check到对应的数据,该怎么添加到zabbix

可以看到,跟Autoregistration actions差不多的,我们需要这是condition跟operations,由于非常类似,所以这里就不过多赘述了,有问题评论区见吧~

注意

在condition中设置received value的时候,可能很多人会疑惑,我设置了两个check,那这个value是从哪里来的呢?

我一开始也很疑惑,直到我查到了官方说法

复制代码
Specify the value received from an agent (Zabbix, SNMP) check in a discovery rule. String comparison. If several Zabbix agent or SNMP checks are configured for a rule, received values for each of them are checked (each check generates a new event which is matched against all conditions).
equals - equal to the value.
does not equal - not equal to the value.
is greater than or equals - more or equal to the value.
is less than or equals - less or equal to the value.
contains - contains the substring. Parameter is given as a string.
does not contain - does not contain the substring. Parameter is given as a string.

LLD

LLD的话,需要配置一个Discovery,然后先通过discovery来获取对应的服务器列表。

之后通过创建一个Host prototypes来让Zabbix自动创建该Host

图中的Agent的IP地址127.0.0.1也是可以变成一个可选项的,不是非得固定127.0.0.1

可以看到,跟自动注册不一样的是,这个就跟我们的Host界面一样,通过界面化的方式来配置template,tag,hostname等信息,更加可视化

另外,这个Host也可以在配置discovery list的时候通过配置Keep lost resources period来设置多久找不到就自动删除

总结

  1. Autoregistration actions
    • 这应该是最简单的一个,因为只需要写一个action就完事了,不需要配置discovery然后配置action,也不需要适配接口再做后续操作,是我认为最简单的一种用法,但是缺点同样动人
    • 不能自动删除,只能自动添加
  2. Discovery
    • 需要一个确定的IP区间,如果在AWS中有较多子账号,而且配置不当导致private IP冲突的话,对创建host影响很大
    • 可以自动删除(配置对应的discovery action)
  3. LLD
    • 通过接口等方式获取服务器列表,然后添加到zabbix中,适用于AWS CLI这种接口形式的添加
    • 但是还是有个不适用性,就是跨AWS account,无法用一个CLI去获取所有的EC2
    • 可以自动删除(不需要配置,如果没有的话会自动删除)
相关推荐
小白跃升坊6 小时前
基于1Panel的AI运维
linux·运维·人工智能·ai大模型·教学·ai agent
杨江7 小时前
seafile docker安装说明
运维
舰长1157 小时前
linux 实现文件共享的实现方式比较
linux·服务器·网络
好好沉淀7 小时前
Docker开发笔记(详解)
运维·docker·容器
zmjjdank1ng7 小时前
Linux 输出重定向
linux·运维
路由侠内网穿透.7 小时前
本地部署智能家居集成解决方案 ESPHome 并实现外部访问( Linux 版本)
linux·运维·服务器·网络协议·智能家居
树℡独7 小时前
ns-3仿真之应用层(三)
运维·服务器·ns3
VekiSon7 小时前
Linux内核驱动——基础概念与开发环境搭建
linux·运维·服务器·c语言·arm开发
skywalk81638 小时前
尝试在openi启智社区的dcu环境安装ollama最新版0.15.2(失败)
linux·运维·服务器·ollama
看我干嘛!8 小时前
第三次python作业
服务器·数据库·python