阿里云日志服务 SLS + 函数计算:给商会系统做一次线上慢接口排查实战

简介: 商会系统上线后,会员反馈接口“卡顿”“导出慢”,但本地无法复现。我们接入阿里云SLS日志分析+函数计算(FC)实现自动巡检:统一采集JSON日志、索引关键字段,SQL秒级统计P95耗时与慢请求明细,FC定时告警并联动钉钉。实战中1小时内定位导出接口瓶颈,优化后P95从8s降至1s内。低成本、免运维、高时效。(239字)

商会系统上线后,会员反馈"列表偶尔卡好几秒""导出报表半天"。这类"慢"本地复现不了,只能上线上看真实日志,我们之前靠文本日志 grep 半天,效率很低。

后来把日志接进 SLS,再用函数计算 FC 跑定时排查,慢接口一目了然。

一、先说边界

我们的诉求三点:查任意窗口的接口耗时分布、慢接口自动告警、排查任务按需跑不养服务器。

基于这三条,我们排除了两套:自己搭 ELK 运维太重,只打点又没法聚合查询。

最终方案:日志统一采集到 SLS,用其查询分析做耗时统计,用 FC 定时跑慢接口巡检并告警。

二、日志采集:Logtail 统一打点

后端每个接口在入口出口记录耗时,按统一 JSON 输出,Logtail 自动采集进 SLS。

{
   
  "level": "info",
  "trace_id": "a1b2c3",
  "method": "GET",
  "path": "/api/members",
  "status": 200,
  "cost_ms": 1820,
  "org_id": 1024,
  "ts": "2026-09-07T10:22:01Z"
}

关键是 cost_ms 和 path 两个字段,Logtail 设成索引 SLS 才能统计。

三、SLS 查询:耗时分布

查某个接口在过去一小时的 P95 耗时,用 SLS 的 SQL 分析:

* and path: "/api/members" and status: 200
| select
    date_trunc('minute', ts) as minute,
    avg(cost_ms) as avg_ms,
    approx_percentile(cost_ms, 0.95) as p95_ms,
    count(*) as qps
  group by minute
  order by minute

这条查询画出每分钟平均耗时和 P95 曲线,哪个分钟突然抬高一眼可见。

还加了一条"慢请求明细"查询,专门捞耗时超一秒的:

* and cost_ms > 1000
| select path, cost_ms, org_id, ts
  order by cost_ms desc
  limit 100

这根查询排在前面的,就是当天响应慢的接口,排查就从这里入手。

四、函数计算:定时巡检 + 告警

SLS 查询要手动跑,我们希望每天自动跑、超阈值告警,于是用 FC 定时触发器跑巡检函数。

const {
    Client } = require('@alicloud/sls20201230');

exports.handler = async (event) => {
   
  const client = new Client({
    accessKeyId: process.env.AK, accessKeySecret: process.env.SK, endpoint: process.env.SLS_EP });
  const query = `* and cost_ms > 1000 | select path, approx_percentile(cost_ms,0.95) as p95, count(*) as cnt group by path having cnt > 20`;

  const res = await client.ExecuteQuery({
   
    projectName: process.env.SLS_PROJECT,
    logStoreName: 'app-access',
    query,
    from: Date.now() - 3600 * 1000,
    to: Date.now()
  });

  const slow = (res.body.results || []).filter((r) => r.p95 > 800);
  if (slow.length) {
   
    // 推到钉钉/短信,这里只示意
    await notify({
    title: '慢接口告警', detail: slow.map((s) => `${
     s.path} p95=${
     s.p95}ms 次数=${
     s.cnt}`) });
  }
  return {
    slowCount: slow.length };
};

FC 按调用计费,巡检每天跑几次费用可忽略。

五、实战:一次导出接口变慢

上个月排查"导出报表卡半天",按上面流程先捞慢请求明细,发现 /api/reports/export 的 P95 到八秒,且卡在一个 org_id 上。

顺着 org_id 查发现导出时后台在跑全量会员聚合查询,重查询和定时任务撞车。

解决办法:导出任务改异步扔进消息队列,后端限流控制同时只跑两个导出。改完再跑巡检,P95 回到一秒以内。

走 SLS 加 FC,从告警到定位不到一小时。

六、几个细节

一是索引字段别太多。SLS 按索引字段计费,只把 path、status、cost_ms、org_id、ts 设索引,其余当原文存,省钱。

二是采样,高峰全量采集量大,对 info 级采样、error 级全采,存储成本降六成。

三是告警阈值:P95 超八百毫秒且持续十分钟才告警,避免偶发抖动误报。

四是 trace_id 串联,慢请求顺 trace_id 看完整调用链,前端到数据库都能追。

我们这边在跑的商会管理系统叫未来漫城·商会互联平台,线上可观测就是这套 SLS 加 FC 的组合,会员反馈"卡"时秘书处不用等我们远程,告警已先到,慢接口在哪个商会、哪个接口、卡多久,打开 SLS 一看就清楚。

