以前、BashのHistoryをSyslogに出力(CentOS6)の記事を紹介しましたが、実際のログは次のようになります。

# cat /opt/suz-lab/var/log/syslog/all.log | grep bash
Jan 13 21:15:43 ip-10-200-32-46 -bash: HISTORY: PID=22858 UID=0 less /tmp/tail.syslog.20130113.b4d324ea9e0a8bf03
Jan 13 21:16:13 ip-10-200-32-46 -bash: HISTORY: PID=22858 UID=0 cat /tmp/tail.syslog.20130113.b4d324ea9e0a8bf03 | grep bash
Jan 13 21:23:37 ip-10-200-32-46 -bash: HISTORY: PID=22858 UID=0 cat /tmp/datacounter.syslog.20130113.b4d324ee14fb0be93
Jan 13 21:27:48 ip-10-200-32-46 -bash: HISTORY: PID=22858 UID=0 cat /opt/suz-lab/var/log/syslog/all.log

今回、Fluentdのfluent-plugin-datacounter_DataCounterプラグインを利用して、このログから単位時間あたり、
どれだけのコマンドが実行されたか集計してみました。

○SyslogのログをFluentdでtail

設定ファイルは下記の通りです。

# cat /etc/td-agent/td-agent.conf
type tail
format syslog
path /opt/suz-lab/var/log/syslog/all.log
pos_file /opt/suz-lab/var/lib/td-agent/pos/tail.syslog.pos
tag tail.syslog


type copy

type file
path /tmp/tail.syslog

加工されたログは次の通りです。(JSON形式)

# cat /tmp/tail.syslog.20130113.b4d324ea9e0a8bf03 | grep bash
...
2013-01-13T20:27:02+09:00 tail.syslog {"host":"ip-10-200-32-46","ident":"-bash","message":"HISTORY: PID=22858 UID=0 vi td-agent.conf"}
2013-01-13T20:29:38+09:00 tail.syslog {"host":"ip-10-200-32-46","ident":"-bash","message":"HISTORY: PID=22858 UID=0 ls"}
2013-01-13T20:29:53+09:00 tail.syslog {"host":"ip-10-200-32-46","ident":"-bash","message":"HISTORY: PID=22858 UID=0 less td-agent.conf"}
2013-01-13T21:09:04+09:00 tail.syslog {"host":"ip-10-200-32-46","ident":"-bash","message":"HISTORY: PID=22858 UID=0 cat /etc/td-agent/td-agent.conf"}
...

「”ident”:”-bash”」のものを集計する形になります。

○DataCounterプラグインのインストール

FluentdがCentOS6にFluentdをインストールの記事で紹介した方法でインストールされていることを前提とします。

プラグインはgemでインストールします。

# /usr/lib64/fluent/ruby/bin/gem install fluent-plugin-datacounter
Fetching: fluent-plugin-datacounter-0.4.0.gem (100%)
Successfully installed fluent-plugin-datacounter-0.4.0
1 gem installed
Installing ri documentation for fluent-plugin-datacounter-0.4.0...
Installing RDoc documentation for fluent-plugin-datacounter-0.4.0...

○DataCounterプラグインでBashのHistoryを集計

設定ファイルは下記の通りです。

# cat /etc/td-agent/td-agent.conf
type tail
format syslog
path /opt/suz-lab/var/log/syslog/all.log
pos_file /opt/suz-lab/var/lib/td-agent/pos/tail.syslog.pos
tag tail.syslog


type copy

type file
path /tmp/tail.syslog


type datacounter
unit minute
aggregate all
count_key ident
pattern1 history ^-bash$
tag datacounter.syslog



type copy

type file
path /tmp/datacounter.syslog

加工されたログは次の通りです。(1分ごとに集計されています)

# cat /tmp/datacounter.syslog.20130113.b4d324ee14fb0be93
...
2013-01-13T21:14:55+09:00 datacounter.syslog {"unmatched_count":8,"unmatched_rate":0.13,"unmatched_percentage":100.0,"history_count":0,"history_rate":0.0,"history_percentage":0.0}
2013-01-13T21:15:55+09:00 datacounter.syslog {"unmatched_count":8,"unmatched_rate":0.13,"unmatched_percentage":88.88888888888889,"history_count":1,"history_rate":0.01,"history_percentage":11.11111111111111}
2013-01-13T21:16:55+09:00 datacounter.syslog {"unmatched_count":11,"unmatched_rate":0.18,"unmatched_percentage":91.66666666666667,"history_count":1,"history_rate":0.01,"history_percentage":8.333333333333334}
2013-01-13T21:17:55+09:00 datacounter.syslog {"unmatched_count":8,"unmatched_rate":0.13,"unmatched_percentage":100.0,"history_count":0,"history_rate":0.0,"history_percentage":0.0}
...

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら