亚洲城88手机版官网Zabbix监察和控制Nginx,php-fpm和MySQL占用内部存款和储蓄器数和进程个数

Nginx在生产环境中的应用越来越广泛,所以需要对Nginx的性能状态做一些监控来发现出来出现的问题。zabbix监控Nginx,首先确认Nginx的监控指标,主要有:基本活动指标,错误指标,性能指标。

Zabbix监控Nginx状态,首先,在nginx的配置文件中添加如下一段代码

Zabbix通过自定义脚本监控Nginx,php-fpm和MySQL占用内存数和进程的个数。

今天网站的访问量突然加大,监控报警是把我的机房带宽全部跑满了,最后把硬件防火墙的策略改动之后才恢复正常。然后负责人要关于nginx网站,和带宽的状态,于是就想起要做这个了,主要是Zabbix监控nginx的一些链接状态:

Nginx处理流程图具体如下:

server

 listen localhost:80; 
 server_name localhost;
location /nginxstatus { 
 stub_status on; 
 access_log off; 
 allow 127.0.0.1;
 allow 192.168.1.165; 
 deny all; 
 } 
}
保存之后重启nginx

首先,在zabbix脚本目录下添加一个脚本,写入如下代码
#!/bin/bash
#license:GPL
#mail:admin@huxianglin.cn
#date:2015.04.16
top -bn1>/usr/local/zabbix-2.4.4/scripts/process.log
LOG=/usr/local/zabbix-2.4.4/scripts/process.log
php_fpm(){
 grep “php-fpm” $LOG |awk ‘{sum+=$6}; END{print sum}’
}

1、首先开启nginx_status模块监控功能:
 server {
        listen      8067;
        server_name localhost; 
        root      html; 
        index  index.html;
        access_log off;
        location /status {
          stub_status on;
        }
}

亚洲城88手机版官网 1

在zabbix脚本目录下创建脚本监控zabbix状态
#!/bin/bash 
# Script to fetch nginx statuses for tribily monitoring systems 
# Author: admin@linuxidc.com 
# License: GPLv2

php_fpm_num(){
        grep “php-fpm” $LOG |wc -l
}

2、测试:
[root@WEB_007 vhosts]# curl
Active connections: 3
server accepts handled requests
 1305214152 1305214152 1305204005
Reading: 0 Writing: 3 Waiting: 0

注释:Accepts(接受)、Handled(已处理)、Requests(请求数)是一直在增加的计数器。Active(活跃)、Waiting(等待)、Reading(读)、Writing(写)随着请求量而增减

# Set Variables 

nginx(){
        grep “nginx” $LOG |awk ‘{sum+=$6}; END{print sum}’
}

3、编写脚本过滤数据:(zabbix主要有数据就能出图):
[root@WEB_007 vhosts]# cat
/usr/local/zabbix/scripts/nginx_status 
#!/bin/bash 
# Script to fetch nginx statuses for tribily monitoring systems 
# Author: xiaoluo
# License: GPLv2 
 