相关实践学习
【玩转ComfyUI】基于函数计算一键部署AI生图平台ComfyUI
本次实验将带大家通过使用阿里云产品函数计算FC,快速使用ComfyUI实现更高质量的图像生成。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
相关文章
|
6月前
|
存储 运维 监控
Flink 实时计算 x SLS 存储下推:阿里云 OpenAPI 网关监控平台实践
针对每日百 TB 级的海量网关日志,阿里云开放平台基于 Flink 与 SLS 采用“地域-中心化”分层聚合架构,并结合SLS SPL下推构建高可用实时监控体系的实践,实现了全量 API 的秒级故障告警。
420 57
|
6月前
|
缓存 运维 监控
当你的 Agent 会“多轮思考”,Trace 却还停留在单轮:阿里云 CMS OpenClaw 可观测插件升级
阿里云 OpenClaw 可观测插件新版本上线!解决行业通病,还原完整链路信息:多轮 LLM 分段还原真实决策链路、STEP Span 让"第几轮"可观测、并发断链/串链显著修复、AGENT 指标稳定可量化。从"有图可看"升级到"支撑决策",排障、成本治理、并发验证全面提效。
604 51
|
6月前
|
存储 人工智能 自然语言处理
阿里云可观测 2026 年 3 月产品动态
阿里云可观测 2026 年 3 月产品动态。
425 42
|
存储 缓存 Apache
StarRocks+Paimon 落地阿里日志采集:万亿级实时数据秒级查询
本文介绍了阿里集团A+流量分析平台的日志查询优化方案,针对万亿级日志数据的写入与查询挑战,提出基于Flink、Paimon和StarRocks的技术架构。通过Paimon存储日志数据,结合StarRocks高效计算能力,实现秒级查询性能。具体包括分桶表设计、数据缓存优化及文件大小控制等措施,解决高并发、大数据量下的查询效率问题。最终,日志查询耗时从分钟级降至秒级,显著提升业务响应速度,并为未来更低存储成本、更高性能及更多业务场景覆盖奠定基础。
|
监控 容灾 算法
阿里云 SLS 多云日志接入最佳实践:链路、成本与高可用性优化
本文探讨了如何高效、经济且可靠地将海外应用与基础设施日志统一采集至阿里云日志服务(SLS),解决全球化业务扩展中的关键挑战。重点介绍了高性能日志采集Agent(iLogtail/LoongCollector)在海外场景的应用,推荐使用LoongCollector以获得更优的稳定性和网络容错能力。同时分析了多种网络接入方案,包括公网直连、全球加速优化、阿里云内网及专线/CEN/VPN接入等,并提供了成本优化策略和多目标发送配置指导,帮助企业构建稳定、低成本、高可用的全球日志系统。
1611 55
|
人工智能 编解码 安全
阿里云服务器计算型c7、c8a、c8y、c8i、c9i实例区别及选型指南参考
在阿里云的活动中,属于计算型实例的通常有计算型c7、计算型c8a、计算型c8y、计算型c8i和计算型c9i这几个实例规格,不同实例规格在处理器架构、存储技术、网络协议、安全特性等性能并不是一样的,所以他们的适用场景也有所差异。本文为大家介绍计算型c7、c8a、c8y、c8i、c9i实例的性能、适用场景的区别以及选择参考。
|
前端开发 JavaScript 开发工具
前端开发基础:从零开启网页制作之旅
本文围绕前端开发基础展开,介绍了构建网页的三大核心技术:HTML(定义页面结构,具语义化特性)、CSS(控制视觉样式,含选择器、盒模型等核心概念)、JavaScript(实现动态交互,可操作 DOM),还提及 VS Code、浏览器开发者工具、Git 等必备工具,给出 “先基础后框架” 的学习路径与 MDN Web Docs 等资源,强调实践的重要性,帮助初学者掌握前端基础,为后续进阶奠基。
|
存储 安全 API
如何编写假设和约束---SRS软件需求规格指南系列
本文介绍了软件需求规范(SRS)中假设与约束的重要性,涵盖技术、运营、商业假设及资源、技术、外部、运营、性能约束等内容。文章强调了其在风险管理、可追溯性、维护更新及利益相关者沟通中的作用,并提供了编写、验证与持续管理的最佳实践,助力项目成功。
755 8
|
监控 Java 应用服务中间件
Tomcat log日志解析
理解和解析Tomcat日志文件对于诊断和解决Web应用中的问题至关重要。通过分析 `catalina.out`、`localhost.log`、`localhost_access_log.*.txt`、`manager.log`和 `host-manager.log`等日志文件,可以快速定位和解决问题,确保Tomcat服务器的稳定运行。掌握这些日志解析技巧,可以显著提高运维和开发效率。
1980 13
|
存储 编解码 人工智能
自媒体影视后期数字助理2--SDR与HDR中间件设计
阿里云提供的线上AI能力在处理视觉信息方面已经有较为成熟和通用的产品,对于开始兴建媒体资源管理平台的自媒体来说,采用阿里云的AI能力、函数计算以及OSS等产品进行平台搭建可以快速实现建设与能力扩充。本文为SDR与HDR中间件的开发思路、技术架构设计和开发实战中参数的设置介绍,对一些数字影像的基础概念和阿里云视觉人工智能的API细节进行了分析。
1259 123
自媒体影视后期数字助理2--SDR与HDR中间件设计

热门文章

最新文章