Compartir a través de

监控 Azure Database for PostgreSQL 中的指标

监视服务器的相关数据有助于排查工作负荷故障及优化工作负荷。 Azure Database for PostgreSQL 灵活服务器实例提供各种监视选项,让你深入了解服务器的性能。

Metrics

Azure Database for PostgreSQL 提供了各种指标,用于深入了解支持 Azure Database for PostgreSQL 灵活服务器实例的资源的行为。 每个指标以一分钟间隔发出,最长 保留期为 93 天。 可针对指标配置警报。 其他选项包括设置自动操作、执行高级分析和存档历史记录。 有关详细信息,请参阅 Azure 指标概述

注释

虽然指标会存储 93 天,但你只能在任意单个图表上查询最多 30 天的数据(在“指标”磁贴中)。 如果显示空白图表,或图表仅显示部分指标数据,请验证时间选取器中开始日期和结束日期之间的间隔是否不超过 30 天。 选择 30 天间隔后,可以平移图表以查看完整的保留时段。

默认指标

以下指标可用于 Azure Database for PostgreSQL 灵活服务器实例:

显示名称 指标 ID 单位 Description 默认启用
活动连接 active_connections 计数 与数据库服务器的连接总数,包括所有连接状态(如活动、空闲等),如 pg_stat_activity 视图中所示。 此图表示所有状态的连接的总和,而不区分特定状态。 有关特定状态(例如活动连接)的深入分析,请参阅“按状态划分的会话”指标。 是的
备份存储使用量 backup_storage_used 字节 使用的备份存储量。 此指标表示服务器根据设置的备份保留期保留的所有完整备份、差异备份和日志备份使用的存储总和。 备份的频率由服务进行管控。 对于异地冗余存储,备份存储使用量是本地冗余存储的两倍。 是的
连接失败 connections_failed 计数 失败的连接数。 是的
成功连接数 connections_succeeded 计数 成功的连接数。 是的
已用 CPU 额度 ^ cpu_credits_consumed 计数 灵活服务器使用的额度。 应用到可突发层。 是的
剩余 CPU 积分 ^ cpu_credits_remaining 计数 可用于突发的额度。 应用到可突发层。 是的
CPU 百分比 cpu_percent Percent 使用的 CPU 百分比。 是的
数据库大小 database_size_bytes 字节 数据库大小(以字节为单位)。 是的
磁盘队列深度 ^ disk_queue_depth 计数 数据磁盘未完成的 I/O 操作数。 是的
IOPS iops 计数 磁盘每秒的 I/O 操作数。 是的
最大已用事务 ID 数 maximum_used_transactionIDs 计数 正在使用的最大事务 ID 数。 是的
内存百分比 memory_percent Percent 使用的内存百分比。 是的
网络流出量 network_bytes_egress 字节 所选时间段内服务器上的传出网络流量的总和。 此指标包括来自数据库和 Azure Database for Postgres 灵活服务器实例的传出流量,包括监视、日志、WAL 存档、复制等功能。 是的
网络流入量 network_bytes_ingress 字节 所选时间段内服务器上的传入网络流量的总和。 此指标包括到您数据库及 Azure Database for Postgres 灵活服务器实例的传入流量,涵盖包括监视、日志、WAL 存档、复制等在内的功能。 是的
读取 IOPS ^ read_iops 计数 每秒数据磁盘 I/O 读取操作数。 是的
读取吞吐量 ^ read_throughput 字节 每秒从磁盘读取的字节数。 是的
剩余存储空间 storage_free 字节 可用的存储空间量。 是的
存储占比 storage_percent 百分比 已使用的存储空间百分比。 服务使用的存储可以包括数据库文件、事务日志和服务器日志。 是的
已用的存储量 storage_used 字节 已使用的存储空间量。 服务使用的存储可以包括数据库文件、事务日志和服务器日志。 是的
事务日志已用的存储量 txlogs_storage_used 字节 事务日志使用的存储空间量。 是的
写入吞吐量 ^ write_throughput 字节 每秒写入磁盘的字节数。 是的
写入 IOPS ^ write_iops 计数 每秒数据磁盘 I/O 写入操作数。 是的

