详解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 工作原理,帮助大家更好的理解和学习nginx,感兴趣的朋友可以了解下
    2020-10-10
  • 详解nginx中location、rewrite用法总结

    详解nginx中location、rewrite用法总结

    这篇文章主要介绍了详解nginx中location、rewrite用法总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Nginx下支持Thinkphp URL Rewrite的配置示例

    Nginx下支持Thinkphp URL Rewrite的配置示例

    这篇文章主要介绍了Nginx下支持Thinkphp URL Rewrite的配置示例,本文直接给出配置示例,需要的朋友可以参考下
    2015-07-07
  • 基于Nginx实现访问控制、连接限制

    基于Nginx实现访问控制、连接限制

    Nginx自带的模块支持对并发请求数进行限制, 还有对请求来源进行限制。可以用来防止DDOS攻击。这篇文章主要介绍了基于Nginx实现访问控制、连接限制的相关资料,需要的朋友可以参考下
    2019-11-11
  • Nginx超时时间的配置说明

    Nginx超时时间的配置说明

    Nginx超时时间非常重要,因为它将直接影响网站的响应速度和用户体验,本文主要介绍了Nginx超时时间的配置说明,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • nginx中alias和root的区别详解

    nginx中alias和root的区别详解

    本文详细讲解了Nginx配置中root和alias的区别与使用场景,root会将请求路径拼接到指定目录后,而alias会替换location匹配的前缀路径,下面就来详细的介绍一下两者的区别,感兴趣的可以了解一下
    2026-01-01
  • Nginx权限控制文件的预览和下载方式

    Nginx权限控制文件的预览和下载方式

    这篇文章主要介绍了Nginx权限控制文件的预览和下载方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Nginx生成缩略图并存储到硬盘上

    Nginx生成缩略图并存储到硬盘上

    这篇文章主要介绍了Nginx生成缩略图并存储到硬盘上的相关资料,需要的朋友可以参考下
    2016-03-03
  • Linux部署Nginx详细图文教程

    Linux部署Nginx详细图文教程

    这篇文章主要给大家介绍了关于Linux部署Nginx的相关资料,Nginx 是一个高性能的HTTP和反向代理web服务器,Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,需要的朋友可以参考下
    2024-01-01
  • Nginx添加ngx-fancyindex模块的方法

    Nginx添加ngx-fancyindex模块的方法

    这篇文章主要介绍了Nginx添加ngx-fancyindex模块的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06

最新评论