Zabbix监控案例

Zabbix监控案例,第1张

文章目录
  • Zabbix监控案例(六)Nginx监控
    • 编译安装nginx
    • 开启zabbix sudu权限
    • nginx脚本
    • 配置agent
    • 将nginx添加到zabbix监控
    • 实现故障自治愈

Zabbix监控案例(六)Nginx监控
  1. 编译安装nginx,监控nginx_stats页面,实现故障自治愈
  2. 安装zabbix-agent(下面是apt安装,如果是编译安装需要注意路径)
编译安装nginx
  1. 准备nginx编译包nginx-1.10.3.tar.gz,解压
tar xf nginx-1.10.3.tar.gz
cd nginx-1.10.3/
  1. 编译安装
    安装环境
apt install gcc libpcre3-dev libpcre3 openssl libssl-dev zlib1g-dev make iproute2 ntpdate tcpdump telnet traceroute nfs-kernel-server nfs-common tree openssl  libssl-dev libpcre3 libpcre3-dev zlib1g-dev 
./configure --prefix=/usr/local/nginx \
--sbin-path=/usr/sbin/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module

make && make install

如果出错

src/core/ngx_murmurhash.c: In function ‘ngx_murmur_hash2’:
src/core/ngx_murmurhash.c:37:11: error: this statement may fall through [-Werror=implicit-fallthrough=]
         h ^= data[2] << 16;
         ~~^~~~~~~~~~~~~~~~
src/core/ngx_murmurhash.c:38:5: note: here
     case 2:
     ^~~~
src/core/ngx_murmurhash.c:39:11: error: this statement may fall through [-Werror=implicit-fallthrough=]
         h ^= data[1] << 8;
         ~~^~~~~~~~~~~~~~~
src/core/ngx_murmurhash.c:40:5: note: here
     case 1:
     ^~~~
cc1: all warnings being treated as errors
objs/Makefile:460: recipe for target 'objs/src/core/ngx_murmurhash.o' failed
make[1]: *** [objs/src/core/ngx_murmurhash.o] Error 1
make[1]: Leaving directory '/root/nginx-1.10.3'
Makefile:8: recipe for target 'build' failed
make: *** [build] Error 2

解决:objs/Makefile文件,将第三行的-Werror去掉就可以

  1. 在server下加段
cd /usr/local/nginx/
vim conf/nginx.conf
location /nginx_status {
    stub_status on;
}
  1. 启动
/usr/local/nginx/sbin/nginx
  1. 测试nginx状态面
开启zabbix sudu权限
vim /etc/sudoers
zabbix ALL =(ALL) NOPASSWD: ALL
nginx脚本
cd /etc/zabbix/zabbix_agentd.conf.d/
vim nginx_check.sh
#!/bin/bash 

nginx_status_fun(){ #函数内容
	NGINX_PORT= #端口,函数的第一个参数是脚本的第二个参数,即脚本的第二个参数是段端口号
	NGINX_COMMAND= #命令,函数的第二个参数是脚本的第三个参数,即脚本的第三个参数是命令
	nginx_active(){ #获取nginx_active数量,以下相同,这是开启了nginx状态但是只能从本机看到
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
        }
	nginx_reading(){ #获取nginx_reading状态的数量
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Reading' | awk '{print }'
       }
	nginx_writing(){
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Writing' | awk '{print }'
       }
	nginx_waiting(){
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Waiting' | awk '{print }'
       }
	nginx_accepts(){
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print }'
       }
	nginx_handled(){
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print }'
       }
	nginx_requests(){
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print }'
       }
  	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;
		esac 
}

main(){ 
	case  in 
		nginx_status) 
			nginx_status_fun  ;
			;;
		*) 
			echo $"Usage: } {nginx_status key}"
	esac


main   
  • 测试下
    1. bash
  • 权限
  • nginx_check.sh nginx_status 80 accepts
      chown
    chmod zabbix.zabbix nginx_check.sh
    vim /etc/zabbix/zabbix_agentd.conf.d/check.conf
     +x nginx_check.sh
    
    配置agent
    =
    UserParameter[nginx_check]*,/etc/zabbix/zabbix_agentd.conf.d/nginx_check.sh "" "" "
  • 重启服务
  • "
      systemctl restart zabbix-agent
  • 在server端测试
    1. # ./zabbix_get -s 192.168.99.23 -p 10050 -k "nginx_check[nginx_status,80,accepts]"
    vim /etc/zabbix/zabbix_agentd.conf
    
    7
    
    将nginx添加到zabbix监控
    1. 创建模板

    2. 添加监控项

    3. 可以添加多个监控项

    4. 添加图形

    5. 添加触发器

    6. 把模板添加到主机

    7. 稍等一会,查看图形是否有数据

    实现故障自治愈

    修改配置文件支持运程命令

    EnableRemoteCommands=1
    UnsafeUserParameters=1
    
    systemctl restart zabbix-agent
    

    重启服务

    sudo
    1. 先在nginx模板中创建一个监控项来监控80端口

    2. 监控80端口

    3. 检查下有没有数据

    4. 创建触发器

    5. 创建动作

    6. 添加条件

    7. 添加新的 *** 作,传送命令

    su 
  • 将nginx服务停止
  • - root -c /usr/local/nginx/sbin/nginx

      pkill
     nginx
    

    1. 检查是否报警

    2. 检查自治愈

    3. 报警关闭

    欢迎分享,转载请注明来源:内存溢出

    原文地址:https://54852.com/langs/797713.html

    (0)
    打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
    上一篇 2022-05-06
    下一篇2022-05-06

    发表评论

    登录后才能评论

    评论列表(0条)

      保存