文档章节

zabbix3.2学习笔记(六):自定义监控nginx+php-fpm status

hiwill
 hiwill
发布于 2017/08/18 08:32
字数 1039
阅读 19
收藏 0

zabbix自带了一些模版,可根据需要修改对应监控项的阈值;可是像nginx/ph-fpm/redis/mysql等一些应用还需要我们自定义监控项、用脚本在客户端取值。下面简单监控nginx和php-fpm的状态:二者本身自带status参数,只需开启即可。

1,开启status

vi /etc/php-fpm.conf 尾部添加一行
pm.status_path = /php-fpm_status

cd /etc/nginc/conf.d/
vi nginxphp_status.conf
server {

listen 40080;
allow 127.0.0.1;
deny all;
access_log off;
location /php-fpm_status {
     fastcgi_pass 127.0.0.1:9000;
      include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
}

location /nginx_status {
      stub_status on;
}
}

service php-fpm restart
service nginx restart

curl -s http://127.0.0.1:40080/nginx_status
Active connections: 1
server accepts handled requests
6 6 6
Reading: 0 Writing: 1 Waiting: 0

nginx status详解
active connections – 活跃的连接数
server accepts handled requests — 总共处理了6个连接 , 成功创建6次握手, 总共处理了6个请求
reading — 读取客户端的连接数
writing — 响应数据到客户端的数量
waiting — 开启 keep-alive 的情况下,这个值等于 active – (reading+writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接。所以,在访问效率高,请求很快被处理完毕的情况下,Waiting数比较多是正常的.如果reading +writing数较多,则说明并发访问量非常大,正在处理过程中。

curl -s http://127.0.0.1:40080/php-fpm_status
pool: www
process manager: dynamic
start time: 17/Aug/2017:17:09:32 +0800
start since: 64
accepted conn: 2
listen queue: 0
max listen queue: 0
listen queue len: 128
idle processes: 4
active processes: 1
total processes: 5
max active processes: 1
max children reached: 0
slow requests: 0

php-fpm status详解
pool – fpm池子名称,大多数为www 
process manager – 进程管理方式,值:static, dynamic or ondemand. dynamic 
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,那说明你的最大进程数量大小了,需改大一点。 
php-fpm状态页可以通过带参数实现个性化,可以带参数json、xml、html并且前面三个参数可以分别和full做一个组合。
json格式:http://127.0.0.1:40080/php-status?json
xml格式: http://127.0.0.1:40080/php-status?xml
html 格式: http://127.0.0.1:40080/php-status?html 
full格式: http://127.0.0.1:40080/php-status?ful

2,在zabbix agent端新建shell脚本来取值
cd /etc/zabbix/zabbix_agentd.d
vi php-fpm_status.sh

#!/bin/bash

idle(){
        wget --quiet -O - http://127.0.0.1:40080/php-fpm_status?auto |grep "idle processes" |awk '{print$3}'
}

total(){
        wget --quiet -O - http://127.0.0.1:40080/php-fpm_status?auto |grep "total processes" |awk '{print$3}'
}

active(){
        wget --quiet -O - http://127.0.0.1:40080/php-fpm_status?auto |grep "active" |awk '{print$3}'|grep -v "process"
}

mactive(){

        wget --quiet -O - http://127.0.0.1:40080/php-fpm_status?auto |grep "max active processes:" |awk '{print$4}'
}

listenqueuelen(){
        wget --quiet -O - http://127.0.0.1:40080/php-fpm_status?auto |grep "listen queue len" |awk '{print$4}'
}

listenqueue(){
        wget --quiet -O - http://127.0.0.1:40080/php-fpm_status?auto |grep "listen queue:"|grep -vE "len|max"|awk '{print$3}'
}

since(){
        wget --quiet -O - http://127.0.0.1:40080/php-fpm_status?auto |grep "start since: " |awk '{print$3}'
}

conn(){
        wget --quiet -O - http://127.0.0.1:40080/php-fpm_status?auto |grep "accepted conn" |awk '{print$3}'
}
$1

vi nginx_status.sh

#!/bin/bash

Active(){
        wget --quiet -O - http://localhost:40080/nginx_status?auto |awk 'NR==1 {print$3}'
}
Reading(){
        wget --quiet -O - http://localhost:40080/nginx_status?auto |awk 'NR==4 {print$2}'
}
Writing(){
        wget --quiet -O - http://localhost:40080/nginx_status?auto |awk 'NR==4 {print$4}'
}
Waiting(){
        wget --quiet -O - http://localhost:40080/nginx_status?auto |awk 'NR==4 {print$6}'
}
$1
3,修改/etc/zabbix/zabbix_agentd.conf添加一下内容
UnsafeUserParameters=1 

UserParameter=idle.processe,/etc/zabbix/zabbix_agentd.d/php-fpm_status.sh idle
UserParameter=total.processes,/etc/zabbix/zabbix_agentd.d/php-fpm_status.sh total
UserParameter=active.processes,/etc/zabbix/zabbix_agentd.d/php-fpm_status.sh active
UserParameter=max.active.processes,/etc/zabbix/zabbix_agentd.d/php-fpm_status.sh mactive
UserParameter=listen.queue.len,/etc/zabbix/zabbix_agentd.d/php-fpm_status.sh listenqueuelen
UserParameter=listen.queue,/etc/zabbix/zabbix_agentd.d/php-fpm_status.sh listenqueue
UserParameter=start.since,/etc/zabbix/zabbix_agentd.d/php-fpm_status.sh since
UserParameter=accepted.conn,/etc/zabbix/zabbix_agentd.d/php-fpm_status.sh conn

UserParameter=Active,/etc/zabbix/zabbix_agentd.d/nginx_status.sh Active
UserParameter=Reading,/etc/zabbix/zabbix_agentd.d/nginx_status.sh Reading
UserParameter=Writing,/etc/zabbix/zabbix_agentd.d/nginx_status.sh Writing
UserParameter=Waiting,/etc/zabbix/zabbix_agentd.d/nginx_status.sh Waiting

service zabbix-agent restart

4,在zabbix web端导入以下模版
http://pan.baidu.com/s/1bp3wJYf

将主机关联以上模版,随后在最新数据里查看是否收集到监控值

github上搜索zabbix会看到很多开源的监控模版,挑你需要的试试吧

 

© 著作权归作者所有

共有 人打赏支持
hiwill
粉丝 11
博文 117
码字总数 72633
作品 0
朝阳
Nginx+PHP-FPM打开status

启用 php-fpm 状态功能 2. nginx配置 在要监控的主机里添加上 locaction. 3. 重启 nginx 和php-fpm 4. 打开 status 页面 在浏览器里打开或者用 curl 命令打开都可以 //如果你的 nginx 默认端...

zcqshine
2015/11/10
0
9
zabbix监控nginx和php、memcached(discuz)

创建zabbixagentd的子配置文件 在/etc/zabbix/zabbixagentd.d/中创建关联nginx status和php-fpm status的子配置文件,创建一个,或者在已有的某配置文件中增加也可以,我这里分别为它们创建配...

wsw26
06/26
0
0
zabbix监控nginx和php、memcached(discuz)

创建zabbixagentd的子配置文件 在/etc/zabbix/zabbixagentd.d/中创建关联nginx status和php-fpm status的子配置文件,创建一个,或者在已有的某配置文件中增加也可以,我这里分别为它们创建配...

技术小胖子
2017/11/07
0
0
php-fpm 服务纳入zabbix监控

前几天弄了个Nginx 服务监控,今天再试试php服务的监控 操作系统: CentOS 7.2 PHP版本:5.6.30 zabbix版本:2.2.5 发现php-fpm和Nginx一样都有自身就具备可提供查看的状态页面,所以我们就可...

翘楚秦歌
2017/07/04
0
0
分布式监控系统Zabbix-3.0.3-完整安装记录(3)-监控nginx,php,memcache,Low-level discovery磁盘IO

前段时间在公司IDC服务器上部署了zabbix3.0.3监控系统,除了自带的内存/带宽/CPU负载等系统资源监控模板以及mysql监控模板外,接下来对诸如nginx、php、memcache、磁盘IO的监控项配置在此做下...

zting科技
2017/11/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

OSChina 周三乱弹 —— 公司女同事约我

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子:分享水木年华的单曲《蝴蝶花(2002年大提琴版)》 《蝴蝶花(2002年大提琴版)》- 水木年华 手机党少年们想听歌,请使劲儿戳(这里) ...

小小编辑
12分钟前
28
8
Linux环境搭建 | VMware下共享文件夹的实现

在进行程序开发的过程中,我们经常要在主机与虚拟机之间传递文件,比如说,源代码位于虚拟机,而在主机下阅读或修改源代码,这里就需要使用到 「共享文件」 这个机制了。本文介绍了两种共享文...

良许Linux
今天
5
0
JUC锁框架——AQS源码分析

JUC锁介绍 Java的并发框架JUC(java.util.concurrent)中锁是最重要的一个工具。因为锁,才能实现正确的并发访问。而AbstractQueuedSynchronizer(AQS)是一个用来构建锁和同步器的框架,使用A...

长头发-dawn
今天
3
0
docker中安装了RabbitMQ后无法访问其Web管理页面

在官网找了"$ docker run -d --hostname my-rabbit --name some-rabbit -p 8080:15672 rabbitmq:3-management"这条安装命令,在docker上安装了RabbitMQ,,结果输入http://localhost:8080并不......

钟然千落
今天
4
1
spring-cloud | 分布式session共享

写在前面的话 各位小伙伴,你们有福了,这一节不仅教大家怎么实现分布式session的问题,还用kotlin开发,喜欢kotlin的小伙伴是不是很开心! 以前在写Android的时候,就对客户端请求有一定的认...

冯文议
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部