Zabbix监控软件实例:Linux下监控NGINX的性能

 实例:监控NGINX的性能

1.安装(确认是否有状态统计模块)

yum -y install nginx

2.更改NGINX配置文件添加状态统计站点 

vim /etc/nginx/nginx.conf #主配置文件
vim /etc/nginx/conf.d/default.conf #子配置文件

location /nginx_status {
    stub_status on;  #开启状态统计
    access_log off;  #关闭访问日志
    allow 127.0.0.1; #只允许本机访问
    deny all;
}
systemctl restart nginx


测试 访问设置的网站 获取NGINX状态统计
curl -sL http://127.0.0.1/nginx_status

过滤结果获取需要的值

curl -sL http://127.0.0.1/nginx_status | awk '/Active connections/{print $3}'
#连接数
curl -sL http://127.0.0.1/nginx_status | awk 'NR==3 /{print $3}'
#请求总数

3.编写 nginx 监控脚本

mkdir -p /etc/zabbix/zabbix_shell/
cd /etc/zabbix/zabbix_shell/
vim zabbix_nginx.sh


#/bin/bash
#Description:Automated monitoring nginx performance and process nginx_status scripts

HOST="127.0.0.1"
PORT=80
stub_status="nginx_status"
COMMAND=$1

nginx_check() {
    if [ -f /sbin/pidof ]; then #如果有pidof命令用pidof统计NGINX进程,如果没有用ps aux统计NGINX进程
       /sbin/pidof nginx | wc -w #pidof查看NGINX进程pid,并且wc统计 
    else
       ps aux | grep -v "grep" | grep -c "nginx:"
    fi
}


#获取stub_status页面各项参数
nginx_active(){
    /usr/bin/curl -s "http://$HOST:$PORT/${stub_status}/" 2> /dev/null | awk '/Active/ {print $NF}'
}

nginx_reading(){
    /usr/bin/curl -s "http://$HOST:$PORT/${stub_status}/" 2> /dev/null | awk '/Reading/ {print $2}'
}

nginx_writing(){
    /usr/bin/curl -s "http://$HOST:$PORT/${stub_status}/" 2> /dev/null | awk '/Writing/ {print $4}'
}

nginx_waiting(){
    /usr/bin/curl -s "http://$HOST:$PORT/${stub_status}/" 2> /dev/null | awk '/Waiting/ {print $6}'
}

nginx_accepts(){
    /usr/bin/curl -s "http://$HOST:$PORT/${stub_status}/" 2> /dev/null | awk 'NR==3 {print $1}'
}

nginx_handled(){
    /usr/bin/curl -s "http://$HOST:$PORT/${stub_status}/" 2> /dev/null | awk 'NR==3 {print $2}'
}

nginx_requests(){
    /usr/bin/curl -s "http://$HOST:$PORT/${stub_status}/" 2> /dev/null | awk 'NR==3 {print $3}'
}

#运行脚本跟上不同参数获取不同的统计值
case $COMMAND in
    check)
        nginx_check
        ;;
    active)
        nginx_active
        ;;
    reading)
        nginx_reading
        ;;
    writing)
        nginx_writing
        ;;
    waiting)
        nginx_waiting
        ;;
    accepts)
        nginx_accepts
        ;;
    handled)
        nginx_handled
        ;;
    requests)
        nginx_requests
        ;;
    *)
        echo $"USAGE:$0 {check|active|reading|writing|waiting|accepts|handled|requests}"
esac
chmod +x zabbix_nginx.sh

 4.客户端 在子配置文件夹中编写自定义模版

cd /etc/zabbix/zabbix_agent2.d/

vim nginx_status.conf
    # UserParameter=键值,脚本
    UserParameter=nginx_status[*],/etc/zabbix/zabbix_nginx.sh $1
    # [*] 用于传参    $1 对应[*]中的数值
systemctl restart zabbix-agent2
服务器端验证 
zabbix_get -s 192.168.80.102 -p 10050 -k nginx.status[check]
             #被监控主机的IP
zabbix_get -s 192.168.80.102 -p 10050 -k nginx.status[active]

5.添加自定义监控项模板

 ​​​创建模板

  1. 点击左边菜单栏【配置】中的【模板】,点击【创建模板】
    1. 【模板名称】设置成 Template NGINX Status
    2. 【可见的名称】设置成 Template NGINX Status
    3. 【群组】选择 Template
    4. 【描述】可自定义
    5. 点击 【添加】
  2. 此时就可在【名称】中输入 NGINX,点击应用,即可搜索到相应模板了

创建 2 个监控项

  1. 点击上方菜单栏【监控项】,点击【创建监控项】
    1. 【名称】设置成 number of nginx process ;number of active connections(NGINX进程存活情况与NGINX连接数)
    2. 【键值】设置成 nginx.status[check] ;nginx.status[active]
    3. 【更新间隔】设置成 10s
  2. 点击 【添加】(添加完成后可以再次进入,进行测试 端口10050)

创建触发器(nginx服务down了执行报警;超过10000个并发连接就执行报警)

  1. 点击上方菜单栏【触发器】,点击【创建触发器】,创建两个触发器
    1. 【名称】设置成 Nginx down on {HOST.NAME} 与 Too much active connections(NGINX服务器掉线,并发量过多)
    2. 【严重性】设置成 严重
    3. 【表达式】分别添加
      1. Nginx down on {HOST.NAME} 监控项】点击选择 number of nginx process ,【功能】选择 last(),【结果】选择 = 0,点击 【插入】
      2. Too much active connections 监控项】点击选择 number of active connections ,【功能】选择 last(),【结果】选择 > 10000,点击 【插入】
  2. 点击 【添加】

创建图形

  1. 点击上方菜单栏【图形】,点击【创建图形】
    1. 【名称】设置成 number of active connections 
    2. 【宽】、【高】可直接采用默认值
    3. 【监控项】点击添加勾选相关监控项 number of active connections ,【功能】选择 平均,其它可保持默认值
  2. 点击 【添加】

将主机与模板关联起来(一个主机可以关联多个模板)

  1. 点击左边菜单栏【配置】中的【主机】,点击你要关联的主机
  2. 点击上方菜单栏【模板】,【Link new tamplates】搜索 NGINX,选择 Template NGINX Status,点击【更新】
  3. 此时就点击【监测】中的【主机】,点击你关联主机的【图形】,即可查看到相关的监控项指标

添加邮箱报警(别忘了修改用户设置里的报警方式)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值