Azure Database for PostgreSQLフレキシブル サーバー内のすべてのノードがログにアクセスできます。 これらのログは、独自のLog Analytics ワークスペースに送信できます。 ログを使用して、構成エラーとパフォーマンスの問題を特定、トラブルシューティング、修正します。
診断設定を構成する手順
Azure portal を使用します。
リソース メニューの [ 監視 ] セクションで、[ 診断設定] を選択します。 [診断設定の追加] を選択します。
[ 診断設定名] に、設定の名前を入力します。
[宛先の詳細] で、 [Log Analytics ワークスペースに送信する] を選択します。 [サブスクリプション] から、Log Analytics ワークスペースを含むサブスクリプションを選択します。 Log Analyticsワークスペースで、ログまたはメトリックをストリーミングするワークスペースを選択します。 [送信先テーブル] では、Azure diagnostics ではなく リソース固有 を選択します。 2 つの違いの詳細については、Azure Monitorのリソース ログを参照してください。 選択したカテゴリを、別の宛先タイプに送信する場合、または別の宛先タイプにも送信する場合は、宛先の詳細 で目的のオプションを選択し、それに応じて設定します。
選択したワークスペースにログをストリーミングするには、個々のカテゴリ (PostgreSQL サーバー ログ、PostgreSQL セッション データ、PostgreSQL クエリ ストア ランタイム、PostgreSQL クエリ ストア待機統計、PostgreSQL の自動バキュームとスキーマ統計、PostgreSQL の残りのトランザクション、PostgreSQL PgBouncer ログ、または PostgreSQL クエリ ストア SQL Text) を選択するか、2 つのチェック ボックスのいずれかを選択します。カテゴリ グループ (audit または allLogs) から。 いずれかのカテゴリ グループまたは両方のカテゴリ グループを選択することは、すべての個別のカテゴリを選択することと同じです。 個々のログ カテゴリの詳細については、「 ログ」を参照してください。 選択したワークスペースにメトリックをストリーミングするには、[ メトリック] で [AllMetrics] を選択します。
[保存] をクリックして変更を適用します。 変更を保存したら、すべての構成の詳細を含むページを閉じて、[診断設定] ページに戻ります。
Important
ターゲットが両方で同じ場合、同じフレキシブル サーバーに対して複数の診断設定で 1 つのカテゴリを選択することはできません。 ただし、宛先が異なる限り、同じフレキシブル サーバーの異なる診断設定で同じカテゴリを選択できます。
任意のリソースに対して最大 5 つの診断設定を作成できます。 この制限に達すると、診断設定を追加するオプションは、制限に達したことを示すメッセージに置き換えられます。
リソース ログへのアクセス
ログにアクセスする方法は、選択したエンドポイントによって異なります。 Azure Storage については、ログ ストレージ アカウントに関する記事を参照してください。 Event Hubs の場合は、Azure ログのストリーミングに関する記事を参照してください。
Log Analyticsワークスペースの場合は、選択したワークスペースにログを送信します。 推奨される方法であるリソース固有のテーブルを使用するように診断設定を構成する場合は、[リソース ログのAzure Database for PostgreSQL] を参照して、ログのカテゴリ名とそれに対応するリソース固有テーブル間のマッピングを確認してください。 一方、Azure診断を宛先テーブルとして使用するように診断設定を構成した場合、すべてのカテゴリのすべてのイベントが同じ AzureDiagnostics テーブルに格納されます。
クエリとアラートの詳細については、「Azure Log Analyticsの概要」を参照してください。
次のクエリは、開始を試みることができるいくつかの例です。 クエリに基づいてアラートを構成することもできます。
最後の日の 1 台のサーバーのサーバー ログ内のすべてのイベント
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 分間に 1 台のサーバー 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 日間の 1 台のサーバーのクエリ ストアのランタイム統計
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 日間のあるサーバーにおける統計を待機します
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)
過去 3 日間の 1 台のサーバーのクエリ ストア内のクエリ文字列
PostgreSQLQueryStoreSqlText カテゴリのストリーミング元の診断設定の宛先がリソース固有のテーブルである場合は、次のクエリを使用します。
PGSQLQueryStoreQueryText
| where LogicalServerName == "example-flexible-server"
| where TimeGenerated > ago(3d)
Important
複数の理由から、利用可能ないずれのカテゴリについても、Azure Diagnostics の宛先テーブルを使用することは強く非推奨です。 ただし、PostgreSQLQueryStoreSqlText カテゴリでは特に重要です。 リソース固有のテーブルがAzure診断よりもはるかに優れている理由については、Log Analytics ワークスペースのコレクション モードを参照してください。
過去 5 時間の 1 台のサーバーの自動バキュームとスキーマ統計
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)
過去 1 日間に、1 台のサーバー内の各データベースについて、緊急オートバキュームまたはラップ アラウンド保護が実行されるまでの残りのトランザクション数
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 フレキシブル サーバーと等しいでフィルター処理します。