SLS日志服务:实时日志分析实践

李架构师

· 阅读 1740

分享
SLS日志服务

SLS日志服务:实时日志分析实践

SLS(日志服务)是阿里云的一站式日志平台,支持日志的采集、存储、查询、分析、可视化、告警。相比自建ELK,SLS免运维、弹性伸缩、按量付费,是云上日志管理的首选方案。本文分享SLS的核心功能和实战经验。

日志采集

ECS日志:安装Logtail Agent,配置采集规则(文件路径、行首正则、过滤条件)。Logtail支持多种日志格式:正则、JSON、分隔符、完整单行。对于多行日志(如Java异常堆栈),配置行首正则(如 ^\d{4}-\d{2}-\d{2})。

容器日志:在ACK中以DaemonSet方式部署Logtail,自动发现所有容器的标准输出日志。通过环境变量或Annotation可以自定义采集规则(如只采集特定容器的日志、过滤特定字段)。

SDK直接上报:应用代码中使用SLS SDK直接上报日志,适合需要精确控制日志场景。支持异步发送、批量聚合、自动重试。

查询分析

SLS使用类SQL的查询语法,分为搜索部分和分析部分,用 | 分隔:

搜索(全文索引):error AND timeout(同时包含error和timeout)、status: 500(字段精确匹配)、message: "connection refused"(短语搜索)。

分析(SQL语法):* | SELECT status, count(*) as cnt GROUP BY status ORDER BY cnt DESC LIMIT 10。支持时间函数、字符串函数、JSON函数、窗口函数等。

常用分析场景:错误率统计、接口P99延迟、用户行为分析、安全审计。查询结果可以直接生成图表,嵌入到SLS Dashboard中。

告警配置

SLS告警由三部分组成:查询条件 + 触发条件 + 通知方式。例如:5分钟内5xx错误超过100次,发送钉钉告警。

告警支持高级功能:告警抑制(子告警被抑制不重复通知)、告警升级(超时未处理升级通知)、告警去重(相同告警合并)、无数据告警(日志中断时告警)。通知渠道支持钉钉、短信、邮件、电话、Webhook。

成本优化

SLS按写入量、存储量、读取量计费。优化建议:合理设置索引(非必要字段不开索引),设置数据保留天数(30天通常足够),使用智能冷热分层(30天以上的日志自动降为低频存储,费用降低60%)。