当前位置: 首页 > news >正文

Zabbix 企业级高级应用

资源清单

操作系统配置主机名IP角色
openEuler 24.032C4Gzabbix192.168.10.108Zabbix 服务端
openEuler 24.032C4Gserver01192.168.10.101被监控节点
openEuler 24.032C4Gserver02192.168.10.102被监控节点

一、自动发现

Zabbix 网络自动发现是一个非常强大的功能,利用该功能可以完成以下工作。

        加快部署速度
简化管理
在快速变化的环境中避免过度管理

网络自动发现基于以下信息:
IP 地址范围
可用的外部服务(FTP,SSH,WEB,POP3,IMAP,TCP 等)
来自 Zabbix agent 的信息 (仅支持未加密模式)
来自 SNMP agent 的信息
在进行网络自动发现的过程中,涉及到的主要工作流程有 Discovery(发现)和 Action(动作),
虽然网络自动发现能够帮助运维人员实现自动化的管理任务,但是网络自动发现无法实现网络拓扑的自动发现。

网络发现的流程

内容分类具体说明
网络发现网络发现模块每次检测到服务和主机(IP)都会生成一个发现事件
执行动作所有动作都是基于发现事件的,基于事件的网络发现动作,可根据设备类型、IP 地址、状态、运行时间等进行配置
创建主机可在执行动作过程中选择添加主机操作,包括添加主机至主机组、将主机链接到模板等
移除主机从 Zabbix 2.4.0 开始,若已发现的实体不在自动发现规则的 IP 范围内,由网络发现规则创建的主机将会被自动删除

1、部署agent

(1) 添加zabbix源

dnf -y install zabbix-release-latest-6.4.el9.noarch.rpm
dnf clean all
dnf makecache

(2) 安装软件包

dnf -y install zabbix-agent

(3) 配置agent

192.168.10.101
Server=192.168.10.108
ServerActive=192.168.10.108
Hostname=server01

192.168.10.102
Server=192.168.10.108
ServerActive=192.168.10.108
Hostname=server02

(4) 启动服务

systemctl start zabbix-agent
systemctl enable zabbix-agent

2、创建发现规则

        注意:自动发现规则的每次扫描都会产生事件,如果配置了 1000 个 IP,那么每次都会产生 1000 个事件,需要注意数据库的资源消耗,生产环境中不宜扫描太频繁。

该页面共有 9 项设置,含义如下。

(1)名称:网络发现规则的名称

(2)有 agent 代理程序自动发现:

此处有两个选择 march 如果选择 No proxy,那么这条规则将会由 Zabbix
server 发起:如果选择某个 Zabbix proxy,那么此条规则将由指定的这台 Zabbix proxy 执行。

(3) IP 范围:

网络探测的扫描范围。可以书写的格式有四种
单个 IP 地址:192.168.207.138
IP 地址范围:192.168.207.1-255
IP 子网掩码范围:192.168.207.0/24
列表:192.168.207.138、192.168.207.139、192.168.4.0/24

(4) 更新间隔:

定义 Zabbix 执行规则的频率。

(5) 检查:

自动发现的网络扫描方式,参数设置如下

(6) 设备唯一性准则:

设备唯一标识,自动发现的清单将会以前面配置的某一项作为唯一性标识,防止重复发现。

(7) 主机名称

(8) 可见的名称

(9) 已启用

3、创建自动发现

(1) 创建规则

(2) 创建动作

(3) 添加触发条件

(4) 添加操作

(5) 验证

(6) 主机名称用 hostnamectl 命令设置的的主机名

vim /etc/zabbix/zabbix_agentd.confsystemctl restart zabbix-agent

修改发现规则

验证

二、自动注册

1、添加自动注册

        自动发现是实现自动添加 agent 端的一种办法,大大减轻了运维人员的劳动量,但是,如果我们不知道 agent 端的地址等信息,自动发现就无法实现了,因为要设置一个 IP 地址范围,网络自动发现需要扫描这个 IP 地址段。

        自动注册是指 Agent 主动且自动的向 Server 发起注册请求,与自动发现的功能一样,但是自动注册适用于特定的场景,如果某个条件未知(如 agent 的 ip 地址段,操作系统版本等,自动发现需要知道这些信息),此时就无法适用自动发现了;但是 zabbix server 的地址是已知的,所以可以让 agent 主动发起请求,实现主机自动添加到 zabbix 中。

        Zabbix 的自动注册对于 agent 是主动模式,Zabbix agent 会主动上报自己的信息,发给 zabbix server。

        但是在 agent2 的版本中,对应的是 agent2 的被动模式,缺点是可能因为配置文件配置错误或者网络不通等原因导致 Zabbix agent2 可能找不到 Zabbix server。

(1) 创建动作

(2) 添加触发条件

(3) 添加操作

(4) 验证

三、监控应用服务

        Zabbix 基本上能监控所有的服务,这里我们以 nginx 服务为例
Nginx 作为一种高性能的 Web 服务器和反向代理服务器,广泛应用于网站的负载均衡、静态资源处理、反向代理等场景。为了确保 Nginx 能够稳定、可靠地运行,及时了解其性能和健康状态非常重要。Zabbix 作为一款强大的开源监控工具,能够帮助我们对 Nginx 进行全面的监控。

