PostgreSQL からのログとメトリクスの収集
PostgreSQL 用の Sumo Logic アプリケーションは、データベースのログおよびメトリクスのモニタリングに使用されます。アプリケーションは、事前定義のダッシュボードでの分析に使用するログ ファイルを、ローカル システムから収集します。ログにより、データベース アクティビティ、ユーザ アクティビティ、被接続数、クエリ実行時間、エラーをモニタリングできます。メトリクスにより、データベース リソースの利用状況とスループットのパフォーマンスをモニタリングできます。
このページでは、ログ収集用の postgres.conf ファイルをカスタマイズする手順と、PostgreSQL が配置されているサーバに collectd をインストールして設定する手順を説明します。リンクをクリックして、直接トピックに移動してください。
ログ タイプ
PostgreSQL 用 Sumo Logic アプリケーションは、データベース サーバ上のローカルのログ ファイルを使用します。詳細については、PostgreSQL のログに関するドキュメントの「logging_collector」セクションを参照してください。
ログ メッセージのサンプル
2018-10-29 20:33:44 UTC [15860-27753] user@backend_proc LOG: duration: 0.092 ms statement: SELECT extract(seconds from (now() - pg_last_xact_replay_timestamp())) AS time_lag; 2018-10-29 20:33:44 UTC [15859-27754] user@backend_db LOG: duration: 0.182 ms statement: select datname, numbackends from pg_stat_database; 2018-10-29 20:33:44 UTC [15859-27755] user@backend_db LOG: duration: 1.457 ms statement: SELECT schemaname, relname, indexrelname, idx_scan, idx_tup_read, idx_tup_fetch FROM pg_stat_user_indexes;
クエリのサンプル
このセクションでは、メトリクスとログ両方のクエリのサンプルを示します。
メトリクス クエリ
次に示すのは、PostgreSQL 用 Sumo Logic アプリケーションの [Resource Utilization (リソースの使用状況)] ダッシュボードにある [Number of Server Processes by Data (データ別のサーバ プロセス数)] パネルからのサンプル クエリです。
_sourceCategory="postgres/metrics2" plugin=postgresql type=pg_numbackends
ログ クエリ
次に示すのは、PostgreSQL 用 Sumo Logic アプリケーションの [Security (セキュリティ)] ダッシュボードにある [Geo Location of Incoming Connections (受信接続のジオロケーション)] パネルからのサンプル クエリです。
_sourceCategory=postgres/logs connection | parse "connection received: host=* port=*" as ip,port | lookup latitude, longitude, country_code, country_name, region, city, postal_code from geo://location on ip = ip | count by latitude, longitude, country_code, country_name, region, city, postal_code | sort _count
PostgreSQL からのログの収集
このセクションでは、PostgreSQL からログを収集して Sumo Logic に取り込むように設定するプロセスを順を追って説明します。
必要条件:
-
data_directory データベースで PostgreSQL のローカルな postgresql.conf 設定ファイルを見つけます。詳細については、PostgreSQL のファイルの場所に関するドキュメントを参照してください。
-
PostgreSQL の postgresql.conf 設定ファイルのログ パラメータを変更します。
postgresql.conf ファイルを変更するには、次の手順を実行します。
- ターミナル ウィンドウでデータベース サーバに接続します。
- postgresql.conf 設定ファイルを開きます。
- ファイルの ERROR REPORTING AND LOGGING セクションで、次の設定パラメータを使用します。次のパラメータの詳細については、ここをクリックしてください。
log_destination = 'stderr' logging_collector = on log_directory = 'pg_log' log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log’ log_truncate_on_rotation = off log_rotation_age = 1d log_min_duration_statement = 0 log_connections = on log_duration = on log_hostname = on log_timezone = 'UTC'
4.postgresql.conf ファイルを保存し、postgres サーバを再起動します。
sudo service postgresql restart
Sumo Logic Collector をインストールするには、次の手順を実行します。
- Sumo Logic アカウントにログインします。
- Sumo Logic Collector をインストールします。
- ローカル ファイル Source を設定します。
以下の例では、次のログ ファイル パスの Ubuntu サーバを使用します。/var/lib/postgresql/9.5/main/pg_log/*.log
PostgreSQL からのメトリクスの収集
このセクションでは、PostgreSQL メトリクスを収集し、データを Sumo Logic に送信するように Collectd を設定する方法を説明します。
Collectd では、次のプラグインを使用して PostgreSQL メトリクスを収集し Sumo Logic に送信します。
-
Collectd 用 PostgreSQL プラグイン - PostgreSQL データベースの SQL ステートメントに接続し、実行します。次に結果を読み取ります。返された値は、設定に応じて collectd の値リストに変換されます。詳細については、PostgreSQL プラグインに関する collectd の Wiki ページを参照してください。
-
Sumo Logic Collectd プラグイン - collectd-python プラグインに基づいて構築されており、collected メトリクスを Sumo Logic HTTP エンドポイントに送信します。
Collectd プラグインのインストールと設定
このセクションでは、Collectd プラグインをインストールして設定するプロセスを順を追って説明します。
Collectd プラグインをインストールして設定するには、次の手順を実行します。
- 手順 1、2、3 (オプション 1)、および 4 の手順に従い、Collectd プラグインと Sumo Logic Collectd プラグインをダウンロードしてインストールします。
-
vi などのエディタで collectd.conf という名前の Collectd 設定ファイル (例:
/etc/collectd/collectd.conf
) を開き、次の行を非コメント化します。
LoadPlugin python LoadPlugin postgresql TypesDB "/usr/share/collectd/types.db" "/etc/collectd/my_types.db"
-
Collectd 用 PostgreSQL プラグインを設定するには、collectd.conf ファイルで Plugin postgresql を検索し、ここから設定のサンプルをコピーして貼り付け、次の項目を指定します。
-
database_name: モニタリングするデータベースの名前
-
host: postgresql ホストの場所
-
username: クエリを実行する権限を持つデータベース ユーザ
-
password: データベース ユーザのパスワード
-
ここに、私たちの環境で Plugin postgresql 設定がどのようになるかのサンプルがあります。
- Sumo Logic Collectd プラグインを設定するには、collectd.conf ファイルで Plugin python を検索し、ここから設定のサンプルをコピーして貼り付け、次の項目を指定します。
-
URL: 上記の手順 1.4 で設定した Sumo Logic HTTP のエンドポイント URL
-
TypesDB: types.db へのパス。通常
/usr/share/collectd/types.db
になります。
-
ここに、私たちの環境で Sumo Logic CollectD 設定がどのようになるかのサンプルがあります。
- カスタム メトリクスを types.db に追加し、types.db ファイル (通常
/usr/share/collectd/types.db
に存在) を開き、pg_db_size を検索して、その行の後に次のカスタム メトリクスを追加します。
pg_db_table_size value:GAUGE:0:U pg_replication_lag value:GAUGE:0:U pg_backend_connections value:GAUGE:0:U pg_index_scan_stat value:GAUGE:0:U
ここでサンプルの types.db ファイルを確認できます。
- Collectd を再起動します。
service collectd stop service collectd start