zabbix监控中间件服务

news2024/11/25 20:46:58

zabbix监控Nginx

自定义nginx访问量的监控项,首先要通过脚本将各种状态的值取出来,然后通过zabbix监控。找到自定义脚本上传到指定目录/etc/zabbix/script/

在zbx-client客户端主机操作

#创建目录,然后将脚本上传到该目录

mkdir /etc/zabbix/script/

cd /etc/zabbix/script

chmod +x ngx_status.sh

#脚本内容主要是利用函数定义nginx状态页面的各个字段,然后结合awk进行取值,最后在通过case语句控制脚本输出
cat /etc/zabbix/script/ngx_status.sh
#定义Nginx status页面
ngx_status="http://127.0.0.1/status"
#判断status页面是否存活
ngx_status_code() {
    http_code=`curl -o /dev/null -s -w %{http_code}${ngx_status}`
    if [ ${http_code} == "200" ];then
    	return 1
    else
    	echo "Nginx status is not running."
    fi
}
#获取当前活动用户的连接数量
active() {
    ngx_status_code || curl -s ${ngx_status} | grep "Active" | awk '{print $NF}'
}
#获取接受的客户端连接数量
accepts() {
    ngx_status_code || curl -s ${ngx_status} | awk NR==3 | awk '{print $1}'
}
#获取处理的连接总数量
handled() {
    ngx_status_code || curl -s ${ngx_status} | awk NR==3 | awk '{print $2}'
}
#获取客户端请求的总数量
requests() {
    ngx_status_code || curl -s ${ngx_status} | awk NR==3 | awk '{print $3}'
}

#获取正在读取请求标头的当前连接数量
reading() {
	ngx_status_code || curl -s ${ngx_status} | grep "Reading" | awk '{print $2}'
}
#获取正在将响应写回到客户端的当前连接数量
writing() {
	ngx_status_code || curl -s ${ngx_status} | grep "Writing" | awk '{print $2}'
}
#获取当前正在等待响应的客户端连接数量
waiting() {
	ngx_status_code || curl -s ${ngx_status} | grep "Waiting" | awk '{print $2}'
}
#使用位置变量控制脚本输出
case $1 in
        active)
        	active;;
        accepts)
        	accepts;;
        handled)
        	handled;;
        requests)
        	requests;;
        reading)
        	reading;;
        writing)
        	writing;;
        waiting)
        	waiting;;
        *)
        	echo "Unknown options"
