YACE Dashboard


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 = 2

Dashboard 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 Maximum

3. 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_.*"}