详解Prometheus 抓取 nginx 访问日志的指标

 更新时间:2024年10月22日 11:35:06   作者:狗贤  
通过结合NGINX Exporter, Fluentd, Prometheus和Grafana, 可有效监控并可视化NGINX中的4xx和5xx状态码日志,首先使用Fluentd收集和解析NGINX日志,再通过Prometheus抓取Fluentd暴露的指标,本文介绍Prometheus抓取nginx访问日志的指标,感兴趣的朋友一起看看吧

要通过 Prometheus 的 NGINX Exporter 来抓取 NGINX 中的日志信息,例如状态码为 4xx 或 5xx 的日志,需要结合以下几种工具和方法:

1. NGINX Exporter 基础功能

NGINX Exporter 是一个 Prometheus Exporter,用于从 NGINX 的 /status 端点收集指标数据,但它本身并不直接处理日志文件。因此,若要监控 NGINX 中状态码为 4xx 或 5xx 的日志信息,需要额外的步骤。

2. 使用 logstash 或 fluentd 收集 NGINX 日志

为了从 NGINX 的日志文件中提取特定信息,并将其转换为 Prometheus 能够抓取的指标,我们可以使用 logstashfluentd 等日志收集工具。

使用 fluentd 示例 安装 Fluentd 和 Prometheus 插件首先,需要安装 Fluentd 和相关的插件,确保 Fluentd 可以从日志中提取数据并以 Prometheus 格式暴露出来:

gem install fluentd
gem install fluent-plugin-prometheus

配置 Fluentd配置 Fluentd,解析 NGINX 日志并生成 Prometheus 格式的指标。创建一个 Fluentd 配置文件 fluent.conf,内容如下:

<source>
  @type tail
  path /var/log/nginx/access.log
  pos_file /var/log/td-agent/nginx-access.log.pos
  tag nginx.access
  <parse>
    @type nginx
  </parse>
</source>
<filter nginx.access>
  @type grep
  <regexp>
    key status
    pattern ^4|5[0-9][0-9]$
  </regexp>
</filter>
<match nginx.access>
  @type prometheus
  <metric>
    name nginx_http_status_total
    type counter
    desc Nginx HTTP status code counter
    keys status
    <labels>
      status ${status}
    </labels>
  </metric>
  <metric>
    name nginx_http_request_bytes_total
    type counter
    desc Total bytes received by the Nginx server
    key bytes
  </metric>
</match>
<source>
  @type prometheus_monitor
  <labels>
    tag nginx.access
  </labels>
</source>
<source>
  @type prometheus_output_monitor
  <labels>
    tag nginx.access
  </labels>
</source>
<match **>
  @type stdout
</match>
- **Source**:读取 `/var/log/nginx/access.log` 文件,并解析日志。
- **Filter**:通过正则表达式过滤状态码为 4xx 或 5xx 的日志。
- **Match**:将解析后的日志信息转化为 Prometheus 格式的指标。
- **Prometheus 输出**:启动一个 HTTP 端点,供 Prometheus 抓取这些指标。

启动 Fluentd运行 Fluentd,应用配置文件:

fluentd -c /path/to/fluent.conf

Fluentd 会启动一个监听端口,默认是 http://localhost:24231/metrics,以 Prometheus 格式暴露解析后的日志数据。

3. 配置 Prometheus 抓取 Fluentd 暴露的指标

在 Prometheus 的配置文件 prometheus.yml 中,添加 Fluentd 作为新的抓取目标:

scrape_configs:
  - job_name: 'nginx_logs'
    static_configs:
      - targets: ['localhost:24231']

4. 使用 Grafana 可视化

现在 Prometheus 已经可以抓取 NGINX 的 4xx 和 5xx 状态码日志信息,您可以在 Grafana 中创建仪表盘,展示这些信息的时间变化趋势,分析 NGINX 服务的健康状况。

总结

虽然 NGINX Exporter 本身无法直接抓取日志信息,但是结合 Fluentd 等日志收集工具,您可以轻松地将 NGINX 日志中的特定信息(如 4xx 和 5xx 状态码)转化为 Prometheus 可抓取的指标,并最终在 Grafana 中进行可视化。

到此这篇关于Prometheus 抓取 nginx 访问日志的指标的文章就介绍到这了,更多相关Prometheus nginx指标内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • nginx配置相关介绍

    nginx配置相关介绍

    本文为大家介绍一下nginx配置的相关介绍,供大家参考
    2013-02-02
  • nginx限流方案的实现(三种方式)

    nginx限流方案的实现(三种方式)

    一般对外暴露的系统,在促销或者黑客攻击时会涌来大量的请求,为了保护系统不被瞬间到来的高并发流量给打垮, 就需要限流,这篇文章主要介绍了nginx限流方案的实现,非常具有实用价值,需要的朋友可以参考下
    2018-05-05
  • nginx反向代理文件下载失败问题及解决

    nginx反向代理文件下载失败问题及解决

    这篇文章主要介绍了nginx反向代理文件下载失败问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Nginx日志分割实战

    Nginx日志分割实战

    Nginx默认没有提供对日志文件的分割功能,本文主要介绍了Nginx日志分割实战,分割Nginx日志的方法有很多,这里推荐利用Logrotate来完成,感兴趣的可以了解一下
    2024-03-03
  • Nginx error_page自定义错误页面设置过程

    Nginx error_page自定义错误页面设置过程

    这篇文章主要介绍了Nginx error_page自定义错误页面设置过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • nginx反向代理导致session失效的问题解决

    nginx反向代理导致session失效的问题解决

    这篇文章主要介绍了nginx反向代理导致session失效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • Nginx中roxy_set_header与add_header区别举例浅析

    Nginx中roxy_set_header与add_header区别举例浅析

    proxy_set_header是一个 Nginx 配置指令,用于设置将要转发到后端服务器的 HTTP 请求头,这篇文章主要给大家介绍了关于Nginx中roxy_set_header与add_header区别的相关资料,需要的朋友可以参考下
    2024-04-04
  • nginx日志模块及日志定时切割的方法

    nginx日志模块及日志定时切割的方法

    本篇文章主要介绍了nginx日志模块及日志定时切割的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • 通过Nginx解决网络隔离实践记录详解

    通过Nginx解决网络隔离实践记录详解

    这篇文章主要介绍了通过Nginx解决网络隔离实践记录详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Waiting for server respnse耗时过长原因排查及解决

    Waiting for server respnse耗时过长原因排查及解决

    这篇文章主要给大家介绍了关于Waiting for server respnse耗时过长原因排查及解决的相关资料,文中将解决的办法介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2023-05-05

最新评论