適用於 PostgreSQL 的 Azure 資料庫記錄 - 單一伺服器
適用於:適用於 PostgreSQL 的 Azure 資料庫 - 單一伺服器
重要
適用於 PostgreSQL 的 Azure 資料庫 - 單一伺服器位於淘汰路徑上。 強烈建議您升級至 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器。 如需移轉至 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器的詳細資訊,請參閱單一伺服器適用於 PostgreSQL 的 Azure 資料庫發生什麼情況?
適用於 PostgreSQL 的 Azure 資料庫可讓您設定及存取 Postgres 的標準記錄。 這些記錄可用於識別及修復設定錯誤與次佳效能,並對其進行疑難排解。 您可以設定及存取的記錄資訊包括錯誤、查詢資訊、自動清理記錄、連線與檢查點。 (無法存取交易記錄。)
稽核記錄會透過 PostgreSQL 延伸模組 pgaudit 提供。 若要深入了解,請瀏覽稽核概念一文。
設定記錄
您可以使用記錄伺服器參數來設定伺服器上的 Postgres 標準記錄功能。 在每個適用於 PostgreSQL 的 Azure 資料庫伺服器上,log_checkpoints
和 log_connections
預設為開啟。 有其他可供您調整來符合您記錄需求的參數:
若要深入了解 Postgres 記錄參數,請瀏覽 Postgres 文件的記錄時機 (英文) 與 記錄內容 (英文) 章節。 並非大部分 Postgres 記錄參數都可用於在適用於 PostgreSQL 的 Azure 資料庫中進行設定。
若要了解如何設定適用於 PostgreSQL 的 Azure 資料庫中的參數,請參閱入口網站文件或 CLI 文件。
注意
設定大量記錄 (例如:陳述式記錄) 可能會增加大量效能額外負荷。
存取 .log 檔
適用於 PostgreSQL 的 Azure 資料庫預設記錄格式為 .log。 此記錄檔中的範例行看起來如下:
2019-10-14 17:00:03 UTC-5d773cc3.3c-LOG: connection received: host=101.0.0.6 port=34331 pid=16216
適用於 PostgreSQL 的 Azure 資料庫提供 .log 檔案的短期儲存位置。 新的檔案每隔 1 小時或 100 MB 開始一次,依前者開始。 記錄會附加至目前檔案,因為其是從 Postgres 發出。
您可以使用 log_retention_period
參數,來設定此短期記錄檔儲存體的保留期。 預設值為 3 天;最大值為 7 天。 短期儲存位置最多可以保留 1 GB 的記錄檔。 在 1 GB 之後,不論保留期間為何,最舊的檔案都會遭到刪除,以便為新記錄提供空間。
如需長期保留記錄和記錄分析,您可以下載 .log 檔案並將其移至協力廠商服務。 您可以使用 Azure 入口網站、Azure CLI 來進行此作業。 或者,您也可以設定 Azure 監視器診斷設定,自動發出記錄 (以 JSON 格式) 到長期位置。 在下列章節中深入了解此選項。
您可以將 logging_collector
參數設定為 OFF,以停止產生 .log 檔案。 如果您使用 Azure 監視器診斷設定,建議您關閉 .log 檔案產生。 此設定會降低其他記錄的效能影響。
注意
重新啟動伺服器以套用此變更。
資源記錄
適用於 PostgreSQL 的 Azure 資料庫會與 Azure 監視器診斷設定整合。 診斷設定可讓您以 JSON 格式將 Postgres 記錄傳送至 Azure 監視器記錄,以進行分析和警示、傳送至事件中樞以進行串流,以及傳送至 Azure 儲存體以進行封存。
重要
此伺服器記錄的診斷功能僅適用於一般用途和記憶體最佳化定價層。
設定診斷設定
您可以使用 Azure 入口網站、CLI、REST API 和 PowerShell,來啟用 Postgres 伺服器的診斷設定。 要選取的記錄類別是 PostgreSQLLogs。 (如果您使用查詢存放區,則可以設定其他記錄。)
若要使用 Azure 入口網站啟用資源記錄:
- 在入口網站中,移至 Postgres 伺服器導覽功能表中的 [診斷設定]。
- 選取 [新增診斷設定]。
- 命名此設定。
- 選取您慣用的端點 (儲存體帳戶、事件中樞、記錄分析)。
- 選取 記錄類型 PostgreSQL 伺服器記錄。
- 儲存您的設定。
若要使用 PowerShell、CLI 或 REST API 啟用資源記錄,請造訪診斷設定文章。
存取資源記錄
您存取記錄的方式取決於您選擇的端點。 針對 Azure 儲存體,請參閱記錄儲存體帳戶一文。 針對事件中樞,請參閱串流 Azure 記錄一文。
針對 Azure 監視器記錄,記錄會傳送至您選取的工作區。 Postgres 記錄會使用 AzureDiagnostics 收集模式,以便可從 AzureDiagnostics 資料表加以查詢。 下表中的欄位說明如下。 在 Azure 監視器記錄查詢概觀中深入了解查詢和警示。
以下是您可以嘗試開始使用的查詢。 您可以根據查詢來設定警示。
搜尋過去一天中特定伺服器的所有 Postgres 記錄
AzureDiagnostics
| where LogicalServerName_s == "myservername"
| where Category == "PostgreSQLLogs"
| where TimeGenerated > ago(1d)
搜尋所有非 localhost 連線嘗試
AzureDiagnostics
| where Message contains "connection received" and Message !contains "host=127.0.0.1"
| where Category == "PostgreSQLLogs" and TimeGenerated > ago(6h)
上述查詢會顯示此工作區中任何 Postgres 伺服器記錄過去 6 小時的結果。
記錄格式
下列資料表描述 PostgreSQLLogs 類型的欄位。 視您選擇的輸出端點而定,所含欄位及其出現順序可能會有所不同。
欄位 | 說明 |
---|---|
TenantId | 您的租用戶識別碼 |
SourceSystem | Azure |
TimeGenerated [UTC] | 以 UTC 記錄記錄時的時間戳記 |
類型 | 記錄的類型。 一律為 AzureDiagnostics |
SubscriptionId | 伺服器所屬訂用帳戶的 GUID |
ResourceGroup | 伺服器所屬資源群組的名稱 |
ResourceProvider | 資源提供者名稱。 一律為 MICROSOFT.DBFORPOSTGRESQL |
ResourceType | Servers |
ResourceId | 資源 URI |
資源 | 伺服器的名稱 |
類別 | PostgreSQLLogs |
OperationName | LogEvent |
errorLevel | 記錄層級,範例:LOG、ERROR、NOTICE |
訊息 | 主要記錄訊息 |
網域 | 伺服器版本,範例:postgres-10 |
詳細資料 | 次要記錄訊息 (如果適用) |
ColumnName | 資料行的名稱 (如果適用) |
SchemaName | 結構描述的名稱 (如果適用) |
DatatypeName | 資料類型的名稱 (如果適用) |
LogicalServerName | 伺服器的名稱 |
_ResourceId | 資源 URI |
前置詞 | 記錄行的前置詞 |
下一步
- 了解如何從 Azure 入口網站 或 Azure CLI 存取記錄。
- 深入了解 Azure 監視器價格。
- 深入了解稽核記錄