Pandora: Documentation ja: Log Monitoring

From Pandora FMS Wiki
Jump to: navigation, search

Pandora FMS ドキュメント一覧に戻る

1 ログ収集

1.1 概要

これまで Pandora FMS には、これに関する解決策がありませんでしたが、バージョン 5.0 の Pandora FMS Enterprise から、日々の何百ものメガバイトのデータを扱うソリューションを提供しています。このソリューションでは、特定のログデータ収集に同じ一つの監視エージェントを利用し、ログ監視の設定書式も既存のものに似ています。

Pandora FMS におけるログ監視には、以下の 2つの異なる手法があります。

  1. モジュールベース: 非同期監視としの Pandora でログを表現します。ユーザにより事前設定された条件を満たすデータを検出した場合にアラートを関連付けることができます。 ログのモジュール表現では、以下を行うことができます:
    1. ログの中で正規表現にマッチする数を数えるモジュールの作成
    2. ログメッセージの行および内容を取得
  2. 複合表示ベース: キャプチャしたい複数の発生元のログからすべての情報を 1つのコンソールで表示し、ログが処理されたタイムスタンプを使用して情報を順番に整理できます。

バージョン 7.0NG 712 からは、Pandora FMS に、ログ情報を保存するための LogStash + ElasticSearch が組み込まれているため、パフォーマンスが大幅に向上しています。

1.2 動作の仕組み

処理は単純です。



Esquemas-logs.png



  • エージェントで分析されたログ (eventlog またはテキストファイル) は、Pandora サーバへ転送されます。エージェントから送信される XML に (RAW) データとして含まれます。
  • Pandora サーバ(データサーバ)は、エージェントから XML を受け取ります。そこには、監視とログの両方の情報が含まれています。
  • データサーバが XML データを処理する時に、ログ情報を識別し、報告されたエージェントに関する情報やログのソースをプライマリデータベースに保存し、ログの保存には情報を自動的に LogStash に送信します。
  • LogStash は、情報を Elasticsearch に保存します。
  • 最後に、Pandora FMS コンソールのビューワを通して情報を確認できます。コンソールは、Elasticsearch サーバに対してクエリを実行します。

1.3 設定

1.3.1 サーバ設定

新たなログ保存システムは、ElasticSearch + LogStash を利用しており、いくつかのコンポーネントを設定する必要があります。

1.3.1.1 サーバの必要条件

それぞれのコンポーネント(Pandora FMS サーバ, Elasticsearch, LogStash)は、別々のサーバに展開できます。

Elasticsearch と LogStash を同じサーバに置く場合は、以下が必要です。

  • 最低 4GB のメモリ
  • 最低 2コアの CPU
  • 最低 20GB のシステム用ディスク容量
  • 最低 50GB の LVM でマウントされた /var のディスク容量
  • Pandora サーバから LogStash への 10516/TCP の接続および、Pandora コンソールから Elasticsearch への 9200/TCP の接続

ヒストリデータベースのマシンがある場合は、これと同じものを使用して Elasticsearch と LogStash をインストールすることができます。 その場合、マシンの最小要件は、双方の処理するデータの数に合わせて調整する必要があります。

  • 最低 4GB のメモリ
  • 最低 4コアの CPU
  • 最低 20GB のシステム用ディスク容量
  • 最低 50GB の LVM でマウントされた /var のディスク容量

1.3.1.2 ElasticSearch のインストールと設定

コンポーネントのインストールの前に、Java をインストールする必要があります。

yum install java

インストールが完了したら、Elasticsearch プロジェクトのウェブサイト https://www.elastic.co/downloads/elasticsearch から RPM をダウンロードしてインストールします。

サービスを設定します。

ネットワークオプションと、データの場所(および Elasticsearch 自身のログ)を設定ファイル /etc/elasticsearch/elasticsearch.yml で設定します。

# ---------------------------------- Network -----------------------------------
# Set the bind address to a specific IP (IPv4 or IPv6):
network.host: 0.0.0.0
# Set a custom port for HTTP:
http.port: 9200
# ----------------------------------- Paths ------------------------------------
# Path to directory where to store the data (separate multiple locations by comma):
#path.data: /var/lib/elastic
# Path to log files:
#path.logs: /var/log/elastic

network.host には、サーバの IP を設定する必要があります。

設定ファイル /etc/elasticsearch/jvm.options にて、利用可能なパラメータを調整し、Elasticsearch に割り当てるリソースのオプションを調整する必要があります

# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms512m
-Xmx512m


サービスを開始します。

systemctl start elasticsearch

注意: サービスの開始に失敗する場合は、/var/log/elasticsearch/ 内のログを確認してください。