监控目的具体说明
性能瓶颈排查通过监控 Nginx 的各种性能指标(如请求数、响应时间等 ),帮助排查服务瓶颈,优化系统性能
故障预警及时检测到 Nginx 服务故障,防止影响用户正常访问
资源利用率监控 Nginx 的 CPU、内存使用率等,防止资源过载
负载均衡效果Nginx 作为负载均衡器时,监控其流量分配情况,帮助发现可能的负载不均问题

三、监控应用服务

1、部署 Nginx

(1) 安装依赖环境

#提供编译安装的环境
dnf -y install gcc zlib-devel pcre-devel

(2) 创建程序用户

useradd -M -s /sbin/nologin nginx

(3) 编译安装 Nginx

#解压
tar zxf nginx-1.26.3_http_proxy.tar.gzcd nginx-1.26.3#配置
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module#编译
make#编译安装
make install#做软连接
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin

(4) 启动服务

nginx -t
nginx

2、监控Nginx哪些指标

        使用 zabbix 监控 Nginx 的时候我们要明确都监控哪些指标,一般来说重点关注连接数、请求处理、性能、资源使用等方面的指标,以确保 Nginx 的稳定性和性能。这些指标有 zabbix 本身就可以监控到的,有些是需要借助自定义 key 来实现的。

(1) 什么是 key

        Zabbix 中内置了很多监控参数(Key),我们可以通过在客户端配置文件中定义 key,获取监控对象中的系统、CPU、网络、内存、文件系统等信息。

        Key(键)是 zabbix 标记 item 的键,是一种标识符。利用 key 可以定义一个监控对象,那么这个监控对象肯定是采集数据的,当时采集数据的时候可能存在很多节点与 server 交互,那么需要具体哪个采集节点,就可以用 key 进行采集。

        使用 zabbix agent 自带的 key 值,我们已经可以监控到很多数据了,但是仍然有一些数据,是 agent 的 key 值没有的。对于这些特殊的需求,就要求我们自己定义 key 值。

 (2) 添加监控脚本

通过 Nginx 的状态统计模块获取 nginx 相关信息
vim /usr/local/nginx/conf/nginx.conf###编辑内容###
location /nginx_status {stub_status on; access_log off;}

 (3) 访问测试

curl 192.168.10.101/nginx_status

类别描述具体数值 / 状态
Active connectionsNginx 正处理的活动链接数1 个
server - acceptsNginx 启动到现在共处理的连接数16449 个
server - handledNginx 启动到现在共成功创建的握手次数16449 次
server - requestsNginx 总共处理的请求次数15422 次
ReadingNginx 读取到客户端的 Header 信息数无具体数值,为概念描述
WritingNginx 返回给客户端的 Header 信息数无具体数值,为概念描述
WaitingNginx 已处理完正等候下一次请求指令的驻留链接状态开启

(4) 编辑脚本文件

vim /etc/zabbix/nginx-status.sh
#!/bin/bash 
NGINX_PORT=80 
NGINX_COMMAND=$1 
nginx_active(){ 
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Active/ {print $NF}' 
}
nginx_reading(){ 
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Reading/ {print $2}' 
}
nginx_writing(){ 
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Writing/ {print $4}' 
}
nginx_waiting(){ 
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Waiting/ {print $6}'
}
nginx_accepts(){ 
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk 'NR==3 {print $1}' 
}
nginx_handled(){ 
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk 'NR==3 {print $2}' 
}
nginx_requests(){ 
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk 'NR==3 {print $3}' 
}
case $NGINX_COMMAND in 
active) 
nginx_active; 
;; 
reading) 
nginx_reading; 
;; 
writing) 
nginx_writing; 
;; 
waiting) 
nginx_waiting; 
;; 
accepts) 
nginx_accepts; 
;; 
handled) 
nginx_handled; 
;; 
requests) 
nginx_requests; 
;; 
*) 
echo $"USAGE:$0 {active|reading|writing|waiting|accepts|handled|requests}" 
esac

(5) 授权

chmod +x /etc/zabbix/nginx-status.sh

(6) 测试

cd /etc/zabbix/
./nginx-status.sh active

(7) 修改配置文件开启自定义key

vim /etc/zabbix/zabbix_agentd.conf
UnsafeUserParameters=1
UserParameter=nginx_status[*],/etc/zabbix/nginx-status.sh $1

(8) 重启服务

systemctl restart zabbix-agent

备注:
UnsafeUserParameters=1:启用自定义 key 功能
UserParameter:指定脚本
nginx_status 为 key 值名称。[*] 里写脚本参数,没有可以不写。/etc/zabbix/nginx-status.sh
$1 路径为脚本所在路径 

(9) 测试

dnf -y install zabbix-get

zabbix_get -s 192.168.10.101 -k nginx_status[accepts]

zabbix_get -s 192.168.10.101 -k nginx_status[active]

3、Zabbix Web 端添加监控

(1)  添加模板

“数据采集”-->“模板”-->“创建模板”,创建一个名为 Nginx-status 的模板

