阿里云国际版日志服务SLS实战教程:从日志采集到智能告警全攻略

📅 · 阿里云国际版实战教程 - ChengziCloud

一句话结论

Meta Description: 阿里云国际版日志服务SLS怎么用?

本文要点
  • 前言
  • SLS核心概念:Project、Logstore、日志采集
  • 控制台创建Project和Logstore
  • 配置日志采集规则
  • 日志查询与分析
  • 日志告警设置
  • 日志投递与长期存储
  • 价格对比与省钱攻略

Meta Description: 阿里云国际版日志服务SLS怎么用?本文手把手教你创建Project/Logstore、配置ECS日志采集、SQL查询分析、仪表盘可视化、告警规则设置,附价格对比表、避坑指南与FAQ。

关键词:阿里云国际版日志服务SLS、日志采集分析、Log Service、日志告警、ECS日志、SQL查询、仪表盘、日志投递

一、前言

你的阿里云国际版ECS服务器跑着Nginx、MySQL、应用服务,但日志散落在各个/var/log/目录下——出了问题要一条条翻日志,出了安全事件要一个台机器一台机器查,月底出了流量异常根本没发现。日志服务SLS(Simple Log Service)就是阿里云的"日志中台",把所有日志集中采集、存储、查询、分析和告警。 本文从零开始,手把手教你配置阿里云国际版SLS,覆盖Project创建、Logstore配置、ECS日志采集、SQL查询分析、仪表盘搭建、告警规则设置,以及与云监控、函数计算的联动。

📝 小提示:SLS本身提供免费额度(每月500MB写入+500MB查询),个人开发者和小团队基本够用。超出后按量计费,价格非常便宜。

二、SLS核心概念:Project、Logstore、日志采集

在动手之前,先搞清楚SLS的三个核心概念:

概念说明类比
Project(项目)日志服务的顶层组织单位,一个Project对应一个地域的资源集合一个"日志仓库"
Logstore(日志库)Project下的日志存储单元,每种日志类型建一个Logstore仓库里的"文件夹"
日志采集(Logtail)安装在ECS上的Agent,自动采集指定目录的日志文件仓库的"搬运工"

简单理解:你把Nginx日志扔进一个Logstore,MySQL慢查询扔进另一个Logstore,应用日志再扔一个——每个Logstore独立存储、独立查询、独立告警,互不干扰。

2.1 Project和Logstore命名规范


// 命名规则(小写英文+数字+连字符,3-63字符)
Project: myproject-logs
Logstore: nginx-access-log
Logstore: mysql-slow-query
Logstore: app-error-log

📝 小提示:Logstore名称一旦创建不可修改,建议提前规划好命名规则。推荐用服务名-日志类型的格式,如nginx-access、mysql-slow。

三、控制台创建Project和Logstore

3.1 创建Project

  1. 登录阿里云国际版控制台 → 搜索"Simple Log Service"或直接访问https://sls.console.alibabacloud.com
  2. 选择目标地域(如Singapore、USVirginia)→ 点击Create Project
  3. 填写Project名称和描述 → 点击Confirm

3.2 创建Logstore

  1. 在Project详情页 → 点击Create Logstore
  2. 配置参数:
配置项推荐值说明
Logstore Namenginx-access-log日志库名称
Shard Count2(默认)分片数,决定写入并发度,一般2-4个够用
TTL (Day)30日志保留天数,按需调整
Encrypt否普通日志不需要加密
WebTracking否除非要从前端直接投递日志
  1. 点击Confirm → Logstore创建完成

3.3 安装Logtail采集Agent

Logtail是阿里云的日志采集Agent,安装在ECS上,自动采集指定目录的日志文件。

一键安装命令(适用于CentOS 7/8、Ubuntu 16/18/20/22):


// 下载Logtail安装脚本
wget http://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/linux64/logtail.sh

// 执行安装(自动识别系统并安装)
chmod +x logtail.sh && sudo ./logtail.sh install cn-hangzhou

// 验证安装成功
sudo /usr/local/ilogtail/ilogtail --version

⚠️ 注意:安装完成后,Logtail会自动注册到你的SLS控制台。如果ECS是RAM子账号创建的,需要确保该账号有AliyunLogFullAccess权限。

验证Agent状态:


// 检查ilogtail进程是否运行
ps aux | grep ilogtail

// 查看ilogtail日志(排查采集问题)
tail -f /usr/local/ilogtail/logtail_plugin.LOG

如果看到ilogtail running字样,说明Agent已正常运行。

四、配置日志采集规则

4.1 采集Nginx访问日志

  1. SLS控制台 → 选择你的Logstore → Logtail Configuration → Create
  2. 选择采集类型:Nginx Log(或通用Log File)
  3. 配置采集路径:
配置项值说明
Config Namenginx-access采集配置名
Log Path/var/log/nginx/日志目录
File Patternaccess*.log匹配access.log和access.log.1
Log FormatNginx Combined自动解析Nginx标准格式
Logstorenginx-access-log目标Logstore
  1. 点击Apply All → 选择目标ECS实例 → 确认