注意 2: 推奨に反して CentOS 6 にインストールをする場合は、最新の ElasticSearch (5.x) のバージョンでは、CentOS 6 が提供していない kernel レベルの機能が必要となるため問題が発生します。bootstrap の利用とエラーを避けるために、yml の設定ファイルに以下の行を追加します。

bootstrap.system_call_filter: false
transport.host: localhost

1.3.1.3 LogStash のインストールと設定

Elasticsearch プロジェクトのウェブサイト https://www.elastic.co/downloads/logstash から RPM をダウンロードし、LogStash をインストールします。

サービスの設定

logstash の設定では、3つの設定ブロックがあります:

  • Input: logstash へどのように情報を取り込むかを示します。フォーマット、ポートおよび内部に情報を保存するために利用される識別子です。
  • Filter: ここに事前処理を追加できます。ただし必須ではありません。空のまま置いておきます。
  • Output: Elasticsearch が待ち受けている IP およびポート番号の設定です。logstash で処理された情報を保存する先です。

設定ファイル:

/etc/logstash/conf.d/logstash.conf


設定ファイル例:

# This input block will listen on port 10514 for logs to come in.
# host should be an IP on the Logstash server.
# codec => "json" indicates that we expect the lines we're receiving to be in JSON format
# type => "rsyslog" is an optional identifier to help identify messaging streams in the pipeline.
input {
 tcp {
    host  => "0.0.0.0"
    port  => 10516
    codec => "json"
    type  => "pandora_remote_log_entry"
 }
}
# This is an empty filter block.  You can later add other filters here to further process
# your log lines
filter { }
output {
  elasticsearch { hosts => ["localhost:9200"] }
}

"host" および "localhost" パラメータには、サーバの IP を設定する必要があります。

同様に "logstash-sample.conf" においても、"localhost" パラメータにはサーバの IP を設定する必要があります。

サービスの開始:

systemctl start logstash

注意: 推奨に反して CentOS6 へ LogStash をインストールする場合は、次のコマンドで起動するします。

initctl start logstash

1.3.1.4 Pandora FMS サーバでのパラメータ設定

Pandora FMS データサーバがログ情報を処理するように、Pandora FMS サーバの設定ファイル(/etc/pandora/pandora_server.conf)に次の設定を追加する必要があります。

重要: この設定を行っていない場合、Pandora サーバに届いたデータは捨てられます。

logstash_host eli.artica.lan
logstash_port 10516

1.3.1.5 Pandora FMS Syslog サーバ

Pandora FMS 7.0NG のバージョン 717 から、新たな SyslogServer いうコンポーネントがあります。

このコンポーネントにより、Pandora はマシンの Syslog を分析できます。Syslog のコンテンツを分析し、ElasticSearch サーバに格納することができます。

SyslogServer の主な利点としては、ログの統合を補完することにあります。Linux および UNIX 環境の SYSLOG 出力をもとにして、SyslogServer では、1つの共通ポイント(Pandora FMS コンソールのログビューア)で、発信元ごとに個別のログを参照したり、検索したりすることができます。

この機能を有効化するには、pandora_server.conf で以下の設定を有効にするだけです。

# Enable (1) or disable (0) the Pandora FMS Syslog Server (PANDORA FMS ENTERPRISE ONLY).
syslogserver 1
# Full path to syslog's output file (PANDORA FMS ENTERPRISE ONLY).
syslog_file /var/log/messages
# Number of threads for the Syslog Server (PANDORA FMS ENTERPRISE ONLY).
syslog_threads 2
# Maximum number of lines queued by the Syslog Server's producer on each run (PANDORA FMS ENTERPRISE ONLY).
syslog_max 65535


LogStash/ElasticSearch を有効化する必要があります。上記のパラメータの設定は次の通りです。

syslogserver ローカルの SYSLOG 分析エンジンの有効化(1)または無効化(0)を設定します。

syslog_file SYSLOG ファイルの場所です。

syslog_threads SyslogServer のデータ処理に使う最大スレッド数です。

syslog_max SyslogServer が処理する最大ウインドウサイズです。一度の実行で処理する最大の SYSLOG エントリー数です。

1.3.1.6 推奨事項

1.3.1.6.1 Elasticsearch と Logstash のログローテーション

重要: Elasticsearch と LogStash のログが肥大化しないように、/etc/logrotate.d でログローテーションのエントリーを作成することをお勧めします。

cat > /etc/logrotate.d/elastic <<EOF
/var/log/elastic/elaticsearch.log
/var/log/logstash/logstash-plain.log {
       weekly
       missingok
       size 300000
       rotate 3
       maxage 90
       compress
       notifempty
       copytruncate
}
EOF
1.3.1.6.2 インデックスの削除

ElasticSearch サーバに対して curl でアクセスすることにより、いつでもインデックスの一覧と大きさを確認することができます。

curl -q http://elastic:9200/_cat/indices?

ここで、"elastic" はサーバの IP です。

