温馨提示×

ubuntu nginx如何监控与报警

小樊
44
2025-11-29 08:23:43
栏目: 智能运维

在Ubuntu上使用Nginx进行监控和报警,可以通过以下几种方法实现:

1. 使用Nginx自带的模块

Nginx有一些内置的模块可以帮助你监控服务器的性能指标。

a. ngx_http_stub_status_module

这个模块可以提供Nginx的状态信息,包括活动连接数、处理的请求数等。

步骤:

  1. 编辑Nginx配置文件(通常是/etc/nginx/nginx.conf),添加以下内容:

    server {
        listen 80;
        server_name localhost;
    
        location /nginx_status {
            stub_status on;
            access_log off;
            allow 127.0.0.1;  # 只允许本地访问
            deny all;
        }
    }
    
  2. 重新加载Nginx配置:

    sudo nginx -s reload
    
  3. 访问http://your_server_ip/nginx_status查看状态信息。

2. 使用第三方监控工具

a. Prometheus + Grafana

Prometheus是一个开源的监控系统和时间序列数据库,Grafana是一个开源的分析和监控平台。

步骤:

  1. 安装Prometheus和Grafana:

    sudo apt update
    sudo apt install prometheus grafana
    
  2. 配置Prometheus抓取Nginx的状态信息。编辑Prometheus配置文件(通常是/etc/prometheus/prometheus.yml),添加以下内容:

    scrape_configs:
      - job_name: 'nginx'
        static_configs:
          - targets: ['localhost:9113']
    
  3. 启动Prometheus和Grafana服务:

    sudo systemctl start prometheus
    sudo systemctl start grafana-server
    
  4. 在Grafana中添加Prometheus数据源,并创建仪表盘来展示Nginx的性能指标。

b. Zabbix

Zabbix是一个企业级的开源监控解决方案。

步骤:

  1. 安装Zabbix服务器和代理:

    sudo apt update
    sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-agent
    
  2. 配置Zabbix代理以监控Nginx。编辑Zabbix代理配置文件(通常是/etc/zabbix/zabbix_agentd.conf),添加以下内容:

    UserParameter=nginx.status[*],/usr/lib/zabbix/externalscripts/nginx_status.sh $1
    
  3. 创建一个脚本来获取Nginx状态信息(例如/usr/lib/zabbix/externalscripts/nginx_status.sh):

    #!/bin/bash
    case "$1" in
        active)
            nginx -s status | grep "Active connections" | awk '{print $4}'
            ;;
        accepted)
            nginx -s status | grep "Accepted connections" | awk '{print $4}'
            ;;
        handled)
            nginx -s status | grep "Handled requests" | awk '{print $4}'
            ;;
        requests)
            nginx -s status | grep "Requests" | awk '{print $2}'
            ;;
        *)
            echo "Usage: $0 {active|accepted|handled|requests}"
            exit 1
            ;;
    esac
    
  4. 赋予脚本执行权限:

    sudo chmod +x /usr/lib/zabbix/externalscripts/nginx_status.sh
    
  5. 在Zabbix前端配置监控项和触发器,并设置报警规则。

3. 使用ELK Stack

ELK Stack(Elasticsearch, Logstash, Kibana)是一个流行的日志管理和分析平台。

步骤:

  1. 安装Elasticsearch、Logstash和Kibana:

    sudo apt update
    sudo apt install elasticsearch logstash kibana
    
  2. 配置Logstash以收集Nginx日志。编辑Logstash配置文件(通常是/etc/logstash/conf.d/nginx.conf),添加以下内容:

    input {
        file {
            path => "/var/log/nginx/access.log"
            start_position => "beginning"
        }
    }
    
    output {
        elasticsearch {
            hosts => ["localhost:9200"]
            index => "nginx-access-%{+YYYY.MM.dd}"
        }
    }
    
  3. 启动Logstash服务:

    sudo systemctl start logstash
    
  4. 在Kibana中配置索引模式,并创建仪表盘来展示Nginx日志数据。

报警设置

无论使用哪种监控工具,都可以设置报警规则。例如,在Prometheus + Grafana中,可以在Grafana中创建报警规则,并通过邮件、Slack等方式发送报警通知。

通过以上方法,你可以在Ubuntu上实现对Nginx的全面监控和报警。

0