要点OTel
filelog receiver を使用して、PostgreSQL のサーバーログ (CSVフォーマット) を ClickStack に収集し、可視化します。デモデータセットとあらかじめ用意されたダッシュボードが含まれます。既存のPostgreSQLとのインテグレーション
前提条件
- 稼働中の ClickStack インスタンス
- 既存の PostgreSQL 環境 (バージョン 9.6 以降)
- PostgreSQL の設定ファイルを変更できる権限
- ログファイルを保存するための十分なディスク容量
PostgreSQL のログ設定
PostgreSQL は複数のログ形式をサポートしています。OpenTelemetry で構造化された形でパースするには、一貫性があり、パースしやすい出力が得られる CSV format を推奨します。postgresql.conf ファイルは通常、次の場所にあります。- Linux (apt/yum):
/etc/postgresql/{version}/main/postgresql.conf - macOS (Homebrew):
/usr/local/var/postgres/postgresql.confまたは/opt/homebrew/var/postgres/postgresql.conf - Docker: 通常は、環境変数またはマウントした設定ファイルで構成します
postgresql.conf に以下の設定を追加または変更します。このガイドでは、信頼性の高い構造化パースを行うために、PostgreSQL の
csvlog フォーマットを使用します。stderr または jsonlog フォーマットを使用している場合は、それに合わせて OpenTelemetry collector の設定を調整する必要があります。カスタム OTel collector 設定を作成する
ClickStack では、カスタム構成ファイルをマウントして環境変数を設定することで、ベースの OpenTelemetry Collector 構成を拡張できます。カスタム構成は、HyperDX が OpAMP 経由で管理するベース構成にマージされます。次の内容で、postgres-logs-monitoring.yaml という名前のファイルを作成します。- PostgreSQL の CSV ログを標準の場所から読み取ります
- 複数行にまたがるログエントリを処理します (error は複数行に及ぶことがよくあります)
- 標準的な PostgreSQL ログのフィールドをすべて含む CSV フォーマットをパースします
- 元のログ時刻を保持するために timestamp を抽出します
- HyperDX でフィルタリングできるように
source: postgresql属性を追加します - 専用のパイプラインを介してログを ClickHouse exporter にルーティングします
- カスタム設定では、新しい receiver とパイプラインのみを定義します
- プロセッサ (
memory_limiter、transform、batch) とエクスポーター (clickhouse) は、ベースの ClickStack 設定ですでに定義されているため、名前で参照するだけです csv_parseroperator は、標準的な PostgreSQL の CSV ログフィールドをすべて構造化された属性として抽出します- この設定では、collector の再起動時にログを再取り込みしないよう
start_at: endを使用しています。テスト時は、過去のログをすぐに確認できるようstart_at: beginningに変更してください。 - PostgreSQL のログ directory の場所に合わせて
includepath を調整してください
ClickStack でカスタム設定を読み込むように構成する
既存の ClickStack デプロイでカスタム collector 設定を有効にするには、次の作業が必要です。- カスタム設定ファイルを
/etc/otelcol-contrib/custom.config.yamlにマウントします - 環境変数
CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yamlを設定します - collector が PostgreSQL のログを読み取れるように、PostgreSQL のログディレクトリをマウントします
オプション 1: Docker Compose
ClickStack のデプロイ設定を更新します。オプション 2: Docker Run (オールインワン イメージ)
docker run でオールインワン イメージを使用する場合:ClickStack collector に、PostgreSQL のログファイルを読み取るための適切な権限があることを確認してください。本番環境では、読み取り専用マウント (
:ro) を使用し、最小権限の原則に従ってください。HyperDX でログを確認する
設定が完了したら、HyperDX にログインし、ログが取り込まれていることを確認します。- Searchビューに移動します
- ログソースを Logs に設定します
- PostgreSQL 固有のログを表示するには、
source:postgresqlで絞り込みます user_name、database_name、error_severity、message、queryなどのフィールドを含む構造化ログが表示されるはずです
デモデータセット
HyperDX でログを確認
ClickStack の起動後、次の操作を行います。- HyperDX を開き、アカウントにログインします (先にアカウント作成が必要な場合があります)
- Search ビューに移動し、source を
Logsに設定します - 時間範囲を 2025-11-09 00:00:00 - 2025-11-12 00:00:00 に設定します
タイムゾーン表示HyperDX はタイムスタンプをブラウザーのローカルタイムゾーンで表示します。デモデータの対象期間は 2025-11-10 00:00:00 - 2025-11-11 00:00:00 (UTC) です。時間範囲を広めに取ることで、どの地域からアクセスしていてもデモログを確認できます。ログが表示されたら、より見やすく可視化するために 24 時間の範囲まで絞り込めます。
ダッシュボードと可視化
ダッシュボード設定をする
あらかじめ用意されたダッシュボードをインポートする
- HyperDX を開き、Dashboards セクションに移動します
- 右上の三点メニューから Import Dashboard をクリックします
postgresql-logs-dashboard.jsonファイルをアップロードし、Finish Import をクリックします
ダッシュボードを表示する
ダッシュボードは、すべての可視化があらかじめ設定された状態で作成されます。デモデータセットを使用する場合は、時間範囲を 2025-11-10 00:00:00 - 2025-11-11 00:00:00 (UTC) に設定してください (ローカルのタイムゾーンに合わせて調整してください) 。インポートしたダッシュボードには、デフォルトでは時間範囲が設定されていません。
トラブルシューティング
カスタム設定が読み込まれない
HyperDX にログが表示されない
次のステップ
- 重要なイベント (接続障害、クエリの遅延、エラーの急増) に対するアラートを設定する
- データベースを包括的に監視できるよう、ログをPostgreSQLメトリクスと相関付ける
- アプリケーション固有のクエリパターンに対応したカスタムダッシュボードを作成する
- パフォーマンス要件に応じた低速クエリを特定するため、
log_min_duration_statementを設定する