Links#
1. YACE Config#
配置文件:
static/Grafana/yace-sqs-config.yml这些 metric 都来自 AWS 官方 AWS/SQS CloudWatch metrics。SQS CloudWatch metrics 使用单一维度 QueueName,当前 dashboard 使用 YACE 输出里的 dimension_QueueName label。
Dashboard 选择:
aws-sqs-yace-overview-dashboard.json:
使用 $region + $queue_name 过滤。
适合一个 dashboard 同时看多个 AWS regions。
aws-sqs-yace-environment-overview-dashboard.json:
使用 $environment + $queue_name 过滤。
适合 metrics 已经通过 relabel / target label / YACE customTags 统一带上 environment label 的场景。采集内容:
| CloudWatch Metric | Statistic | Used For |
|---|---|---|
ApproximateAgeOfOldestMessage |
Average, Maximum | age trend and worst-case message age |
ApproximateNumberOfMessagesVisible |
Average, Maximum | backlog trend and peak backlog |
ApproximateNumberOfMessagesNotVisible |
Average, Maximum | in-flight trend and peak in-flight pressure |
ApproximateNumberOfMessagesDelayed |
Average, Maximum | delayed trend and peak delayed messages |
NumberOfMessagesSent |
Sum | producer throughput |
NumberOfMessagesDeleted |
Sum | consumer completion throughput |
NumberOfMessagesReceived |
Sum | receive behavior |
NumberOfEmptyReceives |
Sum | polling efficiency |
官方但当前 dashboard 未默认使用的 SQS metrics:
| CloudWatch Metric | When To Add |
|---|---|
SentMessageSize |
需要监控 payload size / 成本 / 大消息风险 |
NumberOfDeduplicatedSentMessages |
FIFO queue 需要排查重复发送或 dedup 行为 |
ApproximateNumberOfGroupsWithInflightMessages |
FIFO queue 需要排查 message group 并发 |
ApproximateNumberOfNoisyGroups |
fair queue / 多租户 noisy neighbor 场景 |
ApproximateNumberOfMessagesVisibleInQuietGroups |
fair queue 场景 |
ApproximateNumberOfMessagesNotVisibleInQuietGroups |
fair queue 场景 |
ApproximateNumberOfMessagesDelayedInQuietGroups |
fair queue 场景 |
ApproximateAgeOfOldestMessageInQuietGroups |
fair queue 场景 |
statistic 选择:
Average:
用于趋势、容量规划、正常 backlog 水平。
Maximum:
用于峰值、最坏情况、告警和排障。
Sum:
用于计数类吞吐,例如 sent / received / deleted / empty receives。ops/s unit#
ops/s 是 operations per second。SQS dashboard 里的 operation 指 message-related metric event:
sent:
NumberOfMessagesSent
received:
NumberOfMessagesReceived
deleted:
NumberOfMessagesDeleted
empty receive:
NumberOfEmptyReceives它不是:
queue 数量
业务订单数
应用接口 QPS这些 CloudWatch metrics 使用 Statistic: Sum 采集。Sum 本身不是每秒速率,而是一个 period 内的总次数。
ops/s = Sum / period_seconds
example:
period = 300
NumberOfMessagesSent Sum = 600
ops/s = 600 / 300 = 2Dashboard JSON 里的 SQS throughput panels 使用 / 300 把 5 分钟 Sum 转成 per-second rate。 如果 YACE period 改成 60,对应查询也要改成 / 60。
2. Period And Length#
当前默认配置:
period: 300
length: 600含义:
period:
CloudWatch datapoint 的聚合粒度。
period: 300 表示每个 datapoint 是 5 分钟窗口。
length:
YACE 每次 scrape 时向 CloudWatch 往回查询多久。
length: 600 表示每次查询最近 10 分钟的数据。
为什么 length 比 period 大:
CloudWatch metrics 可能有延迟。
length 比 period 长,可以让 YACE 补抓延迟到达的数据,降低漏点概率。示例:
period: 60
length: 300
表示:
1 分钟粒度
每次回看最近 5 分钟
适合:
关键实时队列
对 oldest message age 很敏感的业务链路
代价:
CloudWatch API 调用更多
成本更高
噪音可能更多推荐:
普通 SQS dashboard:
period: 300
length: 600
关键实时队列:
period: 60
length: 300
只采最关键 metrics,例如 ApproximateAgeOfOldestMessage Maximum 和 backlog Maximum3. Dashboard Rows#
| Row | Panels |
|---|---|
| Overview | oldest message age, visible backlog, in-flight messages, delayed messages, age/backlog by queue |
| Drilldown | sent / received / deleted, empty receives |
| Capacity | backlog trend, peak backlog, consumer completion rate, approximate drain periods |
| Debug | receive-delete gap |
4. Verify#
{__name__=~"aws_sqs_.*"}