2016年12月16日金曜日

Nagios Log Server エクスポート

Nagios Log Server データエクスポートアプリの紹介

今回は、Nagios Log Serverで収集したログデータをJSONまたはCSV形式でエクスポートできるアプリケーションを紹介します。

Nagios Log Serverはリアルタイムのログ検索、可視化に特長があるログ監視・管理ソフトウェアアプリケーションですが、現在の最新バージョン(ver.1.4.4)まで収集したデータをエクスポートする機能がありませんでした。今回ご紹介するアプリケーションを使用することで、Nagios Log Serverで収集したデータをJSONまたはCSV形式でエクスポートすることができます。

Nagios Log Server製品紹介ページ

Nagios Log Serverの特長や機能については製品紹介ページをご参照ください:

Nagios Log Serverダウンロード

Nagios Log Serverにはフリー版(ログ収集上限:1日 500MB(7日間平均))と評価版(60日間、機能制限なし)があります。インストーラは、Linuxソース版、vSphere/ESX OVFテンプレート版の2種類です。ぜひお試しください。

データエクスポートアプリ

Nagios Log Serverで収集されたデータをJSONまたはCSV形式で指定のディレクトリにエクスポートします(執筆時の最新バージョン: 1.2.3)

免責事項

このアプリケーションの使用により生じたいかなる損害に対して、弊社およびNagios Enterprises社は一切の責任を負いません。ご承認いただける場合のみ、使用者の責任において本アプリケーションをご使用ください。

アプリケーションの入手

  1. 以下のサイトにアクセスします。
    https://github.com/mcapra/nagios-nlsexport/blob/master/nlsexport.jar
  2. Downloadボタンをクリックし、ファイルをダウンロードして保存します。
  3. Nagios Log Serverサーバの任意の場所にファイルを保存します。

事前作業

  • このアプリケーションをNagios Log Serverマシンで実行する場合は、事前作業は必要ありません。(後述の -host引数には localhostまたは127.0.0.1を指定します)。
  • このアプリケーションをリモートマシンから実行する場合は、Elasticsearch APIへ直接アクセスできるようにする必要があります。
    注意: この方法はNagios Log Serverマシンが不安定になる可能性があります。

    一番簡単な方法は以下のとおりです:
    /usr/local/nagioslogserver/elasticsearch/config/elasticsearch.ymlをエディタで開き、http.host設定をlocalhostから 0.0.0.0に変更して保存します。
    elasticsearchサービスを再起動(service elasticsearch restart)します。
    elasticsearchサービスが起動するまでしばらく待ちます。
    データエクスポートが完了したら、上記の設定を元に戻してください。http.host設定がlocalhostでない場合、Nagios Log Serverマシンが不安定になる可能性があります。
  • エクスポートするデータの保存先ディレクトリ(専用のディレクトリを推奨)を事前に作成してください。十分な空き容量があることを確認してください。

使用方法

java -jar nlsexport.jar -host -date_start -date_end -output_path [-output_format] [-query]

オプション

  • host -  Elasticsearchマシンのホスト名またはIPアドレス。Nagios Log Serverマシン上で実行する場合は -host=localhost または -host=127.0.0.1 を指定。
  • date_start - 開始日 (形式 = yyyy.mm.dd
  • date_end - 終了日(形式 = yyyy.mm.dd
  • output_path - データを保存するパス。大量のファイルが作成されるので、専用パスを使用することをお勧めします。
  • output_format - (任意)データの保存形式(デフォルト = json)利用可能オプション: csv, json
  • query - (任意)結果のフィルタに使用したいElasticsearch クエリ(デフォルトなし)

使用例

  • 使用例(1):
    2015年のすべてのデータをCSV形式で/home/juser/export_nls にエクスポートする
    java -jar nlsexport.jar -host=localhost -date_start=2015.01.01 -date_end=2015.12.31 -output_path=/home/juser/export_nls/ -output_format=csv
  • 使用例(2):
    2015年のすべてのsyslogエントリをJSON形式(デフォルトで/home/juser/export_nls にエクスポートする
    java -jar nlsexport.jar -host=localhost -date_start=2015.01.01 -date_end=2015.12.31 -output_path=/home/juser/export_nls/ -query='{"query":{"query_string":{"query":"syslog"}}}'
  • 使用例(3):
    2016年8月1日から2016年8月31日までの期間に特定のホスト(192.168.10.3)から送信されたすべてのデータをCSV形式で/home/juser/export_nls にエクスポートする。結果は@timestamp値で昇順ソートする。
    java -jar nlsexport.jar -host=localhost -date_start=2016.08.01 -date_end=2016.08.31 -output_path=/home/juser/export_nls/ -output_format=csv -query='{"query":{"query_string":{"query":"host:192.168.10.3"}},"sort":{"@timestamp":{"order":"asc"}}}'
  • 使用例(4):
    2016年8月1日から2016年8月31日までの期間に特定のホスト(192.168.10.3)から送信された一部のデータのみ(message)をCSV形式で/home/juser/export_nls にエクスポートする。結果は@timestamp値で昇順ソートする。
    java -jar nlsexport.jar -host=localhost -date_start=2016.08.01 -date_end=2016.08.31 -output_path=/home/juser/export_nls/ -output_format=csv -query='{"_source":"message","query":{"query_string":{"query":"host:192.168.10.3"}},"sort":{"@timestamp":{"order":"asc"}}}'
  • 使用例(5):
    2016年8月1日から2016年8月31日までの期間に特定のホスト(192.168.10.3)から送信された一部のデータのみ(message,@timestamp)をCSV形式で/home/juser/export_nls にエクスポートする。結果は@timestamp値で昇順ソートする。
    java -jar nlsexport.jar -host=localhost -date_start=2016.08.01 -date_end=2016.12.09 -output_path=/home/juser/export_nls/  -output_format=csv -query='{"_source":["message","@timestamp"],"query":{"query_string":{"query":"host:192.168.10.3"}},"sort":{"@timestamp":{"order":"asc"}}}'

処理について

  • このアプリケーションは、1インデックスファイルごとにデータをファイルに出力します。
    アプリケーションの実行前にインデックスが閉じている場合は、一時的にインデックスを開いてからデータをエクスポートし、エクスポートが完了したらインデックスを閉じます(実行前に既に開いているインデックスはエクスポート処理が完了した後も閉じません)。
  • 出力ファイル名は、logstash-yyyy.mm.dd_タイプ名.json(または.csv)です。日付およびタイプごとにファイルが作成されます。
  • Nagios Log Serverはデフォルト設定の場合、収集したログはUTC時間で処理されます。このため、日本時間でこのアプリケーションを使用した場合、1日の出力ファイルには午前9時から翌日8時59分59秒のデータがエクスポートされます。

さいごに

Nagios Log Serverで収集したログをテキストへ出力するために、(必要に応じてインデックスのオープン/クローズして)curlコマンドを手動で実行されていた方もおられるかと思います。このアプリケーションでは、インデックスのオープン/クローズが自動化されており、メモリ使用も比較的軽量ですむように考慮して実装されているとのことです(ディスクIOの速度に問題がある場合は障害となる可能性は有ります)。もしNagios Log Serverのデータエクスポートを行う機会がありましたら、ご利用ください。

情報源

お問合せ

購入前のNagios Log Serverについてのお問合せは以下から承っております。
ご不明な点やお気づきの点がございましたらお問い合わせください。