【企业级监控】Zabbix监控网站并发连接数

news2024/9/23 9:27:46

Zabbix自定义监控项与触发器

文章目录

  • Zabbix自定义监控项与触发器
    • 资源列表
    • 基础环境
    • 前言
    • 一、什么是zabbix的Key值
    • 二、获取远程Key值
      • 2.1、获得主机的Key值
      • 2.2、被监控端安装Agent
      • 2.3、zabbix_get命令获取Agent数据举例
        • 2.3.1、zabbx_get获取cpu核心数
        • 2.3.2、获取目标主机系统和内核版本参数
        • 2.3.3、查看目标端口是否开启
        • 2.3.4、查看进程是否开启
        • 2.3.5、查看磁盘剩余空间
        • 2.3.6、查看当前网卡流量
        • 2.3.7、获取目标主机内存值
    • 三、Zabbix自定义key值
      • 3.1、添加Nginx模块支持
        • 3.1.1、安装nginx
        • 3.1.2、添加nginx_status模块
      • 3.2、测试首付能够获取到Nginx状态
      • 3.3、添加监控脚本
        • 3.3.1、添加脚本
        • 3.3.2、重启zabbix-agent
      • 3.4、修改agent端参数以支持自定义key值
      • 3.5、Zabbix_get测试
      • 3.6、Zabbix Web端添加监控
        • 3.6.1、添加告警媒介
        • 3.6.2、设置报警发送给用户
        • 3.6.3、添加模块
        • 3.6.4、为模板添加监控项
      • 3.7、验证自定义监控
        • 3.7.1、为主机关联新创建的模板
        • 3.7.2、为该主机添加新的监控图形
        • 3.7.3、验证自定义监控数据和图形
      • 3.8、为nginx监控创建触发器及邮件报警测试
        • 3.8.1、为模板添加触发器
        • 3.8.2、添加告警动作和操作
        • 3.8.3、触发报警

资源列表

操作系统配置主机名IP
CentOS 7.92C4Gzbx192.168.93.101
CentOS 7.92C4Gserver01192.168.93.102
CentOS 7.92C4Gserver02192.168.93.103

基础环境

  • 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
  • 关闭内核安全机制
setenforce 0
sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config

前言

  • 当我们需要获取某台主机上的数据时,直接利用zabbix提供的模板可以很方便的获得需要的数据,但是有些特别的数据,利用这些现有模板或监控项是无法实现的,例如网站状态信息的监控、mysql数据库主从状态等信息 。这时就需要自己定义键值和监控项,以满足企业对检测数据的需要。

一、什么是zabbix的Key值

  • Zabbix中内置了很多监控参数(Key),我们可以通过在客户端配置文件中定义Key,获取监控对象中的系统、CPU、网络、内存、文件系统等信息。
  • Key(键)是zabbix标记item的键,是一种标识符。利用Key可以定义一个监控对象,那么这个监控对象肯定是采集数据的,但是采集数据的时候可能存在很多节点与server交互,那么需要具体哪个采集节点,就可以用Key进行采集。

二、获取远程Key值

2.1、获得主机的Key值

  • 监控项(Itens)就是监控指标获取数据的方式、数据类型、更新数据的时间间隔、历史数据保留时间、趋势数据保留时间、监控项的分组等指标。另外一个概念是监控指标,用key表示,它是构成监控项的一个元素,在一个主机/模板中必须是唯一的。
  • zabbix agent是利用Key获取主机监控数据的,在每个agent端的监控项上,都可以找到zabbix客户端对应的许多key值。
  • “数据采集”——>“主机”——>“监控项”,可以看到每台主机的监控项中,为了采集对应的主机信息,都有一个键值,利用这个键值,Zabbix就可以获取对应的数据。
    在这里插入图片描述

2.2、被监控端安装Agent

  • 所有Agent主机都要操作,
rpm -ivh pcre2-10.23-2.el7.x86_64.rpm 
rpm -ivh zabbix-agent-6.4.8-release2.el7.x86_64.rpm
  • 修改配置文件
