30分钟搞定!Nginx日志自动采集 + 阿里云OSS归档 + 实时可视化图表

你是否曾面对服务器上堆积如山的 Nginx 日志文件,却不知如何快速找出“哪些用户频繁访问?”、“昨天有多少404错误?”、“流量高峰出目前几点?”?
别再手动 grep、awk、写脚本了!今天,我们将手把手教你:
✅ 自动采集 Nginx 访问日志
✅ 将历史日志归档至阿里云 OSS 节省成本
✅ 用 SQL 实时查询分析
✅ 一键生成可视化仪表盘(含 PV/UV、状态码分布、IP 热力图等)
全程基于阿里云日志服务(SLS),无需自建 ELK,30 分钟即可上线!

Nginx 日志与阿里云 OSS 结合,并形成可视化图表,是典型的日志采集 → 存储 → 分析 → 可视化链路。阿里云提供了完整的托管服务来实现这一目标,无需自建 ELK

以下是基于 阿里云 SLS(日志服务) + OSS + Quick BI / Grafana 的标准方案,适用于 ECS 上的 Nginx 或 ACK Ingress Controller 的 Nginx 日志。

目标架构

Nginx (ECS/ACK) 
    → 日志采集 → 阿里云 SLS 
    → 自动投递 → OSS(长期存储/备份)
    → 实时分析 → SLS 内置仪表盘 / Quick BI / Grafana

✅ 优势:全托管、高可靠、支持 PB 级日志、秒级查询、自动图表生成。

一、为什么要把 Nginx 日志“结构化”?

Nginx 默认的日志格式是一行文本,例如:

192.168.1.100 - - [10/Jul/2023:12:34:56 +0800] "GET /api/user HTTP/1.1" 200 1024 "https://example.com" "Mozilla/5.0"

虽然信息丰富,但它是“非结构化”的——无法直接用于统计、筛选或画图。

可视化工具的核心价值,就是把这堆文本变成字段清晰的结构化数据

  • client_ip: 192.168.1.100
  • time: 2023-07-10 12:34:56
  • method: GET
  • uri: /api/user
  • status: 200
  • user_agent: Mozilla/5.0

一旦结构化,你就能用一句 SQL 得到答案:

* | SELECT status, count(*) AS PV GROUP BY status ORDER BY PV DESC

立刻看到各状态码的访问量分布!

30分钟搞定!Nginx日志自动采集 + 阿里云OSS归档 + 实时可视化图表

二、方案全景:采集 → 存储 → 归档 → 可视化

我们采用 阿里云日志服务 SLS + LoongCollector + OSS + Grafana/SLS 仪表盘 的轻量级组合:

步骤

组件

作用

1. 采集

LoongCollector(原 Logtail)

自动监听 /var/log/nginx/access.log,实时上传

2. 存储

SLS Logstore

结构化解析、索引、支持 SQL 查询

3. 归档

阿里云 OSS

将 7 天前的历史日志自动转存至 OSS,节省 80% 存储成本

4. 可视化

SLS 仪表盘 或 Grafana

图表展示 PV/UV、TOP 访问路径、错误率趋势等

优势:无需维护 Elasticsearch 集群,按量付费,内网传输免流量费,适合中小团队快速落地。

30分钟搞定!Nginx日志自动采集 + 阿里云OSS归档 + 实时可视化图表

三、实操四步走(附关键配置)

第一步:准备 ECS 与日志

在 nginx.conf 中设置结构化日志(推荐):

log_format main_json escape=json '{'
  '"time":"$time_iso8601",'
  '"remote_addr":"$remote_addr",'
  '"request":"$request",'
  '"status":$status,'
  '"body_bytes_sent":$body_bytes_sent,'
  '"http_referer":"$http_referer",'
  '"http_user_agent":"$http_user_agent",'
  '"request_time":$request_time'
'}';

access_log /var/log/nginx/access.log main_json;

使用 JSON 格式可被 SLS 自动解析为字段,无需写正则。

第二步:创建 SLS Project 与 Logstore

  • 登录 阿里云日志服务控制台
  • 创建 Project(地域与 ECS 一致,走内网)
  • 创建 Logstore,如 nginx-access-log

第三步:安装 Logtail 采集器(ECS 场景)

  • 在目标 ECS 上安装 Logtail(阿里云日志采集 Agent):
  • bash
  • 编辑
  • # 一键安装(替换 your-region) wget http://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/linux64/logtail.sh -O logtail.sh sudo bash logtail.sh install cn-hangzhou
  • 在 SLS 控制台创建 采集配置:日志路径:/var/log/nginx/access.log日志格式:选择 Nginx,或自定义正则(见下文)

