mackerelとfluentdを組み合わせると、ログの統計と見える化が比較的簡単に実現できる。
Secureログにログイン記録を付けているシステムは多いと思うが、せっかくなのでそれを見える化して定常的に監視できるようにしてみよう。
以下はtd-agentを使用しているものとしての例。
必要なfluent-pluginインストール
統計用のプラグインとmackerel用プラグインをインストールする。
$ sudo /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-datacounter
$ sudo /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-mackerel
fluentd設定
以下は/etc/td-agent/config.dをincludeしているという想定。
$ cd /etc/td-agent/
$ sudo mkdir config.d
$ sudo vim config.d/mackerel-secure-check.conf
こんな感じで作る。
{{ }}
の部分は変数のつもり。環境に合わせて設定してほしい。
「ログイン失敗」ではなく、「ログイン試行」を数えるためにパスワードフェイルを1回として数えている。
mackerel-secure-check.conf
<source>
type tail
format syslog
path /var/log/secure
tag log.secure
pos_file /tmp/secure.pos
</source>
<match log.secure>
type datacounter
count_interval 60s
count_key message
output_per_tag yes
pattern1 password_accepted ^Accepted password
pattern2 password_failed ^Failed password
pattern3 publickey_accepted ^Accepted publickey
pattern4 publickey_failed ^Failed publickey
tag_prefix count
</match>
<match count.log.secure>
type mackerel
api_key {{ mackerel-apikey }}
hostid {{ mackerel-hostid }}
metrics_name login.count.${out_key}
out_keys password_accepted_count,password_failed_count,publickey_accepted_count,publickey_failed_count
use_zero_for_empty
#service {{ service-name }}
flush_interval 60s
</match>
もしhostidがわからなければ下記補足を参照。
fluentdサービスを再起動して適用。
$ sudo service td-agent restart
mackerel Webサイトにてグラフの調整・監視設定
「login.count」グラフを探して見た目を直す。
好みの問題だけど、私はこうした。
- 単位を「integer」に変更
- 積み重ねグラフに変更
- 色の関係で、並び順をaccept->failed->accept->failedに変更
これで、Monitorsから監視設定を入れることもできる。
補足: mackerel-hostidの確認方法
$ cat /var/lib/mackerel-agent/id