Difference between pages "Pandora: Documentation ja: Log Monitoring" and "File: XTnRoDU6dW.png"

From Pandora FMS Wiki
(Difference between pages)
Jump to: navigation, search
(LogStash のインストールと設定)
 
 
Line 1: Line 1:
[[Pandora:Documentation_ja|Pandora FMS ドキュメント一覧に戻る]]
 
  
= ログ収集 =
 
 
==概要==
 
 
これまで Pandora FMS には、これに関する解決策がありませんでしたが、バージョン 5.0 の '''Pandora FMS Enterprise''' から、日々の何百ものメガバイトのデータを扱うソリューションを提供しています。このソリューションでは、特定のログデータ収集に同じ一つの監視エージェントを利用し、ログ監視の設定書式も既存のものに似ています。
 
 
Pandora FMS におけるログ監視には、以下の 2つの異なる手法があります。
 
 
# '''モジュールベース''': 非同期監視としの Pandora でログを表現します。ユーザにより事前設定された条件を満たすデータを検出した場合にアラートを関連付けることができます。 ログのモジュール表現では、以下を行うことができます:
 
## ログの中で正規表現にマッチする数を数えるモジュールの作成
 
## ログメッセージの行および内容を取得
 
# '''複合表示ベース''': キャプチャしたい複数の発生元のログからすべての情報を 1つのコンソールで表示し、ログが処理されたタイムスタンプを使用して情報を順番に整理できます。
 
 
バージョン 7.0NG 712 からは、Pandora FMS に、ログ情報を保存するための '''ElasticSearch''' が組み込まれているため、パフォーマンスが大幅に向上しています。
 
 
== 動作の仕組み ==
 
 
処理は単純です。
 
 
<center><br><br>
 
[[Image:LogsEsquema.png|650px]]
 
</center><br><br>
 
 
* エージェントで分析されたログ ('''eventlog''' またはテキストファイル) は、Pandora サーバへ転送されます。エージェントから送信される XML に (RAW) データとして含まれます。
 
* Pandora サーバ(データサーバ)は、エージェントから XML を受け取ります。そこには、監視とログの両方の情報が含まれています。
 
* データサーバが XML データを処理する時に、ログ情報を識別し、報告されたエージェントに関する情報やログのソースをプライマリデータベースに保存し、ログの保存には情報を自動的に ElasticSearch に送信します。
 
* Pandora FMS はデータを Elasticsearch インデックスに保存し、各 Pandora FMS インスタンスの日次インデックスを生成します。
 
* Pandora FMS サーバには、システム管理者が定義した間隔(デフォルトでは90日)でインデックスを削除するメンテナンスタスクがあります。
 
 
== 設定 ==
 
 
=== サーバ設定 ===
 
 
新たなログ保存システムは、ElasticSearch + LogStash を利用しており、いくつかのコンポーネントを設定する必要があります。
 
 
{{Warning|Pandora FMS バージョン 745 以降では、Pandora FMS サーバが直接 ElasticSearch と通信するため、LogStash は利用する必要がなくなりました。そのため、LogStash に関する設定は必要ありません。}}
 
 
==== サーバの必要条件 ====
 
 
各コンポーネント(Pandora FMS サーバ、Elasticsearch)は別々のサーバに展開できます。
 
 
Elasticsearch と LogStash を同じサーバに置く場合は、以下が必要です。
 
 
* CentOS 7
 
* 最低 4GB のメモリ、ただし ElasticSearch インスタンスでは、6GB のメモリを推奨します。
 
* 最低 2 CPUコア。
 
* 最低 20GB のシステムディスク空き領域。
 
* 最低 50GB の ElasticSearch データディスク空き領域。(保存されるデータの量に応じて、異なる場合があります)
 
