故障排除指南的遥测参考

故障排除指南本身不会收集遥测数据。 他们会读取你分别启用的遥测数据,然后将其联接起来。 如果你知道每个数据源背后对应的是什么,就能更轻松地预测在未启用某项功能时哪些图表会变为空白,也能更好地判断某个数字的可信程度。

诊断日志类别

在服务器上的诊断设置中配置这些类别,并将其路由到Log Analytics工作区。 门户显示这些名称。

类别 它捕获的内容 基础源 备注
PostgreSQL 服务器日志 错误、警告、连接和断开连接消息、锁定等待、autovacuum 完成记录、检查点记录。 PostgreSQL 服务器日志 内容完全取决于参数 log_* 。 如果 log_lock_waits 处于关闭状态,则即使启用了此类别,也不会有锁定数据到达指南。
会话数据 每个后端进程在某一时刻的快照:PID、状态、等待事件,以及用于推导连接、事务和查询时长的时间戳。 pg_stat_activity 离散采样,而非连续。 持续时间短于采样间隔的活动可能无法被检测到。 需要 metrics.collector_database_activity。
查询存储运行时 按时间桶聚合的每个查询统计信息:调用次数、平均耗时和总耗时、行数、共享块命中次数和读取次数、临时块以及 I/O 耗时。 查询存储 以查询 ID 作为键,绝不要以文本作为键。 受 pg_qs.query_capture_mode 限制。
查询存储等待统计信息 将采样的等待事件归因于处于等待状态的查询 ID。 pgms_wait_sampling 通过此数据,可以回答“导致此等待的查询”。 受 pgms_wait_sampling.query_capture_mode 限制。
Autovacuum 和模式统计信息 每个表的存活元组数和死元组数、插入/更新/删除活动,以及最后一次清理和分析的时间戳。 pg_stat_user_tables 指南中的每项膨胀量计算都以此为依据。
剩余事务 每个数据库的事务 ID 年龄,以及在回卷保护启动前剩余的事务数。 数据库 XID 年龄 在两个 autovacuum 指南中触发回卷警告。
AllMetrics 平台指标:CPU、内存、存储、IOPS 和增强指标。 Azure Monitor 不是 PostgreSQL 数据。 此数据是平台自己的主机视图。

指南所依赖的服务器参数

某些选项卡需要一个参数集,然后才能显示任何内容,独立于诊断设置。

参数 需要方 取消设置时的效果 重启
pg_qs.query_capture_mode 每个查询选项卡 任何地方都没有查询归属信息。 设置为 TOP 或 ALL。 否
log_line_prefix 仅 CPU 查询、本机日志记录视图 基于日志的查询图表保持空。 使用 查询存储 时不需要这样做,因为它在主副本和副本上都是主要来源。 必须与预期的格式完全匹配。 否
log_min_duration_statement 仅 CPU 查询、本机日志记录视图 没有来自日志的语句持续时间数据。 使用查询存储时不需要。 不使用 0。 否
pgms_wait_sampling.query_capture_mode 等待 选项卡 不会对等待事件进行采样,因此无法进行等待分析。 设置为 ALL。 否
metrics.collector_database_activity 会话、 工作负荷、增强指标 没有会话快照,也没有各数据库的活动情况。 否
track_io_timing IOPS 查询选项卡 blk_read_time 并且 blk_write_time 保持零,因此无法按 I/O 对查询进行排名。 否
log_autovacuum_min_duration 每个表的自动清理 没有各表的 autovacuum 记录。 必须是非负数。 否
log_lock_waits CPU 锁定和阻塞 锁等待绝不会被记录。 当等待超过 deadlock_timeout时记录消息。 否
pg_qs.emit_query_text 从遥测而不是数据库解析查询文本 无法从Log Analytics读取查询文本。 仅在回退路径中需要,因为 查询存储 会直接在主副本和副本上解析文本。 否
pgbouncer.enabled、metrics.pgbouncer_diagnostics PgBouncer 指标 无池器可见性。 Burstable 不支持。 否

保留期因源而异

在查找昨天看到的查询 ID 后面的 SQL 文本时,这种差异可能会导致混淆。

  • Log Analytics 中的遥测数据会根据你的工作区保留设置进行保留,通常会长得多。
  • 数据库中的 查询存储 数据按pg_qs.retention_period_in_days保留。

后果是:这些指南可能会向你显示某个查询 ID,但它对应的文本已经从 azure_sys 中消失了。 当历史文本很重要时,启用pg_qs.emit_query_text查询文本类别并将其路由到Log Analytics,以便文本与统计信息一起保留。

准确读出数字

特性 它为何重要
会对会话和等待数据进行采样 在样本之间运行 200 毫秒的查询不会留下任何跟踪。 在会话选项卡中没有相关记录,并不意味着相关情况不存在。
已存储查询存储数据 统计数据被聚合到时间桶中。 桶中的平均值会掩盖方差,因此在断定某个查询始终很快之前,请先检查最小值和最大值。
Autovacuum 参考线 筛选器 仅显示实时元组和死元组阈值上方的表,因此计数不会与直接 pg_stat_user_tables 查询协调。
已分析的 Autovacuum 指南 上限数据库 超过上限的服务器按创建 (OID) 顺序以无提示方式排除数据库。 本指南会在发生这种情况时发出警告。
数据使用量可能超过物理内存 在执行期间被反复固定的页面,每次都会被计入,因此查询报告的数据使用量确实可能超过 shared_buffers 或总内存容量。
显示的参数值是 服务器级 每个表的存储参数 ALTER ROLE ... SET 和每个会话的 SET 都不会被反映出来。 指南可能显示的是一个看起来正常的默认设置,而某个特定的表或角色实际运行的却完全是另一套东西。