Grafana SQS YACE Dashboard

验证:未记录
适用版本
未记录
验证范围
尚未登记验证记录。
本文缩写(英文全称与中文含义)
缩写 英文全称/名称 中文含义
API Application Programming Interface 应用程序编程接口
AWS Amazon Web Services 亚马逊云服务
FIFO First In, First Out 先进先出
JSON JavaScript Object Notation 一种结构化数据格式
QPS Queries Per Second 每秒查询数
SQS Simple Queue Service AWS 消息队列服务
YACE Yet Another CloudWatch Exporter 把 CloudWatch 指标转换为 Prometheus 指标的采集器

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

跨 Region / 多环境的队列面板要明确过滤范围;以实际 YACE labels 为准,避免同名队列被合并。

官方但当前 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_.*"}

搜索文档

输入关键词,搜索所有文档。

↑ ↓ 选择 · Enter 打开 · Esc 关闭