注释

标记的 ^ 指标每分钟发出一次,但在五分钟批处理中进行处理并显示。 此过程最多会导致指标可见性延迟 5 分钟。 在这些指标上创建警报时,请考虑到此延迟,以确保准确且及时地发出警报。

增强式指标

使用 Azure Database for PostgreSQL 灵活服务器实例的增强指标,对数据库进行精细监视和警报。 每个指标以 1 分钟 间隔发出,最长 保留期为 93 天。 可针对指标配置警报。 一些增强的指标包括一个 Dimension 参数,可以使用该参数通过数据库名称或状态等维度来拆分和筛选指标数据。

启用增强指标

  • 默认情况下,大多数新指标处于“已禁用”状态。 下表中最右侧的列指示是否默认启用每个指标。 默认情况下会启用几个指标。
  • 若要启用默认情况下未启用的指标,请将服务器参数 metrics.collector_database_activity 设置为 ON。 此参数是动态的,不需要重启实例。
增强式指标的列表

从以下类别的增强指标中进行选择:

  • Activity
  • 数据库
  • 逻辑复制
  • 重复
  • 饱和度
  • 交通
Activity
显示名称 指标 ID 单位 Description 尺寸 默认启用
按状态列出的会话数 sessions_by_state 计数 按状态划分的会话,如 pg_stat_activity 视图中所示。 它将客户端后端分类为各种状态,例如活动或空闲。 State
按 WaitEventType 列出的会话数 sessions_by_wait_event_type 计数 按客户端后端正在等待的事件类型划分的会话。 等待事件类型
最早的后端 oldest_backend_time_sec 最旧后端(无论状态如何)的期限(以秒为单位)。 不适用
最早的查询 longest_query_time_sec 当前正在运行的最长查询的时长(以秒为单位)。 不适用
最旧的事务 longest_transaction_time_sec 最长交易(包括空闲交易)的时长(以秒为单位)。 不适用
最早的 xmin oldest_backend_xmin 计数 最早 xmin 的实际值。 如果 xmin 没有增加,则表示存在某些长时间运行的事务,后者可能会阻止移除死元组。 不适用
最早 xmin 期限 oldest_backend_xmin_age 计数 以最早 xmin 为单位表示的期限。 表示自最早 xmin 以来传递的事务数。 不适用
数据库
显示名称 指标 ID 单位 Description 尺寸 默认启用
后端 numbackends 计数 连接到此数据库的后端数。 DatabaseName
死锁 deadlocks 计数 在此数据库中检测到的死锁数。 DatabaseName
磁盘块命中 blks_hit 计数 在缓冲区缓存中已找到磁盘块的次数,因此无需进行读取。 DatabaseName
磁盘块读取 blks_read 计数 在此数据库中读取的磁盘块数。 DatabaseName
临时文件 temp_files 计数 此数据库中由查询创建的临时文件数。 DatabaseName
临时文件大小 temp_bytes 字节 由此数据库中的查询写入到临时文件的数据总量。 DatabaseName
事务总数 xact_total 计数 在此数据库中执行的事务总数。 DatabaseName
已提交的事务数 xact_commit 计数 此数据库中提交的事务数。 DatabaseName
每秒事务数 tps 计数 一秒内执行的交易数量。 DatabaseName
回滚的事务 xact_rollback 计数 在这个数据库中被回滚的事务数。 DatabaseName
已删除的元组数 tup_deleted 计数 此数据库中的查询删除的行数。 DatabaseName
已提取的元组数 tup_fetched 计数 查询从该数据库中提取的行的数量。 DatabaseName
已插入的元组数 tup_inserted 计数 此数据库中的查询插入的行数。 DatabaseName
返回的元组数 tup_returned 计数 此数据库中查询返回的行数。 DatabaseName
已更新的元组数 tup_updated 计数 此数据库中的查询更新的行数。 DatabaseName
逻辑复制
显示名称 指标 ID 单位 Description 尺寸 默认启用
最大逻辑复制延迟 logical_replication_delay_in_bytes 字节 所有逻辑复制槽的最大滞后时间。 不适用 是的
重复
显示名称 指标 ID 单位 Description 尺寸 默认启用
最大物理复制延迟 physical_replication_delay_in_bytes 字节 所有异步物理复制槽的最大滞后时间。 不适用 是的
读取副本延迟 physical_replication_delay_in_seconds 只读副本滞后时间(秒)。 不适用 是的
饱和度
显示名称 指标 ID 单位 Description 尺寸 默认启用
磁盘带宽消耗百分比 ^ disk_bandwidth_consumed_percentage Percent 每分钟使用的数据磁盘带宽的百分比。 不适用 是的
已用磁盘 IOPS 百分比 ^ disk_iops_consumed_percentage Percent 每分钟使用的数据磁盘 I/O 的百分比。 不适用 是的