function active { 
/usr/bin/curl “” 2>/dev/null| grep
‘Active’ | awk ‘{print $NF}’ 

function reading { 
/usr/bin/curl “” 2>/dev/null| grep
‘Reading’ | awk ‘{print $2}’ 

function writing { 
/usr/bin/curl “” 2>/dev/null| grep
‘Writing’ | awk ‘{print $4}’ 

function waiting { 
/usr/bin/curl “” 2>/dev/null| grep
‘Waiting’ | awk ‘{print $6}’ 

function accepts { 
/usr/bin/curl “” 2>/dev/null| awk
NR==3 | awk ‘{print $1}’ 

function handled { 
/usr/bin/curl “” 2>/dev/null| awk
NR==3 | awk ‘{print $2}’ 

function requests { 
/usr/bin/curl “” 2>/dev/null| awk
NR==3 | awk ‘{print $3}’ 

# Run the requested function 
$1

名称

描述

指标类型

Accepts(接受)

NGINX 所接受的客户端连接数

资源: 功能

Handled(已处理)

成功的客户端连接数

资源: 功能

Active(活跃)

当前活跃的客户端连接数

资源: 功能

Dropped(已丢弃,计算得出)

丢弃的连接数(接受 – 已处理)

工作:错误*

Requests(请求数)

客户端请求数

工作:吞吐量

# Functions to return nginx stats
nginx=/usr/local/zabbix-2.4.4/scripts/nginx.txt
function active {
                curl ” && awk
‘/Active/{print $3}’ $nginx
}

nginx_num(){
        grep “nginx” $LOG |wc -l
}

4、开启zabbix脚本功能、我现在是习惯把执行的key,放在另一个路径下,以后文件多了好区分,大家应该也建议这么做:
[root@WEB_007 zabbix_agentd.conf.d]# vi
/usr/local/zabbix/etc/zabbix_agentd.conf 
UnsafeUserParameters=1
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
[root@WEB_007 zabbix_agentd.conf.d]#cd
/usr/local/zabbix/etc/zabbix_agentd.conf.d/
[root@WEB_007 zabbix_agentd.conf.d]#vi nginx
#monitor nginx
UserParameter=nginx[*],/usr/local/zabbix/scripts/nginx_status $1

NGINX worker 进程接受 OS 的连接请求时 Accepts 计数器增加,而Handled
是当实际的请求得到连接时(通过建立一个新的连接或重新使用一个空闲的)。这两个计数器的值通常都是相同的,如果它们有差别则表明连接被Dropped,
往往这是由于资源限制,比如已经达到 NGINX 的worker_connections的限制。

function reading {
                curl ” && awk
‘/Reading/{print $2}’ $nginx
}

mysqld(){
        grep “mysqld” $LOG |awk ‘{sum+=$6}; END{print sum}’
}

5、导入模板:模块在我的附件可以自己下载:
这里演示,在那个时候我第一次制作,所以忘记添加图形了,大家可以自己根据模板添加图形,还有触发器我也没有创建,大家根据自己的需要进行创建

Zabbix监控Nginx性能状态相关文件可以到Linux公社资源站下载:

 

mysqld_num(){
        grep “mysqld” $LOG |wc -l
}

6、图形查看效果:

——————————————分割线——————————————

function writing {
                curl ” && awk
‘/Writing/{print $4}’ $nginx
}

case “$1” in
php_fpm)
 php_fpm
 ;;
php_fpm_num)
 php_fpm_num
 ;;
nginx)
 nginx
 ;;
nginx_num)
 nginx_num
 ;;
mysqld)
 mysqld
 ;;
mysqld_num)
 mysqld_num
 ;;
*)
echo “Usage: $0
{php_fpm|php_fpm_num|nginx|nginx_num|mysqld|mysqld_num}”
esac
保存之后修改其属组和属主为zabbix.zabbix,然后新建一个文件process.log,同样设置属主和属组为zabbix.zabbix
然后编辑zabbix_agentd.conf文件,在最后添加上下面这段代码,并重启zabbix_agentd服务
UserParameter=process.php_fpm,/usr/local/zabbix-2.4.4/scripts/processstatus.sh
php_fpm
UserParameter=process.php_fpm_num,/usr/local/zabbix-2.4.4/scripts/processstatus.sh
php_fpm_num
UserParameter=process.nginx,/usr/local/zabbix-2.4.4/scripts/processstatus.sh
nginx
UserParameter=process.nginx_num,/usr/local/zabbix-2.4.4/scripts/processstatus.sh
nginx_num
UserParameter=process.mysqld,/usr/local/zabbix-2.4.4/scripts/processstatus.sh
mysqld
UserParameter=process.mysqld_num,/usr/local/zabbix-2.4.4/scripts/processstatus.sh
mysqld_num
之后就可以在web页面添加item,生成图表了,注意top取到的内存单位是KB,所以在定义item的时候需要自定义单位和设定倍数

亚洲城88手机版官网 2

免费下载地址在

