
运维监控
nagios配置报警方法
原理 Nagios的报警原理可以概括为以下几个步骤: 1. 监测主机和服务状态:Nagios通过周期性地执行预定义的监测命令,检查被监控主机和服务的状态。这些监测命令可以是Ping
[root@www.wulaoer.org ~]#cd nginx-1.18.0/
[root@www.wulaoer.org nginx-1.18.0]#./configure --help |grep with-http_stub_status_module
--with-http_stub_status_module enable ngx_http_stub_status_module
#配置示例:
location /nginx_status {
stub_status;
auth_basic "auth login";
auth_basic_user_file /apps/nginx/conf/.htpasswd;
allow 192.168.0.0/16;
allow 127.0.0.1;
deny all;
}
#状态页用于输出nginx的基本状态信息:
#输出信息示例:
Active connections: 291
server accepts handled requests
16630948 16630948 31070465
上面三个数字分别对应accepts,handled,requests三个值
Reading: 6 Writing: 179 Waiting: 106
Active connections: #当前处于活动状态的客户端连接数,包括连接等待空闲连接数=reading+writing+waiting
accepts:#统计总值,Nginx自启动后已经接受的客户端请求连接的总数。
handled:#统计总值,Nginx自启动后已经处理完成的客户端请求连接总数,通常等于accepts,除非有因worker_connections限制等被拒绝的连接
requests:#统计总值,Nginx自启动后客户端发来的总的请求数。
Reading:#当前状态,正在读取客户端请求报文首部的连接的连接数,数值越大,说明排队现象严重,性能不足
Writing:#当前状态,正在向客户端发送响应报文过程中的连接数,数值越大,说明访问量很大
Waiting:#当前状态,正在等待客户端发出请求的空闲连接数,开启 keep-alive的情况下,这个值等于active – (reading+writing)
[root@www.wulaoer.org ~]#vim /apps/nginx/conf/nginx.conf
location / {
root html;
index index.html index.htm;
}
location /nginx_status {
stub_status;
allow 10.0.0.0/24;
allow 127.0.0.1;
deny all;
}
[root@www.wulaoer.org ~]#nginx -t
nginx: the configuration file /apps/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /apps/nginx/conf/nginx.conf test is successful
[root@www.wulaoer.org ~]#systemctl restart nginx.service
[root@www.wulaoer.org ~]#curl http://10.0.0.37/nginx_status
Active connections: 1
server accepts handled requests
8 8 9
Reading: 0 Writing: 1 Waiting: 0
[root@www.wulaoer.org ~]#cd /etc/zabbix/zabbix_agentd.d/
[root@www.wulaoer.org zabbix_agentd.d]#cat nginx_monitor.sh
#!/bin/bash
nginx_status_fun(){ #函数内容
NGINX_PORT=$1 #端口,函数的第一个参数是脚本的第二个参数,即脚本的第二个参数是段端口号
NGINX_COMMAND=$2 #命令,函数的第二个参数是脚本的第三个参数,即脚本的第三个参数是命令
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 $2}'
}
nginx_writing(){
/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
}
nginx_waiting(){
/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
}
nginx_accepts(){
/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}'
}
nginx_handled(){
/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}'
}
nginx_requests(){
/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}'
}
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 $1 in #分支结构,用于判断用户的输入而进行响应的操作
nginx_status) #当输入nginx_status就调用nginx_status_fun,并传递第二和第三个参数
nginx_status_fun $2 $3;
;;
*) #其他的输入打印帮助信息
echo $"Usage: $0 {nginx_status key}"
esac #分支结束符
}
main $1 $2 $3
[root@www.wulaoer.org zabbix_agentd.d]#chmod a+x nginx_monitor.sh
[root@www.wulaoer.org zabbix_agentd.d]#bash nginx_monitor.sh nginx_status 80 active
1
[root@www.wulaoer.org zabbix_agentd.d]#bash nginx_monitor.sh nginx_status 80 writing
1
#将所有自定义监控项汇总到/etc/zabbix/zabbix_agentd.d/all.conf配置文件 [root@www.wulaoer.org zabbix_agentd.d]#vim all.conf UserParameter=redis_monitor[*],/bin/bash /etc/zabbix/zabbix_agentd.d/redis_monitor.sh $1 $2 $3 UserParameter=nginx.status[*],/bin/bash /etc/zabbix/zabbix_agentd.d/nginx_monitor.sh $1 $2 $3 [root@www.wulaoer.org zabbix_agentd.d]#vim /etc/zabbix/zabbix_agentd.conf #删除以下自定义监控项 UserParameter=redis_monitor[*],/bin/bash /etc/zabbix/zabbix_agentd.d/redis_monitor.sh $1 $2 $3 [root@centos7 zabbix_agentd.d]#systemctl restart zabbix-agent.service
[root@zabbix_server ~]#/bin/zabbix_get -s 10.0.0.37 -p 10050 -k "nginx.status["nginx_status","80","active"]" 1 [root@zabbix_server ~]#/bin/zabbix_get -s 10.0.0.37 -p 10050 -k "nginx.status["nginx_status","80","writing"]" 1

评论 0