LoginSignup
16
14

More than 5 years have passed since last update.

zabbixのログ監視をfluentdで数値化してグラフを作成する

Last updated at Posted at 2016-01-14

zabbixのログ監視では正規表現での検索抽出も出来るのですが、数値としては扱われないのでグラフ作成のアイテムに使用出来ません。
そこでfluentdを経由してログから数値化したカウント値をzabbixへ送信してグラフ作成してみます。
今回の例では、ルーターでフィルターしているポートスキャン状況をsyslog出力してグラフ化します。
外部からの攻撃傾向を見える化して監視する事はセキュリティ向上に繋がります。

前提条件

zabbixサーバー、zabbixエージェント、rsyslogの準備が出来ている事とします。
ルーターはYAMAHA RTXシリーズのsyslogファイルになります。
パスは、/var/log/rsyslog/rtx1200/syslog.txt

fluentd準備

ログ収集加工のフレームワークとも言えるfluentdを利用します。
プラグイン機能を追加する事で、様々な入出力が可能になります。
http://www.fluentd.org/

rsyslog自体からの置き換えも可能ですが、今回はrsyslogを流用します。

インストール方法は公式サイトが分かりやすいです。
http://docs.fluentd.org/v0.12/categories/installation

ubuntu Trustyの場合
# curl -L https://toolbelt.treasuredata.com/sh/install-ubuntu-trusty-td-agent2.sh | sh

使用するプラグインをインストールします。

zabbixプラグイン
# sudo /opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-zabbix
zabbixへ出力するプラグインでfluentdとzabbixが連携出来ます。

datacounterプラグイン
# sudo /opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-datacounter
検索一致した数をカウントした数値を出力します。

fluentdでログファイルから検索一致した数のカウント値を求める

まずは入力側を設定します。

/etc/td-agent/td-agent.conf
<source>
  type tail
  format none
  path /var/log/rsyslog/rtx1200/syslog.txt
  pos_file /var/log/td-agent/rtx1200syslog.txt.pos
  tag rtx1200-syslog
</source>

typeはtailでformatをnone設定することで、RTX1200ルーター出力ファイルのtailを入力出来ます。
状況に合わせてformatを設定します。
apache等のよくあるログ形式には既存のformat形式があります。また、正規表現でformatを自作する事も可能です。
tagに指定した名前で入出力設定を連携出来ます。

次に出力側を設定します。ここでは2回に分けて設定しています。
tag指定の名前が一致するのが条件になります。また、最初に一致したものしか有効になりません。
以下の順にtag連携して処理されます。
source「rtx1200-syslog」 → match「rtx1200-syslog」 → match「rtx1200-syslog.filter」

/etc/td-agent/td-agent.conf
<match rtx1200-syslog>
  type datacounter
  unit minute
  count_key message
  tag rtx1200-syslog.filter
  pattern1 ssh ^.*filter: TCP.*>.*:22.*$
  pattern2 telnet ^.*filter: TCP.*>.*:23.*$
</match>

<match rtx1200-syslog.filter>
  type zabbix
  zabbix_server 127.0.0.1
  host localhost
  name_key_pattern rtx1200-syslog_(unmatched|ssh|telnet)_.*
</match>

最初(rtx1200-syslog)は、typeにプラグインのdatacounterを設定。
ログファイルから一致する正規表現のパターンに応じてカウントします。
ここでは、TCPの22番と23番を検索しています。最大20パターンが指定出来るようです。

次(rtx1200-syslog.filter)は、typeにプラグインのzabbixを設定。
zabbixサーバーのIPアドレスとホスト名を指定します。
キーのパターンは、datacounterでパターン設定した名称を正規表現で抽出します。
設定したパターンに合わない場合は、unmatchedの名前が付きます。
ただしformatをnoneにした場合にはすべての行が対象になるので注意。

fluentdの再起動

設定ファイルが出来たらサービスを再起動します。
# service td-agent restart

zabbixのアイテム設定

以下の様にアイテムを作成します。

名称:任意の名前
タイプ:Zabbixトラッパー
キー:fluentdでzabbixプラグインに設定したキーのパターン
データ型:数値(整数)
データの形式:10進数

キーのパターン指定方法は今回の場合は以下の通り。
sshのカウント値:rtx1200-syslog_ssh_count
telnetのカウント値:rtx1200-syslog_telnet_count
パターン以外のカウント値:rtx1200-syslog_unmatched_count

カウント(count)以外にパーセンテージ(percentage)とレート(rate)のキーがあります。
それぞれアイテムとして作成が可能です。

これらのアイテムは数値として扱われるので、グラフ作成のアイテムに使用が出来ます。

16
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
14