Zabbix 企业级高级应用(Zabbix Enterprise Advanced Application)

2024-09-03 07:28

本文主要是介绍Zabbix 企业级高级应用(Zabbix Enterprise Advanced Application),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。

推荐:Linux运维老纪的首页,持续学习,不断总结,共同进步,活到老学到老
导航剑指大厂系列:全面总结 运维核心技术:系统基础、数据库、网路技术、系统安全、自动化运维、容器技术、监控工具、脚本编程、云服务等。
常用运维工具系列:常用的运维开发工具, zabbix、nagios、docker、k8s、puppet、ansible等
数据库系列:详细总结了常用数据库 mysql、Redis、MongoDB、oracle 技术点,以及工作中遇到的 mysql 问题等
懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂
非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

Zabbix 企业级高级应用
技能目标:
- 掌握 Zabbix 自定义 key
- 掌握 Zabbix 监控 MySQL 主从
- 掌握 Zabbix 创建触发器
- 掌握 Zabbix 监控网站关键词
Zabbix简介
Zabbix 是一个开源的 IT 基础设施监控解决方案,它提供了对网络设备、服务器、应用程序等多种对象的监控功能。在企业级应用中,Zabbix 不仅能够满足基本的监控需求,还支持高级功能,如自定义监控项、触发器配置、以及复杂的告警和通知机制等,这些功能对于需要精细管理和优化 IT 基础设施的企业来说至关重要。因此,Zabbix 能够准确反映其在企业环境中的高级应用和复杂功能。

3.1 案例分析

3.1.1 案例概述

现阶段公司有很多服务,包括 Nginx-LBMySQL 主从等一些重要的服务,Zabbix

key 值不能满足现有的业务,所以需要添加自定义 key 值来监控 Nginx 关键词检索、

MySQL 主从状态,并把服务的工作状态添加进邮件就能够邮件报警及时发现问题。

3.1.2 案例前置知识点

本案例主要介绍 Zabbix 的自定义 key 值来监控服务状态。

1. Zabbix 自定义 key 值

Zabbix 有很多自带的 item key,但是自带的 key 值不能满足工作中其他重要的业务需

求,例如:MySQL 主从、Nginx 详细状态等业务的监控。

自 定 义 key 值 监 控 项 需 要 在 Agent 端 开 启 UnsafeUserParameters 参 数 、 在

UserParameter 参数中定义参数类型中指定脚本或直接填写 shell 命令,并在 Web 管理界

面创建模板,添加监控项及触发器,再关联到主机来达到监控服务的效果。

2. 触发器

Zabbix 触发器作用是监控服务报警。当服务达到自定义的值时,触发设定的警告,从

而实现邮件报警等操作。

3. 监控网站关键词

在生产环境中可能有论坛或者首页上出现违反国家网络信息安全规定的词语,例如黄赌

毒等词语。为了避免这些违法事情发生,需要运维人员定义关键词检索,及时发现并处理。

3.1.3 案例环境

1. 本案例环境

本案例环境如表 3-1 所示。

3-1 本案例的实验环境

主机

操作系统

主机名/IP 地址

主要软件及版本

服务器

CentOS 7.3

zabbix/192.168.9.168

Zabbix-Server

服务器

CentOS 7.3

mysql/192.168.9.237

Zabbix-AgentMySQL

服务器

CentOS 7.3

nginx/192.168.9.229

Zabbix-AgentNginxMySQL

2. 案例拓扑图

本案例实验使用的服务器之间关系,如图 3.1 所示。

3.1 案例拓扑图

3. 案例需求

1)创建自定义 key 值监控项。

2)使用 Zabbix 监控 MySQL 主从状态。

3)创建报警触发器。

4)使用 Zabbix 监控网站关键词。

4. 案例实现思路

1)安装 Zabbix

2)自定义 key 值监控项。

3)添加 MySQL 主从状态监控项。

4)创建报警触发器。

5)利用 Zabbix 监控网站关键词。

3.2 案例实施

完成本案例,需要在 Agent 端开启自定义 key 值,添加被监控模块,添加监控脚本,然

后在 Server 端执行测试,并完成 key 值相关配置。

3.2.1 Zabbix 自定义 key 值

自定义 key 值是在 Zabbix-Agent 端操作,本案例服务器需要将 Zabbix-Server 服务端、

Zabbix-Agent 客户端软件安装到服务端,并且自定义监控 Nginx 服务。所需软件安装方法

在之前章节都有讲解,这里不再赘述。

1. 客户端开启自定义 key 值

使用自定义 key 值需要在 Agent 端开启支持。

[root@nginx ~]# vim /etc/zabbix/zabbix_agentd.conf

