首页 > 系统相关 >nginx监控

nginx监控

时间:2024-06-08 18:00:50浏览次数:20  
标签:status CACHEFILE nginx zabbix awk 监控 exit

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 ~]#nginx -t
[root@web-7 ~]#systemctl restart nginx
[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的status状态太多,写为一个接受参数的key
#  status_nginx[*]  

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;
}


# 对脚本传入参数判断,需要获取什么值
# 如下参数,都是nginx的链接状态,
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

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

4手动测试,自定义key+脚本,是否采集nginx的各种状态

[root@zabbix-server-71 /usr/lib/zabbix/alertscripts]#zabbix_get -s 10.0.0.7 -k nginx_status[active]
3

[root@zabbix-server-71 /usr/lib/zabbix/alertscripts]#zabbix_get -s 10.0.0.7 -k nginx_status[reading]
0

5创建nginx_status的模板,便于给web组所有机器用

和你的web7机器关联让它用

看看图形,拿到数据了吗,最新数据

web7机器nginx,七个链接状态的数据的图形创建

触发器,当nginx的requests请求数,超过50000万,就报警,钉钉报警

ab压测,看钉钉是否报警就完事。服务端压测
ab -c 100 -n 50000 http://10.0.0.7/

标签:status,CACHEFILE,nginx,zabbix,awk,监控,exit
From: https://www.cnblogs.com/btcm409181423/p/18238818

相关文章

  • Java基于系统api监控文件新增事件
    得益于jvm对系统api的封装,本文的方法实际是对jvm封装后的方法的再次封装。在linux上,对于的api为inotify,在windows上,对于的api则为ReadDirectoryChangesW。本文应用的jdk版本为8。业务字段:@DatapublicclassFileMessageDto{privateLocalDateTimecreateTime;privat......
  • nginx的负载均衡方式
    Nginx是一种高性能的HTTP和反向代理服务器,它具有强大的负载均衡功能。Nginx支持多种负载均衡策略,包括轮询、权重轮询、最少连接、IP哈希等。1.轮询(RoundRobin)轮询是Nginx的默认负载均衡方式,它将请求依次分配给每个后端服务器。配置:http{upstreamweb{ser......
  • 利用WinSW将Nginx 作为可正常启动/停止的windows服务
    下载winsw程序,Releases·winsw/winsw(github.com)将下载的exe文件放置到nginx.exe的同级目录,名字可以修改为nginx-service.exe(也可不修改)新建txt文本文档,并将其名称改为winsw程序一模一样的名称(不包含.和后缀),填写如下内容1<service>2<id>nginx</id>3<......
  • Nginx 配置防护 缓慢的 HTTP拒绝服务攻击+点击劫持:X-Frame-Options未配置
    一安全团队检测网站1 检测到目标主机可能存在缓慢的HTTP拒绝服务攻击缓慢的HTTP拒绝服务攻击是一种专门针对于Web的应用层拒绝服务攻击,攻击者操纵网络,对目标Web服务器进行海量HTTP请求攻击,直到服务器带宽被打满,造成了拒绝服务。慢速HTTP拒绝服务攻击经过不断的演变和发展......
  • 视频监控管理平台LntonCVS视频汇聚平台充电桩视频监控应用方案
    随着新能源汽车的广泛使用,公众对充电设施的安全性和可靠性日益重视。为了提高充电桩的安全管理和站点运营效率,LntonCVS公司推出了一套全面的新能源汽车充电桩视频监控与管理解决方案。该方案通过安装高分辨率摄像头,对充电桩及其周边区域进行不间断监控,确保充电环境的安全无虞......
  • 安防监控平台智能边缘分析一体机视频监控系统室内消防通道占用检测算法
    随着城市化进程的加速,高层建筑如雨后春笋般涌现。这些建筑的消防安全问题日益凸显,尤其是消防通道的占用问题。为了解决这一问题,智能边缘分析一体机被引入到室内消防通道占用检测中,以提高检测效率和准确性。本文将探讨这一技术的应用及其重要性。智能边缘分析一体机是一种集成......
  • 安防监控视频平台LntonCVS统一视频接入平台建筑工地安防监控应用方案
    随着科技的高速发展,视频信号经过数字压缩后,可以通过互联网宽带或者移动4G网络进行传输,从而实现远程视频监控功能。将这一功能应用于施工现场安全管理,将大大提高管理效率并提升监管水平。LntonCVS监控系统能够实现这些目标,使得施工企业能够跃上新的管理平台,同时政府的监管力度也......
  • 视频监控管理平台LntonCVS视频汇聚平台充电桩视频监控应用方案
    随着新能源汽车的广泛使用,公众对充电设施的安全性和可靠性日益重视。为了提高充电桩的安全管理和站点运营效率,LntonCVS公司推出了一套全面的新能源汽车充电桩视频监控与管理解决方案。该方案通过安装高分辨率摄像头,对充电桩及其周边区域进行不间断监控,确保充电环境的安全无虞......
  • 09.1手工制作docker镜像-多服务ssh+nginx
    手工制作docker镜像-多服务ssh+nginx一个容器多个服务基于centos6.9系统添加yum源与epel源安装nginx、ssh服务yuminstallnginxopenssh-server-y因镜像系统为纯系统,没有root密码,所以需要配置密码echo123456|passwd--stdinroot注:因配置yum源存在坑,详见cento......
  • 2024安全生产月启动:AI智能监控如何为工厂安全生产保驾护航?
    每年的安全生产月都是全社会共同关注安全生产的重要时刻。在这个特殊的月份里,各行各业都会积极开展安全生产宣传教育活动,旨在提高公众的安全意识,预防和减少生产安全事故的发生。今年6月是第23个全国“安全生产月”,6月16日为全国“安全宣传咨询日”。今年全国“安全生产月”活动主......