# server01
[root@server01 ~]# vim /etc/zabbix/zabbix_agentd.conf 
Server=192.168.93.101
ServerActive=192.168.93.101
Hostname=server01
[root@server01 ~]# systemctl start zabbix-agent.service 
[root@server01 ~]# systemctl enable zabbix-agent.service


# server02
[root@server02 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.93.101
ServerActive=192.168.93.101
Hostname=server02
[root@server02 ~]# systemctl start zabbix-agent.service 
[root@server02 ~]# systemctl enable zabbix-agent.service 

2.3、zabbix_get命令获取Agent数据举例

2.3.1、zabbx_get获取cpu核心数
[root@zbx ~]# zabbix_get -s 192.168.93.102 -k system.cpu.num
2
2.3.2、获取目标主机系统和内核版本参数
[root@zbx ~]# zabbix_get -s 192.168.93.102 -k system.uname
Linux server01 3.10.0-1160.71.1.el7.x86_64 #1 SMP Tue Jun 28 15:37:28 UTC 2022 x86_64
2.3.3、查看目标端口是否开启
[root@zbx ~]# zabbix_get -s 192.168.93.102 -k net.tcp.port[,22]
1
# 回显结果解释
1:开启
0:关闭
2.3.4、查看进程是否开启
[root@zbx ~]# zabbix_get -s 192.168.93.102 -k proc.num[sshd]
4
# 回显结果解释
如果开启,将会显示对应的进程数
2.3.5、查看磁盘剩余空间
[root@zbx ~]# zabbix_get -s 192.168.93.102 -k vfs.fs.size[/,pfree]
96.086125
2.3.6、查看当前网卡流量
[root@zbx ~]# zabbix_get -s 192.168.93.102 -k net.if.out[ens33,bytes]
177208
# 回显结果解释
在不同时间执行两次命令,用后面的减去前面的,除以两者之间的时间,得到速率
2.3.7、获取目标主机内存值
[root@zbx ~]# zabbix_get -s 192.168.93.102 -p 10050 -k vm.memory.size[total]
3953922048

三、Zabbix自定义key值

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

3.1、添加Nginx模块支持

  • 提前监控server01
3.1.1、安装nginx
  • 在server01执行即可
[root@server01 ~]# yum -y install epel-release.noarch
[root@server01 ~]# yum -y install nginx
[root@server01 ~]# cd /etc/nginx/
[root@server01 nginx]# cp nginx.conf.default nginx.conf
cp:是否覆盖"nginx.conf"? y
3.1.2、添加nginx_status模块
  • 编辑如下参数,添加nginx_status模块
[root@server01 nginx]# vim /etc/nginx/nginx.conf
server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }
#####################################################################
        location /nginx_status {
        stub_status on;
        access_log off;
        allow 192.168.93.0/24;
        allow 127.0.0.1;
        deny all;
        }
#####################################################################
# 检查配置文件语法是否有错
[root@server01 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@server01 nginx]# echo "test" > /usr/share/nginx/html/index.html 
[root@server01 nginx]# systemctl start nginx
[root@server01 nginx]# systemctl enable nginx

3.2、测试首付能够获取到Nginx状态

[root@server01 ~]# curl 127.0.0.1/nginx_status
Active connections: 1 
server accepts handled requests
 1 1 1 
Reading: 0 Writing: 1 Waiting: 0 
# 回显结果解释
Active connections:Nginx正处理的活动链接数1个
server:
	accepts :Nginx启动到现在共处理了多少个连接
	handled:Nginx启动到现在共成功创建16449此握手
	requests:Nginx总共处理了多少次请求
Reading:Nginx读取到客户端的Header信息数
Writing:Nginx返回给客户端的Header信息数
Waiting:Nginx已经处理完正在等候下一次请求指令的驻留链接,开启

3.3、添加监控脚本

3.3.1、添加脚本
[root@server01 ~]# 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 
3.3.2、重启zabbix-agent
[root@server01 ~]# chmod +x /etc/zabbix/nginx-status.sh
[root@server01 ~]# systemctl restart zabbix-agent.service