注释

标记的 ^ 指标每分钟发出一次,但在五分钟批处理中进行处理并显示。 此过程最多会导致指标可见性延迟 5 分钟。 在这些指标上创建警报时,请考虑到此延迟,以确保准确且及时地发出警报。

交通
显示名称 指标 ID 单位 Description 尺寸 默认启用
最大连接数 ** max_connections 计数 最大连接数。 不适用 是的

** 最大连接数表示为 max_connections 服务器参数配置的值。 系统每 30 分钟轮询一次此指标。

有关使用增强型指标的注意事项
  • 使用 DatabaseName 维度的增强型指标限制为 50 个数据库
  • 对于可突发的 SKU,使用 DatabaseName 维度的指标限制为 10 个数据库。
  • DatabaseName 维度限制适用于pg_stat_database系统视图的数据库标识符(datid)列,这反映了数据库的创建顺序。
  • 指标维度中的 DatabaseName不区分大小写。 这意味着,查询pg_stat_database视图后,筛选出datnametemplate1template0的行,按datid排序,并将返回的行限制为前 50 行(如果是可突发 SKU,则为前 10 行)。在这个结果集中,数据库名称的指标如果仅大小写不同(例如contoso_databaseContoso_database),则会合并,可能导致数据不准确。

自动清理指标

使用 autovacuum 指标监视和优化 Azure Database for PostgreSQL 灵活服务器实例的 autovacuum 性能。 每个指标以 30 分钟的 间隔发出,最长 保留期为 93 天。 可以为特定指标创建警报,并且可以使用 DatabaseName 维度拆分和筛选指标数据。

如何启用 autovacuum 指标

  • 默认情况下,自动清空指标处于禁用状态。
  • 要启用这些指标,请将 metrics.autovacuum_diagnostics 服务器参数设置为“ON”。
  • 此参数是动态的,因此不需要重启实例。

autovacuum 指标列表

显示名称 指标 ID 单位 Description 尺寸 默认启用
分析计数器用户表 analyze_count_user_tables 计数 在此数据库中手动分析仅限用户的表的次数。 DatabaseName
AutoAnalyze 计数器用户表 autoanalyze_count_user_tables 计数 此数据库中 autovacuum 守护程序分析仅限用户的表的次数。 DatabaseName
AutoVacuum 计数器用户表 autovacuum_count_user_tables 计数 在此数据库中,autovacuum 守护程序清理仅限用户的表的次数。 DatabaseName
估计的死行用户表数 n_dead_tup_user_tables 计数 在此数据库中仅用户表的估计死行数。 DatabaseName
估计的存活行用户表数 n_live_tup_user_tables 计数 在此数据库中仅用户表的估计存活行数。 DatabaseName
估计的修改用户表 n_mod_since_analyze_user_tables 计数 自上次分析仅限用户表以来已修改的估计行数。 DatabaseName
已分析的用户表数 tables_analyzed_user_tables 计数 该数据库中已分析的用户专用表的数量。 DatabaseName
自动分析的用户表 tables_autoanalyzed_user_tables 计数 此数据库中 autovacuum 守护程序分析的仅限用户使用的表的数量。 DatabaseName
已自动清理的用户表数 tables_autovacuumed_user_tables 计数 autovacuum 守护程序清理此数据库中仅供用户使用的表的数量。 DatabaseName
用户表计数器 tables_counter_user_tables 计数 此数据库中仅用于用户的表的数量。 DatabaseName
清空的用户表 tables_vacuumed_user_tables 计数 在此数据库中进行真空处理的用户表数量。 DatabaseName
真空计数器用户表 vacuum_count_user_tables 计数 在此数据库中手动整理仅用户使用的表的次数(不包括VACUUM FULL)。 DatabaseName

