在Azure Database for PostgreSQL灵活服务器中配置和访问日志

Azure Database for PostgreSQL灵活服务器中的每个节点都提供对日志的访问权限。 可以将这些日志发送到自己的Log Analytics工作区。 使用日志来识别、排查和修复配置错误和性能问题。

配置诊断设置的步骤

使用 Azure 门户

  1. 在资源菜单中的 “监视 ”部分下,选择“ 诊断设置”。 选择“添加诊断设置”。

    显示“诊断设置”页的屏幕截图,其中没有条目。

  2. 诊断设置名称中,输入设置的名称。

    显示“诊断设置配置”页的屏幕截图,其中显示了设置的名称。

  3. 目标详细信息下,选择发送到Log Analytics工作区。 在“订阅”中,选择包含Log Analytics工作区的订阅。 在Log Analytics工作区中,选择要将日志或指标流式传输到的工作区。 对于目标表,请选择资源特定,而不是Azure 诊断。 若要详细了解两者之间的差异,请参阅Azure Monitor中的资源日志。 如果您想将所选类别发送到其他目标类型,作为替代方案或除此之外,请在 目标详细信息 下选择所需选项,并进行相应配置。

    显示“诊断设置配置”页的屏幕截图,其中选择了Log Analytics工作区。

  4. 若要将日志流式传输到所选工作区,请选择各个类别(PostgreSQL 服务器日志、PostgreSQL 会话数据、PostgreSQL 查询存储运行时、PostgreSQL 查询存储等待统计信息、PostgreSQL Autovacuum 和架构统计信息、PostgreSQL 剩余事务),或从类别组(审核或 allLogs)中选择这两个复选框中的任何一个。 选择任一类别组或两个类别组等效于选择所有单个类别。 若要详细了解每个单独的日志类别,请参阅 日志。 若要将指标流式传输到所选工作区,请在“ 指标”下选择 “AllMetrics”。

    显示“诊断设置配置”页的屏幕截图,其中选择了所有日志类别和指标。

  5. 选择 “保存” 以应用更改。 保存更改后,关闭包含所有配置详细信息的页面,以返回到“诊断设置”页。

    显示包含一个条目的“诊断设置”页的屏幕截图。

    重要

    如果两者的目标相同,则不能为同一灵活服务器选择多个诊断设置上的一个类别。 但是,只要目标不同,就可以在不同的诊断设置上为同一灵活服务器选择同一类别。

  6. 可以为任何给定资源创建最多五个诊断设置。 达到该限制时,添加诊断设置的选项将替换为指示你达到限制的消息。

    显示“诊断设置”页的屏幕截图,其中包含允许的最大条目。

访问资源日志

访问日志的方式取决于所选终结点。 有关 Azure 存储,请参阅日志存储帐户一文。 有关事件中心,请参阅流式传输 Azure 日志一文。

对于Log Analytics工作区,请将日志发送到所选工作区。 如果将诊断设置配置为使用特定于资源的表(这是建议的方法),请参阅[Azure Database for PostgreSQL资源日志],以查看日志的类别名称与其相应的资源特定表之间的映射。 另一方面,如果将诊断设置配置为使用Azure诊断作为目标表,则来自所有类别的所有事件都位于同一 AzureDiagnostics 表中。

若要了解有关查询和警报的详细信息,请参阅Azure Monitor 中的 Log Analytics概述

以下查询是一些可供您尝试以开始使用的示例。 还可以根据查询配置警报。

过去一天中一台服务器的服务器日志中的所有事件

如果你用于流式传输 PostgreSQLLogs 类别的诊断设置的目标位置是资源特定表,请使用以下查询:

PGSQLServerLogs
| where LogicalServerName == "example-flexible-server"
| where TimeGenerated > ago(1d)

如果是 Azure 诊断,请使用以下查询:

AzureDiagnostics
| where LogicalServerName_s == "example-flexible-server"
| where Category == "PostgreSQLLogs"
| where TimeGenerated > ago(1d)

