首页 > 系统相关 >Zabbix监控Nginx的七个链接状态

Zabbix监控Nginx的七个链接状态

时间:2023-10-07 21:56:28浏览次数:32  
标签:status nginx get zabbix CACHEFILE Nginx Zabbix root 链接

一、监控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 ~]#curl 10.0.0.7/nginx_status
Active connections: 1 
server accepts handled requests
 1 1 1 
Reading: 0 Writing: 1 Waiting: 0

二、开发nginx监控状态脚本

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

# 1.开发监控nginx脚本

#!/bin/bash

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

# 判断是否有status日志文件
function CACHEFILE_IS_EXIST(){
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 - $FILETIME ] -gt 60 ];then
   rm -f $CACHEFILE
   CACHEFILE_IS_EXIST
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 $NF}'
exit 0;
}
nginx_accepts(){
awk 'NR==3{print $1}'  $CACHEFILE
exit 0;
}
nginx_handled(){
awk 'NR==3{print $2}'  $CACHEFILE
exit 0;
}
nginx_requests(){
awk 'NR==3{print $3}'  $CACHEFILE
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

三、编写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]#systemctl restart zabbix-agent

四、测试zabbix_get

这里务必测试所有参数都是有结果的
[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

五、zabbix-UI界面创建模板

创建模板,添加7个监控项,触发器,快速克隆即可。

image

添加图形

image

触发器

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

image

六、主机关联模板

image

image

七、查看最新数据

image

八、查看nginx_status图形数据

image

标签:status,nginx,get,zabbix,CACHEFILE,Nginx,Zabbix,root,链接
From: https://www.cnblogs.com/chunjeh/p/17747571.html

相关文章

  • 正向代理和反向代理的区别、应用场景及在nginx上的应用
    正向代理和反向代理是两种常见的代理服务器架构,它们在网络通信中扮演不同的角色和应用场景。1、正向代理(ForwardProxy):正向代理是一个位于客户端和目标服务器之间的代理服务器。当客户端需要访问互联网上的资源时,它首先将请求发送给正向代理服务器,然后由代理服务器代表客户端发送请......
  • nginx.conf样本
    #usernobody;worker_processes1;#error_loglogs/error.log;#error_loglogs/error.lognotice;#error_loglogs/error.loginfo;#pidlogs/nginx.pid;#这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit-n)与ngin......
  • Flask审计+Nginx读取
    来自:[SUCTF2019]Pythonginx打开还是源码,直接审计:fromflaskimportFlask,Blueprint,request,Response,escape,render_templatefromurllib.parseimporturlsplit,urlunsplit,unquotefromurllibimportparseimporturllib.requestapp=Flask(__name__)#In......
  • Zabbix配置钉钉告警
    一、创建群聊机器人1.添加群聊机器人2.设置机器人信息3.记录webhook地址机器人文档https://open.dingtalk.com/document/org/application-types用户可以向这个webhook地址发起post请求,提交数据,也就是等于给钉钉发消息了,注意字符集编码4.测试webhook地址#提交json类......
  • nginx实现后端tomcat的负载均衡调度
    1.负载均衡主机和网络地址规划10.0.0.152proxy.magedu.orgnginx10.0.0.150t1.magedu.orgtomcat110.0.0.160t2.magedu.orgtomcat2#只需在10.0.0.52的nginx主机上实现域名解析[root@localhost~]#cat/etc/hosts127.0.0.1localhost......
  • 编译安装nginx,实现多域名 https
     #编译安装nginx[root@centos8~]#yum-yinstallgccpcre-developenssl-develzlib-devel[root@centos8~]#useradd-s/sbin/nologinnginx[root@centos8~]#cd/usr/local/src/[root@centos8src]#wgethttp://nginx.org/download/nginx-1.18.0.tar.gz......
  • nginx负载均衡中常见的算法及原理有哪些?
     #1)轮询(round-robin) 轮询为负载均衡中较为基础也较为简单的算法,它不需要配置额外参数。假设配置文件中共有台服务器,该算法遍历服务器节点列表,并按节点次序每轮选择一台服务器处理请求。当所有节点均被调用过一次后,该算法将从第一个节点开始重新一轮遍历。 特点:由于......
  • wordpress 编写插件实现自动汇总超链接
    背景写长篇文章时,文章内容可能会引用了很多外站的超链接。事后我再来翻阅文章,找到想要的超链很吃力。尝试过在插件商城寻找现有的插件,都不太令人满意。因为需求其实很简单:将文章内容中出现过的超链接,汇总展示在文章的末尾,类似论文的引用文献。‍实施将如下代码,放在wordpres......
  • Zabbix 监控
    目录1.zabbix是什么?2.zabbix监控原理:3.部署zabbix服务端3.1关闭selinux与防火墙3.2部署Nginx+PHP环境并测试3.3修改nginx配置3.4修改php配置3.5创建目录和测试文件3.6启动服务3.7测试访问(hosts解析)4.部署数据库4.1配置Mariadbyum源4.2初始化数据库4.......
  • 自动化爬取Behance网站上的项目链接(优化版)
    ###代码功能:此代码的主要目的是自动化爬取Behance网站上的项目链接。1.**多关键词搜索**:用户可以一次性输入多个关键词,程序会为每个关键词爬取指定数量的项目链接。2.**自动滚动页面**:使用Selenium模拟浏览器操作,程序能自动地滚动页面以获取更多的链接。3.**命令行界面......