有关使用自动清理指标的注意事项

  • 使用 DatabaseName 维度的自动清空指标限制为 30 个数据库
  • 对于可突发的 SKU,使用 DatabaseName 维度的指标限制为 10 个数据库。
  • DatabaseName 维度限制适用于 OID 列,这反映了数据库的创建顺序。

PgBouncer 指标

使用 PgBouncer 指标监视 PgBouncer 进程的性能。 这些指标包括活动连接、空闲连接、共用连接总数和连接池数的详细信息。 每个指标以 一分钟 间隔发出,最长 保留期为 93 天。 可以针对指标配置警报,并访问新的指标维度,以按数据库名称拆分和筛选指标数据。

如何启用 PgBouncer 指标

  • 若要监视 PgBouncer 指标,请确保通过服务器参数启用 pgbouncer.enabled 功能并启用指标参数metrics.pgbouncer_diagnostics
  • 这些参数是动态的,不需要重启实例。
  • PgBouncer 指标已默认禁用。

PgBouncer 指标列表

显示名称 指标 ID 单位 Description 尺寸 默认启用
活动客户端连接数 client_connections_active 计数 与 Azure Database for PostgreSQL 灵活服务器实例连接关联的客户端的连接。 DatabaseName
等待客户端连接 client_connections_waiting 计数 来自正在等待 Azure Database for PostgreSQL 灵活服务器实例连接的客户端的连接,以提供服务。 DatabaseName
活动服务器连接 server_connections_active 计数 连接到 Azure Database for PostgreSQL 灵活服务器实例的连接,这些连接正被客户端使用。 DatabaseName
空闲服务器连接 server_connections_idle 计数 与 Azure Database for PostgreSQL 灵活服务器实例的连接,这些实例处于空闲状态并已准备好为新的客户端连接提供服务。 DatabaseName
共用连接总数 total_pooled_connections 计数 当前共用连接数。 DatabaseName
连接池数 num_pools 计数 连接池总数。 DatabaseName

有关使用 PgBouncer 指标的注意事项

  • 使用 DatabaseName 维度的 PgBouncer 指标限制为 30 个数据库
  • 可突发 SKU 上,限制为使用数据库名称维度的 10 个数据库。
  • DatabaseName 维度限制适用于 OID 列,这反映了数据库的创建顺序。

数据库可用性指标

is-db-alive 指标是 Azure Database for PostgreSQL 灵活服务器实例的数据库服务器可用性指标。 它返回 1 可用和 0 不可用。 每个指标以一分钟的频率发出,最长 保留期为 93 天。 可以针对指标配置警报。

显示名称 指标 ID 单位 Description 尺寸 默认启用
数据库处于活动状态 is_db_alive 计数 指示数据库是否正常运行。 不适用 是的

使用数据库可用性指标的注意事项

  • 汇总此指标MAX()以确定服务器在过去一分钟是正常运行还是宕机。
  • 使用任何所需频率(5 米、10 米、30 米等)聚合这些指标,以满足警报要求并避免出现任何误报。
  • 其他可能的聚合有 AVG()MIN()

基于维度指标进行筛选和拆分

