Nginx-exporter+Prometheus+Grafana

prometheus监控nginx指标

下载及解压所以文件

prometheus 下载地址:https://prometheus.io/download/

nginx-exporter 下载地址:https://github.com/nginxinc/nginx-prometheus-exporter/releases

alertmanager 下载地址:https://prometheus.io/download/

grafana 下载地址:https://grafana.com/grafana/download?edition=oss

编辑prometheus配置文件

vim prometheus.yml

alerting:
  alertmanagers:
    - static_configs:
        - targets:
          - 192.168.223.146:9093  # 默认是注释的,改成grafana地址用于告警

rule_files:
  - "rules/*.yml"   # 创建统一告警文件
  # - "second_rules.yml"

#添加 (注意格式,targets 就算是本机也要写ip,不然访问指标/metrics 502报错)
- job_name: 'nginx_status_module' # 采集nginx的指标,名称可以自定义。
  scrape_interval: 10s # 采集指标的间隔周期,默认是15秒可以按需求改。
  static_configs:
    - targets: ['192.168.223.146:9113'] # nginx-prometheus-exporter #服务的ip和端口 

- job_name: "alertmanager"
    static_configs:
      - targets: ["192.168.223.146:9093"]

启动prometheus

nohub ./prometheus --config.file=prometheus.yml &  #--config.file指定配置文件

访问localhost:9090

效果图

安装nginx

查看nginx是否有nginx_stub_status
开源nginx提供了一个简单页面用于展示状态数据,该页面由tub_status模块提供,如果已在本地服务安装nginx,进入nginx/sbin目录下执行

./nginx -V 2>&1 | grep -o with-http_stub_status_module  # 二进制安装执行命令
docker:docker exec nginx nginx -V 2>&1 | grep -o with-http_stub_status_module  # docker安装执行命令

如果在终端输出with-http_stub_status_module,说明nginx已启用tub_status模块
确认stub_status模块启动之后,修改nginx配置文件新增一个server服务单独给prometheus访问

server {
    listen   8080;  
    #端口可以自己重新起一个
    location /nginx_status {
        stub_status on;
        access_log off;
        allow 127.0.0.1; #白名单
        deny all; #指定白名单除外无法访问
    }
}

启动 nginx-exporter

nohup ./nginx-prometheus-exporter -nginx.scrape-uri http://192.168.223.146:8080/nginx_status &

配置 alertmanager

vim alertmanager.yml

global:
  resolve_timeout: 5m  #当告警的状态由firing变为resolve时,需等待5min,如果报警未更新,则声明该告警已解决。可略微调高阈值避免重复告警。
  smtp_smarthost: 'smtp.qq.com:465'
  smtp_from: '330****45@qq.com'
  smtp_auth_username: '330****45@qq.com'
  smtp_auth_password: 'drujbwlhzckcchhi' # 这个密码需要生成,非QQ密码
  smtp_require_tls: false
templates:
  - '/data/alertmanager-0.25.0.linux-amd64/email.tmpl'
route:
  group_by: ['service','alertname','cluster']  ##根据label进行分组。--cluster可创建集群
  group_wait: 30s ##触发告警后,等待30s发送
  group_interval: 5m ##时间间隔
  repeat_interval: 1h ##重复发送
  receiver: 'email'
receivers:   ###告警的处理方式email
  - name: 'email'
    email_configs:  ##告警转发到对应邮箱地址
      - to: '71*****51@qq.com'
        html: '{{ template "email.to.html" . }}'
        send_resolved: true
inhibit_rules:  ###添加抑制规则
  - source_match:  ####根据label匹配源告警
      severity: 'critical'
    target_match:    ####根据label匹配目的告警
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']
创建邮件模板文件

vim email.tmpl

{{ define "email.to.html" }}
{{ if gt (len .Alerts.Firing) 0 }}{{ range .Alerts }}
@告警: <br>
告警程序: prometheus_alert <br>
告警级别: {{ .Labels.severity }}<br>
告警类型: {{ .Labels.alertname }} <br>
故障主机: {{ .Labels.instance }} <br>
告警主题: {{ .Annotations.summary }} <br>
告警详情: {{ .Annotations.description }} <br>
触发时间: {{ .StartsAt }} <br>
{{ end }}
{{ end }}
{{ if gt (len .Alerts.Resolved) 0 }}{{ range .Alerts }}
@恢复: <br>
告警主机: {{ .Labels.instance }} <br>
告警主题: {{ .Annotations.summary }} <br>
恢复时间: {{ .EndsAt }} <br>
{{ end }}
{{ end }}
{{ end }}
启动 alertmanager
nohub ./alertmanager --config.file=alertmanager.yml &

访问:http://192.168.223.146:9093/

prometheus 创建rules文件

vim nginx_export-alert-rules.yml

groups:
- name: nginx状态-监控告警
  rules:
  - alert: nginx状态
    expr: nginx_up == 0
    for: 1s
    labels:
      serverity: warning
      status: 非常严重
    annotations:
      summary: "{{$labels.instance}}:nginx服务停止"
      description: "nginx服务down"

重启prometheus

测试停止nginx查看告警

启动grafana

nohub ./grafana-server &

访问:http://localhost:3000 ,添加数据源。
grafana效果图
nginx-exporter图形码(grafana):12708
在这里插入图片描述
在这里插入图片描述

nginx监控指标说明

  • nginx_connections_active nginx连接活动数
  • nginx_connections_handled nginx已处理的连接
  • nginx_connections_reading nginx连接_读取
  • nginx_connections_waiting nginx连接_等待
  • nginx_connections_writing nginx连接_写入
  • nginx_http_requests_total nginx请求总数
  • nginx_up nginx存活状态1正常 0异常
  • nginxexporter_build_info nginxexporter状态1正常 0异常
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值