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

相关文章

Python结合PyWebView库打造跨平台桌面应用

《Python结合PyWebView库打造跨平台桌面应用》随着Web技术的发展,将HTML/CSS/JavaScript与Python结合构建桌面应用成为可能,本文将系统讲解如何使用PyWebView... 目录一、技术原理与优势分析1.1 架构原理1.2 核心优势二、开发环境搭建2.1 安装依赖2.2 验

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

SpringShell命令行之交互式Shell应用开发方式

《SpringShell命令行之交互式Shell应用开发方式》本文将深入探讨SpringShell的核心特性、实现方式及应用场景,帮助开发者掌握这一强大工具,具有很好的参考价值,希望对大家有所帮助,如... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定

SpringBoot应用中出现的Full GC问题的场景与解决

《SpringBoot应用中出现的FullGC问题的场景与解决》这篇文章主要为大家详细介绍了SpringBoot应用中出现的FullGC问题的场景与解决方法,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录Full GC的原理与触发条件原理触发条件对Spring Boot应用的影响示例代码优化建议结论F

MySQL 分区与分库分表策略应用小结

《MySQL分区与分库分表策略应用小结》在大数据量、复杂查询和高并发的应用场景下,单一数据库往往难以满足性能和扩展性的要求,本文将详细介绍这两种策略的基本概念、实现方法及优缺点,并通过实际案例展示如... 目录mysql 分区与分库分表策略1. 数据库水平拆分的背景2. MySQL 分区策略2.1 分区概念

MySQL高级查询之JOIN、子查询、窗口函数实际案例

《MySQL高级查询之JOIN、子查询、窗口函数实际案例》:本文主要介绍MySQL高级查询之JOIN、子查询、窗口函数实际案例的相关资料,JOIN用于多表关联查询,子查询用于数据筛选和过滤,窗口函... 目录前言1. JOIN(连接查询)1.1 内连接(INNER JOIN)1.2 左连接(LEFT JOI

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

解决SpringBoot启动报错:Failed to load property source from location 'classpath:/application.yml'

《解决SpringBoot启动报错:Failedtoloadpropertysourcefromlocationclasspath:/application.yml问题》这篇文章主要介绍... 目录在启动SpringBoot项目时报如下错误原因可能是1.yml中语法错误2.yml文件格式是GBK总结在启动S

C语言函数递归实际应用举例详解

《C语言函数递归实际应用举例详解》程序调用自身的编程技巧称为递归,递归做为一种算法在程序设计语言中广泛应用,:本文主要介绍C语言函数递归实际应用举例的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录前言一、递归的概念与思想二、递归的限制条件 三、递归的实际应用举例(一)求 n 的阶乘(二)顺序打印

前端高级CSS用法示例详解

《前端高级CSS用法示例详解》在前端开发中,CSS(层叠样式表)不仅是用来控制网页的外观和布局,更是实现复杂交互和动态效果的关键技术之一,随着前端技术的不断发展,CSS的用法也日益丰富和高级,本文将深... 前端高级css用法在前端开发中,CSS(层叠样式表)不仅是用来控制网页的外观和布局,更是实现复杂交