在前面的表中,某些指标具有维度,例如 DatabaseNameState。 可以对具有维度的指标使用筛选拆分。 这些功能会显示各种指标段(或维度值)如何影响指标的整体值。 可以通过它们来识别可能的离群值。

  • 筛选:使用筛选可以选择要包含在图表中的维度值。 例如,在绘制 Sessions-by-State 指标的图表时,你可能想要显示空闲的连接。 您在“状态”维度中设置了“空闲”筛选器。
  • 拆分:使用拆分可以控制图表是针对维度的每个值显示单独的行,还是将值聚合为一行。 例如,可在所有会话中将 Sessions-by-State 指标显示为一行。 可以看到根据状态值分组的每个会话的单独行。 对“状态”维度应用拆分,以便查看单独的行。

以下示例演示了按“状态”维度进行拆分和按特定“状态”值进行筛选:

显示对指标和维度进行拆分和筛选示例的屏幕截图。

有关为维度指标设置图标的详细信息,请参阅指标图表示例

指标可视化

可以使用多个选项可视化 Azure Monitor 指标。

组件 Description 所需的训练和配置
概述页 大多数 Azure 服务都包含 Azure 门户中的 “概述 ”页,其中包含一个 “监视 ”部分,其中显示了最近常用的指标。 此视图适用于单个 Azure PostgreSQL 服务器的快速运行状况和性能检查。 自动收集平台指标。
无需任何配置。
指标浏览器 使用指标资源管理器以交互方式分析 Azure Monitor 指标并创建基于指标的警报。 它提供灵活的筛选、聚合和可视化功能。 - Azure 资源的平台指标自动可用。
- 启用数据收集后不需要其他配置。
- 访客指标需要 Azure Monitor 代理(仅限虚拟机)。
- 应用程序指标需要 Application Insights。
格拉法纳 对 Azure Monitor 指标和日志使用 Grafana 进行高级可视化和警报。 所有 Grafana 分发版都包括 Azure Monitor 数据源插件,可实现丰富的仪表板和跨指标关联。 建议熟悉 Grafana 概念。
可以使用预生成的 Azure PostgreSQL Grafana 仪表板简化设置,该仪表板允许在配置最少的情况下跨多个 Azure PostgreSQL 灵活服务器实例进行监视。

Azure Database for PostgreSQL 资源日志

这些日志来自数据平面级别的操作。

系统不会自动收集这些日志。 若要在受支持的外部位置收集这些日志,必须配置系统。 引入、保留和后续查询具有相关的成本。

这些日志按类别进行组织,这些类别分为类别组。

可以使用 诊断设置将以下日志流式传输到外部目标,例如 Log Analytics 工作区、存储帐户、事件中心或合作伙伴解决方案:

说明:PostgreSQL 服务器日志。
运行频率:10 秒。
类别名称:PostgreSQLLogs。
显示名称:PostgreSQL 服务器日志。
包含在类别组中:audit 和 allLogs。
资源特定表:PGSQLServerLogs。
流式传输到 AzureDiagnostics 时类别列的值:PostgreSQLLogs。
用于连接 AzureDiagnostics 和资源特定表中的事件的函数:_PGSQL_GetPostgresServerLogs。
其他要求:无。

说明:活动 PostgreSQL 会话的快照,其中显示了当前数据库连接的详细信息及其活动,包括会话元数据、计时和等待状态。
运行频率:5 分钟。
类别名称:PostgreSQLFlexSessions。
显示名称:PostgreSQL 会话数据。
包含在类别组中:audit 和 allLogs。
特定资源的表:PGSQLPgStatActivitySessions。
流式传输到 AzureDiagnostics 时类别列的值:PostgreSQLFlexSessions。
用于连接 AzureDiagnostics 和资源特定表中的事件的函数:_PGSQL_GetPgStatActivitySessions。
其他要求:无。

说明:PostgreSQL 查询存储的详细查询性能统计信息。
运行频率:5 分钟(介于 1 到 5 之间 pg_qs.interval_length_minutes )。 指定的 pg_qs.interval_length_minutes分钟数(如果 pg_qs.interval_length_minutes 大于 5 分钟)。
类别名称:PostgreSQLFlexQueryStoreRuntime。
显示名称:PostgreSQL 查询存储运行时。
包含在类别组中:audit 和 allLogs。
资源特定表:PGSQLQueryStoreRuntime。
流式传输到 AzureDiagnostics 时类别列的值:PostgreSQLFlexQueryStoreRuntime。
用于连接 AzureDiagnostics 和资源特定表中的事件的函数:_PGSQL_GetQueryStoreRuntime。
其他要求pg_qs.query_capture_mode 必须设置为 topall

