Zabbix4.0监控Nginx1.16

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

一、确定监控内容

思考一下Nginx有哪些信息可以监控,Nginx内置了一个status状态的功能,通过配置可以看到Nginx的运行情况,status显示的内容包括当前连接数,处于活动状态的连接数,已经处理的请求数等等。

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

ngx_http_stub_status_module 模块官网使用说明文档:http://nginx.org/en/docs/http/ngx_http_stub_status_module.html

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

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

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

配置好后,重启Nginx

通过浏览器访问查看Nginx的status信息:http://IP地址/status/

上面的内容信息如下:
Active connections:当前活动的客户端连接数,包括Waiting连接数
accepts:接受的客户端连接总数
handled:已处理的连接总数
requests:客户端请求总数
Reading:Nginx正在读取请求头的当前连接数
Writing:请求已经接收完成,处于响应过程的连接数
Waiting:保持连接模式,处于活动状态的连接数

二、编写Zabbix 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

三、配置zabbix_agentd.conf,定义监控脚本key

打开配置文件

vim /etc/zabbix/zabbix_agentd.conf

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

UnsafeUserParameters=1 开启

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

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

重启Zabbix agent

systemctl restart zabbix-agent

四、在Zabbix服务端配置

Zabbix服务端使用 zabbix_get 命令测试获取数据

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

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

zabbix的配置流程大致如下:

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

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

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

登录Zabbix Web管理页面

下面开始页面配置

创建模板

填写模板信息

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

点击应用集—>创建应用集—>填写应用集名称

创建应用集我理解为只是给整个模板组中的一部分监控项模板分类,一个模板组中可以创建不同类别的监控项,创建应用集只是起一个名字,从上图中的应用集进入后创建好应用集然后就可以在应用集中创建监控项了,如下图:

创建监控项

创建监控项要注意命名方式,能够见名知意,最关键的是键值 ,这里的键值一点要和agent端的配置文件中定义的键值一致

在监控脚本中,一共定义了7个监控项,所以这里的监控项页要创建7个,重复上面的步骤,创建脚本中相应的监控项

监控项创建好后就可以创建图形了

创建图形

创建图形在选择要显示的图形的监控项时可以选择多个监控项,这样就可以在一个图形中显示多个数据的线图

还可以设置绘图风格、颜色等

为要监控的主机添加模板

配置—>主机—>选择要监控的主机

模板—>选择

选择模板

查看应用集

配置—>主机—>要监控的主机—>应用集

可以看到前面创建的应用集,说明主机和模板关联成功了

图形创建完成以后就可以在看到创建的监控模板已经在工作了,在 检测—>最新数据 中可以看到创建的模板信息

最后看看效果图吧

看到创建的图形模板已经出图形了,创建图形模板时定义了5个监控项,所以这里会出现5个线图

 

本文参考自:

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

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

posted @ 2020-01-18 22:41  OpsDrip  阅读(712)  评论(0编辑  收藏  举报