......

UnsafeUserParameters=1

//去除#号设置值为 1,开启

......

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

//去掉注释#号,添写自定义脚本

路径,nginx_status key 值名称。[*]里写脚本参数,没有可以不写。/etc/zabbix/nginx-status.sh $1

路径为脚本所在路径

2. 添加 Nginx 模块支持

下面添加 Nginx 的状态模块和访问权限。

[root@nginx ~]# vim /etc/nginx/nginx.conf

......

location /nginx_status {

//添加 nginx 状态模块

stub_status on;

access_log off;

allow 192.168.9.0/24;

//添加权限

allow 127.0.0.1;

deny all;

}

......

[root@nginx ~]# nginx –t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

[root@nginx ~]# systemctl restart nginx

3. 测试是否能够获取到 Nginx 状态

执行如下命令测试是否能获取到 Nginx 的状态。

[root@nginx ~]# curl http://127.0.0.1/nginx_status

Active connections: 1

server accepts handled requests

16449 16449 15422

Reading: 0 Writing: 1 Waiting: 0

执行以上命令得到握手数(handled)为 16449,接受连接数(accepts)为 16449

因此,请求丢失数=(握手数-接受连接数)=16449-16449=0,可以看出本次状态显示没有丢

失请求。

上述命令执行结果中,可以获得对 Nginx 状态的解释如下:

Active connections

Nginx 正处理的活动链接数 1 个。

server

Nginx 启动到现在共处理了 16449 个连接。

accepts

Nginx 启动到现在共成功创建 16449 次握手。

handled requests

Nginx 总共处理了 15422 次请求。

Reading

Nginx 读取到客户端的 Header 信息数。

Writing

Nginx 返回给客户端的 Header 信息数。

Waiting

Nginx 已经处理完正在等候下一次请求指令的驻留链接,开启。

4. 添加监控脚本

在之前 zabbix_agentd.conf 中指定的路径下,创建 Nginx 状态监控脚本文件,用来监

Nginx 工作状态。Shell 脚本在之前章节有介绍,这里不再赘述脚本含义。

[root@nginx ~]# 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;

;;

7 页 共 27 requests)

nginx_requests;

;;

*)

echo $"USAGE:$0 {active|reading|writing|waiting|accepts|handled|requests}"

esac

执行完上面配置后,重启 Zabbix-Agent,命令如下:

[root@nginx ~]# systemctl restart zabbix-agent

5. Zabbix_get 测试

重启 Zabbix-Agent,并在 Server 端使用 Zabbix_get 测试。

[root@nginx ~]# chmod +x /etc/zabbix/nginx-status.sh

[root@zabbix ~]# zabbix_get -s 192.168.9.229 -k nginx_status

USAGE:/etc/zabbix/nginx-status.sh {active|reading|writing|waiting|accepts|handled|requests}

//由于脚本中定义了参数,所以在测试的时候需要加入参数

[root@zabbix ~]#zabbix_get -s 192.168.9.229 -k nginx_status[accepts]

16733

6. Zabbix Web 端添加监控

登录 Zabbix Web 界面,点击“配置”按钮,再点击“模板”选项,然后点击“创建

模板”按钮后,弹出如图 3.2 所示界面。在此界面下,创建一个名为 Nginx 状态的模板,并

把需要监控的主机添加进去,输入模板名称,再输入可见的名称,添加被监控的组和主机,

完成模板创建。

3.2 配置模板信息

创建模板后添加监控项,点击“配置”,再点击“模板”选项后,找到刚刚创建名为 Nginx

状态的模板,点击“监控项”后,再点击“创建监控项”按钮,如图 3.3 所示。

3.3 创建监控项

添加监控项名称“nginx active”,再输入键值“nginx_status[active]”,如图 3.4 所示。

3.4 创建 nginx 监控项

然 后 , 把 剩 余 监 控 项 按 照 上 面 方 法 添 加 , 监 控 项 “nginx reading” 的 键 值 为

“nginx_status[reading]”,监控项“nginx writing”键值为“nginx_status[writing]”,监控项“nginx

waiting” 键 值 为 “nginx_status[waiting]” , 监 控 项 “nginx accepts” 键 值 为

“nginx_status[accepts]”,监控项“nginx handled”键值为“nginx_status[handled]”,监控项

“nginx requests”键值为“nginx_status[requests]”,如图 3.5 所示。

3.5 创建 nginx 监控项 2

7. 验证自定义监控

点击监测中按钮,点击最新数据选项。在名称中输入“Nginx”,点击应用按钮检索,

可以看到刚刚添加的 7 Nginx 监控项,如图 3.6 所示。

3.6 检索 nginx 监控项

