跳到主要内容

2 篇博文 含有标签「NGINX」

查看所有标签

APO v1.1.0 更新:大模型根因分析支持深入分析;优化数据筛选功能;内置 NGINX 日志分析看板

· 阅读需 4 分钟

cover 图

APO 新版本 v1.1.0 更新发布!本次更新主要包含以下内容:

大模型根因分析支持对节点深入分析(企业版)

本次更新允许用户在大模型推理结束后,针对疑似故障根因节点作进一步深入分析,例如检查应用的RED指标、北极星指标、错误链路或错误日志等,在同一个页面闭环完成故障根因分析。

1 图

优化数据筛选功能

在此前版本中,查看“服务概览”或“故障现场”数据时,用户只能手动输入“服务名”或“服务端点”进行筛选,且不支持多选。这在监控服务较多的情况下,极大降低了数据查看的效率。

本次更新优化了筛选体验:

  • 提供了直观的可筛选数据列表
  • 支持通过点击筛选多个数据项
  • 降低了翻页频率,提高了数据查询速度和查看效率

2 图

内置 NGINX 日志分析看板

APO 充分利用 Vector + ClickHouse 实现的日志方案,做到了开箱即用、高效、低成本。利用 APO 的日志功能,不仅可以检索日志内容本身,还可以实现很多有意思的功能。一种使用场景是采集 NGINX 的请求日志,然后通过 Grafana 看板将日志统计为指标进行展示。

3 �图

本次更新将该看板内置在产品中,现在只需要配置三步即可使用。配置文档见“APO文档”-“配置指南”-“配置NGINX请求分析看板”。

4 图

更多变化请查看下文的更新日志。


更新日志

新增功能

  • (企业版)大模型根因分析支持针对疑似故障节点深入分析
  • 内置集成 ClickHouse 数据源和 NGINX 日志请求看板。配置方式请参考“APO官网-APO文档”-“配置指南”-“配置NGINX请求分析看板”
  • OneAgent 支持采集 RabbitMQ 的监控指标,并提供指标展示看板

功能优化

  • 优化筛选功能,展示可筛选列表,支持通过选择筛选项展示数据
  • 故障现场日志自动合并多行日志,降低存储成本
  • 全量日志支持隐藏部分展示字段
  • 全量日志中支持通过选择直方图范围切换查询时间

缺陷修复

  • 修复可能无法采集到故障现场日志的问题
  • 修复全量日志无法展示部分日志字段的问题
  • 修复全量日志中配置结构化日志后可能出现无法保存日志的问题
  • 修复配置日志库后,日志库描述可能错误的问题

二维码 图

基于APO四步实现炫酷的NGINX请求分析看板

· 阅读需 5 分钟

Cover 图

APO 充分利用 Vector + ClickHouse 实现的日志方案,做到了开箱即用、高效、低成本。利用 APO 的日志功能,不仅可以检索日志内容本身,还可以实现很多有意思的功能。本次为大家介绍使用 APO 的日志功能实现炫酷的 NGINX 请求分析看板,只需简单几步即可实现!

先上效果图:

  • 请求与耗时分析总览

1 图

  • 异常请求分析

2 图

  • URI请求分析

3 图

  • 请求日志明细

4 图


配置步骤

第一步 修改NGINX日志格式

打开 NGINX 配置文件(一般在/etc/nginx/nginx.conf路径下),按照下面的示例修改log_format部分,该部分要完全一样:

http {
include /etc/nginx/mime.types;
default_type application/octet-stream;

log_format main '{"@timestamp":"$time_iso8601",'
'"client_ip":"$remote_addr",'
'"server_ip":"$server_addr",'
'"domain":"$server_name",'
'"request_method":"$request_method",'
'"path":"$uri",'
'"top_path":"$uri",'
'"query":"$args",'
'"request_length":$request_length,'
'"responsetime":$request_time,'
'"response_length":$body_bytes_sent,'
'"referer":"$http_referer",'
'"http_user_agent":"$http_user_agent",'
'"status":$status,'
'"upstreamhost":"$upstream_addr",'
'"upstreamtime":"$upstream_response_time"'
'}';
access_log /var/log/nginx/access.log main;

sendfile on;
#tcp_nopush on;

keepalive_timeout 65;

#gzip on;

include /etc/nginx/conf.d/*.conf;
}

修改完成后,重启NGINX或者执行命令nginx -s reload使配置生效。

第二步 采集NGINX日志

在安装 apo-one-agent 的 Kubernetes 集群中,编辑名为apo-ilogtail-user-config的ConfigMap,添加采集NGINX日志的配置,注意修改其中LogPath为 NGINX 日志的路径,下面是示例:

data:
pod_stdout_all.yaml: |
...
pod_stdout_file.yaml: |
...
# 以下为新增配置内容
pod_log_file.yaml: |
enable: true
inputs:
- Type: file_log
LogPath: /var/log/nginx/
FilePattern: "*.log"
ContainerFile: true
processors:
- Type: processor_wait_for_signal
DisableSignalSampler: true
ContentsRename:
"__tag__:_container_id_": "_container_id_"
"__tag__:__path__": "_source_"
flushers:
- Type: flusher_http
RemoteURL: http://apo-vector-svc:4310

第三步 在 APO 平台上配置日志库

打开 APO 平台的全量日志页面,在“日志库”部分点击 +,添加新的日志库:

5 图

在弹出的配置页面中,按照以下步骤进行配置:

  1. “日志库名”填写nginx_access_log
  2. 在“匹配规则”中配置能够匹配到NGINX日志的规则,例如通过 _source_=/var/log/nginx/access.log 进行匹配
  3. “日志格式配置”中选择“结构化日志”,并在文本框中输入以下内容:
{
"@timestamp": "2024-12-06T06:44:17+00:00",
"client_ip": "10.244.0.46",
"client_region": "",
"client_city": "",
"client_latitude": 0.1,
"client_longitude": 0.1,
"server_ip": "10.244.167.148",
"domain": "localhost",
"request_method": "GET",
"path": "/grafana/api/live/ws",
"top_path": "/grafana/api/live/ws",
"query": "-",
"request_length": 1259,
"responsetime": 0.010,
"response_length": 10,
"referer": "-",
"http_user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",
"status": 403,
"upstreamhost": "10.96.2.121:80",
"upstreamtime": 0.009
}
  1. 最后点击“保存”。

第四步 导入NGINX看板并查看数据

打开 APO 平台的“中间件大盘”,在右侧点击“新建”->“导入”:

6 图

在导入页面,输入仪表板ID“22037”,点击加载:

7 图

然后在页面中选择数据源为“ClickHouse”(如果没有该数据源需要手动配置),点击“Import”即可导入成功。在该看板的“项目”筛选框中手动输入

apo.logs_nginx_access_log

(与配置日志库时的日志库名称保持一致):

8 图

到这里就完成了所有步骤,尽情享受炫酷的NGINX请求分析看板吧!


鸣谢

文中使用的 Nginx 日志分析看板StarsL 设计并发布在 Grafana 中,感谢大佬的分享。文中给出的方案简化了配置流程,因此看板中部分数据可能存在缺失,您可以检查看板中的查询条件,根据需求调整 NGINX 日志格式解锁完整看板。


APO介绍:

国内开源首个 OpenTelemetry 结合 eBPF 的向导式可观测性产品

apo.kindlingx.com

https://github.com/CloudDetail/apo