30分钟搞定!Nginx日志自动采集 + 阿里云OSS归档 + 实时可视化图表

第四步:配置 OSS 归档(可选但推荐)

进入 Logstore 设置 → 生命周期管理 → 添加归档策略:

  • 热数据保留 7 天(SLS 存储)
  • 冷数据自动转存至指定 OSS Bucket(按量计费,约 ¥0.12/GB/月)
  • 归档后仍可通过 SLS 查询历史数据,无缝衔接!

四、SQL 查询 + 可视化图表实战

在 SLS 查询页面输入以下语句,立即生成图表:

1.PV/UV 趋势(每5分钟)

* | SELECT date_trunc('minute', __time__, 5) as time, count(1) as PV, approx_distinct(client_ip) as UV GROUP BY time ORDER BY time

2.TOP 10 访问路径

* | SELECT uri, count(1) as PV GROUP BY uri ORDER BY PV DESC LIMIT 10

3.4xx/5xx 错误率监控

* | SELECT 
    count_if(status >= 400 and status < 600) * 1.0 / count(1) as error_rate,
    count(1) as total

4.关联 OSS 用户属性(高级用法)

若你有 user.csv(含 user_id, age, city)存于 OSS,可用 JOIN 分析:

* | SELECT u.city, count(1) as pv 
FROM log l 
JOIN oss://your-bucket/user.csv u ON l.user_id = u.user_id
GROUP BY u.city

所有结果均可点击「添加到仪表盘」,拖拽生成折线图、柱状图、地图等。

五、进阶:对接 Grafana(适合已有 Grafana 用户)

阿里云提供官方 Grafana 插件:

  1. 下载 aliyun-log-grafana-datasource-plugin
  2. 解压至 Grafana plugins 目录
  3. 修改 grafana.ini 启用插件
  4. 在 Grafana 中添加 SLS 数据源,填写 AccessKey、Project、Logstore
  5. 使用 PromQL 风格语法查询日志指标

适合将 Nginx 日志与业务监控(如 Prometheus)统一展示。

最终效果示例(SLS 仪表盘)

图表类型

内容

折线图

过去 24 小时 PV/UV 趋势

饼图

HTTP 状态码分布(200/404/500)

柱状图

TOP 10 访问 IP

地图

用户地理分布(需解析 remote_addr)

表格

实时错误日志(status >= 500)

成本估算(以 10GB/天 日志为例)

表格

服务

费用(约)

SLS 写入 + 查询

¥30~50 / 月

OSS 存储(低频)

¥2~5 / 月

Quick BI(基础版)

免费

SLS 提供每月 500MB 免费额度,小流量网站可免费使用。

✅ 总结:操作清单

  1. 修改 Nginx 日志为 JSON 格式
  2. 在 SLS 创建 Project/Logstore
  3. 安装 Logtail 并配置采集
  4. (可选)配置 OSS 投递任务
  5. 在 SLS 查询分析,保存为仪表盘
  6. (可选)对接 Quick BI / Grafana

结尾

通过阿里云 SLS + OSS 的组合,我们不仅实现了 Nginx 日志的自动化采集、低成本存储、高性能查询,还让数据“活”了起来——一张图表胜过千行日志。

目前就行动
登录阿里云控制台,开通日志服务(新用户享免费额度)
按本文步骤部署,30 分钟内看到你的第一个 Nginx 仪表盘!

互动时间
你在日志分析中遇到过哪些痛点?是否尝试过 ELK?欢迎在评论区分享你的经验,或提出你想实现的分析场景,我们将为你定制解决方案!

小贴士:体验结束后记得删除 Project 和 OSS 文件,避免产生费用哦!

关键词覆盖:Nginx 日志、阿里云OSS、可视化图表、日志分析、数据可视化、SLS、LoongCollector、Grafana、SQL 查询、日志归档

© 版权声明

相关文章

5 条评论

  • 头像
    KiYose清濑isyour 读者

    本地服务器可以使用吗?

    无记录
    回复
  • 头像
    二次元时光机 投稿者

    ng要要装插件吗?

    无记录
    回复
  • 头像
    詹尼佛 读者

    不用,通过logtail进行日志采集

    无记录
    回复
  • 头像
    出售微信号号多多 读者

    收藏了,感谢分享

    无记录
    回复
  • 头像
    读者

    感谢分享👏

    无记录
    回复