ログシステムの保証レベル
at-most-once:最高で1回の送信。ただし到達を保証しない
at-least-once:少なくとも1回の送信。ただし重複の可能性がある
exactly-once:at-most-onceとat-least-onceの両方を満たす
ログ採取ミドルウェアfluentd
chmod +x install-redhat.sh
./install_redhat.sh
sudo service td-agent start //起動default port 24224
ログ/メッセージに任意のタグをつけて逐次的に収集。
フィルタ(データ加工、集計)、バッファ、ルーティングの後に各種データ出力先へ保存(Output Plugin)する。
fluentd メッセージ
[tag, time, record]
in_exec: 一定間隔ごとに指定パスにあるスクリプトをコマンド実行して、結果を収集する
out_exec_filter: tailプラグインなどで収集したログメッセージに対してデータ加工を行う
out_exec: 収集したログメッセージを指定パスにあるスクリプトの引数として渡して実行する
flush_interval: バッファリングしたメッセージを一括で受け渡しする時間間隔
tailプラグイン:既存のアプリログを収集するのに便利
fluentd設定ファイル
/etc/td-agent/td-agent.conf
有効ディレクティブ
<system> // Fluentdのコア部分の動作を決定する
<source> // プラグインの指定
<match> // ログデータの加工、フィルタリング、外部出力
include // 内部または外部の設定ファイルのロード
以下、設定ファイルの各ディレクティブの説明。[]内はデフォルト設定
system
コマンドラインの引数より優先される
log_level: [info]
suppress_repeated_stacktrace: 連続した同一エラー出力を抑制 [抑制無し]
emit_error_log_interval: 指定時間内の同一エラー出力を抑制 [抑制無し]
suppress_config_dump: 起動時に設定ファイルの標準ログ出力を抑制
source
ログの入力元を決定する。
type: Inputプラグインの指定
<source>
type <name of plugin>
tag <output tag>
<option of plugin>
</source>
tailの場合、formatが必須。formatは正規表現で記述可能。例えばapachなどプリセットも用意されている。
match
ログの出力先を決定する。
type: outputプラグインの指定。フィルタリング、ルーティングも可能。
<match <マッチさせるタグ>>
type <プラグイン名>
<プラグインのオプション>
</match>
一度受信したtagをルーティングして、vhostのドメイン部分をタグに含めて再度ルーティングすると、vhostの情報を含むログを出力できる。
outputのプラグインには、fileやs3、mongo、stdoutなどがある。
ルーティング目的では、copy、rewrite_tag_filterなどがある。
一旦matchして出力してしまうと以降のmatchでは引っかからないので、copyなどを利用してうまく設定することが必要。
マッチングタグの記述
*: 1つのタグ要素に合致
**: 0個以上のtag要素に合致
{x, y, z}: x, y, zにマッチ。x, y, zはマッチしたいパターン
fluentdテスト用コマンド
fluent-cat: td-agent付属のコマンド
// 標準出力
echo '{"message":"Hello World."}' | /usr/lib64/fluent/ruby/bin/fluent-cat debug.test // fluent-catにはタグ名を渡す
// ログファイルの参照
sudo less /var/log/td-agent/td-agent.log
example) apache
ログファイルの権限などに注意。間違っている場合td-agent.logにエラーが出力されるので容易にわかる。
0 件のコメント:
コメントを投稿