(2) 添加监控项

        点击 “数据采集”,再点击 “模板” 选项后,找到刚刚创建名为 Nginx-status 的模板,点击 “监控项” 后,再点击 “创建监控项” 按钮,创建出如下监控项。

监控项键值为
nginx activenginx_status[active]
nginx readingnginx_status[reading]
nginx writingnginx_status[writing]
nginx waitingnginx_status[waiting]
nginx acceptsnginx_status[accepts]
nginx handlednginx_status[handled]
nginx requestsnginx_status[requests]
nginx portnet.tcp.port[,80]
nginx procproc.num[nginx]
nginx fsvfs.fs.size[/,pfree]

(3) 添加触发器

(4) 添加条件表达式

应用模板

四、zabbix 实现邮件报警

        在日常的 IT 运维过程中,我们时常要关注各个设备和系统的运行情况,但是,我们不希望一直盯着触发器或者事件列表,这样我们就没有空闲时间去处理其他工作。那么能不能让我们摆脱这种束缚,无论我们在什么地方,在发生比较严重的事情的时候能够自动的接收到通知。并且,当发生问题时,我们希望所有相关人员都能收到通知。

        也就是说,当配置的监控超过触发器设定的阈值则触发某种动作,而这个动作可以是发送告警信息的动作。那么 Zabbix 在监控到异常之后,就能够自动的触发一个告警信息发给我们,或发送给整个运维团队。

        自定义的监控项默认不会自动报警,首页也不会提示错误,需要配置触发器与报警动作才可以自动报警。触发器本质就是一个条件判断,对于不同的监控数据来说,我们要给他设置不同的触发器,比如监控内存,当内存小于 500M,就满足判断条件,触发报警,并可以执行报警动作。

1、实现报警所需的条件

(1) 告警媒介

        要想让 Zabbix 把告警信息发送出去,就要有一个接收信息的媒介,目前我们常见的告警媒介有邮箱、钉钉、企业微信等。

(2) 触发器(trigger):

触发器实际是一个条件判断表达式,如判断内存不足 300M,用户超过 30 个等;当触发条件发生后,会导致一个触发事件,触发事件会执行某个动作。

(3) 动作(action):

触发器的条件被触发后的行为;可以是发送邮件、也可以是重启某个服务等。

2、配置告警媒介

(1) 设置告警媒介参数

“告警”-->“媒介”--> 选择 Email

        注意:在设置认证时,密码的位置要使用邮箱的授权码,而不是密码,设置完后点击更新,注意要启用 Email 媒介

(2) 启用此媒介并测试邮件发送

(3) 设置用户报警媒介

“用户”--> 选 Admin,添加用户的报警媒介

(4) 设置动作

添加动作

“告警”-->“动作”-->“触发器动作”--> 创建动作

条件使用 “触发器”,并选择对应的主机(或主机组),勾选对应的触发器。

筛选指定触发条件

添加操作

(5) 创建图形

(6) 编辑网页做测试

echo "1111">/usr/local/nginx/html/index.html

(7) 在测试主机上访问网站

while true;do curl 192.168.10.101;done

(8) 查看图像并关注邮箱信件

(9) 终止访问

(10) 查看图像并关注邮箱

http://www.dtcms.com/a/315441.html

相关文章:

  • AI赋能复合材料与智能增材制造:前沿技术研修重磅
  • 【MATLAB】(八)矩阵
  • 盟接之桥说制造:价格战与品质:制造企业可持续发展的战略思考
  • 智能融合:增材制造多物理场AI建模与工业应用实战
  • PHP:历经岁月仍熠熠生辉的服务器端脚本语言
  • Spring 的 ioc 控制反转
  • 无人设备遥控器之信号切换技术篇
  • Guava 与 Caffeine 本地缓存系统详解
  • jQuery DOM节点操作详解
  • stm32F407 硬件COM事件触发六步换相
  • AI医疗革命:十大应用场景如何重塑未来医疗
  • 手绘风格制图新选择:如何用Excalidraw+cpolar构建你的视觉化工作流?
  • windos10 安装CentOS7 虚拟机笔记
  • Datawhale AI夏令营 第三期 task2
  • 基于ZYNQ ARM+FPGA的声呐数据采集系统设计
  • 01数据结构-平衡二叉树
  • Prometheus监控学习-安装
  • 【Git】实现使用SSH方式连接远程仓库时的免密操作
  • 计算机网络:目的网络在路由表项中的作用
  • Python实战项目--学生成绩管理系统
  • 机器人slam个人笔记
  • 交叉验证:机器学习模型评估的“稳压器”——从原理到实战
  • 测试开发:Python+Django实现接口测试工具
  • AI 对话高效输入指令攻略(四):AI+Apache ECharts:生成各种专业图表
  • 第六章 道阻且艰(2025.7学习总结)
  • 期权定价全解析:从Black-Scholes到量子革命的金融基石
  • 利用Coze平台生成测试用例
  • 发票的分类识别与查验接口-发票管理软件-发票查验API
  • C++返回值优化(RVO):高效返回对象的艺术
  • 《算法导论》第 2 章 - 算法基础