情報畑でつかまえてロゴ
本サイトは NTTテクノクロスが旬の IT をキーワードに
IT 部門が今知っておきたい最新テクノロジーに関する情報をお届けするサイトです

Fluentd+Elasticsearch+Kibana+Norikra+Zabbixを使ってOpenStackのログ解析してみた

OpenStackの出力する大量のログをNorikraのSQLストリーミング解析にかけることで、個々のログメッセージからではなく、ログ量の傾向から攻撃、障害、故障の検出ができるようになりました。

本記事に関するお問い合わせ先: /products/osscloud/index.html

1. はじめに


OpenStack ®を運用していると大量のログが出力されます。正常時でもERRORのログを出力するため、ERRORのログが出たら通知をするような設定をしていると、アラートの嵐になってしまいます。このため、ログは障害発生後の原因分析が主な使われ方でした。

OpenStackの出力する大量のログをNorikraのSQLストリーミング解析にかけることで、個々のログメッセージからではなく、ログ量の傾向から攻撃、障害、故障の検出ができるかやってみました。

OpenStackのログを解析するのにFluentd + Elasticsearch + Kibana + Norikra + Zabbixを組み合わせて次の項目を確かめてみました。

(1) OpenStackのログを収集してグラフ化する。

(2) OpenStack keystoneのアクセスログをNorikraで解析してKeystoneへの攻撃を検出する。

(3) ログの解析から異常検出、アラートまでを自動化する。

2. システム構成

2.1. 使用ツール一覧

機能

ツール名

概要

ログ収集

Fluentd

ログの収集、中継ツール

ElasticsearchやNorikraへデータを転送する。

ログ解析

Norikra

SQLストリーミングを解析する

監視

Zabbix

監視ツール

ログ検索

Elasticsearch

全文解析エンジン

ログ可視化

Kibana

Elasticsearchへ格納されたデータを可視化する

OpenStack

Devstack

Kilo-stable版

all-in-one構成

OpenStackの認証

Keystone

OpenStackの認証用コンポーネント

2.2. システム処理イメージ

ログを解析する仕組みとして、こんなフローを考えてみました。

(1) OpenStackが出力するログを、ログ中継サーバーへ集約する。

(2) 集約したログをElasticsearchとNorikraへ送信する。

(3) Norikraへ送られたログを、SQLストリーミング解析にかける。

(4) 解析の結果は問題の有無に関わらずElasticsearchへ格納し、異常が検出された場合はZabbixへ通知する。

(5) 通常のサーバー監視はZabbixが行う。

(6) (2)、(4)でElasticsearchへ送られたデータはKibanaを使用して可視化する。

図 1 システム処理イメージ

図 1 システム処理イメージ

3. ログを収集してグラフ化してみる。

まずは、OpenStackの各コンポーネントが出力するログ量の推移と、API実行数の推移のグラフ化してみました。ログメッセージの内容から判断するのではなく、ログの出力傾向から障害や故障の検出ができるかを試してみました。

実際に動かしてみると、OpenStackに動きがあった時間帯は、ログ量やAPI実行数のグラフに変動が見られました。(図 2、図 3)

図 2 ログ量の推移図 2 ログ量の推移

図 3 API実行数の推移図 3 API実行数の推移

これだけでは、グラフ化してもオペレータが目視で確認しないといけないのでイマイチですね。

4. OpenStackのログ解析

4.1. ログ解析はBigDataだ

ログの解析は大量のデータを解析することになるので、BigData解析手法を使うことができます。

BigData解析手法としては、たとえば、リアルタイム解析エンジンのCEP (Complex Event Processing)や機械学習のJubatusがあります。

今回はこのCEPを使っているNorikraを使って、ログ解析をしました。

NorikraとCEPの詳細はこちら:http://dev.classmethod.jp/etc/norikra-esper-epl/

NorikraへはFluentdのfluent-plugin-norikraを使用してデータを送ります。

4.2. KeystoneへのDOS攻撃検知

4.2.1. しくみ