インデックスを削除するには、DELETE コマンドを実行します。

curl -q -XDELETE http://elastic:9200/logstash-2017.09.06

インデックスを削除した分、ディスクの空き容量が増加します。

1.3.2 コンソールの設定

ログの表示を有効化するには、次の設定を有効化する必要があります。


Activate logcollection.png



'ログ収集(Log Collector)' タブで、ログビューワの動作を設定できます。


Log config consola.PNG


この画面では以下の設定ができます。

  • Elasticsearch サーバの IP または FQDN アドレス
  • Elasticsearch サービスのポート
  • 表示されるログの数。コンソール応答の高速化のため、レコードの動的読み込みが追加されています。これを利用するには、ページの一番下へスクロールします。すると、次のレコードが読み込まれます。これらのグループのサイズは、グループあたりのレコード数としてこのフィールドに設定できます。
  • 削除する日数: システムのサイズを保持するために、ログ情報を保存する最大日数を定義できます。それを超えると、Pandora FMS のクリーニング処理により自動的に削除されます。

1.4 LogStash + Elasticsearch システムへのマイグレーション

ログの新たなストレージシステムを設定後、以前から Pandora に保存されているデータを新たなシステムへマイグレートできます。

新たなシステムへマイグレートするには、/usr/share/pandora_server/util/ 以下にある次のスクリプトを実行します。

# 7.0NG 712 より前のログデータを、7.0NG 712 以降にマイグレート
/usr/share/pandora_server/util/pandora_migrate_logs.pl /etc/pandora/pandora_server.conf

1.5 表示と検索

ログ収集のツールに関して、私たちは主に 2つのことに興味があります。日時やデータソース、キーワードによるフィルタリングをしての情報の検索と、時間単位ごとに発生する情報の参照です。この例では、直近 1時間のすべてのデータソースからのログメッセージを見てみます。


Log viewer2.png View of occurrences over time




情報の表示に利用できるフィルタには以下があります。

  • 検索タイプによるフィルタ: 完全一致、すべての単語、任意の単語で検索できます。
  • メッセージ内容によるフィルタ: テキストメッセージの内容で検索します。
  • ログソースによるフィルタ (ソース ID)
  • エージェントフィルタ: 選択したエージェントによって生成された検索結果を絞り込みます。
  • グループごとのフィルタ: エージェントフィルタでエージェントの選択を限定します。
  • 日時によるフィルタ

Log viewer filter2.png


最も重要で便利なフィールドは、(スクリーンショットに表示している)文字列検索です。これは単純なテキスト文字列で、一致文字列またはワイルドカードが使えます。次の例は IP アドレスです。

192.168*

注意: 検索は、検索対象文字列の完全一致もしくは前方一致で行われます。 例:

192.168.80.14
192.168*
Warning in somelongtext
Warning in some*

次の 3種類の検索のいずれかを選択する必要があります。

  • 完全一致: 文字列検索。

Exact match.png


  • 全単語: 各単語がスペースで区切られていることを前提として、指定したすべての単語を検索します。

All words2.png


  • 任意の単語: 各単語がスペースで区切られていることを前提として、順序に関係なく、指示された単語を検索します。

Any word2.png


フィルタリングされたコンテンツのコンテキストを表示するオプションをチェックすると、状況の概要が表示されます。


Full context2.png


1.6 エージェント設定

ログ収集は、Windows および Unux (LInux, MacOS X, Solaris, HP-UX, AIX, BSD など) エージェント双方で実行されます。Windows エージェントの場合、イベントビューワモジュールで同様のフィルタを用いることにより、Windows イベントビューワから情報を取得することもできます。

Windows と Unix でのログ情報収集の例をみてみます。

1.6.1 Windows の場合

module_begin
module_name Eventlog_System
module_type log
module_logevent
module_source System
module_end 
module_begin
module_name PandoraAgent_log
module_type log
module_regexp C:\archivos de programa\pandora_agent\pandora_agent.log
module_description This module will return all lines from the specified logfile
module_pattern .*
module_end

両方のケースにおける監視モジュールとの唯一の違いは、以下のログソース設定の部分です。

module_type log 

これは、バージョン 5.0 のエージェントから利用できる新たな書式です。この新機能を利用するには、エージェントをバージョン 5.0 へアップグレードする必要があります。

1.6.2 Unix システム

Unix では、バージョン 5.0 エージェントとともに配布される新たなプラグインを利用します。書式は次の通り単純です。

module_plugin grep_log_module /var/log/messages Syslog \.\*

ログパースプラグイン(grep_log)と同じように、grep_log_module プラグインは、処理した情報をログファイルのソースとして "syslog" という名前でログ収集に送信します。どういったパターンの行を送信するかまたはしないかは、\.\* といった正規表現を利用します(この例では全て)。

Pandora FMS ドキュメント一覧に戻る