zabbix6网络发现与自定义模板实战

2024/09/11 zabbix 共 6075 字,约 18 分钟

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 不同的主机如果返回了相同数据,则第一个主机将被添加,余下的主机会被当作第一个主机的额外接口(如:不同网段的主机用了同一个主机名)

接口如下:

zabbix6_001

二、网络发现实践

实战环境说明:

版本: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的情况下,做网络发现,发现指定网段中的符合检查条件的主机;

zabbix6_002

zabbix6_003

zabbix6_004

等待5分钟以后,监测–> 自动发现 –> 选择 “Discovery_172.21.161”自动发现规则,如下:

zabbix6_005

以上实践,用于发现符合条件的主机或设备!并不能自动添加主机也不能关联模板;因为没有安装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). 修改自动发现规则

zabbix6_006

稍等几分钟,再看监测–>自动发现 可以看到目录指定网段中扫描到有agent的主机只有一台 172.21.161.115符合要求(安装了agent)

zabbix6_007

3). 添加发现动作

告警–> 动作 –> 发现动作 –> 创建动作 –> 新的动作–> 动作 –> 名称”Discovery_172.21.161” –> 新的触发条件 “自动发现规则”等于 –> 选择创建的自动发现规则 “Discovery_172.21.161” –> 添加 ,

继续上面的步骤添加自动发现状态 等于上

自动发现检查 等于Discovery_172.21.161: Zabbix 客户端 “system.uname”

如下:

zabbix6_008

最终动作如下:

zabbix6_009

4). 添加发现后的操作

告警 –> 动作 –> 发现动作 –> 创建动作 –> 新的动作–> 操作2 –> 添加 –> 操作详情 –> 分别添加 “主机,主机组 ,与模板关联”三项,如下:

zabbix6_010

最终发现动作如下:

zabbix6_011

监测–> 主机 –> 主机群组“Linux servers” –>应用 如图:

zabbix6_012

过一分钟后再看是否自动添加了主机且关联了指定模板

数据采集–> 主机 –> 主机群组 选择”Linux Severs” –>应用 如图:

zabbix6_013

如上图所示,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

加密:保持默认

zabbix6_014

最终Proxy如下:表示已经发现正常

zabbix6_015

4). 基于zabbix-proxy配置自动发现规则

配置步骤同 “2、自动发现并自动添加主机和关联模板“

大致如下:

zabbix6_016

自动发现动作如下:

zabbix6_017

监测 –>主机 –>查看是否成功完成自动发现并添加主机,如下表示成功!

zabbix6_018

三、自定义模板实践

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) –>描述 (模板作用相关) –> “添加” 如图:

zabbix6_019

2). 创建监控项

找到刚添加的模板 TCP_STATUS 添加监控项

数据采集 –> 模板 –> TCP_STATUS –>监控项 –> 创建监控项,分别创建 “SYN-RECEIVED,FIN-WAIT-1,FIN_WAIT-2,LISTEN,ESTAB,TIME-WAIT,CLOST-WAIT,LAST-ACK”以下示例为SYN-RECEIVED监控项添加 ,如图:

zabbix6_020

最终所有自定义监控项如下:

zabbix6_021

3). 创建触发器

触发器就是当监控项的值达到某条件时触发操作;如tcp活动连接数大于100时

数据采集–>模板–> 找到自定义模板TCP_STATUS –> 触发器–>创建触发器; 分别对

CLOSE-WAIT、ESTABLISHED、SYN-RECEIVED、TIME-WAIT做触发器

*以创建SYN-RECEIVED触发器(最终)为例:*

!zabbix6_022

以上5,6步添加触发条件说明如下:

条件 –> 选择 –>监控项” TCP_STATUS:TCP_SYN-RECEIVED “ 如图:

zabbix6_023

功能:即监控项的功能条件,如最后的获取值等,可选功能很多,如下展示部分,按需要等选择,如图:

zabbix6_024

默认为 last() - 最后(最近) 的T值

间隔(秒): 30

结果: >= 10

最终第5步条件如图:

zabbix6_025

第6步条件类似

按以上分别再添加另外三个触发器即可!

*最终触发器添加完成如下:*

zabbix6_026

4). 创建图形

数据采集 –> 模板 –> 图形 –> 创建图形 –>

分别配置 “名称”、宽(px)、高度(px)、图形类别(正常、饼状,堆叠、爆炸饼图等)

监控项: 就是对哪些监控项出图

最终如下:

zabbix6_027

4. 关联主机

数据采集–> 主机 –> “Test-Alam8-172-21” –> 模板 –> 选择 自定义的模板 “TCP_STATUS” 如下

zabbix6_028

关联完主机,可以从 数据采集–> 主机 –> 图形 –> 预览 查看刚添加的图形 如图:

zabbix6_029

最终自定义义模板如下:

zabbix6_030

查看获取的监控项数据:

监测 –> 最新数据 –> 主机 “ Test-Alam8-172-21” –> 名称 “TCP”(因为监控项以TCP开头) 可以看到自定义获取的监控项已经都有获取最新数据

zabbix6_031

至此自定义模板完成!

文档信息

Search

    Table of Contents