吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 495|回复: 8
收起左侧

[经验求助] Zabbix监控,在Agent自动注册时,如何以Agent主机的IP地址添加主机?

[复制链接]
城南520 发表于 2024-6-24 21:18
25吾爱币
本帖最后由 城南520 于 2024-6-24 21:20 编辑

许多虚拟机通过模板创建,Hostname可能相同,在自动注册(不采用自动发现)到Zabbix Server时,希望以Agent的IP地址而不是主机名来添加主机,但又不希望修改每台虚拟机的Agent配置文件,获取主机名可以通过HostnameItem=system.hostname来实现,获取IP地址有没有类似的?求大神解答

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

棠下村雨 发表于 2024-6-24 22:25
您好,可以参考:这个思路
使用脚本获取IP地址:编写一个脚本来获取虚拟机的IP地址,并将这个脚本作为一个自定义键值在Zabbix Agent中调用。例如:使用ifconfig或ip addr命令来获取IP地
创建脚本:创建一个脚本文件,例如get_ip.sh,并赋予执行权限。

#!/bin/bash
# 获取IP地址的脚本

# 替换eth0为你的网络接口名称
ip addr show eth0 | grep "inet " | awk '{print $2}' | cut -d/ -f1
编辑Zabbix Agent配置文件:在Zabbix Agent的配置文件中添加以下行,调用你创建的脚本作为自定义键值:

UserParameter=ipaddress,/path/to/get_ip.sh
确保替换/path/to/get_ip.sh为你的脚本实际路径。

重启Zabbix Agent:保存配置文件并重启Zabbix Agent以应用更改。

sudo systemctl restart zabbix-agent
eth0是你想要监控的网络接口。根据实际环境,调整网络接口名称或使用不同的命令来获取IP地址
 楼主| 城南520 发表于 2024-6-25 08:52
棠下村雨 发表于 2024-6-24 22:25
您好,可以参考:这个思路
使用脚本获取IP地址:编写一个脚本来获取虚拟机的IP地址,并将这个脚本作为一个 ...

理解错了哦,是要在自动注册到Server时以IP地址作为可见名称,不是单纯的获取Agent端的IP地址
棠下村雨 发表于 2024-6-25 20:53
城南520 发表于 2024-6-25 08:52
理解错了哦,是要在自动注册到Server时以IP地址作为可见名称,不是单纯的获取Agent端的IP地址

好嘞,我理解错了;这个我还没搞过嘞
xiaoboy 发表于 2024-6-25 20:59
1. 使用Zabbix自动注册操作
在Zabbix Server中,可以配置自动注册操作来根据Agent的IP地址添加主机。具体步骤如下:
配置自动注册操作:
登录到Zabbix Web界面。
导航到“配置” -> “动作”。
点击右上角的“创建动作”按钮。
在“动作”页面,选择“自动注册”作为事件源。
在条件部分,添加条件来匹配所有自动注册的主机(例如,主机名包含特定字符串,或其他条件)。
设置操作:
在操作部分,点击“添加”按钮来添加一个新的操作。
选择“添加主机”作为操作类型。
在“主机名”字段中,使用 {HOST.IP} 宏来表示Agent的IP地址。
设置其他必要的参数,例如分配的主机组和模板。
2. 使用Zabbix宏
Zabbix支持使用宏来动态获取信息。在自动注册操作中,可以使用 {HOST.IP} 宏来获取Agent的IP地址。
3. 示例配置
以下是一个示例配置,展示如何使用 {HOST.IP} 宏来添加主机:
创建自动注册动作:
名称:Auto registration by IP
事件源:自动注册
条件:主机名包含 "vm"
添加操作:
操作类型:添加主机
主机名:{HOST.IP}
主机组:Virtual Machines
模板:Template OS Linux
4. 完整配置步骤
登录Zabbix Web界面。
导航到“配置” -> “动作”。
点击“创建动作”。
配置动作:
名称:Auto registration by IP
事件源:自动注册
条件:主机名包含 "vm"
添加操作:
点击“添加”按钮。
操作类型:添加主机
主机名:{HOST.IP}
主机组:Virtual Machines
模板:Template OS Linux
保存配置。
通过这种方式,Zabbix在Agent自动注册时会使用Agent的IP地址作为主机名来添加主机,而不需要修改每台虚拟机的Agent配置文件。
xiaoboy 发表于 2024-6-25 21:01
或者
1. 使用HostMetadataItem参数:
   可以在Zabbix Agent配置文件中使用HostMetadataItem参数来获取IP地址。例如:
   HostMetadataItem=system.run[ip addr | grep -oP '(?<=inet\s)\d+(\.\d+){3}' | head -1]
   这条命令会获取主机的第一个非回环IP地址。

2. 使用用户宏:
   在自动注册动作中,您可以使用{HOST.IP}宏来获取Agent的IP地址。可以设置一个动作,将主机名设置为IP地址:
   Host name: {HOST.IP}
   Visible name: {HOST.IP}

3. 使用API:
   如果有更复杂的需求,可以编写一个脚本,使用Zabbix API在主机自动注册后修改主机名为IP地址。

4. 使用主动模式:
   如果可能的话,将Agent配置为主动模式,并在ServerActive参数中使用IP地址。这样Zabbix Server就可以直接看到Agent的IP地址。

5. 自定义Agent脚本:
   可以编写一个自定义脚本来获取IP地址,并在Agent配置中使用它:
   UserParameter=get.ip,ip addr | grep -oP '(?<=inet\s)\d+(\.\d+){3}' | head -1
   HostMetadataItem=get.ip

个人推荐使用HostMetadataItem参数或用户宏的方法,因为不需要修改每台虚拟机的配置,只需要在模板中设置一次。

 楼主| 城南520 发表于 2024-6-26 09:33
xiaoboy 发表于 2024-6-25 20:59
1. 使用Zabbix自动注册操作
在Zabbix Server中,可以配置自动注册操作来根据Agent的IP地址添加主机。具体 ...

这个不行,在把操作类型设置为添加主机时,没有任何可配置选项,版本是6.4
 楼主| 城南520 发表于 2024-6-26 10:00
xiaoboy 发表于 2024-6-25 21:01
或者
1. 使用HostMetadataItem参数:
   可以在Zabbix Agent配置文件中使用HostMetadataItem参数来获取IP ...

HostMetadataItem获取的信息似乎只能用作匹配条件;
自动注册的时候,没有地方可以指定宏;
编写脚本修改太复杂了;
自动注册本就需要把Agent的ServerActive设置为Server的地址,但可见名称还是主机名不是IP地址;
HostMetadataItem获取的信息似乎只能用作匹配条件;
lxy0016 发表于 2024-7-31 11:03
本帖最后由 lxy0016 于 2024-7-31 11:04 编辑
xiaoboy 发表于 2024-6-25 21:01
或者
1. 使用HostMetadataItem参数:
   可以在Zabbix Agent配置文件中使用HostMetadataItem参数来获取IP ...

第一种方法可行,我的客户端大部分都是vmware虚拟机,ip address输出的第一个接口是loopback,第二个是业务接口,用你们的语句输出的是第一个接口的ip。以下是我改的语句:
HostnameItem=system.run[ip addr | grep -oP '(?<=inet\s)\d+(\.\d+){3}' | tail -n +2| head -n 1]
这样取的是第二个接口的ip,不是很灵活,万一在第三个口,又不对了。

用 HostnameItem可以解决主机名用ip的问题,但是“可见名称”自动注册后不会添加,默认用主机名,这还得手工改成hostname,也很麻烦。没办法像自动发现一样,可以定义好主机名、可见名用什么填。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-15 16:23

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表