说明:查询在等待哪些事件以及等待的时间有多长。
运行频率:5 分钟(介于 1 到 5 之间 pg_qs.interval_length_minutes )。 指定的 pg_qs.interval_length_minutes分钟数(如果 pg_qs.interval_length_minutes 大于 5 分钟)。
类别名称:PostgreSQLFlexQueryStoreWaitStats。
显示名称:PostgreSQL 查询存储等待统计信息。
包含在类别组中:audit 和 allLogs。
资源特定表:PGSQLQueryStoreWaits。
在流式传输到 AzureDiagnostics 时的类别列值:PostgreSQLFlexQueryStoreWaitStats。
用于连接来自 AzureDiagnostics 和资源特定表的事件的函数:_PGSQL_GetQueryStoreWaits。
其他要求pg_qs.query_capture_mode 必须设置为任一 topall,并且 pgms_wait_sampling.query_capture_mode 必须设置为 on

说明:有关数据库中所有表的架构级聚合统计信息,汇总表活动和维护指标。
运行频率:30 分钟。
类别名称:PostgreSQLFlexTableStats。
显示名称:PostgreSQL Autovacuum 和架构统计信息。
包含在类别组中:audit 和 allLogs。
资源特定表:PGSQLAutovacuumStats。
流式传输到 AzureDiagnostics 时类别列的值:PostgreSQLFlexTableStats。
用于连接来自 AzureDiagnostics 和资源特定表的事件的函数:_PGSQL_GetAutovacuumStats。
其他要求:无。

说明:事务 ID(XID)和多重事务 ID 年龄与回绕风险的数据库级视图,以及自动清理和紧急清理操作的阈值。
运行频率:30 分钟。
类别名称:PostgreSQLFlexDatabaseXacts。
显示名称:PostgreSQL 剩余事务。
包含在类别组中:audit 和 allLogs。
资源特定表:PGSQLDbTransactionsStats。
传输至 AzureDiagnostics 时“类别”列的值:PostgreSQLFlexDatabaseXacts。
用于连接 AzureDiagnostics 和资源特定表中的事件的函数:_PGSQL_GetDbTransactionsStats。
其他要求:无。

说明:内置 PgBouncer 日志。
运行频率:10 秒。
类别名称:N/A。
显示名称:N/A。
包含在类别组中:audit 和 allLogs。
资源特定表:PGSQLPgBouncer。
流式传输到 AzureDiagnostics 时类别列的值:PostgreSQLFlexPGBouncer。
用于连接 AzureDiagnostics 和资源特定表中的事件的函数:_PGSQL_GetPgBouncerLogs。
其他要求:必须通过将 pgbouncer.enabled 设定为 on,在服务器上启用内置 PgBouncer。

日志可视化效果

组件 Description 所需的训练和配置
Log Analytics 通过使用 Log Analytics,可以创建日志查询以交互方式处理日志数据并创建日志查询警报。 你需要一些训练来熟悉查询语言,但你可以针对常见要求使用预生成查询。

服务器日志

使用 Azure Database for PostgreSQL 灵活服务器实例中的服务器日志功能,可以启用、配置和 下载服务器日志。 这些日志对于对服务器活动进行故障排除和执行历史分析至关重要。 默认情况下,服务器日志功能处于禁用状态。 但是,启用该功能后,Azure Database for PostgreSQL 灵活服务器实例将开始捕获所选日志类型的事件并将其写入文件。 然后,你可使用 Azure 门户或 Azure CLI 下载文件,以帮助进行故障排除。

服务器日志保留期

服务器日志的最小保留期为一天,最长保留期为 7 天。 如果超出此限制,将删除最早的日志,以便为新日志腾出空间。 有关启用和管理服务器日志的详细信息,请参阅配置捕获 PostgreSQL 服务器日志和主要版本升级日志