PostgreSQL の統合により、データベースのサイズ、バックエンドの数、オペレーション数など、データベースの使用状況に関する指標が収集されます。この統合では、PostgreSQL ログも収集され、JSON ペイロードが生成されます。この結果には、ロール、ユーザー、レベル、メッセージのフィールドが含まれます。
PostgreSQL の詳細については、PostgreSQL のドキュメントをご覧ください。
前提条件
PostgreSQL テレメトリーを収集するには、Ops エージェントをインストールする必要があります。
- 指標の場合は、バージョン 2.9.0 以降をインストールします。バージョン 2.21.0 で指標が追加されました。
- ログの場合は、バージョン 2.9.0 以降をインストールします。
この統合は、PostgreSQL バージョン 10.18 以降をサポートしています。
PostgreSQL インスタンスを構成する
postgresql
レシーバーは、root
ユーザーとして Unix ソケットと Unix 認証を使用し、デフォルトでローカルの postgresql
サーバーに接続します。
PostgreSQL 用に Ops エージェントを構成する
Ops エージェントの構成のガイドに従って、PostgreSQL インスタンスからテレメトリーを収集するために必要な要素を追加し、エージェントを再起動します。
構成の例
次のコマンドは、PostgreSQL のテレメトリーを収集して取り込み、Ops エージェントを再起動するための構成を作成します。
ログの収集を構成する
PostgreSQL からログを取り込むには、PostgreSQL が生成するログのレシーバを作成してから、新しいレシーバ用のパイプラインを作成する必要があります。
postgresql_general
ログのレシーバを構成するには、次のフィールドを指定します。
フィールド | デフォルト | 説明 |
---|---|---|
exclude_paths |
include_paths の照合で除外するファイルシステム パスのパターンのリスト。 |
|
include_paths |
[/var/log/postgresql/postgresql*.log, /var/lib/pgsql/data/log/postgresql*.log, /var/lib/pgsql/*/data/log/postgresql*.log] |
各ファイルのテーリングで読み込むファイルシステムのパスのリスト。パスにはワイルドカード(* )を使用できます。 |
record_log_file_path |
false |
true に設定すると、ログレコードの取得元のファイルのパスが agent.googleapis.com/log_file_path ラベルの値として出力ログエントリに表示されます。ワイルドカードを使用する場合、レコードを取得したファイルのパスのみが記録されます。 |
type |
値には postgresql_general を指定してください。 |
|
wildcard_refresh_interval |
60s |
include_paths のワイルドカード ファイル パスの更新間隔。time.ParseDuration によって解析可能な時間として指定します(例: 30s または 2m )。このプロパティは、ログファイルのローテーションがデフォルトよりも短い間隔で実施され、ロギングのスループットが高い場合に有用な可能性があります。 |
ログの内容
logName
は、構成で指定されたレシーバ ID から取得されます。LogEntry
内の詳細なフィールドは、次のとおりです。
postgresql_general
ログの LogEntry
には次のフィールドが含まれます。
フィールド | タイプ | 説明 |
---|---|---|
jsonPayload.level |
文字列 | ログの重大度、または一部のログのデータベース操作タイプ |
jsonPayload.message |
文字列 | データベース アクションのログ |
jsonPayload.role |
文字列 | ログに記録されたアクションの認証済みのロール(該当する場合) |
jsonPayload.tid |
数値 | ログの生成元のスレッド ID |
jsonPayload.user |
文字列 | ログに記録されたアクションの認証済みユーザー(該当する場合) |
severity |
文字列(LogSeverity ) |
ログエントリ レベル(変換済み)。 |
指標の収集を構成する
PostgreSQL から指標を取り込むには、PostgreSQL が生成する指標のレシーバを作成してから、新しいレシーバ用のパイプラインを作成する必要があります。
このレシーバでは、複数のエンドポイントのモニタリングなど、構成で複数のインスタンスを使用することはできません。このようなインスタンスはすべて同じ時系列に書き込まれるため、Cloud Monitoring ではインスタンスを区別できません。
postgresql
指標のレシーバーを構成するには、次のフィールドを指定します。
フィールド | デフォルト | 説明 |
---|---|---|
ca_file |
CA 証明書のパス。クライアントとして、これによりサーバー証明書が検証されます。空の場合、レシーバはシステムルート CA を使用します。 | |
cert_file |
mTLS で必要な接続に使用する TLS 証明書のパス。 | |
collection_interval |
60s |
time.Duration 値(例: 30s 、5m )。 |
endpoint |
/var/run/postgresql/.s.PGSQL.5432 |
ホスト名:ポートまたはソケットパス(/ で始まり、postgresql サーバーとの接続に使用されます)。 |
insecure |
true |
セキュア TLS 接続を使用するかどうかを設定します。false に設定すると、TLS が有効になります。 |
insecure_skip_verify |
false |
証明書の検証をスキップするかどうかを指定します。insecure が true に設定されている場合、insecure_skip_verify 値は使用されません。 |
key_file |
mTLS で必要な接続に使用する TLS キーのパス。 | |
password |
サーバーへの接続に使用するパスワード。 | |
type |
値は postgresql にする必要があります。 |
|
username |
サーバーへの接続に使用するユーザー名。 |
モニタリング対象
次の表に、Ops エージェントが PostgreSQL インスタンスから収集する指標の一覧を示します。
指標タイプ | |
---|---|
種類、タイプ モニタリング対象リソース |
ラベル |
workload.googleapis.com/postgresql.backends
|
|
GAUGE 、INT64 gce_instance |
database
|
workload.googleapis.com/postgresql.bgwriter.buffers.allocated
|
|
CUMULATIVE 、INT64 gce_instance |
|
workload.googleapis.com/postgresql.bgwriter.buffers.writes
|
|
CUMULATIVE 、INT64 gce_instance |
source
|
workload.googleapis.com/postgresql.bgwriter.checkpoint.count
|
|
CUMULATIVE 、INT64 gce_instance |
type
|
workload.googleapis.com/postgresql.bgwriter.duration
|
|
CUMULATIVE 、INT64 gce_instance |
type
|
workload.googleapis.com/postgresql.bgwriter.maxwritten
|
|
CUMULATIVE 、INT64 gce_instance |
|
workload.googleapis.com/postgresql.blocks_read
|
|
CUMULATIVE 、INT64 gce_instance |
database
table
source
|
workload.googleapis.com/postgresql.commits
|
|
CUMULATIVE 、INT64 gce_instance |
database
|
workload.googleapis.com/postgresql.connection.max
|
|
GAUGE 、INT64 gce_instance |
|
workload.googleapis.com/postgresql.database.count
|
|
GAUGE 、INT64 gce_instance |
|
workload.googleapis.com/postgresql.db_size
|
|
GAUGE 、INT64 gce_instance |
database
|
workload.googleapis.com/postgresql.index.scans
|
|
CUMULATIVE 、INT64 gce_instance |
database
table
index
|
workload.googleapis.com/postgresql.index.size
|
|
GAUGE 、INT64 gce_instance |
database
table
index
|
workload.googleapis.com/postgresql.operations
|
|
CUMULATIVE 、INT64 gce_instance |
database
table
operation
|
workload.googleapis.com/postgresql.replication.data_delay
|
|
GAUGE 、INT64 gce_instance |
replication_client
|
workload.googleapis.com/postgresql.rollbacks
|
|
CUMULATIVE 、INT64 gce_instance |
database
|
workload.googleapis.com/postgresql.rows
|
|
GAUGE 、INT64 gce_instance |
database
state
table
|
workload.googleapis.com/postgresql.table.count
|
|
GAUGE 、INT64 gce_instance |
database
|
workload.googleapis.com/postgresql.table.size
|
|
GAUGE 、INT64 gce_instance |
database
table
|
workload.googleapis.com/postgresql.table.vacuum.count
|
|
CUMULATIVE 、INT64 gce_instance |
database
table
|
workload.googleapis.com/postgresql.wal.age
|
|
GAUGE 、INT64 gce_instance |
|
workload.googleapis.com/postgresql.wal.lag
|
|
GAUGE 、INT64 gce_instance |
operation
replication_client
|
構成を確認する
このセクションでは、PostgreSQL レシーバが正しく構成されていることを確認する方法について説明します。Ops エージェントがテレメトリーの収集を開始するまでに 1~2 分かかる場合があります。
PostgreSQL ログが Cloud Logging に送信されていることを確認するには、次のようにします。
-
Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Logging] の結果を選択します。
- エディタに次のクエリを入力し、[クエリを実行] をクリックします。
resource.type="gce_instance" log_id("postgresql_general")
PostgreSQL 指標が Cloud Monitoring に送信されていることを確認するには、次のようにします。
-
Google Cloud コンソールで、[leaderboardMetrics Explorer] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] である結果を選択します。
- クエリビルダー ペインのツールバーで、[codeMQL] または [codeMQL] という名前のボタンを選択します。
- [MQL] 切り替えで [MQL] が選択されていることを確認します。言語切り替えボタンは、クエリの書式設定と同じツールバーにあります。
- エディタに次のクエリを入力し、[クエリを実行] をクリックします。
fetch gce_instance | metric 'workload.googleapis.com/postgresql.backends' | every 1m
ダッシュボードを表示
PostgreSQL 指標を表示するには、グラフまたはダッシュボードが構成されている必要があります。 PostgreSQL インテグレーションには、1 つ以上のダッシュボードが含まれています。インテグレーションを構成して Ops エージェントが指標データの収集を開始すると、ダッシュボードは自動的にインストールされます。
インテグレーションをインストールすることなく、ダッシュボードの静的プレビューを表示することもできます。
インストールされているダッシュボードを表示する手順は次のとおりです。
-
Google Cloud コンソールで [ダッシュボード] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] である結果を選択します。
- [ダッシュボード リスト] タブを選択し、[統合] カテゴリを選択します。
- 表示するダッシュボードの名前をクリックします。
インテグレーションを構成してもダッシュボードがインストールされていない場合は、Ops エージェントが実行されていることを確認します。ダッシュボードにグラフの指標データがない場合、ダッシュボードのインストールは失敗します。Ops エージェントが指標の収集を開始した後に、ダッシュボードがインストールされます。
ダッシュボードの静的プレビューを表示する手順は次のとおりです。
-
Google Cloud コンソールで [統合] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] である結果を選択します。
- [デプロイメント プラットフォーム] フィルタの [Compute Engine] をクリックします。
- PostgreSQL のエントリを見つけて [詳細を表示] をクリックします。
- [ダッシュボード] タブを選択すると、静的プレビューが表示されます。ダッシュボードがインストールされている場合は、[ダッシュボードを表示] をクリックして移動できます。
Cloud Monitoring のダッシュボードについて詳しくは、ダッシュボードとグラフをご覧ください。
[インテグレーション] ページの使用方法については、インテグレーションを管理するをご覧ください。
アラート ポリシーをインストールする
アラート ポリシーは、指定した条件が成立した際に通知するように Cloud Monitoring に指示します。 PostgreSQL インテグレーションには、使用する 1 つ以上のアラート ポリシーが含まれています。これらのアラート ポリシーは、Monitoring の [インテグレーション] ページで表示してインストールできます。
使用可能なアラート ポリシーの説明を表示してインストールする手順は次のとおりです。
-
Google Cloud コンソールで [統合] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] である結果を選択します。
- PostgreSQL のエントリを見つけて [詳細を表示] をクリックします。
- [アラート] タブを選択します。このタブには、利用可能なアラート ポリシーの説明と、それらをインストールするためのインターフェースが表示されます。
- アラート ポリシーをインストールします。アラート ポリシーでは、アラートがトリガーされた通知の送信先を特定する必要があるため、インストール環境の情報が必要になります。アラート ポリシーをインストールする手順は次のとおりです。
- 利用可能なアラート ポリシーのリストから、インストールするアラート ポリシーを選択します。
[通知の構成] セクションで、1 つ以上の通知チャンネルを選択します。通知チャンネルの使用を無効にすることもできますが、無効にすると、アラート ポリシーは通知なく起動します。Monitoring でステータスを確認できますが、通知は受信しません。
通知チャンネルの詳細については、通知チャンネルを管理するをご覧ください。
- [ポリシーの作成] をクリックします。
Cloud Monitoring のアラート ポリシーの詳細については、アラートの概要をご覧ください。
[インテグレーション] ページの使用方法については、インテグレーションを管理するをご覧ください。
次のステップ
Ansible を使用して Ops エージェントをインストールし、サードパーティ アプリケーションを構成してサンプル ダッシュボードをインストールする方法については、Ops エージェントをインストールして、サードパーティ アプリケーションのトラブルシューティングを行うの動画をご覧ください。