3.4、修改agent端参数以支持自定义key值

[root@server01 ~]# vim /etc/zabbix/zabbix_agentd.conf 
# 默认352行,进行修改
UnsafeUserParameters=1
# 默认361行,取消注释进行修改
UserParameter=nginx_status[*],/etc/zabbix/nginx-status.sh $1
# 备注
UnsafeUserParameters=1:启用自定义Key功能
UserParameter:指定脚本
nginx_status:为Key值名称。[*]里面写脚本参数,没有可以不写。/etc/zabbix/nginx-status.sh $1路径为脚本所在路径。
[root@server01 ~]# systemctl restart zabbix-agent.service

3.5、Zabbix_get测试

[root@zbx ~]# zabbix_get -s 192.168.93.102 -k nginx_status[accepts]
2

3.6、Zabbix Web端添加监控

3.6.1、添加告警媒介
  • “告警”——>“媒介”——>选中“Email”,
    在这里插入图片描述

  • 测试发送邮件,记得启动Email
    在这里插入图片描述
    在这里插入图片描述

3.6.2、设置报警发送给用户
  • 点击“用户”——>“用户”——>点击“Admin”用户——>点击“报警媒介”——>点击类型下面的“添加”选项卡
    在这里插入图片描述

在这里插入图片描述

3.6.3、添加模块
  • “数据采集”——>“模板”——>“创建模板”,创建一个名为Nginx状态的模板
    在这里插入图片描述
3.6.4、为模板添加监控项
  • 点击“数据采集”,再点击“模板”选项后,找到刚刚创建名为Nginx状态的模板,点击“监控项”后,再点击“创建监控项”按钮,创建出如下监控项。
# 添加监控项
监控项 nginx active 键值为 nginx_status[active]
监控项 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.7、验证自定义监控

3.7.1、为主机关联新创建的模板
  • “数据采集”——>“主机”,为该主机关刚才创建的模板。
    在这里插入图片描述
3.7.2、为该主机添加新的监控图形
  • “数据采集”——>“主机”——>“图形”,点击“创建图标”创建nginx active图形
  • 备注:其他监控的图形创建方式一样,此处不在一一列举
    在这里插入图片描述
3.7.3、验证自定义监控数据和图形
  • “检测”——>“主机”,查看server01的检测数据,以及新添加的图形
    在这里插入图片描述

在这里插入图片描述

3.8、为nginx监控创建触发器及邮件报警测试

3.8.1、为模板添加触发器
  • 点击“数据采集”按钮,再点击“模板”选项,然后点击“nginx-status”模板,选择"触发器"选项,点击“创建触发器”按钮
    在这里插入图片描述

  • 添加表达式,点击“添加”按钮,在弹出界面里架空项选择nginx主机的“nginx active”监控项,功能选择“last-最后(最近)的 T 值,结果大于 N”,N填写为3,再点击“插入”按钮。这里的意思是当Nginx的活跃链接大于3时,触发报警。
    在这里插入图片描述

3.8.2、添加告警动作和操作
  • “告警”——>“动作”——>“触发器动作”,点击创建动作按钮

  • 添加触发条件,条件选择触发器,并指定上一步中创建的触发器
    在这里插入图片描述

  • 设置触发器的操作,指定触发后发送报警信息的的接收用户。
    在这里插入图片描述

3.8.3、触发报警
  • 模拟多个用户访问网站,使得链接数大于设定的报警阈值,并观察邮箱的报警邮箱

  • 使用脚本,分别在不同的4太主机上执行,进行访问网站,模拟多用户访问网站

cat >> ./nginx-active.sh << EOF
while true
do
curl 192.168.93.102 	# IP写为Nginx的IP
done
EOF

在这里插入图片描述

  • 可能需要等待几分钟才会发送邮件
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1927031.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

windows中超详细深度学习环境配置之安装显卡驱动、cuda、cudnn、pytorch、torchvision、pycharm