等待1-2分钟,日志开始流入Logstore。 在Logstore详情页 → Logstores → 选择你的Logstore → Log Preview,应该能看到实时日志数据。

4.2 采集MySQL慢查询日志

MySQL慢查询日志需要开启slow_query_log,然后配置Logtail采集:


// MySQL开启慢查询日志
sudo mysql -e "SET GLOBAL slow_query_log = ON;"
sudo mysql -e "SET GLOBAL long_query_time = 1;"
sudo mysql -e "SET GLOBAL slow_query_log_file = '/var/log/mysql/slow-query.log';"

// 验证慢查询日志已开启
sudo mysql -e "SHOW VARIABLES LIKE 'slow_query%';"

然后在SLS控制台创建对应的Logtail配置,Log Path设为/var/log/mysql/,File Pattern设为slow-query.log。

4.3 采集应用日志(JSON格式)

如果你的应用输出JSON格式的日志,Logtail可以自动解析字段:


// 示例:应用JSON日志格式
// {"timestamp":"2026-09-05T10:30:00Z","level":"ERROR","message":"Connection refused","service":"api-gateway","trace_id":"abc123"}

在Logtail配置中:

  • Log Format选JSON
  • 勾选Extract JSON Fields → 自动识别所有字段
  • 或手动指定字段提取规则(正则表达式)

五、日志查询与分析

5.1 基础查询语法

SLS的查询语法类似Elasticsearch,支持关键词搜索、字段过滤、聚合分析:


// 查看最近5分钟的所有日志
* AND __topic__: ""

// 搜索包含"error"的日志
error

// 按状态码过滤
status: 500

// 按时间范围+关键词组合查询
status: 500 AND request_uri: "/api/v1/users"

// 查看Nginx 4xx/5xx错误日志
status: [400 TO 599]

// 排除健康检查日志
NOT request_uri: "/health"

5.2 SQL聚合分析

SLS支持标准SQL语法,可以直接在查询框中使用SQL进行复杂分析:


// 统计每小时请求量(最近24小时)
* AND __topic__: "" |
SELECT DATE_FORMAT(__time__, 'yyyy-MM-dd HH:00:00') AS hour, COUNT(*) AS pv
GROUP BY hour ORDER BY hour DESC

// 统计Top 10访问IP
* |
SELECT __client_ip__, COUNT(*) AS cnt
GROUP BY __client_ip__
ORDER BY cnt DESC
LIMIT 10

// 统计HTTP状态码分布
* |
SELECT status, COUNT(*) AS cnt
GROUP BY status
ORDER BY cnt DESC

// 分析平均响应时间(需要应用日志中有response_time字段)
level: "INFO" |
SELECT AVG(response_time) AS avg_time, MAX(response_time) AS max_time, COUNT(*) AS total

📝 小提示:SQL查询支持自动补全,输入SELECT后按Ctrl+Space会弹出字段建议。也可以点击日志预览中的字段名,自动生成查询条件。

5.3 创建仪表盘

  1. SLS控制台 → Dashboard → Create Dashboard
  2. 添加图表:点击+ → 选择图表类型(Line/Bar/Pie/Table)
  3. 每个图表绑定一个SQL查询
  4. 设置刷新间隔(如每30秒)

推荐仪表盘布局:

图表SQL查询图表类型
请求量趋势SELECT DATE_FORMAT(__time__,'HH:mm') AS t, COUNT(*) AS pv GROUP BY t折线图
状态码分布SELECT status, COUNT(*) AS cnt GROUP BY status饼图
Top 10 IPSELECT __client_ip__, COUNT(*) AS cnt GROUP BY __client_ip__ ORDER BY cnt DESC LIMIT 10表格
错误日志level: "ERROR" OR status: [500 TO 599]表格(实时)
响应时间SELECT AVG(response_time) AS avg_time GROUP BY DATE_FORMAT(__time__,'HH:mm')折线图

六、日志告警设置

6.1 创建告警规则

  1. SLS控制台 → Alert Center → Create Alert
  2. 配置告警条件:
配置项推荐值说明
Alert Namenginx-5xx-alert告警名称
Logstorenginx-access-log监控的Logstore
Querystatus: [500 TO 599]查询条件
Trigger ConditionCOUNT(*) > 505分钟内5xx超过50次触发
Silence5 min静默期,避免重复告警
  1. 配置通知渠道:
  • Email:填写接收邮箱
  • SMS:填写手机号(国际版支持)
  • Webhook:填入钉钉/飞书/Slack的Webhook URL
  • CloudMonitor:同步到云监控告警(推荐,统一管理)

6.2 告警通知模板

自定义告警消息模板,让通知信息更清晰:


// 告警模板示例
告警名称: ${alert_name}
触发时间: ${fire_time}
日志库: ${logstore}
触发条件: ${trigger_condition}
查询语句: ${query}
当前值: ${current_value}
阈值: ${threshold}

📝 小提示:建议同时配置CloudMonitor告警和Webhook——CloudMonitor用于统一告警管理面板,Webhook用于即时通知到团队协作工具。

6.3 与云监控联动