esac
#修改zabbix agent配置文件,开启自定义监控功能
vim /etc/zabbix/zabbix_agentd.conf
...
311 Include=/etc/zabbix/zabbix_agentd.d/*.conf --自定监控路径
330 UnsafeUserParameters=1 --改为1为开启自定义监控功能,默认该功能为关闭状态
#进入自定义监控路径
cd /etc/zabbix/zabbix_agentd.d/
#创建自定义监控文件(文件名要求以 .conf结尾)
vim nginx_status.conf

UserParameter=nginx.active,bash
/etc/zabbix/script/ngx_status.sh active
UserParameter=nginx.accepts,bash
/etc/zabbix/script/ngx_status.sh accepts
UserParameter=nginx.handled,bash
/etc/zabbix/script/ngx_status.sh handled
UserParameter=nginx.requests,bash
/etc/zabbix/script/ngx_status.sh requests
UserParameter=nginx.reading,bash
/etc/zabbix/script/ngx_status.sh reading
UserParameter=nginx.writing,bash
/etc/zabbix/script/ngx_status.sh writing
UserParameter=nginx.waiting,bash
/etc/zabbix/script/ngx_status.sh waiting

#解释
UserParameter= #自定义监控固定格式
nginx.active #监控项名称

#重启zabbix-agent服务
systemctl restart zabbix-agent

获取监控项数据

zabbix server端操作

#服务端下载zabbix-get软件包,用于在命令行获取客户端监控项的值
yum -y install zabbix-get
#获取客户端监控项(按照自己的环境修改IP)
zabbix_get -s 192.168.0.15 -k nginx.active --当前活动用户的连接数量
zabbix_get -s 192.168.0.15 -k nginx.accepts --接收的客户端连接总数量
zabbix_get -s 192.168.0.15 -k nginx.handled --处理的连接总数量
zabbix_get -s 192.168.0.15 -k nginx.requests --客户端请求的总数量
zabbix_get -s 192.168.0.15 -k nginx.reading --正在读取请求的连接数
zabbix_get -s 192.168.0.15 -k nginx.writing --将响应反回客户端的连接数
zabbix_get -s 192.168.0.15 -k nginx.waiting --客户端正在等待服务器的响应数量

接下来创建监控模板、应用集、监控项

当完成后,点击 添加(Add),新的监控项将出现在监控项列表中。

按照上述方法在将其余的监控项添加至模板中。最终的效果如下图:

绑定模板,转到 配置 主机 找到你的主机,把模板绑定到主机。

随后点击配置栏中的监测(Monitoring) → 最新数据 (Latest data)以查看具体细节。

zabbix监控Redis

自定义监控项方法与nginx类似

#上传脚本到/etc/zabbix/script路径并添加执行权限
chmod +x redis_status.sh
#创建自定义监控项文件
vim /etc/zabbix/zabbix_agentd.d/custom_redis_status.conf
UserParameter=Redis.Info[*],/etc/zabbix/script/redis_statu
s.sh $1 $2
UserParameter=Redis.Status,(redis-cli -h 127.0.0.1 -p 6379 ping)2>/dev/null |grep -c PONG
#重启zabbix agent服务
systemctl restart zabbix-agent

接下来创建模板、应用集、监控项、绑定模板与前边的nginx一样,此处不在重复演示,最终效果如下图:

zabbix监控PHP

php-fpm 作为 PHP进程管理程序,我们也需要监控它的状态。

#查看php-fpm配置文件确保已经开启状态页面功能(搜索:status)
vim /etc/php-fpm.d/www.conf
...
121 pm.status_path = /php_status
#查看nginx配置文件确保可以访问php_status页面
vim /etc/nginx/conf.d/default.conf
...
location /php_status { #php状态页面
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME
/scripts$fastcgi_script_name;
include fastcgi_params;
}
  • 访问php状态页面:http://server_ip/php_status

  • pool:fpm池子名称,大多数为www

  • process manager:进程管理方式,值:static,dynamic orondemand

  • start time:启动日期,如果reload了php-fpm,时间会更新

  • start since:运行时长

  • accepted conn:当前池子接受的请求数

  • listen queue:请求等待队列,如果这个值不为0,那么要增加FPM的进程数量

  • max listen queue:请求等待队列最高的数量

  • listen queue len:socket等待队列长度

  • idle processes:空闲进程数量

  • active processes:活跃进程数量

  • total processes:总进程数量

  • max active processes:最大的活跃进程数量(FPM启动开始算)

  • max children reached:进程最大数量限制的次数,如果这个数量不为0,那说明你的最大进程数量太小了,需要设置大点

  • slow requests 当启用了php-fpm slow-log功能时,如果出现php-fpm慢请求这个计数器会增加,一般不当的Mysql查询会触发这个值

自定义监控项方法与nginx类似

#上传脚本到/etc/zabbix/script路径并添加执行权限

chmod +x phpfpm_status.sh
#创建自定义监控项文件

cat /etc/zabbix/zabbix_agentd.d/phpfpm_status.conf

UserParameter=phpfpm_status[*],/bin/bash

/etc/zabbix/script/phpfpm_status.sh "$1"
#重启zabbix agent服务

systemctl restart zabbix-agent

Zabbix Server获取监控项数据

#php-fpm运行时长
zabbix_get -s 192.168.0.15 -k phpfpm_status[start_since]
#当前接收的连接数
zabbix_get -s 192.168.0.15 -k phpfpm_status[accepted_conn]
#等待连接的请求数
zabbix_get -s 192.168.0.15 -k phpfpm_status[listen_queue]
#请求等待队列最高的数量
zabbix_get -s 192.168.0.15 -k
phpfpm_status[max_listen_queue]

zabbix监控MySQL

  • percona官网: https://www.percona.com/
  • 软件下载地址: wget https://www.percona.com/downloads/percona-monitoring-plugins/1.1.6/percona-zabbix-templates-1.1.6-1.noarch.rpm

安装percona

rpm -ivh percona-zabbix-templates-1.1.6-1.noarch.rpm
...
Scripts are installed to /var/lib/zabbix/percona/scripts --监控脚本安装路径
Templates are installed to /var/lib/zabbix/percona/templates --监控模板安装路径
#查看监控模板路径
ls /var/lib/zabbix/percona/templates 
userparameter_percona_mysql.conf --监控项配置文件
zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.6.xml --监控模板文件
#将自定义监控文件移动至/etc/zabbix/zabbix_agentd.d/自定义监控项
目录
mv /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/

导入监控模板,验证模板是否可用,回到zabbix web界面通过 配置模板导入 将模板文件导入。

提示:默认会出现如上图问题,应为percona提供的监控模板由于版本2.0.9过低,而zabbix4.0以后版本就不支持2.0以下的模板,需要使高版本的模板。

通过配置模板查看(搜索:mysql)具体信息

配置percona连接数据库

percona监控插件是php编写,通过php连接mysql数据库来获取相关的数据,需要为percona指定连接数据库的用户与密码。

#修/var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php文件指定用户与密码
ls /var/lib/zabbix/percona/scripts/
get_mysql_stats_wrapper.sh --获取MySQL状态脚本
ss_get_mysql_stats.php --php连接MySQL数据库脚本
#修改php脚本指定连接数据库用户与密码
vim /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php
...
30 $mysql_user = 'root';
31 $mysql_pass = ''; 如果root用户没有密码,则留空即可
#重启zabbix agent服务
systemctl restart zabbix-agent

zabbix server 端命令行取值(具体值可

从/etc/zabbix/zabbix_agentd.d/userparameter_percona_mysql.conf监控项文件中查看)

zabbix_get -s 192.168.0.15 -k MySQL.Sort-scan

0

如果需要监控主从同步状态,需要修

改/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh脚本文件

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

将用户改为root即可(如果root用户没有设置密码,则不需要指定-p)。

回到web界面查看监控项状态。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

具体取值数据可从 监测最新数据 中查看

此时通过 监测仪表板 查看时会发现一个问题通知,大致含义为主从状态为停止。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果没有配置主从同步,通过 配置主机监控项,找到对应监控项关闭即可。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

到此为止MySQL监控以完成。

有时间可以制作一个MySQL的监控模板(中文)只保留核心监控项目,没有必要的,停用掉!

查看监控项状态。

[外链图片转存中…(img-FxnuItaS-1709728242025)]

具体取值数据可从 监测最新数据 中查看

此时通过 监测仪表板 查看时会发现一个问题通知,大致含义为主从状态为停止。

[外链图片转存中…(img-fiOs3lNX-1709728242026)]

如果没有配置主从同步,通过 配置主机监控项,找到对应监控项关闭即可。

[外链图片转存中…(img-9jHutmYm-1709728242026)]

到此为止MySQL监控以完成。

有时间可以制作一个MySQL的监控模板(中文)只保留核心监控项目,没有必要的,停用掉!

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

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

相关文章

7,图像镜像变换

水平镜像就是x图像宽度-原来的x, 垂直镜像就是y图像高度-原来的y void CDib::Mirror_Horizontal() { //指向原图像指针 LPBYTE lpSrc; LPBYTE p_data GetData(); //指向复制区域的指针 LPBYTE lpDst; //图像的宽和高 LONG width GetWidth(); LONG height GetHei…

备战蓝桥杯————二分查找(二)

引言 在上一篇博客中,我们深入探讨了二分搜索算法及其在寻找数组左侧边界的应用。二分搜索作为一种高效的查找方法,其核心思想在于通过不断缩小搜索范围来定位目标值。在本文中,我们将继续这一主题,不仅会回顾二分搜索的基本原理&…

【C++专栏】C++入门 | 命名空间、输入输出、缺省参数

博客主页:Duck Bro 博客主页系列专栏:C专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家 点赞👍收藏⭐评论✍ C入门 | 命名空间、输入输出、缺省参数 文章编号:C入门 / 0…

Java agent技术的注入利用与避坑点

什么是Java agent技术? Java代理(Java agent)是一种Java技术,它允许开发人员在运行时以某种方式修改或增强Java应用程序的行为。Java代理通过在Java虚拟机(JVM)启动时以"代理"(agent…

react native中如何使用webView调用腾讯地图选点组件

react native中如何使用webView调用腾讯地图选点组件 效果示例图代码示例备注 效果示例图 代码示例 import React, {useEffect, useRef, useState} from react; import {Modal, StyleSheet} from react-native; import {pxToPd} from ../../common/js/device; import {WebView…

使用PDFBox封装一个简单易用的工具类快速生成pdf文件

文章目录 一、PDFbox说明1、坐标2、线3、图4、字5、字体加载6、jfreechart图表转字节数组7、依赖二、PDFbox样式1、文字颜色2、线颜色3、线样式三、工具类边框样式对齐样式表行列图片列pdf工具类测试方法四、效果图一、PDFbox说明 1、坐标 文档左下角为坐标原点,x轴向右从0增…

Cluade3干货:超越GPT,模型特点分析+使用教程|2024年3月更新

就在刚刚,Claude 发布了最新的大模型 Claude3,并且一次性发布了三个模型,分别是 Claude 3 Haiku:(日本俳句 )Claude 3 Sonnet(英文十四行诗)Claude 3 Opus(古典乐作品集…

HarmonyOS NEXT应用开发案例——滑动页面信息隐藏与组件位移效果

介绍 在很多应用中,向上滑动"我的"页面,页面顶部会有如下变化效果:一部分信息逐渐隐藏,另一部分信息逐渐显示,同时一些组件会进行缩放或者位置移动。向下滑动时则相反。 效果图预览 使用说明 向上滑动页面…

Vue:双token无感刷新

文章目录 初次授权与发放Token:Access Token的作用:Refresh Token的作用:无感刷新:安全机制:后端创建nest项目AppController 添加login、refresh、getinfo接口创建user.dto.tsAppController添加模拟数据 前端Hbuilder创…

ARM中专用指令(异常向量表、异常源、异常返回等)

状态寄存器传送指令 CPSR寄存器 状态寄存器传送指令:访问(读写)CPSR寄存器 读CPSR MRS R1, CPSR R1 CPSR 写CPSR MSR CPSR, #0x10 0x10为User模式,且开启IRQ和FRQ CPSR 0x10 在USER模式下不能随意修改CPSR,因为USER模式…

js五星评价的制作方法

方法有两种&#xff0c;1、jquer插件&#xff1b;2、图片循环&#xff1b; 第一种、效果图 代码 <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"…

机器学习---拉格朗日乘子法、Huber Loss、极大似然函数取对数的原因

1. 拉格朗日乘子法 拉格朗日乘子法&#xff08;Lagrange multipliers&#xff09;是一种寻找多元函数在一组约束下的极值的方法。通过引 入拉格朗日乘子&#xff0c;可将有d个变量与k个约束条件的最优化问题转化为具有d&#xff0b;k个变量的无约束优化 问题求解。本文希望通…

java工程师面试笔试题,阿里+头条+抖音+百度+蚂蚁+京东面经

前言 分布式事务主要解决分布式一致性的问题。说到底就是数据的分布式操作导致仅依靠本地事务无法保证原子性。与单机版的事务不同的是&#xff0c;单机是把多个命令打包成一个统一处理&#xff0c;分布式事务是将多个机器上执行的命令打包成一个命令统一处理。 MySQL 提供了…

软件测试计划包括哪些内容?专业第三方软件测试机构推荐

软件测试计划是为确保软件质量而制定的详细计划&#xff0c;它在软件开发周期中扮演着至关重要的角色。一个良好的软件测试计划可以确保软件在交付给最终用户之前经过全面的测试和验证&#xff0c;减少软件出现缺陷和问题的可能性。 软件测试计划一般包括以下内容&#xff1a;…

汇编程序中引用头文件

文章目录 写在前面x86汇编示例(AT&T风格ARM汇编示例运行结果 写在前面 汇编程序中也是可以使用头文件的&#xff0c;因为头文件实际上就是预处理中的一环&#xff0c;使用预处理器也对汇编程序中的头文件进行预处理 本文使用的汇编例程&#xff1a; x86版 AT&T汇编hel…

打印螺旋矩阵

打印螺旋矩阵 题目 如&#xff1a;输入 n 5&#xff1b; 输出&#xff1a; 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9解题 这种规律打印题我个人感觉是真的不好写&#xff0c;一看答案感觉也就那回事&#xff0c;真自己琢磨&#xff0c;半…

15 实战:Kaggle房价预测 + 课程竞赛:加州2020年房价预测【李沐动手学深度学习课程笔记】

15 实战&#xff1a;Kaggle房价预测 课程竞赛&#xff1a;加州2020年房价预测【李沐动手学深度学习课程笔记】https://zhuanlan.zhihu.com/p/685343754 写在前面&#xff1a;这里格式很乱&#xff0c;代码直接去知乎copy 1 实战Kaggle比赛&#xff1a;预测房价 1.1 实现几个函…

flowable使用taskService.addComment新增评论需要full_msg字段进行读取

背景 在构建创业项目JeecgFlow过程中&#xff0c;在调用taskService.addComment接口出现了异常。就是数据存储的Message信息出现了截取&#xff0c;也就是存储不完整。 效果如下. flowable版本6.7.2 问题排查 接口详解及问题代码 //新增评论的接口说明 Comment addComment(…

华为OD机试“HJ5 进制转换”Java编程解答

描述 写出一个程序&#xff0c;接受一个十六进制的数&#xff0c;输出该数值的十进制表示。 数据范围&#xff1a;保证结果在 1≤n≤231−1 输入描述&#xff1a; 输入一个十六进制的数值字符串。 输出描述&#xff1a; 输出该数值的十进制字符串。不同组的测试用例用\…

OpenAI高管联名回击:马斯克曾提议并入特斯拉,认为OpenAI注定失败

丨划重点 ① OpenAI周二发文回应马斯克提起的诉讼&#xff0c;称对双方走到这一步感到很难过。 ② 这篇博文的作者包括了OpenAI五位高管&#xff0c;其中首席科学家苏茨凯弗已经久违露面。 ③ OpenAI证实&#xff0c;只从马斯克处获得不到4500万美元资金&#xff0c;其他支持者…