FilebeatでPostgreSQLのログをElasticsearchへ送る


はじめに

FilebeatにはPostgreSQLログ用のモジュールが最初から同梱されており、モジュールを有効にするだけで利用できます。

環境

使用した環境は以下のとおり。

  • CentOS 7.5
  • Elasticsearch 7.8
  • Kibana 7.8
  • Filebeat 7.8

ElasticStack 7.8 環境構築」で構築した環境を利用しています。

Filebeatの設定

PostgreSQLログ用のモジュールを有効にします。

# filebeat modules enable postgresql

PostgreSQLログ用のモジュールの設定ファイルは以下のファイルです。
※先ほどのコマンドでpostgresql.yml.disabledからpostgresql.ymlに変更されているようです。

  • /etc/filebeat/modules.d/postgresql.yml

ファイルは以下のようにPostgreSQLログのパスを環境に合わせて修正します。

- module: postgresql
  log:
    enabled: true
    var.paths: ["/data/log/postgresql-*.log"]

次にKibanaへ対してサンプルダッシュボードを作成するため、以下のように"setup.dashboards.enabled"を"true"に設定します。
他にElasticsearchへアウトプットするように設定しています。
※修正箇所のみ抜粋

filebeat.yml
# vi /etc/filebeat/filebeat.yml

setup.dashboards.enabled: true

output.elasticsearch:
  hosts: ["localhost:9200"]

他にもsetupコマンドでKibanaへ対してサンプルダッシュボードを作成することができます。

# filebeat setup

Kibanaには次のサンプルダッシュボードが生成されます。それ以外のモジュール用のダッシュボードも生成されています。

  • [Filebeat PostgreSQL] Overview ECS

他にもPostgreSQL用にはQuery Durations等が表示できる、[Filebeat PostgreSQL] Query Duration Overview ECSというダッシュボードもありました。

最後にFilebeatを実行します。

# systemctl start filebeat

Kibanaでの可視化

KibanaでPostgreSQLログ用のダッシュボードを選択すると以下のように表示されます。

参考