適用於 PostgreSQL 的 Azure 資料庫記錄 - 單一伺服器

適用於:適用於 PostgreSQL 的 Azure 資料庫 - 單一伺服器

重要

適用於 PostgreSQL 的 Azure 資料庫 - 單一伺服器位於淘汰路徑上。 強烈建議您升級至 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器。 如需移轉至 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器的詳細資訊,請參閱單一伺服器 適用於 PostgreSQL 的 Azure 資料庫 發生什麼事?

適用於 PostgreSQL 的 Azure 資料庫 可讓您設定及存取 Postgres 的標準記錄。 這些記錄可用來識別、疑難排解和修復設定錯誤和次佳效能。 您可以設定和存取的記錄資訊包括錯誤、查詢資訊、自動資料清理記錄、連線和檢查點。 (無法使用事務歷史記錄的存取權)。

稽核記錄是透過PostgreSQL擴充功能 pgaudit 提供。 若要深入瞭解,請流覽 稽核概念 一文。

設定記錄

您可以使用記錄伺服器參數在伺服器上設定 Postgres 標準記錄。 在每個 適用於 PostgreSQL 的 Azure 資料庫 伺服器上,log_checkpointslog_connections預設為開啟。 您可以調整以符合記錄需求的其他參數:

適用於 PostgreSQL 的 Azure 資料庫 - 記錄參數

若要深入瞭解 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 入口網站 啟用資源記錄:

  1. 在入口網站中,移至 Postgres 伺服器的導覽功能表中的 [診斷 設定]。
  2. 選取 [ 新增診斷設定]。
  3. 將這個設定命名為 。
  4. 選取您慣用的端點(記憶體帳戶、事件中樞、記錄分析)。
  5. 選取記錄類型 PostgreSQL 伺服器記錄
  6. 儲存您的設定。

若要使用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
首碼 記錄行的前置詞

下一步