KeystoneのアクセスログをFluentdでNorikraに送ります。単位時間あたりのアクセス元IPアドレスを集計して、同じIPアドレスから異常なアクセス量があった場合にはZabbixで通知します。

例:アクセス数が1分間に90回以上

4.3.実際に攻撃してみる


keystone宛に大量の偽token取得APIを連続で実行して検知ができるかを試してみました。

curl -i -X POST http://127.0.0.1:5000/v3/auth/tokens -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'User-Agent: python-keystoneclient' -d '{"auth": {"identity": {"methods": ["password"],"password": {"user": { "id": "<存在しないID>", "password": "<適当な文字列>"}}}}}'

4.3.1. グラフ化、一覧化

まずは、ログの解析をせずに、収集したログをグラフ化しました。

アクセス件数の推移をグラフ化することで、普段と違う使われ方をされている場合は、グラフの形が変わるのでオペレータも確認し易いです。(図 5)

図 5 グラフ化図 5 グラフ化

アクセス元の多い順にソートして一覧表示(図 6)

過剰なアクセスがあればアクセス数と共に表示されるので、こちらもオペレータが攻撃元IPアドレスを特定し易いです。

まだまだオペレータが張り付いていなければいけないのでイマイチですね。

図 6 一覧化図 6 一覧化

4.3.2. Norikraの設定

ここからはNorikraを使ってログの解析をさせてみました。

NorikraのQueriesに下記のように設定しました。SQL文で解析条件が記述できるので、SQLが得意な人であればどんなルールでも書けます。

この解析の条件にヒットしたら、Zabbixにアラートをあげるようにします。

SELECT
    host,
    COUNT(*) as requests
  FROM norikra_openstack_keystone_access.win:time_batch(1 min)
  GROUP BY host
  HAVING COUNT(*) >= 90

ホスト名ごとにアクセス数を集計。1分間のSQLストリーミング解析で90件以上ログが出力されていたら異常と判断します。

図 4 Norikra

5. Zabbixで通知

Norikraでログを解析するだけでは、Kibanaでの可視化と同様にオペレータが目視で確認し続ける必要があります。監視の通知のためにZabbixとも連携させて、故障、検出、解析、通知までの流れを自動化しました。

5.1. Zabbix Norikra連携

Norikraがログを解析した結果、異常だと判断した場合は、Fluentdのfluent-plugin-zabbixを使用して、Zabbixにエラーの通知を上げることで、オペレータへの通知ができます。(図 7 Zabbix検知)

これでオペレータが常に張り付いている必要がなくなりました。

図 7 Zabbix検知

図 7 Zabbix検知

6. まとめ

今まで障害解析にしか使われていなかったログを解析することで、障害検知に活用できました。今回はKeystoneへの攻撃検知でしたが、NorikraのSQLを作りこめば、複数のログファイルに分かれた処理も検出できそうです。

Zabbixと連携させることで、検出、解析、通知までの一連の流れを自動化できました。

今後は、Zabbixのアクションとして、攻撃元のNW遮断等の障害を検出した後の動作も自動化させたいです。

また、Norikraの解析結果が異常だと判断したIPアドレスから、GeoIPを使って国や都市を特定して、Kibanaで地図上にプロットすることもできます。どこからの攻撃か特定がし易そうなこの機能も試してみたいです。





OpenStack®はOpenStack, LLCの登録商標又は商標です。

7. 参考文献

FluentdとKibanaでSSHアクセス元マップ

http://qiita.com/hiconyan/items/e847793a291760a7ac1d


OpenStackの構築、運用にお悩みのかた


NTTテクノクロスでは、OpenStackを使ったプライベートクラウドの環境構築支援や、
遠隔保守/監視ソリューションを提供しています。

OpenStackの導入を検討している方、運用にお困りのかたは、ぜひお問い合わせください。


OpenStackクラウドに関する定額制サポートチケット:


チケット概要
連載シリーズ
テクノロジーコラム
著者プロフィール
深津 颯騎
深津 颯騎