function waiting {
                curl ” && awk
‘/Waiting/{print $6}’ $nginx
}

亚洲城88手机版官网 3

总结:zabbix可以很好的根据应用来进行监控,还很强大,慢慢研究

用户名与密码都是www.linuxidc.com

function accepts {
                curl ” && awk
NR==6 $nginx| awk ‘{print $1}’
}

生成的各个程序占用内存大小的图形如下

模板在下面自己下载

具体下载目录在 /2017年资料/2月/6日/Zabbix监控Nginx性能状态/

function handled {
                curl ” && awk
NR==6 $nginx| awk ‘{print $2}’
}

亚洲城88手机版官网 4

——————————————分割线——————————————

下载方法见
http://www.linuxidc.com/Linux/2013-07/87684.htm

function requests {
                curl ” && awk
NR==6 $nginx| awk ‘{print $3}’
}

生成的各个程序的进程个数图形如下,可以设定触发器,当进程满足触发其条件时发送报警

免费下载地址在

——————————————分割线——————————————

# Run the requested function 
case “$1” in
active)
        active
        ;;
reading)
        reading
        ;;
writing)
        writing
        ;;
waiting)
        waiting
        ;;
accepts)
        accepts
        ;;
handled)
        handled
        ;;
requests)
        requests
        ;;
*)
        echo “Usage: $0 {nginx_site_dicovery}”
                echo “Usage: $0 {active [host] | reading [host] |
writing [host] | waiting [host] | accepts [host] | handled
[host]亚洲城88手机版官网, | requests [host]}”
esac

亚洲城88手机版官网 5

用户名与密码都是www.linuxidc.com

首先nginx需要配置nginx_status  具体步骤是:在 zabbix
agentd客户端上,查看nginx是否加载了with-http_stub_status_module。因为
zabbix 监控nginx是根据nginx的Stub
Status模块,抓取Status模块所提供的数据。假如以前没开启,现在想启用StubStatus
模块,在编译nginx
的时候要加上参数with-http_stub_status_module,执行./configure &&
make就可以了,不用make install,一般情况下都是安装的,具体的安装配置如下

然后修改该文件的属主和属组为zabbix,并且具有执行权限
chown zabbix.zabbix /usr/local/zabbix-2.4.4/scripts/nginx_status
chmod 755 /usr/local/zabbix-2.4.4/scripts/nginx_status
再创建一个nginx.txt的文件,将属组和属主定为zabbix,具有读写权限
然后在zabbix_agentd.conf配置文件中添加如下代码
#monitor nginx 
UserParameter=nginx.accepts,/usr/local/zabbix-2.4.4/scripts/nginx_status
accepts 
UserParameter=nginx.handled,/usr/local/zabbix-2.4.4/scripts/nginx_status
handled 
UserParameter=nginx.requests,/usr/local/zabbix-2.4.4/scripts/nginx_status
requests 
UserParameter=nginx.connections.active,/usr/local/zabbix-2.4.4/scripts/nginx_status
active 
UserParameter=nginx.connections.reading,/usr/local/zabbix-2.4.4/scripts/nginx_status
reading 
UserParameter=nginx.connections.writing,/usr/local/zabbix-2.4.4/scripts/nginx_status
writing 
UserParameter=nginx.connections.waiting,/usr/local/zabbix-2.4.4/scripts/nginx_status
waiting
这段代码可以视自己目录情况而改变

一些Zabbix相关教程集合

具体下载目录在 /2015年资料/5月/14日/Zabbix 监控Nginx状态/

(一)配置nginx

创建好了之后就可以在web页面配置item监控项了

安装部署分布式监控系统Zabbix 2.06
http://www.linuxidc.com/Linux/2013-07/86942.htm

下载方法见
http://www.linuxidc.com/Linux/2013-07/87684.htm

1,查看nginx_status是否开启,查看已开启。

一些Zabbix相关教程集合

《安装部署分布式监控系统Zabbix 2.06》
http://www.linuxidc.com/Linux/2013-07/86942.htm