点击图 3.6 中右侧的图形选项,即可看到图形化展示的数据,如图 3.7 所示。

3.7 查看图形展示数据

3.2.2 监控 MySQL 主从复制

监控 MySQL 主从复制,主要使用编写的脚本获取同步的状态是否为 yes。即下面
Slave_IO_RunningSlave_IO_Running两项状态均为“Yes”MySQL 主从的搭建在之
前章节已经讲解这里不再赘述。MySQL 主从复制状态检测命令,如下:
MariaDB [(none)]> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
…………
Relay_Log_Pos: 408
Relay_Master_Log_File: mysql-bin.000031
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
…………

1. MySQL-slave 端开启自定义 key 值并设置

MySQL-slave 端编辑 zabbix_agentd.conf 文件,添加自定义 key 值。
[root@mysql-slave ~]# vim /etc/zabbix/zabbix_agentd.conf
......
UnsafeUserParameters=1
......
UserParameter=mysql.slave[*],/etc/zabbix/mysql-slave.sh
......

2. 编写脚本获取数据

MySQL-slave 端编写脚本,并修改执行权限。
[root@mysql-slave ~]# vim /etc/zabbix/mysql-slave.sh
#!/bin/bash
/usr/bin/mysql
-uroot
-p123.com
-e
'show
slave
status\G'
|grep
-E
"Slave_IO_Running|Slave_SQL_Running"|awk '{print $2}'|grep -c Yes
//注意实验时修改用户名密码。
[root@mysql-slave ~]# chmod +x mysql-slave.sh

3. Zabbix_get 测试

Server 端使用 Zabbix_get 测试。
[root@zabbix ~]#zabbix_get -s 192.168.9.237 -k mysql.slave[*]
2
//Slave_IO_Runningt Slave_SQL_Running 返回的 yes 值为 2

4. Web 端添加监控

登录 Zabbix Web 端,点击配置按钮,然后点击模板选项,再点击创建模板按钮,
进行创建模板操作,如图 3.8 所示。
3.8 创建模板
在图 3.9 中,按图所示,添加模板信息,然后点击添加”按钮。
3.9 添加模板信息
“mysql 主从模板创建完成,如图 3.10 所示,
3.10 模板创建完成
接下来,配置监控项,在图 3.10 中,点击监控项按钮。在图 3.11 界面中,添加监控
信息,名称输入“mysql-slave”,键值输入“mysql.slave[*]”,然后点击添加按钮。
图 3.11 添加监控项信息
监控项创建完成,如图 3.12 所示。
图 3.12 监控项创建完成

5. 验证

选择监测中→最新数据,名称输入“mysql”然后点击“应用”按钮,在下方的界面中
15 页 共 27 出现“mysql 备”主机,如图 3.13 所示。
3.13 筛选 MySQL 监控项
在图 3.13 中点击右边的“图形”按钮,会打开到“图形”界面,可以看到 MySQL
从的状态,当出现同步故障时则断开,如图 3.14 所示。
3.14 MySQL 图形监控界面

3.2.3 创建触发器及邮件报警测试

在前面案例的基础上,为 Nginx MySQL 创建触发器。

1. 添加 nginx 触发器

登录 Zabbix Web 端,点击“配置”按钮,再点击“模板”选项,然后点击“Nginx
状态”模板,选择“触发器”选项,点击“创建触发器”按钮,如图 3.15 所示。
3.15 创建触发器
添加触发器名称,严重性选项选择“警告”,再点击“添加”按钮,如图 3.16 所示。
图 3.16 配置触发器
添加表达式,点击“添加”按钮,在弹出界面里监控项选择 192.168.9.229 的“nginx active
监控项,功能选择“最新的 T 值大于 N”,N 填写“5”,再点击“插入”按钮。这里指当
Nginx 的活动连接大于 5 时,触发报警,如图 3.17 所示。
注意:由于是实验环境,这里 N 5,在生产环境中可以根据需求更改。
3.17 添加表达式
完成表达式添加后,点击下方“添加”按钮,完成触发器的创建,如图 3.18 所示。
图 3.18 触发器创建完成

2. 测试触发器是否成功

用多个浏览器访问 Nginx 服务器,当连接数超过 5 个时,将触发报警。
点击“监测中”按钮,再点击“仪表盘”选项,可以看到报警信息,如图 3.19 所示。
图 3.19 仪表盘报警信息
稍等几分钟,就会收到邮件报警,如图 3.20 所示。
图 3.20 邮件警告信息

当连接数恢复后,会自动收到恢复邮件。

3. 添加 MySQL 主从触发器

