监控告警与日志服务

目录

一、监控告警(CloudMonitor)

[二、日志服务 SLS](#二、日志服务 SLS)


一、监控告警(CloudMonitor)

官方参考:应用分组 · 报警模板 · 通知策略

1、监控是干什么的

没有监控:机器挂了、磁盘满了、数据库慢了,往往等用户投诉才知道。

有监控:

采集指标 → 发现异常 → 告警通知 → 人处理 → 恢复

云监控(CloudMonitor) = 阿里云基础可观测入口:看资源好不好、出事找谁、怎么通知。


2、企业监控分层

层次 看什么 常见产品
资源监控 CPU、内存、磁盘、连接数 CloudMonitor
日志 错误日志、访问日志 SLS
链路/APM 接口耗时、调用链 ARMS
拨测 从公网探测网站是否通 云拨测

3、企业级铁律

  1. 先建联系人 / 联系组,再建规则(别告警了没人收)
  2. 用应用分组 + 报警模板,别给每台机器手搓规则
  3. 资源打标签(env/app/owner),按标签自动入组
  4. 分级通知:严重电话/短信,一般钉钉即可
  5. 阈值要合理:持续几分钟再告,减少抖动误报
  6. 告警要可行动:能看出是哪台、哪个指标、谁负责
  7. 定期复盘:噪声太多就调阈值,漏告就补规则
  8. ECS 装云监控插件,才能采到内存、磁盘等主机指标

4、核心概念

概念 描述
监控指标 CPU%、磁盘%、连接数等数值
事件 如实例重启、OOM、抢占回收等"发生了什么"
告警规则 超过阈值就报警
联系人 / 联系组 通知发给谁
应用分组 按业务把 ECS+RDS+Redis 等放一筐
报警模板 一套标准规则,批量套到分组
通知渠道 短信、邮件、电话、钉钉/飞书 Webhook

企业搭法:联系人组 → 应用分组(按业务/环境)→ 报警模板应用上去 → 钉钉/电话通知


5、知识了解

(1)联系人与通知通道

  1. 云监控 → 报警联系人
  2. 填手机、邮箱,按提示激活
  3. 建联系组:如 ops-oncallapp-order-owners
  4. (推荐)钉钉群加自定义机器人,关键词设为「告警」,拿到 Webhook

企业习惯:

  • 生产值班组收 P0/P1
  • 业务群收本业务告警
  • 夜间电话只给值班,不给全员轰炸

(2)应用分组(按业务打包)

示例分组:order-prod(订单生产)

建议纳入:

  • ECS / ESS 伸缩出来的机器(靠标签自动加入更好)
  • ALB
  • RDS
  • Redis
  • (相关)OSS 用量或关键事件

创建方式:

  • 按标签:env=prodapp=order
  • 或按实例名规则匹配

以后新机器只要打对标签,会自动进组、自动带上告警。


(3)基础指标清单

① ECS

指标 建议阈值思路
CPU 使用率 > 80% 持续 5 分钟
内存使用率 > 85% 持续 5 分钟
磁盘使用率 > 85%(根分区/数据盘)
磁盘 inode > 85%
网络流入/流出异常 按业务基线

内存/磁盘常需 云监控插件。

② RDS

指标 建议
CPU > 80% 持续
连接数 接近规格上限(如 > 80%)
磁盘空间 > 80%~85%
IOPS / 慢查询相关 按实例能力设
只读延迟(若有) 超过业务可接受秒数

③ Redis

指标 建议
内存使用率 > 80%
连接数 接近上限
命中率 明显下降要关注
流出带宽 / 延迟 突增告警

④ ALB / 负载均衡

指标 建议
后端异常主机数 > 0 持续
5xx / 健康检查失败 按业务
QPS / 连接数异常 突增或掉底

⑤ OSS(费用与可用性相关)

关注点 说明
计量/流量异常 防盗刷导致费用暴涨
可用性相关事件 按产品事件订阅

(4)报警模板(一次配置,多处复用)

创建模板如:tpl-prod-basic

写入上面 ECS + RDS + Redis + ALB 的规则,然后 应用到 order-produser-prod 等分组。

好处:

  • 新业务复制分组 + 套同一模板
  • 改阈值只改模板,不逐台改

官方用法:报警模板设置应用分组规则


(5)事件告警(指标之外)

除了"数值超标",还要订事件,例如:

  • ECS 重启、释放、OOM
  • RDS 主备切换、只读实例异常
  • 抢占式实例被回收

事件往往比"CPU 慢慢升高"更能解释突发故障。


(6)告警怎么写才有用

差的告警:

CPU 高了

好的告警应能回答:

  1. 哪个环境/应用(标签、分组名)
  2. 哪台实例
  3. 什么指标、当前值、阈值
  4. 建议动作(可在通知文案里写简要 runbook)

例如:

[P1][order-prod] ECS i-xxx CPU 92% > 80% (5m)

处理:看是否流量突增 / 慢接口 / 是否该 ESS 扩容


(7)降噪(企业必做)

告警太多 = 没人看。手段:

手段 做法
持续时长 连续 N 个周期再告
分级 P0 电话,P2 只钉钉
静默 发布窗口临时屏蔽
合并 同类告警聚合(云监控 2.0 / ARMS 通知策略)
阈值校准 按一周误报情况回调

原则:宁可少而准,不要多而烦。


(8)和前后架构串起来

用户 → ALB ──监控:5xx、后端健康

ECS/ESS ──监控:CPU/内存/磁盘;ESS 是否扩容成功

├─ Redis ──监控:内存、命中率、连接

├─ RDS ──监控:CPU、连接、磁盘、延迟

└─ OSS ──监控:流量异常、(业务侧可用性)

告警 → 钉钉/短信/电话 → 值班 → 上堡垒机处理

和 RAM:只有运维角色能改告警规则;开发可只读。

和标签:没有标签,分组与分账、告警都会乱。


小结

监控 = 分组管资源 + 模板管规则 + 联系人收通知。

先让 ECS/RDS/Redis/ALB 的基础指标和关键事件叫得应,再谈精细化与链路追踪。

二、日志服务 SLS

官方参考:快速入门 · 索引 · Logtail 采集

1、SLS 是什么

SLS(Simple Log Service) = 阿里云的集中日志平台。

以前:登录每台 ECS 用 tail / grep 翻日志。

机器一多、ESS 一扩缩,就找不到了。

有了 SLS:

各台机器/容器上的日志

→ 采集到 SLS(集中存放)

→ 网页里搜索、统计、告警、看板

和云监控分工:

云监控 SLS
主要看 CPU、磁盘、连接数等指标 文本/结构化日志
典型问题 "机器是不是满了?" "哪条请求报错?错误栈是什么?"

2、三个核心词

概念 描述 例子
Project 项目/命名空间,做隔离 order-prod
Logstore 一种日志的仓库 app-lognginx-access
Logtail / LoongCollector 装在机器上的采集器 /var/log/app/*.log 上报

常见拆法:

Project: order-prod

├─ Logstore: nginx-access

├─ Logstore: app-error

└─ Logstore: app-biz


3、企业级铁律

  1. 按环境/业务分 Project(生产、测试分开)
  2. 按日志类型分 Logstore(访问日志、错误日志别混一锅)
  3. 要查要分析,必须开索引;只归档可考虑查询型降成本
  4. 应用日志务必带 request_id / trace_id,才能串起一次请求
  5. 设保存天数(如 7~30 天热查,更久投递 OSS)
  6. 敏感信息脱敏(密码、证件号别明文打日志)
  7. 采集增量:配置后文件要有新写入才会采到
  8. 和监控联动:指标告警 + 日志告警,定位更快

4、知识了解

(1)创建 Project / Logstore

建议
Project 名 公司-业务-环境,如 demo-order-prod
地域 与 ECS 同地域(采集更快、更稳)
Logstore 标准型(要 SQL 分析);纯归档可查询型
保存时间 生产常见 15~30 天(按合规)
Shard 流量大开自动分裂

(2)采集 ECS 应用日志(最小闭环)

  1. 控制台进入 Project → 采集数据 → 主机/文本日志
  2. 选同账号同地域 ECS,自动安装 Logtail
  3. 建机器组,确认心跳 OK
  4. 配置采集路径,例如:/var/log/myapp/*.log
  5. 选解析模式(极简 / JSON / Nginx / 正则)
  6. 预览有数据后,开启索引
  7. 进入查询页,搜关键词验证

官方入门:SLS 快速入门

ESS 伸缩出的新机器:要用机器组 + 镜像预装 Logtail,或运维自动化安装,否则新节点没日志。


(3)索引(能搜还是能分析)

类型 作用
全文索引 关键词搜索(像搜文档)
字段索引 按字段精确查,并能做 SQL 统计

规则:

  • 只搜关键字 → 全文即可
  • status=500、统计 QPS/错误率 → 字段索引 + 开启统计
  • 索引字段别太多(建议别堆到上百无关字段),控制成本

改索引大约 1 分钟生效。


(4)查询语句(最常用)

假设 Nginx/访问日志已解析出 statusrequest_uri 等字段:

bash 复制代码
# 查包含 error 的日志
error

# 查 5xx
status >= 500

# 组合
status >= 500 and request_uri: /api/order

# 分析:最近错误数(需字段统计)
status >= 500 | SELECT count(*) AS err_cnt

# 按状态码聚合
* | SELECT status, count(*) AS c GROUP BY status ORDER BY c DESC

排障神器:用业务里的 request_id 一把搜出全链路相关日志:

bash 复制代码
request_id: 59f9xxxx-xxxx

(5)日志告警(和云监控互补)

示例:15 分钟内 5xx 过多就告警。

  1. SLS → 告警 → 新建告警
  2. 查询:status >= 500 \| SELECT count(*) AS err_cnt
  3. 条件:err_cnt > 100
  4. 通知:钉钉 / 短信 / 电话(可复用你们的值班通道)

适合:

  • 业务错误码激增
  • 登录失败暴涨(安全)
  • 某接口耗时字段超阈值

云监控偏资源;SLS 告警偏业务日志语义。


(6)仪表盘与投递

  • 仪表盘:PV、错误率、Top URL、慢请求
  • 投递 OSS:超期日志归档降成本
  • 审计类:云产品操作日志、WAF/云防火墙日志也可接入 SLS 做合规检索

(7)应用怎么打日志才"企业级"

建议每条关键日志包含:

时间 | 级别 | request_id | 用户/订单号 | 接口 | 耗时 | 消息

JSON 示例:

bash 复制代码
{
  "level": "ERROR",
  "request_id": "a1b2c3d4",
  "order_id": "10086",
  "path": "/api/pay",
  "cost_ms": 820,
  "msg": "payment timeout"
}

好处:SLS 字段索引好配,告警和统计都方便。


(8)和前后知识串起来

用户 → ALB

ECS/ESS ──Logtail──► SLS(app/nginx 日志)

├─ Redis

└─ RDS

云监控:CPU/磁盘/连接数 告警

SLS :error/5xx/request_id 定位根因

堡垒机 :必要时登机器(但日常优先查 SLS,少登生产)

排障顺序(推荐):

  1. 云监控看资源是否异常
  2. SLS 用时间窗 + error / request_id 查日志
  3. 再决定是否上堡垒机深挖

5、常见坑

说明
有配置但无数据 文件无增量;路径不对;机器组心跳 FAIL
能搜不能统计 没开字段索引/统计
费用突然升高 索引字段过多、保存过久、写入量暴增
新扩容 ECS 没日志 镜像未含采集器/未自动加入机器组
日志含密码 Token 安全事故隐患,要脱敏

小结

SLS = 集中收日志 + 索引查询 + 统计告警。

机器用 Logtail 采上来,日志带 request_id,和生产监控配合,才能又快又准地排障。

相关推荐
别催小唐敲代码1 小时前
STM32 MQTT协议详解:从报文地狱到阿里云实战
stm32·嵌入式硬件·阿里云
夫唯不争,故无尤也1 天前
Ubuntu阿里云服务器一键安装RustDesk指南
服务器·ubuntu·阿里云
小鸟你好啊3 天前
搭建基于 Solon AI 的 Streamable MCP 服务并部署至阿里云百炼
人工智能·阿里云·云计算
小鸟你好啊3 天前
基于阿里云RDS SQL Server + 函数计算 + 通义AI构建智能销售分析平台Demo
人工智能·阿里云·云计算
翼龙云_cloud3 天前
阿里云国际站代理商:ECS弹性伸缩 自动应对流量高峰
运维·网络·数据库·阿里云·架构
阿里云云原生5 天前
一周上线!信永中和基于阿里云 AgentTeams + AI 网关打造多智能体 AI 平台
阿里云·云原生·ai网关·agentteams