SLS告警可以自动同步到云监控CloudMonitor,实现:

  • 统一的告警管理面板(所有云产品的告警集中查看)
  • 告警历史记录和统计
  • 与ECS/SLB/RDS等产品的告警策略联动

在创建告警时,勾选同步到云监控即可。

七、日志投递与长期存储

7.1 投递到OSS归档存储

SLS日志默认保留30天(免费额度内),如果需要长期保存,可以配置投递到OSS:

  1. SLS控制台 → Logstore → Log Store Configuration → Ship To
  2. 选择OSS Bucket → 配置目标Bucket和路径
  3. 设置投递频率(如每小时)和压缩格式(gzip)

// 投递路径示例
oss://my-log-archive/nginx-access/${year}/${month}/${day}/${hour}/

7.2 投递到MaxCompute进行大数据分析

如果需要对日志做深度分析(机器学习、趋势预测等),可以投递到MaxCompute:

  1. SLS控制台 → Logstore → Ship To → MaxCompute
  2. 配置MaxCompute Project和表名
  3. 设置投递间隔和字段映射

八、价格对比与省钱攻略

8.1 SLS计费说明

SLS的计费分为三部分:写入流量、存储空间、查询流量。

计费项免费额度(每月)超出价格说明
写入流量500 MB$0.085/GB日志写入SLS的数据量
存储空间500 MB$0.028/GB/月日志存储费用,按天计费
查询流量500 MB$0.035/GBSQL查询读取的数据量
Logtail采集免费免费Agent采集本身不收费
告警通知免费免费告警规则和通知不收费

⚠️ 注意:价格可能变动,请以阿里云国际版官网(alibabacloud.com)的实时信息为准。

8.2 实际成本估算

假设一个中小型网站:每天写入500MB日志,保留30天,每天查询1GB:

项目月用量月费用
写入流量15 GB(500MB×30天 - 500MB免费)$1.28
存储空间15 GB(日均500MB×30天 - 500MB免费)$0.42
查询流量30 GB(1GB×30天 - 500MB免费)$0.95
合计$2.65/月

对于小型站点,基本在免费额度内。中型网站每月也就几美元,比自建ELK(Elasticsearch+Logstash+Kibana)省钱得多。

8.3 vs 自建ELK对比

对比项阿里云SLS自建ELK
月成本(中型站点)$5-20$100+(ECS+存储)
部署时间5分钟数小时到数天
运维成本零(全托管)高(需专人维护)
扩展性自动扩展需手动扩容
查询性能秒级依赖集群配置
数据安全阿里云保障自己负责

九、避坑指南与最佳实践

9.1 常见坑

坑1:Logtail安装后日志不流入

  • 检查ECS安全组是否放行了SLS的内网地址(100.x.x.x段)
  • 检查ECS的RAM角色是否有AliyunLogFullAccess权限
  • 查看Logtail日志:tail -f /usr/local/ilogtail/logtail_plugin.LOG

坑2:日志延迟5-10分钟才出现

  • 正常现象。Logtail默认每3秒轮询一次文件,加上SLS的索引建立时间,通常有1-3分钟延迟
  • 如果延迟超过10分钟,检查Logtail配置中的flusher参数

坑3:查询结果为空但日志确实在写入

  • SLS的索引需要手动开启。在Logstore详情页 → 索引配置 → 开启Full Text Index和Key-Value Index
  • 新建Logstore默认不开启索引,这是最常见的遗漏

坑4:免费额度用完后突然扣费

  • 在SLS控制台 → Metering → 设置用量告警,当写入量达到80%免费额度时发邮件提醒
  • 也可以设置写入限流,超过免费额度后自动降速

9.2 最佳实践

  1. 合理设置TTL:访问日志30天,错误日志90天,安全审计日志365天
  2. 启用压缩:Logtail默认开启zstd压缩,可以减少70%以上的存储和写入费用
  3. 使用日志分区:高频写入场景(如Nginx访问日志)设置2-4个Shard,避免写入限流
  4. 告警分级:5xx错误→紧急(SMS+Webhook),4xx增多→警告(邮件),信息日志→不告警
  5. 定期清理无用Logstore:避免免费额度被不用的日志库占用

十、总结

阿里云国际版日志服务SLS是一个性价比极高的全托管日志平台,从日志采集、存储、查询到告警,一站式搞定。对于已经在用阿里云ECS、RDS、SLB的用户来说,SLS是最自然的日志方案——无需额外部署、自动与阿里云产品打通、按量计费几美元就能覆盖中小型站点的日志需求。

如果你正在搭建海外业务的日志体系,建议先从Nginx访问日志和MySQL慢查询日志开始,配上5xx错误告警——这是最基础也最实用的运维监控组合。随着业务增长,再逐步扩展到应用日志、审计日志和大数据分析。


延伸阅读:

⚠️ 免责声明:本文中提到的配置、价格和功能信息可能随时间变化,请以阿里云国际版官网(alibabacloud.com)的实时信息为准。本文不构成任何投资或购买建议。注册前请确认当地法规合规性。

本文由 2.chengzicloud.cloud 提供,点击访问首页了解更多