IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Nginx-nginx状态监控 -> 正文阅读

[系统运维]Nginx-nginx状态监控

nginx状态监控

  • 环境说明:
IP主机
192.168.218.132lnmp架构、zabbix_server
192.168.218.133nginx、zabbix_agent

zabbix_agent端部署nginx

//安装依赖环境
[root@agent ~]# yum -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++ make 
[root@agent ~]# yum -y groups mark install 'Development Tools'

//创建系统用户nginx
[root@agent ~]#  useradd -r -M -s /sbin/nologin nginx

//创建日志存放目录
[root@agent ~]#  mkdir -p /var/log/nginx
[root@agent ~]#  chown -R nginx.nginx /var/log/nginx

//下载nginx
[root@agent src]# wget http://nginx.org/download/nginx-1.20.1.tar.gz

//编译安装
[root@agent nginx-1.20.1]# ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-debug \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_image_filter_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--http-log-path=/var/log/nginx/access.log \
--error-log-path=/var/log/nginx/error.log

[root@agent nginx-1.20.1]# make -j $(grep 'processor' /proc/cpuinfo | wc -l) && make install

//配置环境变量
[root@agent ~]# echo 'export PATH=/usr/local/nginx/sbin:$PATH' > /etc/profile.d/nginx.sh
[root@agent ~]#  source /etc/profile.d/nginx.sh
[root@agent ~]# which nginx
/usr/local/nginx/sbin/nginx

//设置开机自启
[root@agent ~]# vi /usr/lib/systemd/system/nginx.service

[Unit]
Description=nginx start
After=network.target
  
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecStop=/usr/local/nginx/sbin/nginx -s stop
ExecReload=/bin/kill -HUP  

[Install]
WantedBy=multi-user.target
[root@agent ~]# systemctl daemon-reload

//启动并开机自启nginx
[root@agent ~]# systemctl enable --now nginx
[root@agent ~]# ss -antl 
State  Recv-Q Send-Q Local Address:Port Peer Address:PortProcess 
LISTEN 0      128          0.0.0.0:80        0.0.0.0:*           
LISTEN 0      128          0.0.0.0:22        0.0.0.0:*           
LISTEN 0      128             [::]:22           [::]:*   

//开启状态页面
[root@agent ~]# vim /usr/local/nginx/conf/nginx.conf
......
        location /status {
            stub_status;
        }
......
[root@agent ~]# nginx -s reload

在这里插入图片描述

zabbix_agent配置

  • 编写脚本
//编写脚本
[root@agent scripts]# pwd
/scripts

//监控waiting值
[root@agent scripts]# vim check_wait.sh
#!/bin/bash 

waiting=$(curl -s http://192.168.218.133/status|awk 'NR==4{print $6}')

if [ $waiting -gt 40 ];then
    echo "1"
else
    echo "0"
fi

//监控reading值
[root@agent scripts]# vim check_read.sh
#!/bin/bash

reading=$(curl  -s http://192.168.218.133/status | awk 'NR==4{print $2}')

if [ $reading -gt 80 ];then
    echo "1"    
else
    echo "0"   
fi  

//监控wrinting值
[root@agent scripts]# vim check_write.sh
#!/bin/bash 

writing=$(curl  -s http://192.168.218.133/status | awk 'NR==4{print $4}')

if [ $writing -gt 40 ];then
    echo "1"
else
    echo "0"
fi     
[root@agent scripts]# chmod +x check_wait.sh check_read.sh check_write.sh 
  • 修改zabbix_agentd.conf文件
[root@agent etc]# pwd
/usr/local/etc
[root@agent etc]# vim zabbix_agentd.conf
......
UnsafeUserParameters=1
......
//在结尾添加以下三行
UserParameter=check_read,/scripts/check_read.sh
UserParameter=check_write,/scripts/check_write.sh
UserParameter=check_wait,/scripts/check_wait.sh
  • 重启服务
[root@agent ~]# pkill zabbix
[root@agent ~]# zabbix_agentd 
  • 测试key(服务端)
[root@server ~]# zabbix_get -s 192.168.218.133 -k check_read
0
[root@server ~]# zabbix_get -s 192.168.218.133 -k check_write
0
[root@server ~]# zabbix_get -s 192.168.218.133 -k check_wait
0

zabbix页面部署

  • 添加监控项
    Reading监控项
    在这里插入图片描述
    Writing监控项
    在这里插入图片描述
    Waiting监控项
    在这里插入图片描述
  • 添加触发器
    添加Reading触发器
    在这里插入图片描述
    添加Writing触发器
    在这里插入图片描述
    添加Waiting触发器
    在这里插入图片描述
  • 查看实时是否正常
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 测试
//修改脚本check_wait.sh中的比较值,主动触发报警
[root@agent scripts]# vim check_wait.sh 
#!/bin/bash 
  
waiting=$(curl -s http://192.168.218.133/status|awk 'NR==4{print $6}')

if [ $waiting -gt 0 ];then      //改为0,主动触发
    echo "1"
else
    echo "0"
fi

//修改完成以后无需重启服务就会立即报警

在这里插入图片描述

优化脚本

  • 合并脚本
    以上自定义监控nginx状态时,写了三个脚本,虽然功能可以实现,但是编辑配置文件时需要写三条UserParameter,如果数量太大就相对来讲比较麻烦,以下我们把三个脚本合并到一个脚本中
[root@agent ~]# cat /scripts/check_nginx_status.sh 
#!/bin/bash 

case $1 in
	'Reading')
	    if [ `curl  -s http://192.168.218.133/status | awk 'NR==4{print $2}'` -gt 80 ];then
	        echo "1"
	    else 
		echo "0"
	    fi
	  ;;
	'Writing')
            if [ `curl  -s http://192.168.218.133/status | awk 'NR==4{print $4}'` -gt 40 ];then
	        echo "1"
	    else
		echo "0"
	    fi
	  ;;
	'Waiting')
	    if [ `curl -s http://192.168.218.133/status|awk 'NR==4{print $6}'` -gt 40 ];then
                echo "1"
	    else
		echo "0"
	    fi
		;;	
esac
  • 修改zabbix_agentd.conf文件
[root@agent etc]# pwd
/usr/local/etc
[root@agent etc]# vim zabbix_agentd.conf
......
UnsafeUserParameters=1
......
//在结尾添加以下内容
UserParameter=check_nginx_status[*],/scripts/check_nginx_status.sh $1
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-11-04 13:43:51  更:2021-11-04 13:43:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 22:46:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码