* Pandora FMS サーバから、Elasticsearch API (デフォルトポートは 9200/TCP) への接続性。
 
 
==== ElasticSearch のインストールと設定 ====
 
 
コンポーネントのインストールの前に、Java をインストールする必要があります。
 
 
yum install java
 
 
インストールが完了したら、Elasticsearch を次の公式ドキュメントに従ってインストールします。https://www.elastic.co/guide/en/elasticsearch/reference/7.6/install-elasticsearch.html
 
 
CentOS/RedHat システムにインストールする際は、rpm でのインストールを推奨します。https://www.elastic.co/guide/en/elasticsearch/reference/7.6/rpm.html
 
 
サービスの設定:
 
 
''/etc/elasticsearch/elasticsearch.yml'' にある設定ファイルで、ネットワークオプションと ''オプションで'' データの場所(および Elasticsearch 自体のログ)を設定します。
 
 
# ---------------------------------- Network -----------------------------------
 
# Set the bind address to a specific IP (IPv4 or IPv6):
 
http.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 a comma):
 
path.data: /var/lib/elastic
 
# Path to log files:
 
path.logs: /var/log/elastic
 
 
次の行のコメントを外して設定します。network.host パラメータにサーバの IP を入力します。
 
 
cluster.name: elkudemy
 
node.name: ${HOSTNAME}
 
bootstrap.memory_lock: true
 
network.host: ["127.0.0.1", “IP"]
 
 
* <b>cluster.name</b>: クラスタ名。
 
* <b>node.name</b>: ノードに名前を付けるには、${HOSTNAME} を使用してホスト名を取得します。
 
* <b>bootstrap.memory_lock</b>: 常に "true" である必要があります。
 
* <b>network.host</b>: サーバ IP。
 
 
''/etc/elasticsearch/jvm.options'' にある設定ファイルで、ElasticSearch に割り当てられるリソースのオプションを調整する必要があります。XMS では少なくとも 2GB を使用します。
 
 
# Xms represents the initial size of total heap space
 
# Xmx represents the maximum size of total heap space
 
-Xms512m
 
-Xmx512m
 
 
ElasticSearch の利用に応じてリソースが割り当てられます。 ElasticSearch の公式ドキュメントに従うことをお勧めします。https://www.elastic.co/guide/en/elasticsearch/reference/current/heap-size.html
 
 
サービスの開始:
 
 
systemctl start elasticsearch
 
 
'''注意''': サービスの起動に失敗したら、/var/log/elasticsearch 以下のログを確認してください。
 
 
ElasticSearch の動作を確認するには、以下のコマンドを実行します。
 
 
curl -q http://{IP}:9200/
 
 
以下のような応答があります。
 
 
{
 
  "name" : "3743885b95f9",
 
  "cluster_name" : "docker-cluster",
 
  "cluster_uuid" : "7oJV9hXqRwOIZVPBRbWIYw",
 
  "version" : {
 
    "number" : "7.6.2",
 
    "build_flavor" : "default",
 
    "build_type" : "docker",
 
    "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
 
    "build_date" : "2020-03-26T06:34:37.794943Z",
 
    "build_snapshot" : false,
 
    "lucene_version" : "8.4.0",
 
    "minimum_wire_compatibility_version" : "6.8.0",
 
    "minimum_index_compatibility_version" : "6.0.0-beta1"
 
  },
 
  "tagline" : "You Know, for Search"
 
}
 
 
 
<br><br>
 
 
==== LogStash のインストールと設定 ====
 
 
{{Warning|Pandora FMS バージョン 745 以降では、LogStash のインストールは<b>不要</b>です。}}
 
 
Elasticsearch プロジェクトのウェブサイト https://artifacts.elastic.co/downloads/logstash/logstash-5.6.2.rpm から RPM をダウンロードし、LogStash 5.6.2 をインストールします。
 
 
パッケージをダウンロードしたら、次のようにインストールします。
 
 
rpm -i logstash-X.X.X.rpm
 
 
サービスの設定
 
 
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 => ["0.0.0.0:9200"] }
 
}
 
 
"host" パラメータでは、"0.0.0.0" の代わりにサーバの IP を設定する必要があります。
 
 
同様に "logstash-sample.conf" においても、"localhost" パラメータにはサーバの IP を設定する必要があります。
 
 
サービスの開始:
 
 
systemctl start logstash
 
 
'''注意''': 推奨に反して CentOS6 へ LogStash をインストールする場合は、次のコマンドで起動するします。
 
 
initctl start logstash
 
 
==== Pandora FMS サーバでのパラメータ設定 ====
 
 
{{Warning|Pandora FMS バージョン 745 以降では、ログ収集を有効化する設定はすべてコンソールから行うため、サーバの設定ファイルの設定は不要です。}}
 
 
Pandora FMS データサーバがログ情報を処理するように、Pandora FMS サーバの設定ファイル(/etc/pandora/pandora_server.conf)に次の設定を追加する必要があります。
 
 
'''重要:''' この設定を行っていない場合、Pandora サーバに届いたデータは捨てられます。
 
 
logstash_host eli.artica.lan
 
