zabbix监控nginx

一、准备环境

主机 名称
192.168.200.113 agent.zabbix.com

1、关闭防火墙和安全机制

[root@agent ~]# systemctl stop firewalld
[root@agent ~]# setenforce 0
[root@agent ~]# iptables -F

二、安装nginx(已有自己组合的包,直接安装)

1、安装

[root@agent ~]# rpm -ivh nginx-1.15.9-1.x86_64.rpm 
准备中...                          ################################# [100%]
正在升级/安装...
   1:nginx-1.15.9-1                   ################################# [100%]

[root@agent
~]# nginx -V nginx version: nginx/1.15.9 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) built with OpenSSL 1.0.2k-fips 26 Jan 2017 TLS SNI support enabled configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module

2、修改配置文件

[root@agent ~]# vim /usr/local/nginx/conf/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;
                #stub_status on;
                #access_log off;
        }
        location /status {
           stub_status on;
           access_log off;
        }
        #error_page  404        
[root@agent ~]# killall -HUP nginx  //平滑重启

3、网页测试

 4、编写zabbix监控nginx的脚本

[root@agent ~]# vim /usr/local/zabbix/scripts/nginx-check.sh
#!/bin/bash

###########################

#zabbix monitoring script

#

# nginx:

# - anything available via nginx stub-status module

#

##################################

# Contact:

# vincent.viallet@gmail.com

# Zabbix requested parameter

ZBX_REQ_DATA="$1"

ZBX_REQ_DATA_URL="$2"

# Nginx defaults

NGINX_STATUS_DEFAULT_URL="192.168.200.113/status" #(这里写网站的域名)

WGET_BIN="/usr/bin/wget"

#

# Error handling:

# - need to be displayable in Zabbix (avoid NOT_SUPPORTED)

# - items need to be of type "float" (allow negative + float)

#

ERROR_NO_ACCESS_FILE="-0.9900"

ERROR_NO_ACCESS="-0.9901"

ERROR_WRONG_PARAM="-0.9902"

ERROR_DATA="-0.9903" # either can not connect / bad host / bad port

# Handle host and port if non-default

if [ ! -z "$ZBX_REQ_DATA_URL" ]; then

URL="$ZBX_REQ_DATA_URL"

else

URL="$NGINX_STATUS_DEFAULT_URL"

fi# save the nginx stats in a variable for future parsing

NGINX_STATS=$($WGET_BIN -q $URL -O - 2> /dev/null)

# error during retrieve

if [ $? -ne 0 -o -z "$NGINX_STATS" ]; then

echo $ERROR_DATA

exit 1

fi

#

# Extract data from nginx stats

#

case $ZBX_REQ_DATA in

active_connections) echo "$NGINX_STATS" | head -1 | cut -f3 -d' ';;

accepted_connections) echo "$NGINX_STATS" | grep -Ev '[a-zA-Z]' | cut -f2 -d' ';;

handled_connections) echo "$NGINX_STATS" | grep -Ev '[a-zA-Z]' | cut -f3 -d' ';;

handled_requests) echo "$NGINX_STATS" | grep -Ev '[a-zA-Z]' | cut -f4 -d' ';;

reading) echo "$NGINX_STATS" | tail -1 | cut -f2 -d' ';;

writing) echo "$NGINX_STATS" | tail -1 | cut -f4 -d' ';;

waiting) echo "$NGINX_STATS" | tail -1 | cut -f6 -d' ';;

*) echo $ERROR_WRONG_PARAM; exit 1;;

esac

exit 0


[root@agent ~]# chmod +x /usr/local/zabbix/scripts/nginx-check.sh

5、配置agent.conf文件

[root@agent ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf
PidFile=/tmp/zabbix_agentd.pid
Server=192.168.200.112
ServerActive=192.168.200.112
Hostname=agent.zabbix.com
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
UnsafeUserParameters=1
UserParameter=mysql.version,mysql -V
UserParameter=mysql.status[*],/usr/local/zabbix/etc/chk_mysql.sh $1
UserParameter=mysql.ping,mysqladmin -uroot -p123123 -P3306 -h192.168.200.113  ping | grep -c alive

UnsafeUserParameters=1 
UserParameter=nginx[*],/usr/local/zabbix/scripts/nginx-check.sh "$1"

6、重新启动

[root@agent ~]# /etc/init.d/zabbix_agentd restart
Zabbix agent terminated.
Zabbix agent started.
[root@agent ~]# netstat -anpt | grep 10050
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      27812/zabbix_agentd 

7、server端(192.168.200.112)测试获取数据

在获取数据之前server端必须安装wget

[root@agent ~]# yum -y install wget

agent端访问

[root@server ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.200.113 -p 10050 -k "nginx[reading]"
0

[root@server ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.200.113 -p 10050 -k "nginx[writing]"
1

三、创建监控测试

 

 选择模板文件导入,导入后就可以使用了

                

 

 

有图像说明成功了

 

原文地址:https://www.cnblogs.com/tanxiaojuncom/p/11799984.html