你是否曾面对服务器上堆积如山的 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
立刻看到各状态码的访问量分布!

二、方案全景:采集 → 存储 → 归档 → 可视化
我们采用 阿里云日志服务 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 集群,按量付费,内网传输免流量费,适合中小团队快速落地。

三、实操四步走(附关键配置)
第一步:准备 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,或自定义正则(见下文)

第四步:配置 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 插件:
- 下载 aliyun-log-grafana-datasource-plugin
- 解压至 Grafana plugins 目录
- 修改 grafana.ini 启用插件
- 在 Grafana 中添加 SLS 数据源,填写 AccessKey、Project、Logstore
- 使用 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 免费额度,小流量网站可免费使用。
✅ 总结:操作清单
- 修改 Nginx 日志为 JSON 格式
- 在 SLS 创建 Project/Logstore
- 安装 Logtail 并配置采集
- (可选)配置 OSS 投递任务
- 在 SLS 查询分析,保存为仪表盘
- (可选)对接 Quick BI / Grafana
结尾
通过阿里云 SLS + OSS 的组合,我们不仅实现了 Nginx 日志的自动化采集、低成本存储、高性能查询,还让数据“活”了起来——一张图表胜过千行日志。
目前就行动:
登录阿里云控制台,开通日志服务(新用户享免费额度)
按本文步骤部署,30 分钟内看到你的第一个 Nginx 仪表盘!
互动时间:
你在日志分析中遇到过哪些痛点?是否尝试过 ELK?欢迎在评论区分享你的经验,或提出你想实现的分析场景,我们将为你定制解决方案!
小贴士:体验结束后记得删除 Project 和 OSS 文件,避免产生费用哦!
关键词覆盖:Nginx 日志、阿里云OSS、可视化图表、日志分析、数据可视化、SLS、LoongCollector、Grafana、SQL 查询、日志归档





本地服务器可以使用吗?
ng要要装插件吗?
不用,通过logtail进行日志采集
收藏了,感谢分享
感谢分享👏