Zabbix05-zabbix的应用
创建监控
1.创建触发器规则
2.设置邮件报警
3.创建动作
创建触发器规则
1)在监控服务器 上做如下配置:准备邮件服务和邮箱帐号
rpm -q postfix
netstat -utnlp | grep :25
grep zabbix /etc/passwd
mail -u zabbix
mail -s "testmail" zabbix < /etc/hosts
mail -u zabbix
2)创建触发器
配置-模板-模板中的触发器-创建触发器
3)触发器表达式
触发器表达式(Expression)格式如下:
{<server>:<key>.<function>(<parameter>)}<operator><constant>
{ 主机 :key名.函数名 (参数) } 表达式 常数
几个表达式的案例:
{web1:system.cpu.load[all,avg1].last(0)}>5 //0为最新数据
如果web1主机最新的CPU平均负载值大于5,则触发器状态Problem
{vfs.fs.size[/,free].max(5m)}<10G //5m为最近5分钟
根分区,最近5分钟的最大容量小于10G,则状态进入Problem
{vfs.file.cksum[/etc/passwd].diff(0)}>0 //0为最新数据
最新一次校验/etc/passwd如果与上一次有变化,则状态进入Problem
4)配置触发器
设置触发器名称,点击add添加表达式,填写表达式:监控项为账户数量,最近300秒账户数量大于26(根据系统账户数量实际填写),
选择触发器报警级别,Add创建该触发器,
设置邮件
1)创建Media
通过Administration(管理)-->Media Type(报警媒体类型)-->选择Email(邮件
设置邮件服务器信息,设置邮件服务器及邮件账户信息
2)为用户添加Media
在Administration(管理)-->Users(用户)中找到选择admin账户
点击Admin账户后,在弹出的界面中选择Media(报警媒介)菜单-->点击Add(添加)报警媒介
点击Add(添加)后,在Meida Type中填写报警类型,收件人,时间等信息
创建Action动作
1)Action动作
Action(动作)是定义当触发器被触发时的时候,执行什么行为。
通过Configuration(配置)-->Actions(动作)-->Create action(创建动作)
2)配置Action动作的触发条件
填写Action动作的名称,配置什么触发器被触发时会执行本Action动作(账户数量大于26)
3)配置Action动作的具体行为
配置动作的具体操作行为(发送信息或执行远程命令),无限次数发送邮件,60秒1次,发送给Admin用户
4)测试效果
在被监控主机创建账户(让账户数量大于26),然后登录监控端Web页面,在仪表盘中查看问题报警(需要等待一段时间
查看报警邮件,在监控服务器上使用mail命令查收报警邮件
Zabbix自动发现
1、自动发现说明
(1)当zabbix要监控的设备越来越多,手动添加监控设备越来越有挑战,此时,可以考虑使用自动发现功能
(2)需要一次性添加一组监控主机,也可以使用自动发现功能
2、自动发现可以实现
(1)自动发现、添加主机,自动添加主机到组
(2)自动连接模版到主机,自动创建监控项目与图形等
3、自动发现流程
(1)创建自动发现规则
(2)创建action动作,说明发现主机后自动执行什么动作
(3)通过动作,执行添加主机,链接模版赋奥主机等操作创建徙糸镱创建
创建自动发现规则
1)创建自动发现规则
通过Configuration(配置)-->Discovery(自动发现)-->Create discovery rule(创建发现规则)
2)填写规则
填写自动发现的IP范围(逗号隔开可以写多个),多久做一次自动发现(默认为1小时,仅实验修改为1m),如图-19所示。配置检查的方式:Ping、HTTP、FTP、Agent的自定义key等检查
创建动作
1)创建Action动作
通过Configuration(配置)--> Actions Event source(事件源):自动发现(Discovery)-->Create action(创建动作)
2)配置Action动作具体行为
配置动作,添加动作名称,添加触发动作的条件
点击操作(触发动作后要执行的操作指令),操作细节:添加主机到组,与模板链接(HTTP模板)
添加新的虚拟机
1)创建新的虚拟机(启动HTTP服务器)
创建一台新的主机,验证zabbix是否可以自动发现该主机,可以重新部署一台新的虚拟机(注意前面的课程,我们已经创建了虚拟机zabbixclient_web2,并且已经安装部署了Zabbix agent,如果没有该虚拟机或没有安装Agent,则需要前在zabbixclient_web2部署Agent),也可以将旧虚拟机的IP地址,临时修改为其他IP。
2)验证结果
登陆Zabbix服务器的Web页面,查看主机列表,确认新添加的主机是否被自动加入监控主机列表,是否自动绑定了监控模板。
Zabbix主动监控
默认zabbix采用的是被动监控,主动和被动都是对被监控端主机而言的!
被动监控
Server向Agent发起连接,发送监控key,Agent接受请求,响应监控数据。
主动监控
Agent向Server发起连接,Agent请求需要检测的监控项目列表,Server响应Agent发送一个items列表,Agent确认收到监控列表,TCP连接完成,会话关闭,Agent开始周期性地收集数据。
主动监控和被动监控的区别
Server不用每次需要数据都连接Agent,Agent会自己收集数据并处理数据,Server仅需要保存数据即可。
监控主机增多后
当监控主机达到一定量级后,Zabbix服务器会越来越慢,此时,可以考虑使用主动监控,释放服务器的压力。
另外,Zabbix也支持分布式监控,也是可以考虑的方案。
添加被监控主机
1)为被监控主机安装部署zabbix agent
yum -y install gcc pcre-devel
tar -xf zabbix-3.4.4.tar.gz
cd zabbix-3.4.4/
./configure --enable-agent
make && make install
2)修改agent配置文件
将agent监控模式修改为主动模式。
vim /usr/local/etc/zabbix_agentd.conf
StartAgents=0 # 设置为0,则禁止被动监控,不启动zabbix_agentd服务
ServerActive=192.168.2.5 # 允许哪些主机监控本机,一定要取消127.0.0.1
Hostname=zabbixclient_web2 # 要和zabbix服务器配置的监控主机名称一致
RefreshActiveChecks=120 # 默认120秒检测一次
UnsafeUserParameters=1 # 允许自定义key
Include=/usr/local/etc/zabbix_agentd.conf.d/
killall (-9) zabbix_agentd # 关闭服务
zabbix_agentd # 启动服务,有进程,没端口
创建主动监控的监控模板
1)克隆Zabbix自动的监控模板
通过Configuration(配置)-->Templates(模板)-->选择Template OS Linux
-->全克隆,克隆该模板,新建一个新的模板,新模板名称为:Template OS Linux ServerActive。
2)修改模板中的监控项目的监控模式
将模板中的所有监控项目全部修改为主动监控模式,通过Configuration(配置)-->Templates(模板)-->选择新克隆的模板,点击后面的Items(监控项)-->点击全选,选择所有监控项目,点击批量更新,将类型修改为:Zabbix Agent(Active主动模式)
3)禁用部分监控项目
批量修改监控项的监控模式后,并非所有监控项目都支持主动模式,批量修改后,会发现有几个没有修改主动模式成功,说明,这些监控项目不支持主动模式,关闭即可。
可以点击类型排序,方便操作,点击状态即可关闭
添加监控主机
1)手动添加监控主机(主动模式监控)
在Zabbix监控服务器,添加被监控的主机(主动模式),设置主机名称:zabbixclient_web2 (必须与被监控端的配置文件Hostname一致),将主机添加到Linux servers组,IP地址修改为0.0.0.0,端口设置为0
为主机添加监控模板,选择刚刚创建的模板(主动模式),添加链接模板到主机
2)验证监控效果
查看数据图表,通过Monitoring-->Graphs菜单,选择需要查看的主机组、主机以及图形,查看效果
CPU、内存等其他数据可用正常获取,但是,查看分区图表时并无数据,因为分区数据采用的是自动发现监控,与普通监控项一样,修改为主动模式即可,选择Template OS Linux ServerActive模板,修改Discovery自动发现为主动模式
拓扑图与聚合图形
创建拓扑图
1)创建拓扑
绘制拓扑图可以快速了解服务器架构,通过Monitoring(监控中)-->Maps(拓扑图),选择默认的Local network拓扑图,编辑即可(也可以新建一个拓扑图)
2)拓扑图图表说明
Icon(图标),添加新的设备后可以点击图标修改属性
Shape(形状)
Link(连线),先选择两个图标,再选择连线
完成后,点击Update(更新)
创建聚合图形
1)创建聚合图形
聚合图形可以在一个页面显示多个数据图表,方便了解多组数据。
通过Monitoring(监控中)-->Screens(聚合图形)-->Create screen(创建聚合图形)即可创建聚合图形
修改聚合图形参数如下:
Owner:使用默认的Admin用户
Name:名称设置为zabbixclient_web2_host
Columns:列数设置为2列
Rows:行数设置为4行
2)为聚合图形中添加监控图形
选择刚刚创建的聚合图形(zabbixclient_web2_host),点击后面的构造函数(constructor),点击Change(更改),设置每行每列需要显示的数据图表
自定义监控案例
监控Nginx服务状态
1)准备环境,部署nginx软件
安装nginx软件,开启status模块
cd /path/to/nginx-1.12.2
./configure --with-http_stub_status_module
make && make install
cat /usr/local/nginx/conf/nginx.conf
location /status {
stub_status on;
}
curl http://192.168.2.100/status
Active connections: 1 #当前已有的连接数
server accepts handled requests #历史连接总数,处理的请求数量,
10 10 3
Reading: 0 Writing: 1 Waiting: 0 #读处理个数,写处理个数,等待处理的数量
2)自定义监控key
语法格式:
UserParameter=key,command
UserParameter=key[*],<command>
key里的所有参数,都会传递给后面命令的位置变量
如:
UserParameter=ping[*],echo $1
ping[0], 返回的结果都是0
ping[aaa], 返回的结果都是aaa
注意:被监控端修改配置文件,注意要允许自定义key并设置Include!
创建自定义key
vim /usr/local/etc/zabbix_agentd.conf.d/nginx.status
UserParameter=nginx.status[*],/usr/local/bin/nginx_status.sh $1
killall zabbix_agentd
zabbix_agentd
自定义监控脚本(仅供参考)
vim /usr/local/bin/nginx_status.sh
#!/bin/bash
case $1 in
active)
curl -s [http://192.168.2.100/status](http://192.168.2.100/status) |awk '/Active/{print $NF}';;
waiting)
curl -s [http://192.168.2.100/status](http://192.168.2.100/status) |awk '/Waiting/{print $NF}';;
accepts)
curl -s [http://192.168.2.100/status](http://192.168.2.100/status) |awk 'NR==3{print $2}';;
esac
chmod +x /usr/local/bin/nginx_status.sh
测试
zabbix_get -s 127.0.0.1 -k 'nginx.status[accepts]'
/usr/local/zabbix/bin/zabbix_get -s 192.168.2.100 -p 10050 -k checknginx[active] #在监控服务器上查看一下
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)