过去 6 小时内,对任何将日志流式传输到此工作区的服务器的所有远程连接尝试

如果你用于流式传输 PostgreSQLLogs 类别的诊断设置的目标位置是资源特定表,请使用以下查询:

PGSQLServerLogs
| where Message contains "connection received" and Message !contains "host=127.0.0.1"
| where TimeGenerated > ago(6h)

如果是 Azure 诊断,请使用以下查询:

AzureDiagnostics
| where Message contains "connection received" and Message !contains "host=127.0.0.1"
| where Category == "PostgreSQLLogs" and TimeGenerated > ago(6h)

过去 30 分钟内从 pg_stat_activity 系统视图为某台服务器采集的会话

如果用于流式传输 PostgreSQLFlexSessions 类别的诊断设置的目标是资源专用表,请使用以下查询:

PGSQLPgStatActivitySessions
| where LogicalServerName == "example-flexible-server"
| where TimeGenerated > ago(30m)

如果是 Azure 诊断,请使用以下查询:

AzureDiagnostics
| where LogicalServerName_s == "example-flexible-server"
| where Category =='PostgreSQLFlexSessions'
| where TimeGenerated > ago(30m)

过去 2 天内一台服务器的查询存储运行时统计信息

如果正在从某个诊断设置中流式传输 PostgreSQLFlexQueryStoreRuntime 类别,且该诊断设置的目标为资源特定表,请使用以下查询:

PGSQLQueryStoreRuntime
| where LogicalServerName == "example-flexible-server"
| where TimeGenerated > ago(2d)

如果是 Azure 诊断,请使用以下查询:

AzureDiagnostics
| where LogicalServerName_s == "example-flexible-server"
| where Category =='PostgreSQLFlexQueryStoreRuntime'
| where TimeGenerated > ago(2d)

过去 3 天内单个服务器的 Query Store 等待统计信息

如果将 PostgreSQLFlexQueryStoreWaitStats 类别流式传输到诊断设置的目标资源特定表中,请使用以下查询:

PGSQLQueryStoreWaits
| where LogicalServerName == "example-flexible-server"
| where TimeGenerated > ago(3d)

If it's Azure diagnostics, use the following query:

```kusto
AzureDiagnostics
| where LogicalServerName_s == "example-flexible-server"
| where Category =='PostgreSQLFlexQueryStoreWaitStats'
| where TimeGenerated > ago(3d)

过去 5 小时内单台服务器的 Autovacuum 和模式统计信息

如果正在从某个诊断设置流式传输 PostgreSQLFlexTableStats 类别,且其目标是资源特定表,请使用以下查询:

PGSQLAutovacuumStats
| where LogicalServerName == "example-flexible-server"
| where TimeGenerated > ago(5h)

如果是 Azure 诊断,请使用以下查询:

AzureDiagnostics
| where LogicalServerName_s == "example-flexible-server"
| where Category =='PostgreSQLFlexTableStats'
| where TimeGenerated > ago(1d)

过去一天内,同一服务器上各数据库距离触发紧急 autovacuum 或回卷保护前的剩余事务数

如果从中流式传输 PostgreSQLFlexDatabaseXacts 类别的诊断设置的目标位置是资源专用表,请使用以下查询:

PGSQLDbTransactionsStats
| where LogicalServerName == "example-flexible-server"
| where TimeGenerated > ago(1d)

如果是 Azure 诊断,请使用以下查询:

AzureDiagnostics
| where LogicalServerName_s == "example-flexible-server"
| where Category =='PostgreSQLFlexDatabaseXacts'
| where TimeGenerated > ago(1d)

有关更高级的查询示例,请访问 Log Analytics 工作区的查询中心,并按资源类型等于Azure Database for PostgreSQL Flexible Servers进行筛选。

显示筛选的查询中心的屏幕截图,其中显示了Log Analytics工作区中Azure Database for PostgreSQL灵活的服务器查询。