首页 > 系统相关 >nginx监控

nginx监控

时间:2023-12-18 15:33:45浏览次数:34  
标签:status 61 CACHEFILE nginx zabbix 监控 root

1.监控nginx链接数状态status

# 1.开启status页面功能

cat > /etc/nginx/conf.d/status.conf <<'EOF'
server{

    listen 80;
    server_name localhost;
    location /nginx_status {
        stub_status on;
        access_log off;
    }
}
EOF


# 2.访问测试
[root@web-7 ~]#systemctl restart nginx
[root@web-7 ~]#
[root@web-7 ~]#
[root@web-7 ~]#curl 10.0.0.7/nginx_status
Active connections: 1 
server accepts handled requests
 1 1 1 
Reading: 0 Writing: 1 Waiting: 0

2.开发nginx监控状态脚本

# 自定义监控内容,也就是自定义key的操作
# 脚本核心思路就是,提取status页面的数值,交给zabbix

# 1.开发监控nginx脚本

#!/bin/bash
# Author: www.yuchaoit.cn

NGINX_COMMAND=$1
CACHEFILE="/tmp/nginx_status.log"
CMD="/usr/bin/curl http://127.0.0.1/nginx_status"

# 判断是否有status日志文件
if [ ! -f $CACHEFILE ];then
    $CMD >$CACHEFILE 2>/dev/null
fi


# 检查status日志有效期,限定状态文件在60秒内
# 记录最后一次status日志的生成时间(秒)
STATUS_TIME=$(stat -c %Y $CACHEFILE)

# 以unix时间计算,seconds since 1970-01-01 00:00:00 UTC
# 当前系统时间减去日志时间,推算,是否超过60秒,超过就立即重新生成
TIMENOW=$(date +%s)

if [  $[ $TIMENOW - $STATUS_TIME ]  -gt 60 ];then
    rm -f $CACHEFILE
fi

if [ ! -f $CACHEFILE ];then
    $CMD > $CACHEFILE 2>/dev/null 
fi


nginx_active(){
    grep 'Active' $CACHEFILE |awk '{print $NF}'
    exit 0;
}

nginx_reading(){
    grep 'Reading' $CACHEFILE |awk '{print $2}'
    exit 0;
}

nginx_writing(){
    grep 'Writing' $CACHEFILE |awk '{print $4}'
    exit 0;
}

nginx_waiting(){
    grep 'Waiting' $CACHEFILE |awk '{print $6}'
    exit 0;
}

nginx_accepts(){
    awk NR==3 $CACHEFILE|awk '{print $2}'
    exit 0;
}

nginx_handled(){
    awk NR==3 $CACHEFILE|awk '{print $2}'
    exit 0;
}

nginx_requests(){
    awk NR==3 $CACHEFILE|awk '{print $3}'
    exit 0;
}


# 对脚本传入参数判断,需要获取什么值
case $NGINX_COMMAND in 
    active)
        nginx_active ;;
    reading)
        nginx_reading;;
    writing)
        nginx_writing;;
    waiting)
        nginx_waiting;;
    accepts)
        nginx_accepts;;
    handled)
        nginx_handled;;
    requests)
        nginx_requests;;
    *)
        echo "Invalid arguments" 
        exit 2
        ;;
esac

3.编写agent自定义key配置文件

[root@web-7 /etc/zabbix/zabbix_agentd.d]#cat nginx_status.conf 
UserParameter=nginx_status[*],/bin/bash /etc/zabbix/zabbix_agentd.d/nginx_status.sh $1



# 授权
[root@web-7 /etc/zabbix/zabbix_agentd.d]#chmod +x nginx_status.sh 
[root@web-7 /etc/zabbix/zabbix_agentd.d]#chown -R zabbix.zabbix ./*
[root@web-7 /etc/zabbix/zabbix_agentd.d]#ll
total 16
-rw-r--r-- 1 zabbix zabbix   87 Jul  4 13:40 nginx_status.conf
-rwxr-xr-x 1 zabbix zabbix 1697 Jul  4 13:40 nginx_status.sh
-rw-r--r-- 1 zabbix zabbix   52 Jun 29 19:06 tcp_status.conf
-rw-r--r-- 1 zabbix zabbix 1531 Jul 29  2019 userparameter_mysql.conf
[root@web-7 /etc/zabbix/zabbix_agentd.d]#


# 重启
[root@web-7 /etc/zabbix/zabbix_agentd.d]#systemctl restart zabbix-agent

4.测试zabbix_get

这里务必测试所有参数都是有结果的

