zabbix4.4.7 监控 nginx 状态

本贴最后更新于 1847 天前,其中的信息可能已经时过境迁

1. 启用 nginx status 配置

在 location 添加下列内容:

server { location /ngx_status { stub_status on; access_log off; allow 127.0.0.1; deny all; } }

示例:

······ server { listen 80; server_name example.com; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $http_host; proxy_pass http://127.0.0.1:8080; } location /goaccess { root /usr/local/src; } location /ngx_status { stub_status on; access_log off; allow 127.0.0.1; } ······

2. 重载 nginx

ngixn -s reload

3. 打开 status 页面

curl http://127.0.0.1/ngx_status Active connections: 3 server accepts handled requests 123630 123630 477618 Reading: 0 Writing: 1 Waiting: 2

若启用 https 和域名访问,则直接将 IP 地址换成域名:curl https://domain/ngx_status

4. nginx status 详解

  • active connections – 活跃的连接数量
  • server accepts handled requests — 总共处理了 11989 个连接 , 成功创建 11989 次握手, 总共处理了 11991 个请求
  • reading — 读取客户端的连接数.
  • writing — 响应数据到客户端的数量
  • waiting — 开启 keep-alive 的情况下,这个值等于 active – (reading+writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接.

以上为 nginx 性能计数,我们除了监控以上数据,还需要监控 nginx 进程状态,并且配置触发器

2.zabbix 客户端配置

2.1 编写客户端脚本

  • /etc/zabbix/zabbix_agentd.d/nginx_status.sh
#!/bin/bash HOST="127.0.0.1" PORT="80" # 检测nginx进程是否存在 function ping() { /usr/sbin/pidof nginx | wc -l } # 检测nginx性能 function active() { /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null | grep 'Active' | awk '{print $NF}' } function reading() { /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null | grep 'Reading' | awk '{print $2}' } function writing() { /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null | grep 'Writing' | awk '{print $4}' } function waiting() { /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null | grep 'Waiting' | awk '{print $6}' } function accepts() { /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null | awk NR==3 | awk '{print $1}' } function handled() { /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null | awk NR==3 | awk '{print $2}' } function requests() { /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null | awk NR==3 | awk '{print $3}' } # 执行function $1

若采用 https 的域名方式访问,则将脚本中的 http 替换成 https,IP 地址替换成域名即可

2.2 添加脚本执行权限

chmod +x /etc/zabbix/zabbix_agentd.d/nginx_status.sh

2.3 自定义 UserParameter

  • /etc/zabbix/zabbix_agentd.d/nginx.conf
UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/nginx_status.sh $1

2.4 重启 zabbix-agent

systemctl restart zabbix-agent

2.5 zabbix_get 获取数据

zabbix_get -s 127.0.0.1 -p 10050 -k 'nginx.status[accepts]' 123833 zabbix_get -s 127.0.0.1 -p 10050 -k 'nginx.status[ping]' 1

3.zabbix web 端配置

3.1 导入 Template App NGINX 模板

3.2 添加模板

image.png

注意:不要添加错了,zabbix 自带 nginx 模板不过我们不用

3.3 效果

image.png

4.参考

本文摘自:Zabbix 监控 Nginx 性能的实现方式

  • Zabbix
    40 引用 • 21 回帖
  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    315 引用 • 547 回帖 • 2 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...