zabbix监控中间件服务

zabbix监控Nginx

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

在zbx-client客户端主机操作

#创建目录,然后将脚本上传到该目录mkdir /etc/zabbix/script/cd /etc/zabbix/scriptchmod +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" ];thenreturn 1elseecho "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 inactive)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.confUserParameter=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.confUserParameter=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-scan0

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

改/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.mzph.cn/news/725961.shtml

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

相关文章

【JS】关于this的使用

this 前言一、this是什么?二、做什么?1.全局环境2.函数环境3.new实例对象4.apply、bind、call绑定4.1 apply()4.2 call()4.3 bind() 三、为什么用this?四、如何改变this?五、应用场景?总结 前言 痛点 经常写Vue项目&a…

C++单例模式、工厂模式

一、单例模式 (一) 什么是单例模式 1. 是什么? 在系统的整个生命周期内,一个类只允许存在一个实例。 2. 为什么? 两个原因: 节省资源。方便控制,在操作公共资源的场景时,避免了多个对象引起的复杂操作…

Unity的相机跟随和第三人称视角二

Unity的相机跟随和第三人称视角二 展示介绍第二种相机模式远离代码总结 展示 我录的视频上可能看不太出来,但是其实今天的这个方法比原来写的那个方法更简便并且死角更少一些。 这里我也做了两个人物偏移的视角,按Q是原来的两个相机模式切换&#xff0c…

论文阅读笔记 | MetaIQA: Deep Meta-learning for No-Reference Image Quality Assessment

文章目录 文章题目发表年限期刊/会议名称论文简要动机主要思想或方法架构实验结果 文章链接:https://doi.org/10.48550/arXiv.2004.05508 文章题目 MetaIQA: Deep Meta-learning for No-Reference Image Quality Assessment 发表年限 2020 期刊/会议名称 Publi…

Marin说PCB之POC电路layout设计仿真案例---01

最近娃哈哈饮料突然爆火,看新闻后才知道春晚的的时候宗老已经病的很严重了,现在也已经离我们而去了,宗老是一个值得我们尊敬爱戴的伟大企业家。于是乎小编我立马去他们的直播间买了一箱娃哈哈AD钙奶支持一下我们的国货。 中午午休的时候&…

Excel如何开启VBA进行二次开发

经常使用Excel做数据分析的朋友平时用的比较多的可能只是一些常用的内置函数或功能,比如求和函数、字符串分割函数、分类汇总、IF函数、VLOOKUP函数等。大多数人认为Excel强大是因为内置了大量的函数。其实,作为一名资深程序猿,个人认为&…

kafka消费端消息去重方案

背景 我们在日常工作中,消费kafka消息是一个最常见的操作,不过由于kafka队列中经常包含重复的消息,并且消息量巨大,所以我们消费端总是需要先把消息进行去重后在消费,以减少消费端的压力,那么日常中我们一…

redis 性能优化一

目录 前言 尾延迟 前言 说到redis 性能优化,优化的目的是什么?提高响应,减少延迟。就要关注两点,一是尾延迟,二是Redis 的基线性能。只有指标,我们的优化,才有意义,才能做监控以及…

玩一会小乌龟

滚滚长江东逝水,浪花淘尽英雄。 是非成败转头空。青山依旧在,几度夕阳红。 白发渔樵江渚上,惯看秋月春风。 一壶浊酒喜相逢。古今多少事,都付笑谈中。 画一个正方形 import turtle# 创建一个Turtle对象 t turtle.Turtle()# 循环…

【开发工具】Git模拟多人开发场景理解分支管理和远程仓库操作

我们来模拟一个多人多分支的开发场景。假设你有一个新的空白远程仓库,假设地址是 https://github.com/user/repo.git。 克隆远程仓库到本地 $ git clone https://github.com/user/repo.git这会在本地创建一个 repo 目录,并自动设置远程主机为 origin。 创建本地开发分支并推送…

学术论文GPT的源码解读与二次开发:从ChatPaper到gpt_academic

前言 本文的前两个部分最早是属于此旧文的《学术论文GPT的源码解读与微调:从ChatPaper到七月论文审稿GPT第1版》,但为了每一篇文章各自的内容更好的呈现,于是我今天做了以下三个改动 原来属于mamba第五部分的「Mamba近似工作之线性Transfor…

开源模型应用落地-工具使用篇-Spring AI(七)

一、前言 在AI大模型百花齐放的时代,很多人都对新兴技术充满了热情,都想尝试一下。但是,实际上要入门AI技术的门槛非常高。除了需要高端设备,还需要面临复杂的部署和安装过程,这让很多人望而却步。不过,随着…

Kap - macOS 开源录屏工具

文章目录 关于 Kap 关于 Kap Kap 是一个使用web技术的开源的屏幕录制工具 官网:https://getkap.cogithub : https://github.com/wulkano/Kap 目前只支持 macOS 12 以上,支持 Intel 和 Apple silicon 你可以前往官网,右上方下载 你也可以使…

案例介绍:信息抽取技术在汽车销售与分销策略中的应用与实践

一、引言 在当今竞争激烈的汽车制造业中,成功的销售策略、市场营销和分销网络的构建是确保品牌立足市场的关键。作为一名经验丰富的项目经理,我曾领导一个专注于汽车销售和分销的项目,该项目深入挖掘市场数据,运用先进的信息抽取…

EasyExcel3.1.1版本上传文件忽略列头大小写

1、背景 项目中使用easyExcel3.1.1版本实现上传下载功能,相关数据DTO以 ExcelProperty(value "dealer_gssn_id") 形式规定其每一列的名称,这样的话easyExcel会完全匹配对应的列名,即用户上传文件时,列名写成Dealer_…

利用websocket +定时器简易的实现一个网络聊天室

其实原理非常简单,就是客户端用户通过websoket来连接websocket服务端。然后服务端,收集每个用户发出的消息, 进而将每条用户的消息通过广播的形式推送到每个连接到服务端的客户端。从而实现用户的实时聊天。 // TODO : 我主要是讲一下实现思路。并未完善其功能。 1.后端 依赖 …

使用数据库实现增删改查

#include<myhead.h>//定义添加数据函数int do_add(sqlite3 *ppDb) {//1.准备sql语句,输入要添加的信息int add_numb; //工号char add_name[20]; //姓名char add_sex[10]; //性别double add_score; //工资printf("请输入要添加的工号:")…

恢复IDEA误删除的git提交,提交被删除,尝试恢复提交

​​​​​​ dgqDESKTOP-JRQ5NMD MINGW64 /f/IdeaProjects/workspace/spzx-parent ((8bb112e...)) $ git reflog 8bb112e (HEAD, origin/master, master) HEAD{0}: checkout: moving from master to 8bb112e5ac18dfe4bbd64adfd06363e46b609f21 8bb112e (HEAD, origin/master, …

微信小程序开发系列(二十一)·wxml语法·setData()修改数组类型数据(增加、修改、删除)

目录 1. 新增数组元素 方法一&#xff1a;push&#xff08;&#xff09; 方法二&#xff1a;concat() 方法三&#xff1a;ES6中的扩展运算符 ... 2. 修改数组元素 样式一&#xff1a;数字 样式二&#xff1a;元素 3. 删除数组元素 方法一&#xff1a;splice&#x…

vue2源码分析-vue入口文件global-api分析

文章背景 vue项目开发过程中,首先会有一个初始化的流程,以及我们会使用到很多全局的api,如 this.$set this.$delete this.$nextTick,以及初始化方法extend,initUse, initMixin , initExtend, initAssetRegisters 等等那它们是怎么实现,让我们一起来探究下吧 源码目录 global-…