步骤与 Nginx 相同,点击“配置”按钮,再点击“模板”按钮。然后在“MySQL 主从”
模板中,点击“触发器”选项,如图 3.21 所示。
3.21 准备创建触发器
在图 3.22 中,点击“创建触发器”按钮。
图 3.22 点击创建触发器按钮
在触发器的配置界面,输入名称。然后在表达式项,点击右侧“添加”按钮,如图
3.23 所示。
3.23 配置触发器
在弹出的 3.24 界面中,在监控项中点击选择按钮,选择前面创建的 mysql-slave 监控
项,在功能处点击下拉菜单,选择最新的 T <N”下面 N 中输入 2,然后点击插入按钮。
3.24 配置表达式
插入完成后,在图 3.25 中,可以看到插入的表达式,即当“mysql.slave[*]”的返回值小
2 时触发报警,说明 MySQL 的主从复制出了问题。点击完成按钮,完成触发器配置。
3.25 触发器配置完成
4. 验证 MySQL 主从触发器及报警
进入 slave 数据库,执行“stop slave,关闭同步。打开监测面板查看是否报警,如图
3.26 所示。
图 3.26 MySQL 警报界面
查看报警邮件信息,如图 3.27 所示。
3.27 报警邮件信息
3.2.4 监控网站关键词
监控网站关键词与监控 Nginx 大致相同,都是编写检索字段的脚本,然后 Web 端添
加监控。
1. 编写检索脚本
[root@nginx ~]#vim /etc/zabbix/gjc.sh
#/bin/bash
curl -s http://192.168.9.229/index.html | grep -e -e -e | wc –l
//检索首页中是否存在黄、赌、毒字段,生产环境中可以定义更多字段。
2. 开启 Agent 的自定义 key 值
[root@nginx ~]# vim /etc/zabbix/zabbix_agentd.conf
......
UnsafeUserParameters=1
......
UserParameter=nginx_gjc[*],/etc/zabbix/gjc.sh
......
[root@nginx ~]# systemctl restart zabbix-agent
3. ZabbixWeb 管理界面添加监控
点击配置按钮,再点击模板按钮,再点击创建模板按钮后,创建模板界面,如图
3.28 所示。在此界面配置关键词检索模板,添加模板相关信息。
图 3.28 添加网站关键词模板信息
选择刚刚创建的网站关键词模板,添加监控项,名称输入“gjc”,键值输入自定义的
“nginx_gjc”,完成监控项配置,如图 3.29 所示。
3.29 配置监控项
配置触发器,如图 3.30 所示。
图 3.30 配置触发器
4. 验证关键词检索
编写 index.html 文档,添加脚本中定义的关键词。
[root@nginx ~]# vim /usr/share/nginx/html/index.html
<html>
<body>
<h1>kgc kgc</h1>
<p>kgc kgc</p>
</body>
</html>
Web 仪表盘查看是否有报警,如图 3.31 所示。
图 3.31 查看报警状态
查看是否有报警邮件,如图 3.32 所示。
3.32 查看报警邮件
以上是 zabbix 自定义键值在企业中的实际应用效果,在后面的章节中,将进一步介绍
zabbix 在企业中的其他应用场景。

这篇关于Zabbix 企业级高级应用(Zabbix Enterprise Advanced Application)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1132405

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

hdu1394(线段树点更新的应用)

题意:求一个序列经过一定的操作得到的序列的最小逆序数 这题会用到逆序数的一个性质,在0到n-1这些数字组成的乱序排列,将第一个数字A移到最后一位,得到的逆序数为res-a+(n-a-1) 知道上面的知识点后,可以用暴力来解 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#in

zoj3820(树的直径的应用)

题意:在一颗树上找两个点,使得所有点到选择与其更近的一个点的距离的最大值最小。 思路:如果是选择一个点的话,那么点就是直径的中点。现在考虑两个点的情况,先求树的直径,再把直径最中间的边去掉,再求剩下的两个子树中直径的中点。 代码如下: #include <stdio.h>#include <string.h>#include <algorithm>#include <map>#

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

AI行业应用(不定期更新)

ChatPDF 可以让你上传一个 PDF 文件,然后针对这个 PDF 进行小结和提问。你可以把各种各样你要研究的分析报告交给它,快速获取到想要知道的信息。https://www.chatpdf.com/

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

【C++高阶】C++类型转换全攻略:深入理解并高效应用

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C++ “ 登神长阶 ” 🤡往期回顾🤡:C++ 智能指针 🌹🌹期待您的关注 🌹🌹 ❀C++的类型转换 📒1. C语言中的类型转换📚2. C++强制类型转换⛰️static_cast🌞reinterpret_cast⭐const_cast🍁dynamic_cast 📜3. C++强制类型转换的原因📝