こんにちは、セシオスサポートチームです。
弊社では福利厚生の一環で一ヶ月に一回程度、フットサル大会を実施しています。
短い時間ではありますが、デスクワークで凝り固まった思考や体をほぐすのにはうってつけです。全員が全力で動きまわるためか、メンバーの何名かは翌日の筋肉痛がつらいそうです。
今はまだチームに分かれてミニゲームを楽しむ程度ですが、ゆくゆくは得点の集計やMVPの表彰などなどやりたいことがあったりなかったりします。
何かをするためにもとりあえず記録して残しておくだけでも後々何かに使えるかもしれません。
けれど集めた記録の集計や解析は面倒なことも多く管理も大変です。実業務でも実行結果をログとして残しておく場合、収集方法や管理・運用でとても大変です。
そんなデータを収集、利用するためのツールにFluentdというオープンソースがあります。
データの収集や使用を統一化し、管理を楽にしてくれるツールだそうです。プラグインも多く存在しておりカスタマイズしやすく大変便利なんだそうです。
今回はそんなfluentdの導入手順を取りまとめてみました。
これから導入を検討されている皆様のご参考になれば幸いです。
fluentdの導入手順のご紹介 ※Version1.0(td-agent3)
Journaldで取得しているログをfluentdで取得、表示するまでの手順をまとめてあります。
CentOS 7.4 ※仮想マシン
公式サイトには様々なインストール手段が紹介されています。
今回はFluentdの安定板パッケージであるtd-agentを利用します。
# curl -L https://toolbelt.treasuredata.com/sh/install-ubuntu-xenial-td-agent3.sh | sh
無事インストールが完了したら早速動作確認をします。
# systemctl start td-agent
デーモンが起動しているか確認
# systemctl status td-agent
導入したtd-agentにはあらかじめ動作確認用の設定が組み込まれています。
今回はそれを使って導入確認をします。
# curl -X POST -d 'json={"json":"message"}' http://localhost:8888/debug.test
サンプルコードを実行するとtd-agentのログファイルにレコードが出力されます。
# tailf /var/log/td-agent/td-agent.log
導入した素のtd-agentの設定ファイルを編集します。
ユーザとグループをrootに変更しておきます。
/usr/lib/systemd/system/td-agent.service
・・・
[Service]
User=root
Group=root
・・・
設定ファイルを修正したのでdaemonをリロードします。
# systemctl daemon-reload
プラグインの導入にはGCCをインストールする必要があります。
# yum install gcc
journaldから必要なログを収集、分類しているのでそれに合わせて必要なプラグインを導入します。
# /opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-systemd -v 0.3.1
このプラグインでjournaldを直接参照することができるようになります。
取得部分にjournaldからデータを取得しているように記述します。
/etc/td-agent/td-agent.conf
<source>
@type systemd
tag journald.log
path /var/run/log/journald
read_from_head false
<storage>
@type local
persistent false
path journald.pos
</storage>
<entry>
field_map {"MESSAGE": "log", "_PID": ["process", "pid"], "_CMDLINE": "process", "_COMM": "cmd"}
fields_strip_underscores true
fields_lowercase true
</entry>
</source>
<match journald.log>
@type stdout
</match>
td-agentをリスタートして動作確認
# systemctl restart td-agent
確認用データを投入してtd-agentがログを取得できるかを確認します。
# logger test
journaldから取得したログは自Json形式に変換されて出力されます。
以上が導入までの手順になります。
今回はデータの取得部分にパッケージを導入しましたが、データ取得・出力部分にも様々なパッケージが存在します。
公式ページから導入可能なプラグインを確認できますのでいろいろ試してみてはいかがでしょうか。