fluentd 基本まとめ

■fluentdとは

 
ログを収集して集約・管理するためのソフトウェア。収集したデータはjson形式で管理される。
RDBMSではないので、基本的にSQLでは操作できない。代わりにREST APIを通じて操作する。
 
fluentdではなくtd-agentを使用したほうが簡単。
td-agentは、rpm/deb形式で以下がパッケージングされている。
  • fluentdが利用するRuby実行環境
  • fluentdの安定バージョン
  • 起動や停止をするためのinit script
fluentdを使いたい場合はruby gemからインストールする。
 
外部のプラグインを利用することで柔軟な収集(Input),保管方法(output)を定義できる。
 

■Fluentdのデータの流れ

   
Input
流れてくるデータの収集方式を決める。
各種データソースのログにタグをつけて収集する。
インプット用プラグインを指定する。
td-agentの設定ファイルの<source>ディレクティブでInput時の動作設定を行う。
例えば、
  • どんな形式のログを
  • どの場所から
  • どのようなタグをつけて
  • どのようなフォーマットで、
といった具合に収集の仕方を予め定義する。
Output
データ保存先へ出力する。
Input時に指定したタグに合致して収集したデータを、指定した方法で処理する。
例えば、
  • 他のfluentd serverにそのままフォワードする
  • テキストファイルに書き出す
  • MySQLに登録する。
  • Elastic searchに登録する。
 

■fluentが扱うデータ構造の基本

Fluentdは取得したデータをjson形式で取得する。jsonで保管しておくと他のシステムからデータ利用がしやすくなる。
  • tagは文字列型、保管するデータのテーブル名的なかんじ。
  • timeは数値型(UNIX時間)、データの作成日時などが付与される。
  • messageはオブジェクト型のkey-valueストア形式となる。ユーザが実際に保管したいデータがこれ
[
 tag,
 time,
 record = { key: "value", key: "value"}
]

 

■インストール/初期設定

td-agentはインストールスクリプトが用意されているのでそれを利用すると楽。
設定ファイルを管理ホスト毎に管理したいので、別ディレクトリに保持するための設定を行っておく。
//install
wget https://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh
chkconfig td-agent on

//mkdir for config-files
mkdir /etc/td-agent/conf.d
echo '@include conf.d/*.conf' >> /etc/td-agent/td-agent.conf
vi /etc/td-agent/conf.d/xxxxx.conf

 

■プラグインインストール

td-agentの場合は、td-agent-gemを使用する。
プラグイン一覧はここ:https://www.fluentd.org/plugins/all
#install
td-agent-gem install xxxxxx

#update
td-agent-gem update xxxxxx

#show list
td-agent-gem list

#search plugin
td-agent-gem search -r xxxxxx
 
プラグイン一例
 
fluent-plugin-multi-format-parser
1つのログに複数のフォーマットが存在している時に便利。フォーマット指定が複数行うためのプラグイン。
fluent-plugin-elasticsearch
ElasticSearchに  fluentd のログを保存するためのプラグイン
fluent-plugin-mysql
MySQL に fluentd のログを保存するためのプラグイン
fluent-plugin-dstat
 dstatの結果をfluentdに送信するためのプラグイン
   

Copyright © 2021 たぐたぐ.com. All rights reserved.