logstash_port 10516
 
 
==== Pandora FMS Syslog サーバ ====
 
 
Pandora FMS 7.0NG のバージョン 717 から、新たな SyslogServer いうコンポーネントがあります。
 
 
このコンポーネントにより、Pandora はマシンの Syslog を分析できます。Syslog のコンテンツを分析し、ElasticSearch サーバに格納することができます。
 
 
SyslogServer の主な利点としては、ログの統合を補完することにあります。Linux および UNIX 環境の SYSLOG 出力をもとにして、SyslogServer では、1つの共通ポイント(Pandora FMS コンソールのログビューア)で、発信元ごとに個別のログを参照したり、検索したりすることができます。
 
 
Syslog のインストールは、クライアントとサーバの両方に次のコマンドで行います。
 
 
yum install rsyslog
 
 
対象のコンピューターに Syslog をインストールしたら、設定ファイルを編集して TCP および UDP 接続を有効にする必要があることに注意してください。
 
 
/etc/rsyslog.conf
 
 
調整を行ったら、rsyslog サービスを再起動します。
 
 
サービスが再起動したら、ポート 514 が開いているか確認します。
 
 
netstat -ltnp
 
 
サービスの有効化とポートの確認ののち、サーバへログを送信するようにクライアントの設定をします。最後に、再度 rsyslog 設定ファイルを開きます。
 
 
/etc/rsyslog.conf
 
 
リモートホストの設定を許可する行を見つけて有効にします。送信するものを指定します。次のようになります。
 
 
*.* @@remote-host:514
 
 
{{Tip|ログ送信により、クライアント名を持つコンテナエージェントが生成されるため、エージェントの重複を回避するために、クライアントのホスト名と一致する "別名" を持つエージェントを作成することをお勧めします。
 
 
rsyslog 設定に関する詳細は、公式ウェブサイト https://www.rsyslog.com/ を参照してください。
 
 
この機能を有効化するには、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 エントリー数です。
 
 
{{Warning|ログが Pandora FMS サーバに送信されるように、デバイスの設定を変更する必要があります。}}
 
 
==== 推奨事項 ====
 
 
===== 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
 
 
===== インデックスの削除 =====
 
 
ElasticSearch サーバに対して curl でアクセスすることにより、いつでもインデックスの一覧と大きさを確認することができます。
 
 
curl -q <nowiki>http://elastic:9200/_cat/indices?</nowiki>
 
 
ここで、"elastic" はサーバの IP です。
 
 
インデックスを削除するには、DELETE コマンドを実行します。
 
 
curl -q -XDELETE <nowiki>http://elastic:9200/logstash-2017.09.06</nowiki>
 
 
ここで "elastic" はサーバの IP で、"{index-name}" は上記コマンドの出力ファイルです。
 
 
インデックスを削除した分、ディスクの空き容量が増加します。
 
 
=== コンソールの設定 ===
 
 
ログの表示を有効化するには、次の設定を有効化する必要があります。
 
 
<br><center>
 
[[image:Logs1.JPG|850px]]
 
<br></center>
 
 
 
'ログ収集(Log Collector)' タブで、ログビューワの動作を設定できます。
 
 
<br><center>
 
[[image:Logs2.JPG|850px]]
 
<br></center>
 
 
この画面では以下の設定ができます。
 
 
* Elasticsearch サーバの IP または FQDN アドレス
 
 
* Elasticsearch サービスのポート
 
 
* 表示されるログの数。コンソール応答の高速化のため、レコードの動的読み込みが追加されています。これを利用するには、ページの一番下へスクロールします。すると、次のレコードが読み込まれます。これらのグループのサイズは、グループあたりのレコード数としてこのフィールドに設定できます。
 
 
* 削除する日数: システムのサイズを保持するために、ログ情報を保存する最大日数を定義できます。それを超えると、Pandora FMS のクリーニング処理により自動的に削除されます。
 
 
== 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
 
 
== 表示と検索 ==
 
 
ログ収集のツールに関して、私たちは主に 2つのことに興味があります。日時やデータソース、キーワードによるフィルタリングをしての情報の検索と、時間単位ごとに発生する情報の参照です。この例では、直近 1時間のすべてのデータソースからのログメッセージを見てみます。
 
 
<br><center>
 
[[image:LogsVistaNew.png|850px]]
 
<i>時間経過による発生表示</i>
 
<br></center>
 
 
<br>
 
<br>
 
 
情報の表示に利用できるフィルタには以下があります。
 
* 検索タイプによるフィルタ: 完全一致、すべての単語、任意の単語で検索できます。
 
* メッセージ内容によるフィルタ: テキストメッセージの内容で検索します。
 
* ログソースによるフィルタ (ソース ID)
 
* エージェントフィルタ: 選択したエージェントによって生成された検索結果を絞り込みます。
 
* グループごとのフィルタ: エージェントフィルタでエージェントの選択を限定します。
 
* 日時によるフィルタ
 
 
最も重要で便利なフィールドは、(スクリーンショットに表示している)文字列検索です。これは単純なテキスト文字列で、一致文字列またはワイルドカードが使えます。次の例は IP アドレスです。
 
 
192.168*
 
 
<b>注意</b>: 検索は、検索対象文字列の完全一致もしくは前方一致で行われます。
 
例:
 
 
192.168.80.14
 
192.168*
 
Warning in somelongtext
 
Warning in some*
 
 
次の 3種類の検索のいずれかを選択する必要があります。
 
 
* 完全一致: 文字列検索。
 
 
<br><center>
 
[[image:LogsVistaNew2.png|850px]]
 
<br></center>
 
 
* 全単語: 各単語がスペースで区切られていることを前提として、指定したすべての単語を検索します。
 
 
<br><center>
 
[[image:LogsVistaNew4.png|850px]]
 
<br></center>
 
 
* 任意の単語: 各単語がスペースで区切られていることを前提として、順序に関係なく、指示された単語を検索します。
 
 
<br><center>
 
[[image:LogsVistaNew5.png|850px]]
 
<br></center>
 
 
フィルタされたコンテンツのコンテキストを表示するオプションがチェックされている場合、結果は、検索に関連する他のログ行に関する情報を含む状況の概要になります。
 
 
<br><center>
 
[[image:LogsVistaNew3.png|850px]]
 
<br></center>
 
 
=== 表示と高度な検索 ===
 
 
Pandora FMS 7.0NG OUM727 から、ログデータ表示に高度なオプションがあります。
 
 
この機能により、ログエントリをグラフに変換し、 '''データキャプチャテンプレート''' に従って情報を整理できます。
 
 
これらのデータキャプチャテンプレートは基本的に正規表現と識別子であり、データソースを分析してグラフとして表示できます。
 
 
高度なオプションへアクセスするには、''高度なオプション(Advanced options)' をクリックします。表示形式を選択できるフォームが表示されます。
 
 
- ログエントリーの表示 (プレーンテキスト)
 
- ロググラフの表示
 
 
<center>
 
[[Image: graph_log.png|800px]]
 
</center>
 
 
''ロググラフ表示'' オプションでは、キャプチャテンプレートを選択できます。
 
 
''Apache log model'' テンプレートは、デフォルトで、標準形式の Apache ログ(access_log)をパースし、時間応答比較グラフの取得、訪問サイトと応答コードによるソートができます。
 
 
<center>
 
[[Image: graph_log2.png|800px]]
 
</center>
 
 
編集ボタンを押すと、選択したキャプチャテンプレートを編集できます。作成ボタンでは、新たなキャプチャテンプレートを追加できます。
 
 
<center>
 
[[Image: graph_log3.png]]
 
</center>
 
 
 
 
このフォームでは、以下を選択できます。
 
 
;Title: キャプチャテンプレート名
 
;A data capture regular expression: 取得される各フィールドはカッコでくくった範囲となります。''(キャプチャする正規表現)''
 
;Field: 正規表現を介してキャプチャされる順番です。 結果は、アンダースコアの間に書かれていない名前のキーフィールドの連結によってソートされます。
 
 
key, _value_
 
 
 
key,key2,_value_
 
 
 
key1,_value_,key2
 
 
 
''注意:'' value フィールドが指定されていない場合、自動的に一致する正規表現の数になります。
 
 
''注意 2:'' 1つだけ ''value'' カラムが指定されている場合は、累積値(デフォルトではパフォーマンス)を表すか、チェックボックスをオンにして平均を表すかを選択できます。
 
 
''例''
 
 
以下のフォーマットのログからエントリを取得するとします。
 
 
Sep 19 12:05:01 nova systemd: Starting Session 6132 of user root.
 
Sep 19 12:05:01 nova systemd: Starting Session 6131 of user root.
 
 
 
ユーザのログイン数をカウントするには、次のようにします。
 
 
正規表現:
 
 
Starting Session \d+ of user (.*?)\.
 
 
 
フィールド:
 
 
username
 
 
 
このキャプチャテンプレートは、選択した時間間隔におけるユーザのログイン数を返します。
 
 
<center>
 
[[Image: graph_log4.png]]
 
</center>
 
 
== エージェント設定 ==
 
 
ログ収集は、Windows および Unux (LInux, MacOS X, Solaris, HP-UX, AIX, BSD など) エージェント双方で実行されます。Windows エージェントの場合、イベントビューワモジュールで同様のフィルタを用いることにより、Windows イベントビューワから情報を取得することもできます。
 
 
Windows と Unix でのログ情報収集の例をみてみます。
 
 
=== 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 へアップグレードする必要があります。
 
 
{{Warning|Windows でのログモジュールの定義は、エージェント設定ファイルで行う必要があります。これらのモジュールがコンソールで直接作成された場合、モジュールは初期化されません。}}
 
 
=== Unix システム ===
 
 
Unix では、バージョン 5.0 エージェントとともに配布される新たなプラグインを利用します。書式は次の通り単純です。
 
 
module_plugin grep_log_module /var/log/messages Syslog \.\*
 
 
ログパースプラグイン(grep_log)と同じように、grep_log_module プラグインは、処理した情報をログファイルのソースとして "syslog" という名前でログ収集に送信します。どういったパターンの行を送信するかまたはしないかは、\.\* といった正規表現を利用します(この例では全て)。
 
 
[[Pandora:Documentation_ja|Pandora FMS ドキュメント一覧に戻る]]
 
 
[[Category: Pandora FMS]]
 
[[Category:Documentation]]
 
[[Category:Japanese]]
 

Latest revision as of 14:15, 20 May 2020