Zabbix4.0监控Nginx1.16.1

Zabbix默认自带了很多有用的监控模板,通常对主机运行状态使用默认的模板就可以了,有时候我们需要根据实际情况自定义一些监控信息。本文记录一下Zabbix监控Nginx服务的配置过程。捋一捋思路,整个配置过程大致如下:

1. 确定监控内容

思考一下nginx有哪些信息可以监控,nginx内置了一个status状态的功能,通过配置可以看到nginx的运行情况,status显示的内容包括当前连接数,处于活动状态的连接数,已经处理的请求数等等,关于status状态页的配置在nginx启用status状态页文章有介绍,这里不再多说。

nginx内建了一个状态页,通过查看状态页信息可以连接到nginx服务负载情况,还可以利用状态页信息配zabbix监控,这里先介绍nginx的status状态页的使用。

location = /status/ {
        stub_status on;
        allow 127.0.0.1;
        # deny all;
        # access_log off;
    }

需要注意Nginx配置文件中location段的匹配顺序,在Nginx的配置文件中我还做了动静分离和负载均衡,如下图:

Zabbix4.0监控Nginx1.16.1

staus状态页配置比较简单,要注意的是status定义内容只能存在location{}中

访问查看:http://IP地址/status/

Zabbix4.0监控Nginx1.16.1

上面的内容信息如下:
Active connections:当前所有处于打开状态的活动连接数
accepts :已经接收连接数
handled : 已经处理过的连接数
requests : 已经处理过的请求数,在保持连接模式下,请求数量可能会大于连接数量
Reading: 正处于接收请求的连接数
Writing: 请求已经接收完成,处于响应过程的连接数
Waiting : 保持连接模式,处于活动状态的连接数

2. 编写agent端监控脚本

通过脚本获取status页面信息的关键值,zabbix server通过这些关键值才能生成数据图像,获取status的关键值脚本如下:

mkdir /home/scripts

vim ngx_status.sh

#! /bin/bash
#date: 2020-01-18
# Description:Zabbix4.0监控Nginx1.16.1性能以及进程状态
# Note:此脚本需要配置在被监控端

HOST="192.168.5.51"
PORT="80"

# 检测Nginx进程是否存在
function ping {
    /sbin/pidof nginx | wc -l
}

# 检测Nginx性能
function active {
    /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| grep ‘Active‘ | awk ‘{print $NF}‘
}
function reading {
    /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| grep ‘Reading‘ | awk ‘{print $2}‘
}
function writing {
    /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| grep ‘Writing‘ | awk ‘{print $4}‘
}
function waiting {
    /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| grep ‘Waiting‘ | awk ‘{print $6}‘
}
function accepts {
    /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| awk NR==3 | awk ‘{print $1}‘
}
function handled {
    /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| awk NR==3 | awk ‘{print $2}‘
}
function requests {
    /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| awk NR==3 | awk ‘{print $3}‘
}
# 执行function
$1

赋予脚本可执行权限

chmod a+x /home/scripts/ngx_status.sh

在本地测试脚本

/home/scripts/ngx_status.sh active

Zabbix4.0监控Nginx1.16.1

配置zabbixd.conf,定义监控脚本key

要使用脚本监控需要将zabbixd.conf文件中的

UnsafeUserParameters=1 开启

在脚本中添加定义以下各项的键值

UserParameter=nginx.status[*],/home/scripts/ngx_status.sh $1

Zabbix4.0监控Nginx1.16.1

重启zabbix-agent

systemctl restart zabbix-agent

zabbix服务端使用zabbix_get 测试获取数据

zabbix_get -s 192.168.5.51 -k nginx.status[active]

Zabbix4.0监控Nginx1.16.1

服务端测试正常后就可以在web界面配置监控了,zabbix配置都是通过界面配置,要熟练配置监控,要了解zabbix的每个组件的功能及各个组件之间的关系,否则看着一堆菜单选项会无从下手。

zabbix的配置流程大致如下:

创建主机组—>添加主机—>创建监控模板—>创建应用集—>创建监控项—>创建图像—>创建触发器—>创建事件—>创建处理动作—>创建用户组与用户—>创建告警方式

由于前面已经创建了主机组和主机,这里从配置模板开始,我们可以通过配置监控模板的方式,让所有相同的监控需求的主机都统一调用这个监控模板,这样就不用一个一个地添加监控项了。

这篇文章只做创建监控模板—>创建应用集—>创建监控项—>创建图像这三项的步奏,监控告警的内容以后再做。

登录zabbix web配置台

下面开始页面配置

创建模板

Zabbix4.0监控Nginx1.16.1

填写模板信息

Zabbix4.0监控Nginx1.16.1

Zabbix4.0监控Nginx1.16.1

Zabbix4.0监控Nginx1.16.1

返回模板页已经看到创建的模板已经生成,这时创建的模板是空模板,要在这个模板中创建应用集,监控项等,点击下图中的应用集就可以直接创建。

本文参考自:

(1)http://gudaoyufu.com/?p=850

(2)https://www.cnblogs.com/anay/p/8994290.html

相关推荐