超详细介绍安装Gpu版本的pytorch深度学习环境 一、显卡驱动安装1.1 下载驱动1.2 安装驱动 二、cuda安装2.1 下载cuda2.2 安装cuda2.3 检查cuda是否安装成功 三、安装cudnn3.1 cudnn下载3.2 cudnn安装 四、安装miniconda4.1 miniconda下载4.2 miniconda安装4.3 添加环境变量 五、…

数字营销以打造“会员体系”为主要目标的好处和优势

​蚓链数字化营销实践观察&#xff1a;在数字化时代&#xff0c;企业的营销方式发生了深刻的变革。会员体系作为一种常见的营销策略&#xff0c;在数字营销领域中发挥着越来越重要的作用。 首先&#xff0c;我们来总结一下会员体系的特点和优势 &#xff08;一&#xff09;个性…

图注意力网络

【图书推荐】《图神经网络基础、模型与应用实战》_搭建神经网络需要看什么书-CSDN博客 图注意力网络的由来和发展 图注意力网络&#xff08;GAT&#xff09;是一种图神经网络&#xff08;GNN&#xff09;模型&#xff0c;最早由Petar Velickovic等在2017年提出。它的设计灵感…

Java基础-I/O流

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 字节流 定义 说明 InputStream与OutputStream示意图 说明 InputStream的常用方法 说明 OutputStrea…

Qt基础 | Qt Creator的基本介绍与使用 | 在Visual Studio中创建Qt项目

文章目录 一、Qt Creator的基本介绍与使用1.新建一个项目2.项目的文件组成3.项目文件介绍3.1 项目管理文件3.2 界面文件3.3 主函数文件3.4 窗体相关的文件 4.项目的编译、调试与运行 二、在Visual Studio中创建Qt项目 Qt C开发环境的安装&#xff0c;请参考https://liujie.blog…

C1W1.LAB.Preprocessing+Word frequencies+Logistic_regression_model

理论课&#xff1a;C1W1.Sentiment Analysis with Logistic Regression 文章目录 预处理导入包Twitter dataset简介查看原始文本处理原始文本处理超链接、Twitter 标记和样式分词去除标点和停用词词干处理 process_tweet() 词频构建与可视化导入包加载数据集字典字典实例添加或…

cesium 实现地图环境功能 - 雨,雪,雾特效

需求背景解决效果Codeindex.vuefogEffect.tsrain.glslsnow.glslfog.glsl 需求背景 需要实现天气模拟&#xff0c;日照模拟功能&#xff0c;提高三维实景效果 解决效果 Code 注意&#xff1a;我以下glsl文件时基于 webgl1.0&#xff0c;即cesium&#xff0c;创建球的时候&…

ES的使用示例

1.安装 ES的安装对springboot的版本配置要求很高&#xff0c;需要根据如下的目录下载对应的版本。 查看自己项目所使用的springboot和spring的版本&#xff0c;对应下载文件。 下载链接地址&#xff1a;https://www.elastic.co/cn/downloads/past-releases/elasticsearch-7-…

微软GraphRAG原理介绍(附带部分源码)

我们前几天写了一篇文章&#xff0c;简单跑了一下GraphRAG看了下效果&#xff0c;没看过这篇文章的可以看下https://www.luxinfeng.top/article/动手实操微软开源的GraphRAG。今天我们介绍一下GraphRAG的实现原理&#xff0c;关于实验对比的内容&#xff0c;我会在下一篇文章中…

48V电源架构解析

48V电源架构解析 48V系统的诞生 汽车在1918年引入蓄电池&#xff0c;到1920年逐渐普及&#xff0c;当时的电池电压是6V。后来&#xff0c;随着内燃机排量的增加以及高压缩比内燃机的出现&#xff0c;6V系统已经不能满足需求&#xff0c;于是在1950年引入了12V系统。大多数汽车…

【python学习】标准库之数学相关math库的定义、功能、使用场景、代码示例和第三方数学相关库NumPy