——————————————分割线——————————————

[root@iZ237lzm354Z scripts]# /usr/local/nginx/sbin/nginx -V

安装部署分布式监控系统Zabbix 2.06
http://www.linuxidc.com/Linux/2013-07/86942.htm

CentOS
6.3下Zabbix安装部署
http://www.linuxidc.com/Linux/2013-05/83786.htm

一些Zabbix相关教程集合

nginx version: nginx/1.4.7

《安装部署分布式监控系统Zabbix 2.06》
http://www.linuxidc.com/Linux/2013-07/86942.htm

Zabbix分布式监控系统实践
http://www.linuxidc.com/Linux/2013-06/85758.htm

安装部署分布式监控系统Zabbix 2.06
http://www.linuxidc.com/Linux/2013-07/86942.htm

built by gcc 4.8.2 20140120 (Red
Hat 4.8.2-16) (GCC)

CentOS
6.3下Zabbix安装部署
http://www.linuxidc.com/Linux/2013-05/83786.htm

CentOS 6.3下Zabbix监控apache server-status
http://www.linuxidc.com/Linux/2013-05/84740.htm

《安装部署分布式监控系统Zabbix 2.06》
http://www.linuxidc.com/Linux/2013-07/86942.htm

TLS SNI support enabled

Zabbix分布式监控系统实践
http://www.linuxidc.com/Linux/2013-06/85758.htm

CentOS 6.3下Zabbix监控MySQL数据库参数
http://www.linuxidc.com/Linux/2013-05/84800.htm

CentOS
6.3下Zabbix安装部署
http://www.linuxidc.com/Linux/2013-05/83786.htm

configure arguments: –with-http_stub_status_module
–with-http_ssl_module –with-pcre

CentOS 6.3下Zabbix监控apache server-status
http://www.linuxidc.com/Linux/2013-05/84740.htm

64位CentOS 6.2下安装Zabbix 2.0.6 
 http://www.linuxidc.com/Linux/2014-11/109541.htm

Zabbix分布式监控系统实践
http://www.linuxidc.com/Linux/2013-06/85758.htm

–with-http_realip_module –with-http_image_filter_module

CentOS 6.3下Zabbix监控MySQL数据库参数
http://www.linuxidc.com/Linux/2013-05/84800.htm

ZABBIX
的详细介绍
:请点这里
ZABBIX
的下载地址
:请点这里

CentOS 6.3下Zabbix监控apache server-status
http://www.linuxidc.com/Linux/2013-05/84740.htm

[root@iZ237lzm354Z scripts]#

64位CentOS 6.2下安装Zabbix 2.0.6 
 http://www.linuxidc.com/Linux/2014-11/109541.htm

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-04/116302.htm

CentOS 6.3下Zabbix监控MySQL数据库参数
http://www.linuxidc.com/Linux/2013-05/84800.htm

2,nginx_status开启的步骤:

ZABBIX
的详细介绍
:请点这里
ZABBIX
的下载地址
:请点这里

亚洲城88手机版官网 6

64位CentOS 6.2下安装Zabbix 2.0.6 
 http://www.linuxidc.com/Linux/2014-11/109541.htm

[root@iZ237lzm354Z scripts]# vim /usr/local/nginx/conf/nginx.conf

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-04/116303.htm

ZABBIX
的详细介绍
:请点这里
ZABBIX
的下载地址
:请点这里

 server {

亚洲城88手机版官网 7

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-05/117478.htm

                        listen      80 ;

亚洲城88手机版官网 8

                        server_name  www.linuxidc.com;

          rewrite ^/invitejoin/(.*)\.htm[l]?$  /register.shtml?$1
last;

                index index.jsp index.html;

                root /opt/home;

            location = /nginx-status {

                              stub_status on;

                              access_log  off;

                              allow 127.0.0.1;

                              allow 10.253.12.34;

                            ####zabbix服务器端的IP地址一般为内网IP

                              }

3,测试并启动nginx