zabbix6网络发现(zabbix-proyx)及自动添加主机和关联模板实战;zabbix6安装部署参考前文
一、网络发现
Zabbix_server扫描指定网络范围内的主机过程原理如下:
1. 发现方式
ip地址范围:
l 检查可用的服务探测(如ftp,ssh,http等)
l Zabbix_agentd的响应对某个key的请求;
l Snmp_agent响应
一旦发现某主机,就会产生发现事件;
事件有8类: 分别针对Host,Service有Up/Down,Discovered/Lost;
2. 发现操作
发现操作分两步:
Discover(发现)
Actions(动作): 基于条件、操作
常见可采取的操作:
l 发送信息,远程执行命令,
l 添加或移除主机
l 开启或禁用主机
l 将模块链接到主机
l ……
3. 自动创建接口
网络发现中添加主机时会自动创建接口(interface)创建接口是如下之一:
l 如果是基于zabbix_agent,SNMP等之一检测成功,则会创建对应的接口;
l 如果某服务同时响应给了agent和snmp,则两种接口都会创建;
l 如果同一种发现机制(如agent)返回了非惟一数据,则第一个接口被识别为默认,其它的为额外接口,如某主机上有多个网段;
l 即使是某主机开始时只有agent接口,后来又通过snmp等其他方式发现到,同样会为其添加额外的snmp接口;
l 不同的主机如果返回了相同数据,则第一个主机将被添加,余下的主机会被当作第一个主机的额外接口(如:不同网段的主机用了同一个主机名)
接口如下:
二、网络发现实践
实战环境说明:
版本:6.4.18
zabbix_server ip:172.21.161.234
zabbix_proxy ip: 172.21.161.53
zabbix_agent ip: 172.21.161.115
##1. 用于发现网段主机
在目标主机没有安装zabbix_agent和没有zabbix_proxy的情况下,做网络发现,发现指定网段中的符合检查条件的主机;
等待5分钟以后,监测–> 自动发现 –> 选择 “Discovery_172.21.161”自动发现规则,如下:
以上实践,用于发现符合条件的主机或设备!并不能自动添加主机也不能关联模板;因为没有安装zabbix-agent,或snmp配置;接下来我们在某一台上安装agent,再通过自动发现 添加主机关联模板!
2. 自动添加主机和关联模板
通过网络发现自动添加主机并关联模板操作,前提条件:目标主机已经安装agent,配置如下:
1). 安装zabbix-agent
具体安装省略,zabbix-agent配置如下:
# cat zabbix_agentd.conf
PidFile=/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=172.21.161.234
ServerActive=172.21.161.234
Hostname=Test-Alam8-172-21
Include=/etc/zabbix/zabbix_agentd.d/*.conf
*备注*:以上配置可以通过打入虚拟机镜像,或自动化管理配置工具批量自动更新实现;如ansible-playbook,saltstack配置等;
启动agent
systemctl start zabbix-agent
2). 修改自动发现规则
稍等几分钟,再看监测–>自动发现 可以看到目录指定网段中扫描到有agent的主机只有一台 172.21.161.115符合要求(安装了agent)
3). 添加发现动作
告警–> 动作 –> 发现动作 –> 创建动作 –> 新的动作–> 动作 –> 名称”Discovery_172.21.161” –> 新的触发条件 “自动发现规则”等于 –> 选择创建的自动发现规则 “Discovery_172.21.161” –> 添加 ,
继续上面的步骤添加自动发现状态 等于上
自动发现检查 等于Discovery_172.21.161: Zabbix 客户端 “system.uname”
如下:
最终动作如下:
4). 添加发现后的操作
告警 –> 动作 –> 发现动作 –> 创建动作 –> 新的动作–> 操作2 –> 添加 –> 操作详情 –> 分别添加 “主机,主机组 ,与模板关联”三项,如下:
最终发现动作如下:
监测–> 主机 –> 主机群组“Linux servers” –>应用 如图:
过一分钟后再看是否自动添加了主机且关联了指定模板
数据采集–> 主机 –> 主机群组 选择”Linux Severs” –>应用 如图:
如上图所示,Test-Alam8-172-21主机已经自动添加成功,且成功关联了监控模板!自动发现并配置主机以此类推即可!
3. 通过zabbix-proxy自动发现
1). 说明
以上通过agent自动发现主机用于网络规模较小的情况,如果存在多机房情况,每个机房有一个zabbix-proxy,这也是很常见的大型网络;所以下面通过zabbix-proxy的配置来做自动发现添加主机以及关联指定组和模板
2). zabbix-proxy安装配置
安装组件包
# yum install mariadb-server mariadb zabbix-proxy-mysql zabbix-sql-scripts zabbix-agent zabbix-get -y
配置zabbix-proxy
# cat /etc/zabbix/zabbix_proxy.conf
Server=172.21.161.234
Hostname=zabbix_proxy_161_53
DBName=zabbix_proxy
DBUser=zabbix
DBPort=3306
DBPassword=password
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
PidFile=/run/zabbix/zabbix_proxy.pid
SocketDir=/run/zabbix
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
AllowUnsupportedDBVersions=1
ProxyOfflineBuffer=24
ConfigFrequency=120
DataSenderFrequency=2
StartPollers=15
StartPollersUnreachable=5
StartPingers=5
StartDiscoverers=2
CacheSize=50M
Timeout=30
UnreachablePeriod=45
UnavailableDelay=60
UnreachableDelay=15
LogSlowQueries=3000
agent配置
cat /etc/zabbix/zabbix_agent.conf
PidFile=/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=172.21.161.53
HostnameItem=system.hostname
Hostname=Test-Alam8-zabbix-proxy-161-53
Include=/etc/zabbix/zabbix_agentd.d/*.conf
Timeout=30
UnsafeUserParameters=1
启动mariadb、zabbix-proxy、zabbix-agent服务
systemctl enable mairadb zabbix-proxy zabbix-agent
systemctl start mairadb zabbix-proxy zabbix-agent
# 在zabbix-proxy测试
zabbix_get -s 172.21.161.53 -k "tcp_status[tcp_status,ESTAB]"
3
表示zabbix-proxy和agent配置正常
3). 配置zabbix-proxy
管理–> Proxy –> 创建proxy –> Proxy名称 “zabbix_proxy_161_53” 注意这里的名称需要和zabbix_proxy.conf中的Hostname中保持一致
Proxy模式: 主动模式
Proxy代理地址: 172.21.161.53
加密:保持默认
最终Proxy如下:表示已经发现正常
4). 基于zabbix-proxy配置自动发现规则
配置步骤同 “2、自动发现并自动添加主机和关联模板“
大致如下:
自动发现动作如下:
监测 –>主机 –>查看是否成功完成自动发现并添加主机,如下表示成功!
三、自定义模板实践
1. 自定义说明
1). 介绍
zabbix通过自定义脚本以及自制模板来扩展监控,也就是对业务自定义监控;这里的脚本既可以用shell也可以用python等语言;自定义了脚本主要目的是获取业务相关的监控数据;
结合zabbix web GUI上的自定义模板后才能实现监控项数据获取,展示与告警;
2). 实践内容
通过撰写shell脚本获取主机上tcp 的各种状态,并添加tcp状态模板,触发器,图形等,完成日常自定义获取监控项,配置模板满足业务需要。
2. 自定义实践
1). agent端脚本
自定义获取监控项需要配置agent(172.21.161.115 );配置文件中增加UnsafeUserParameters=1
# cat zabbix_agentd.conf
PidFile=/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=172.21.161.234
ServerActive=172.21.161.234
Hostname=Test-Alam8-172-21
Include=/etc/zabbix/zabbix_agentd.d/*.conf
UnsafeUserParameters=1
2). 自定义监控项
# cat zabbix_agentd.d/tcp_conns.conf
UserParameter=tcp_status[*],/bin/bash /etc/zabbix/bin/tcp.sh $1 $2 $3
# mkdir -pv /etc/zabbix/bin
# cat /etc/zabbix/bin/tcp.sh
#!/bin/bash
tcp_conn_status(){
TCP_STAT=$1
TCP_NUM=$(ss -ant | awk -v stat="$TCP_STAT" 'NR>1 {++s[$1]} END {print s[stat]+0}')
echo $TCP_NUM
}
main(){
case $1 in
tcp_status)
tcp_conn_status $2
;;
*)
echo "Usage: $0 tcp_status <TCP_STATE>"
;;
esac
}
main $1 $2
配置zabbix用户可以执行/etc/zabbix/bin/tcp.sh命令
/etc/sudoers 最后添加 如下:
zabbix ALL=(root) NOPASSWD: /usr/sbin/ss
重启zabbix-agent服务
systemctl restart zabbix-agent
3). 自定义监控项获取测试
在zabbix-server端命令行测试获取自定义监控项:
# zabbix_get -s 172.21.161.115 -k "tcp_status[tcp_status,LISTEN]"
7
# zabbix_get -s 172.21.161.115 -k "tcp_status[tcp_status,TIME-WAIT]"
55
# zabbix_get -s 172.21.161.115 -k "tcp_status[tcp_status,CLOSE-WAIT]"
0
# zabbix_get -s 172.21.161.115 -k "tcp_status[tcp_status,ESTAB]"
2
至此说明agent端配置自定义获取监控项正常!
3. zabbix-server端web GUI创建模板
1). 创建模板
数据采集 –> 模板 –> 创建模板 –> 模板名称”TCP_STATUS” –> 模板组(这里选择Templates/Operating systems) –>描述 (模板作用相关) –> “添加” 如图:
2). 创建监控项
找到刚添加的模板 TCP_STATUS 添加监控项
数据采集 –> 模板 –> TCP_STATUS –>监控项 –> 创建监控项,分别创建 “SYN-RECEIVED,FIN-WAIT-1,FIN_WAIT-2,LISTEN,ESTAB,TIME-WAIT,CLOST-WAIT,LAST-ACK”以下示例为SYN-RECEIVED监控项添加 ,如图:
最终所有自定义监控项如下:
3). 创建触发器
触发器就是当监控项的值达到某条件时触发操作;如tcp活动连接数大于100时
数据采集–>模板–> 找到自定义模板TCP_STATUS –> 触发器–>创建触发器; 分别对
CLOSE-WAIT、ESTABLISHED、SYN-RECEIVED、TIME-WAIT做触发器
*以创建SYN-RECEIVED触发器(最终)为例:*
!
以上5,6步添加触发条件说明如下:
条件 –> 选择 –>监控项” TCP_STATUS:TCP_SYN-RECEIVED “ 如图:
功能:即监控项的功能条件,如最后的获取值等,可选功能很多,如下展示部分,按需要等选择,如图:
默认为 last() - 最后(最近) 的T值
间隔(秒): 30
结果: >= 10
最终第5步条件如图:
第6步条件类似
按以上分别再添加另外三个触发器即可!
*最终触发器添加完成如下:*
4). 创建图形
数据采集 –> 模板 –> 图形 –> 创建图形 –>
分别配置 “名称”、宽(px)、高度(px)、图形类别(正常、饼状,堆叠、爆炸饼图等)
监控项: 就是对哪些监控项出图
最终如下:
4. 关联主机
数据采集–> 主机 –> “Test-Alam8-172-21” –> 模板 –> 选择 自定义的模板 “TCP_STATUS” 如下
关联完主机,可以从 数据采集–> 主机 –> 图形 –> 预览 查看刚添加的图形 如图:
最终自定义义模板如下:
查看获取的监控项数据:
监测 –> 最新数据 –> 主机 “ Test-Alam8-172-21” –> 名称 “TCP”(因为监控项以TCP开头) 可以看到自定义获取的监控项已经都有获取最新数据
至此自定义模板完成!
文档信息
- 本文作者:sysnat
- 本文链接:https://sysant.github.io/2024/09/11/zabbix-02/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)