fluentdからpostgreSQLへログを流し込む(元データはjson形式)

■ fluentdからpostgreSQLへログを流し込む
□ fluentdプラグイン
https://github.com/fluent/fluent-plugin-sql/blob/master/README.md
□ テスト用データ
# echo '{ "HOST_ADDR": "192.168.56.108", "HOST_NAME": "myhostname" }' >> /var/log/remotelog/test_psql.log
DB名:fluent_test_db
テーブル名:fluent_test_table
テスト用カラム:host_addr,host_name

postgreSQL側の準備
□ ユーザpostgresのパスワード設定
# passwd postgres
postgreSQLログイン
# su - postgres
# psql
□ テスト用データベース作成
=# create database fluent_test_db;
=# \c fluent_test_db;
□ テスト用テーブル作成
=# CREATE TABLE fluent_test_table (host_addr TEXT, host_name TEXT);
=# \dt;
□ DBポート確認
# ss -atn
→ 5432が開いていることを確認
□ 他ホストからpostgreSQLに接続できるようにする
# vi /var/lib/pgsql/11/data/postgresql.conf
コメントアウトされている「listen_addresses」を以下のように書き換え(以下を追記)
listen_addresses = '*'
# vi /var/lib/pgsql/11/data/pg_hba.conf
以下のように編集する(一部追記)

						# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
host    all             all             192.168.56.108/32       trust
host    all             all             192.168.56.102/32       trust

postgreSQL再起動
# systemctl restart postgresql-11
□ ポート確認
# netstat -tln
□ (他ホストから)telnet
# telnet 192.168.56.112 5432
tcpdumpでパケットが来てることを見たい場合
# tcpdump -ni enp0s8 port 5432
※ enp0s8は、#ip a コマンドで見た時のネットワークインタフェース名

■ fluentd側
postgreSQL用のプラグインインストール
# yum install ruby-deve
# yum install gcc make automake autogen
# td-agent-gem install pg -v 1.1.4 --no-document
# td-agent-gem install pg -v 0.21.0 --no-document
# td-agent-gem install fluent-plugin-sql --no-document

□ fluentd設定
# vi /etc/td-agent/td-agent.conf

					例	
<source>
	@type tail
	format json
	path /var/log/remotelog/test_psql.log
	tag psql
</source>

<match psql.**>
	@type sql
	host 192.168.56.112
	port 5432
	database fluent_test_db
	adapter postgresql
	username postgres
	password yourpassword
	socket /tmp/.s.PGSQL.5432

	<table>
		table fluent_test_table
		column_mapping 'HOST_ADDR:host_addr,HOST_NAME:host_name'
	</table>
</match>

□ fluentd再起動
# systemctl restart td-agent