引言 math模块是Python标准库的一部分&#xff0c;它提供了一系列基本的数学函数和常数。这些函数和常数对于日常的数学运算非常有用&#xff0c;例如计算平方根、计算余弦值等。 文章目录 引言一、math的定义二、math的功能2.1 基本的数学运算2.2 数学常数2.3 随机数 三、math…

八臂-聚乙二醇-生物素;8ARM-PEG-Biotin

一、基本信息 名称&#xff1a;八臂PEG生物素、八臂-聚乙二醇-生物素、Octa-arm PEG Biotin、8ARM-PEG-Biotin 结构&#xff1a;具有八个分支的PEG链&#xff0c;每个分支末端连接生物素分子 状态&#xff1a;固体/粉末/溶液&#xff0c;具体取决于产品规格和存储条件 纯度&…

论文去AI痕秘籍:轻松几步,守护你的学术原创性

如何有效降低AIGC论文的重复率&#xff0c;也就是我们说的aigc如何降重&#xff1f;AIGC疑似度过高确实是个比较愁人的问题。如果你用AI帮忙写了论文&#xff0c;就一定要在交稿之前做一下AIGC降重的检查。一般来说&#xff0c;如果论文的AIGC超过30%&#xff0c;很可能会被判定…

Qt|QTreewidget类下函数qt助手详解说明示例(二)

上篇&#xff1a;Qt|QTreewidget类下函数qt助手详解说明示例&#xff08;一&#xff09; 该系列持续更新&#xff0c;喜欢请一键三连&#xff0c;一起学习进步&#xff0c;升职加薪&#xff0c;感谢各位大佬。 QT5.14.2 参考官方QT助手 Kimi辅助说明 文章目录 insertTopLevelI…

浅学三次握手

数据要完成传输&#xff0c;必须要建立连接。由于建立TCP连接的过程需要来回3次&#xff0c;所以&#xff0c;将这个过程形象的叫做三次握手。 结合上面的图来看更清楚。 先说三次握手吧&#xff0c;连接是后续数据传输的基础。就像我们打电话一样&#xff0c;必须保证我和对方…

工作是为了什么

如果经常和总监及以上的领导聊天&#xff0c;就会发现他们与咱们一线程序员的最大不同&#xff0c;并不是编程技能多高深精通&#xff0c;而是分析问题、认知世界的方式。 程序员只关注工作领域的“一亩三分地”&#xff0c;实质上是放弃了自己成长的机会&#xff0c;在工作的…

软件测试——非功能测试

工作职责&#xff1a; 1.负责产品系统测试&#xff0c;包括功能测试、性能测试、稳定性测试、用户场景测试、可靠性测试等。 2.负责测试相关文档的编写&#xff0c;包括测试计划、测试用例、测试报告等。 3.负责自动化测试框架、用例的维护。 岗位要求&#xff1a; 1.熟练…

解决mysql,Navicat for MySQL,IntelliJ IDEA之间中文乱码

使用软件版本 jdk-8u171-windows-x64 ideaIU-2021.1.3 mysql-essential-5.0.87-win32 navicat8_mysql_cs 这个问题我调试了好久&#xff0c;网上的方法基本上都试过了&#xff0c;终于是解决了。 三个地方结果都不一样。 方法一 首先大家可以尝试下面这种方法&#xff1a…

53 传输层

作用&#xff1a;负责数据能够从发送端传输接收端 再谈端口号 端口号&#xff08;port&#xff09;标识了一个主机上进行通信的不同的应用程序 在TCP/IP协议中&#xff0c;用“源IP”&#xff0c;“源端口号”&#xff0c;“目的IP”&#xff0c;“目的端口号”&#xff0c…

陶晶驰串口屏与arduino uno通信,远程控制arduino 2560上的LED

一 材料清单 arduino uno 1个 arduino 2560 1个 nrf24l01 2个 陶晶驰串口屏 1个 二 本文目的 通过串口屏触摸按键远程控制arduino 2560上的LED 点亮。 三 硬件接线 3.1 发射端接线 3.1.1uno和发射模块接线 nRF24L01 与Arduino UNO接线如…