機器ごとに異なる形式で出力されるログを一元管理し、Web GUI上で簡単に調査できるようにしたい…。
Nagios Log Serverを使えば、各機器のログ形式に応じたカスタムダッシュボードを作成することができるため、ログの調査が簡単になります。もちろんフリー版でも可能です。ただし、機器固有のログ形式を反映したわかりやすいカスタムダッシュボードを作成するためには、Nagios Log Serverのログ収集処理をカスタマイズする必要があります。
フリー版でできるリアルタイムログ監視 記事一覧
・#1 Nagios Log Serverの特長とダッシュボードカスタマイズ例
・#2 ログの急増を調査する
・#3 社内の不正アクセスを調査する
・#4 機器固有のログ形式に対応するダッシュボードを作りたい(本記事)
・#5 Windowsイベントログの監視
Nagios Log ServerのベースはELK Stack
Nagios Log Serverはオープンソース製品群 ELK Stack (Elasticsearch, Logstash, Kibana) をベースに開発されたソフトウエアアプリケーションです。各機器からNagios Log Serverへ送信されたログは、Logstashが受信しElasticsearchデータベースに保存します。ユーザーはKibanaをベースに開発されたNagios Log ServerのWeb GUIへアクセスしてElasticsearchに保存されたログデータを閲覧します。
![](https://i0.wp.com/blog.jtc-i.co.jp/wp-content/uploads/2018/11/nls_architecture.jpg?resize=640%2C371&ssl=1)
Nagios Log Serverのログ収集処理をカスタマイズするということは、Logstashのインプット、フィルター構成をカスタマイズすることを意味します。
Nagios Log Serverの Logstash構成
Nagios Log Serverにはデフォルトで4つのインプットと1つのフィルターが定義されています([構成] > [グローバル構成])。
![](https://i0.wp.com/blog.jtc-i.co.jp/wp-content/uploads/2018/11/config_01.jpg?resize=640%2C276&ssl=1)
それぞれの定義の[+]アイコンをクリックすると、定義内容が展開表示されます。
![](https://i0.wp.com/blog.jtc-i.co.jp/wp-content/uploads/2018/11/config_03.jpg?resize=640%2C464&ssl=1)
左上の[Syslog(Default)]が、Syslog受信用のデフォルトインプット定義です。これは、RFC 3164形式に準拠したSyslogを受信するためのもので、5544(tcp/udp)ポートで送信されたSyslogを受信し、typeフィールドにsyslogという値を設定するように定義されています。
RFC 3164形式に準拠しないSyslogをNagios Log Serverで受信したい場合は、syslogインプットではなく、tcpまたはudpインプット定義を追加する(またはデフォルトの syslogインプットをtcpまたはudpインプットに変更する)必要があります。下は、5545(tcp/udp)ポートで送信されたログを受信し、typeフィールドにsyslog2という値を設定するカスタムインプットを追加した例です。
![](https://i0.wp.com/blog.jtc-i.co.jp/wp-content/uploads/2018/11/add_custom_input_01.jpg?resize=639%2C435&ssl=1)
注記:
- インプット定義で使用するポート番号は重複しないようにしてください。
- デフォルト以外のポート番号を使用する場合は、OSのFirewallでこのポートの使用を許可する必要があります。
- 1024未満の特権ポートを使用したい場合は追加の作業が必要です。
さらに機器固有のログ形式を反映するカスタムダッシュボードを作成するためには、ログのメッセージ内容をフィールドに分割する必要があります。これはLogstashのフィルター定義で行います。デフォルトでは、Apacheログ用のフィルターが1つだけ定義されています。
下はカスタムフィルターの定義例です。ニーズにあわせてメッセージの内容を任意のフィールドに分割します。
![](https://i0.wp.com/blog.jtc-i.co.jp/wp-content/uploads/2018/11/custom_config_ssg_01.jpg?resize=505%2C599&ssl=1)
カスタムインプットおよびフィルターの定義が完了したら、[保存] ボタンをクリックして設定を保存した後に [確認] ボタンをクリックして定義が正しいことを確認します。
![](https://i0.wp.com/blog.jtc-i.co.jp/wp-content/uploads/2018/11/custom_config.jpg?resize=640%2C301&ssl=1)
定義に誤りがないことが確認できたら、[構成の適用] > [適用] を実行して構成変更をシステムに反映させます。
![](https://i0.wp.com/blog.jtc-i.co.jp/wp-content/uploads/2018/11/apply_config.jpg?resize=640%2C163&ssl=1)
※Nagios Log Serverでは(サーバーコンソールではなく)Web GUI上でLogstash構文の編集や構成の適用(Logstashサービスの再起動)作業を行うことができます。
構成の適用以降に受信したログが新しいLogstash構成で処理されます(既に保存済みのログは処理されません)。これによりログメッセージがフィールドごとに分割して保存されるようになるため、各フィールドの情報をダッシュボード上で棒グラフ、折れ線グラフ、円グラフ、テーブル形式などで表現することができるようになります。さらに任意のフィールドに対してマウス操作で簡単にフィルター条件を追加しログデータを絞り込むこともできるようになります。
下はカスタムダッシュボードの例です。
![](https://i0.wp.com/blog.jtc-i.co.jp/wp-content/uploads/2018/11/dashboard_sample.jpg?resize=640%2C447&ssl=1)
Logstashのフィルター定義は多少骨が折れますが、一度定義すればNagios Log Serverでのログ調査が格段に楽になります。まずは評価版からお試しください。
Logstash構文の参考サイト
以下はLogstash構文およびgrokフィルターのパターン定義作業に役立つサイトです:
- Logstashのドキュメント:https://www.elastic.co/guide/en/logstash/2.4/configuration.html
- grokパターンのテスト(1):http://grokdebug.herokuapp.com/
- grokパターンのテスト(2):http://grokconstructor.appspot.com/