Pandora: Documentation ja: Log Monitoring
Contents
1 ログ収集
1.1 概要
Pandora FMS におけるログ監視には、以下の 2つの異なる手法があります。
- モジュールベース: 非同期監視としの Pandora でログを表現します。ユーザにより事前設定された条件を満たすデータを検出した場合にアラートを関連付けることができます。 ログのモジュール表現では、以下を行うことができます:
- ログの中で正規表現にマッチする数を数えるモジュールの作成
- ログメッセージの行および内容を取得
- 複合表示ベース: キャプチャしたい複数の発生元のログからすべての情報を 1つのコンソールで表示し、ログが処理されたタイムスタンプを使用して情報を順番に整理できます。
バージョン 7.0NG 712 からは、Pandora FMS に、ログ情報を保存するための ElasticSearch が組み込まれているため、パフォーマンスが大幅に向上しています。
1.2 動作の仕組み
処理は単純です。
- ソフトウエアエージェントで分析されたログ (eventlog またはテキストファイル) は、Pandora サーバへ転送されます。エージェントから送信される XML に (RAW) データとして含まれます。
- Pandora FMS データサーバは、エージェントから XML を受け取ります。そこには、監視とログの両方の情報が含まれています。
- データサーバが XML データを処理する時に、ログ情報を識別し、報告されたエージェントに関する情報やログのソースをプライマリデータベースに保存し、ログの保存には情報を自動的に ElasticSearch に送信します。
- Pandora FMS はデータを Elasticsearch インデックスに保存し、各 Pandora FMS インスタンスの日次インデックスを生成します。
- Pandora FMS サーバには、システム管理者が定義した間隔(デフォルトでは90日)でインデックスを削除するメンテナンスタスクがあります。
1.3 設定
1.3.1 サーバ設定
新たなログ保存システムは、ElasticSearch を利用しており、いくつかのコンポーネントを設定する必要があります。
1.3.1.1 サーバの必要条件
各コンポーネント(Pandora FMS サーバ、Elasticsearch)は別々のサーバに展開できます。
- CentOS 7
- 最低 4GB のメモリ、ただし ElasticSearch インスタンスでは、6GB のメモリを推奨します。
- 最低 2 CPUコア。
- 最低 20GB のシステムディスク空き領域。
- 最低 50GB の ElasticSearch データディスク空き領域。(保存されるデータの量に応じて、異なる場合があります)
- Pandora FMS サーバから、Elasticsearch API (デフォルトポートは 9200/TCP) への接続性。
1.3.1.2 ElasticSearch のインストールと設定
コンポーネントのインストールの前に、Java をインストールする必要があります。
yum install java
インストールが完了したら、Elasticsearch を 公式ドキュメント に従ってインストールします。Debian 環境ではそれ用の手順があります。
サービスの設定:
/etc/elasticsearch/elasticsearch.yml にある設定ファイルで、ネットワークオプションと オプションで データの場所(および Elasticsearch 自体のログ)を設定します。
# ---------------------------------- Network ----------------------------------- # 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: elkpandora node.name: ${HOSTNAME} bootstrap.memory_lock: true network.host: ["127.0.0.1", “IP"]
- cluster.name: クラスタ名。
- node.name: ノードに名前を付けるには、${HOSTNAME} を使用してホスト名を取得します。
- bootstrap.memory_lock: 常に "true" である必要があります。
- network.host: サーバ IP。
1つのノードだけで動作させる場合は、次の行を追加する必要があります。
discovery.type: single-node
クラスタとして動作させる場合は、discovery.seed_hosts パラメータを設定する必要があります。
discover.seed_hosts : ["ip", "ip", "ip"]
もしくは、
discovery.seed_hosts: - 192.168.1.10:9300 - 192.168.1.11 - seeds.mydomain.com
/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
ElasticSearch 設定ファイル /usr/lib/systemd/system/elasticsearch.service
で memlock unlimited
パラメータを修正する必要があります。
MAX_LOCKED_MEMORY=unlimited
完了したら、次のコマンドを実行する必要があります。
systemctl daemon-reload && systemctl restart elasticsearch
サービスを開始するコマンドは次の通りです。
systemctl start elasticsearch
サービスの開始:
systemctl start 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" }
本番環境における ElasticSearch ベストプラクティスを参照することをお勧めします: https://www.elastic.co/guide/en/elasticsearch/reference/current/system-config.html#dev-vs-prod
1.3.1.3 Pandora FMS Syslog サーバ
このコンポーネントにより、Pandora はマシンの syslog を分析できます。Syslog のコンテンツを分析し、ElasticSearch サーバに格納することができます。
SyslogServer の主な利点としては、ログの統合を補完することにあります。Linux および UNIX 環境の SYSLOG 出力をもとにして、SyslogServer では、1つの共通ポイント(Pandora FMS コンソールのログビューア)で、発信元ごとに個別のログを参照したり、検索したりすることができます。
Syslog のインストールは、クライアントとサーバの両方に次のコマンドで行います。
yum install rsyslog
対象のコンピューターに Syslog をインストールしたら、設定ファイル /etc/rsyslog.conf
を編集して TCP および UDP 接続を有効にする必要があることに注意してください。
(...) # Provides UDP syslog reception $ModLoad imudp $UDPServerRun 514 # Provides TCP syslog reception $ModLoad imtcp $InputTCPServerRun 514 (...)
調整を行ったら、rsyslog サービスを再起動します。
サービスが再起動したら、ポート 514 が開いているか確認します。
netstat -ltnp
rsyslog 設定に関する詳細は、公式サイト を参照してください。
Syslog サーバにログを送信するようにクライアントを設定します。そのためには、/etc/rsyslog.conf
にあるクライアント rsyslog 設定ファイルにて、リモートホストの設定をする行を見つけて有効にします。
*.* @@remote-host:514
ログ送信により、クライアント名を持つコンテナエージェントが生成されるため、エージェントの重複を回避するために、クライアントのホスト名と一致する "別名" を持つエージェントを作成することをお勧めします。 |
|
この機能を有効化するには、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
syslogserver ローカルの SYSLOG 分析エンジンの有効化(1)または無効化(0)を設定します。
syslog_file SYSLOG ファイルの場所です。
syslog_threads SyslogServer のデータ処理に使う最大スレッド数です。
syslog_max SyslogServer が処理する最大ウインドウサイズです。一度の実行で処理する最大の SYSLOG エントリー数です。
1.3.1.4 推奨事項
1.3.1.4.1 Elasticsearch のログローテーション
重要: Elasticsearch のログが肥大化しないように、/etc/logrotate.d でログローテーションのエントリーを作成することをお勧めします。
cat > /etc/logrotate.d/elastic <<EOF /var/log/elastic/elaticsearch.log { weekly missingok size 300000 rotate 3 maxage 90 compress notifempty copytruncate } EOF
1.3.1.4.2 インデックスの削除
ElasticSearch サーバに対して curl でアクセスすることにより、いつでもインデックスの一覧と大きさを確認することができます。
curl -q http://elastic:9200/_cat/indices?
ここで、elastic
はサーバの IP です。
インデックスを削除するには、DELETE コマンドを実行します。
curl -q -XDELETE http://elastic:9200/{index-name}
ここで elastic
はサーバの IP で、"{index-name}" は上のコマンドの出力ファイルです。これにより、削除されたインデックスによって使用されていたスペースが解放されます。
1.3.2 コンソールの設定
ログの表示を有効化するには、次の設定を有効化する必要があります。
設定(Configuration) > ログ収集(Log Collector) タブで、ログビューワの動作を設定できます。
この画面では以下の設定ができます。
- Elasticsearch サーバの IP または FQDN アドレス
- Elasticsearch サービスのポート
- 表示されるログの数(Number of logs being shown):コンソール応答の高速化のため、レコードの動的読み込みが追加されています。これを利用するには、ページの一番下へスクロールします。すると、次のレコードが読み込まれます。これらのグループのサイズは、グループあたりのレコード数としてこのフィールドに設定できます。
- 削除する日数(Days to purge): システムのサイズを保持するために、ログ情報を保存する最大日数を定義できます。それを超えると、Pandora FMS のクリーニング処理により自動的に削除されます。
1.3.3 Elasticsearch インタフェース
デフォルトの設定では、Pandora は 1日あたりのインデックスを生成します。これは、何かを検索する際のフラグメント化の役割を持ちます。検索時に Elastic がフラグメントの場所を認識できるようにします。
この検索をデフォルトで最適化するには、Elastics が検索ごとにインデックスを生成し、Elastics ノードと同じ数の検索を環境内で設定する必要があります。
これらの検索とレプリカは、Pandora が自動的に生成するインデックスの作成時に設定されるため、この設定を変更するには、テンプレートを使用する必要があります。
1.3.3.1 Elasticsearch のテンプレート
基本テンプレート を作成するには、フィールドを定義するだけです。
{ "index_patterns": ["pandorafms*"], "settings": { "number_of_shards": 1, "auto_expand_replicas" : "0-1", "number_of_replicas" : "0" }, "mappings" : { "properties" : { "agent_id" : { "type" : "long", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } }, "group_id" : { "type" : "long", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } }, "group_name" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } }, "logcontent" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } }, "source_id" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } }, "suid" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } }, "type" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } }, "utimestamp" : { "type" : "long" } } } } }
一方、マルチノードテンプレートを定義する 場合は、考慮しなければならないことがいくつかあります。
テンプレート(JSON)の設定を行うときは、ノードと同じ数の検索を設定する ことを考慮に入れる必要がありますが、正しく設定するには、環境に実際に存在する レプリカの数から 1を引く 必要があります。
このように、3つのノードを設定した Pandora を使用する Elasticsearch 環境で、 "number_of_search" および' "number_of_replicas" フィールドを変更すると、次のようになります。
{ "index_patterns": ["pandorafms*"], "settings": { "number_of_shards": 3, "auto_expand_replicas" : "0-1", "number_of_replicas" : "2" },
これらの操作は、ネイティブの ElasticsSearch コマンドを使用して Pandora FMS の ElasticSearch インターフェイスから実行できます。
- PUT _template/nombredeltemplate: テンプレートからデータ入力をします。
- GET _template/nombredeltemplate: テンプレートを参照します。
1.4 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時間のすべてのデータソースからのログメッセージを見てみます。Search, Start date および End date を見てください。
最も重要で便利なフィールドは、検索 テキストボックスに入力する検索文字列と、使用可能な 3つの 検索モード です。
- 完全一致
- 文字検索で、log は完全マッチします。
- 全単語
- 単一の ログ の行の順序に関係なく、指定された単語(各単語はスペースで区切られることに注意してください)を すべて 含むかを検索します。
- 任意の単語
- 順番は関係なく、指定した単語の いくつか が含んでいるかを検索します。
フィルタされたコンテンツのコンテキストを表示するオプションがチェックされている場合、結果は、検索に関連する他のログ行に関する情報を含む状況の概要になります。
1.5.1 表示と高度な検索
この機能により、ログエントリをグラフに変換し、 データキャプチャテンプレート に従って情報を整理できます。
これらのデータキャプチャテンプレートは基本的に正規表現と識別子であり、データソースを分析してグラフとして表示できます。
高度なオプションへアクセスするには、高度なオプション(Advanced options)' をクリックします。表示形式を選択できるフォームが表示されます。
- ログエントリーの表示 (プレーンテキスト) - ロググラフの表示
ロググラフ表示 オプションでは、キャプチャテンプレートを選択できます。
Apache log model テンプレートは、デフォルトで、標準形式の Apache ログ (access_log) をパースし、時間応答比較グラフの取得、訪問サイトと応答コードによるソートができます。
編集ボタンを押すと、選択したキャプチャテンプレートを編集できます。作成ボタン
では、新たなキャプチャテンプレートを追加できます。
このフォームでは、以下を選択できます。
- キャプチャ正規表現(Capture regexp)
- データをキャプチャするための正規表現です。取得する各フィールドは、カッコでくくります。 (キャプチャする内容)
- フィールド(Fields)
- 正規表現を介してキャプチャされる順番です。 結果は、アンダースコアの間に書かれていない名前のキーフィールドの連結によってソートされます。
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
このキャプチャテンプレートは、選択した時間間隔におけるユーザのログイン数を返します。
1.6 エージェント設定
ログ収集は、Windows および Unux (LInux®, MacOS X®, Solaris®, HP-UX®, AIX®, BSD® など) エージェント双方で実行されます。Windows エージェントの場合、イベントビューワモジュールで同様のフィルタを用いることにより、Windows イベントビューワから情報を取得することもできます。
Windows と Unix でのログ情報収集の例をみてみます。
1.6.1 Windows の場合
バージョン 750 以降、このアクションは、詳細オプションを有効化することにより、エージェントプラグインを介して実行できます。
以下に示すタイプの処理を実行できるようになります。
Logchannel module
module_begin module_name MyEvent module_type async_string module_logchannel module_source <logChannel> module_eventtype <event_type/level> module_eventcode <event_id> module_pattern <text substring to match> module_description <description> module_end
Logevent module
module_begin module_name Eventlog_System module_type log module_logevent module_source System module_end
Regexp module
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
この種のタグ module_type logを 定義すると、データベースには保存されませんが、ログコレクターに送信されていることを示します。このタイプのデータを持つモジュールは、有効になっている場合はコレクターに送信され、有効になっていない場合は情報が破棄されます。
注意: この書式は、バージョン 5.0 以上で有効です。Enterprise 版をアップデートした状態にしているか確認してください。
1.6.2 Unix システム
エージェントバージョン 5.0 では、次の書式を使います。
module_plugin grep_log_module /var/log/messages Syslog \.\*
ログパースプラグイン(grep_log)と同じように、grep_log_module プラグインは、処理した情報をログファイルのソースとして "syslog" という名前でログ収集に送信します。どういったパターンの行を送信するかまたはしないかは、\.\* といった正規表現を利用します(この例では全て)。
1.7 エージェント表示でのログソース
Pandora FMS バージョン 749 以降、'ログソース状態' と呼ばれるボックスがエージェント表示に追加され、そのエージェントによる最後のログ更新の日付が表示されます。虫眼鏡のアイコンをクリックすると、そのログにフィルタしたログビューアー表示にリダイレクトされます。