[root@m-61 ~/p3-shell]#
[root@m-61 ~/p3-shell]#zabbix_get -s 10.0.0.7 -k nginx_status[active]
1
[root@m-61 ~/p3-shell]#zabbix_get -s 10.0.0.7 -k nginx_status[reading]
0
[root@m-61 ~/p3-shell]#zabbix_get -s 10.0.0.7 -k nginx_status[writing]
1
[root@m-61 ~/p3-shell]#zabbix_get -s 10.0.0.7 -k nginx_status[waiting]
0
[root@m-61 ~/p3-shell]#zabbix_get -s 10.0.0.7 -k nginx_status[accepts]
10074
[root@m-61 ~/p3-shell]#zabbix_get -s 10.0.0.7 -k nginx_status[handled]
10075
[root@m-61 ~/p3-shell]#zabbix_get -s 10.0.0.7 -k nginx_status[requests]
10007


[root@m-61 ~/p3-shell]#zabbix_get -s 10.0.0.7 -k nginx_status[requestsxxx]
Invalid arguments
[root@m-61 ~/p3-shell]#

5.zabbix-UI界面创建模板

按照如图规则,创建7个监控项,触发器即可。

快速克隆即可。

 

触发器

测试加一个,当requests请求数到达5万时报警

 

6.主机关联模板

分别给web7 和web8 关联模板,使用该监控项

 

7.查看最新数据

 

8.查看nginx_status图形数据

 

标签:status,61,CACHEFILE,nginx,zabbix,监控,root
From: https://www.cnblogs.com/sxy-blog/p/17911356.html

相关文章

  • Nginx中alias和root的区别
    location/i{#www.a.com/i/123.gif alias/var/www/html/images/;#/var/www/html/images/123.gif}在这个location段配置中,如果url请求/i/logo.gif,那么Nginx将会在服务器上查找/var/www/html/images/logo.gif文件,也就是说请求的url中location后面的部分会被追加到ali......
  • Nginx的配置与启动
    配置文件$catconf/nginx.conf#设置用户usernginx;#工作线程worker_processesauto;#error_loglogs/error.log;#设置日志级别error_loglogs/error.lognotice;#error_loglogs/error.loginfo;#编译时文件安装的目录pid/var/run/nginx.pid;#打......
  • 监控体系理论
    1.监控系统的重要性1.无论是小公司,也会招聘专门的监控运维岗、或是对运维软件有一定的技术要求2.或者是大公司,假设北京总部有70个运维,里面可能有20个SRE高级运维,3个devops运维开发,3个监控运维(维护zabbix、prometheus)、剩下的就是桌面运维(维护硬件资产、发放笔记本、显......
  • mamp nginx thinkphp5 配置方法
    thinkphp5的nginx配置,官方文档参考: http://static.kancloud.cn/manual/thinkphp5/177576fastadmin的nginx配置,官方文档参考:https://doc.fastadmin.net/doc/faq.htmlserver {        listen       80;        server_name  www.fa.com *.fa.co......
  • zabbix如何监控服务器
    1.zabbix架构图 zabbix核心概念先记住如下zabbix中的核心几个概念主机(HOST):就是具体的一个监控对象,某一个被监控的实例,可以是一个数据库,也可以是一个操作系统。模板(Template):定义了具体一类监控对象的抽象,比如Windows模板,就是用来专门在监控Windows的时候,直......
  • Nginx配置文件解读
    Nginx安装完毕后,会产生相应的安装目录,根据前面的安装路径,Nginx的配置文件路径为/usr/local/nginx/conf其中nginx.conf为Nginx的主配置文件这里重点介绍下nginx.conf这个配置文件。Nginx配置文件默认有五个部分组成:分别是main、events、http、server和location其中:main部分设......
  • 安装nginx
    Nginx版本分为主线版、稳定版和历史版本在官方网站中Mainlineversion表示目前主力在做的版本,可以说是开发版,开发版更新速度较快,从官网上看大约一个月更新1-2次Stableversion表示最新稳定版,也就是生产环境上建议使用的版本Legacyversions表示遗留的历史稳定版1、安装Ngin......
  • 理想的监控系统到底是什么样的?
    笔者从14年开始做监控,从Open-Falcon到后来的Nightingale,到现在接近10年,认知在持续迭代,最近又有一些新想法,跟大家分享一下我眼中的理想的监控系统到底是什么样的。关于采集器市面上有众多采集器,比如telegraf、categraf、grafana-agent、datadog-agent以及Prometheus......
  • 国标GB28181智能视频监控LiteCVR设备列表显示不全的原因排查
    随着科技的不断发展,安防视频监控技术也在不断创新和升级。近年来,一些新技术不断涌现,为安防视频监控领域带来了更多的机遇和挑战。有用户在现场部署LiteCVR,服务器重启后,设备列表显示不全,只显示国标设备,不显示Ehome设备,如下图: GB28181视频监控国标平台/视频云存储/安防监控LiteCVR......
  • 安防视频监控常见技术及GB28181国标LiteCVR视频平台应用
    最近,安防视频监控领域正在迅速发展并应用了许多新技术。以下是几种常见的新技术应用:1)人工智能(AI):AI技术在安防视频监控中被广泛应用。通过使用深度学习算法和模式识别技术,AI可以自动检测、识别和跟踪人员、车辆和物品。这不仅有助于提高安防系统的报警精确性,还可以减轻安保人员在大......