OpenSearch のインストールと設定
OpenSearch を使用した Pandora FMS 設定は、「ログの収集と監視」を参照してください。
サーバ要件
Pandora FMS サーバと OpenSearch を独立したサーバに分散することをお勧めします。
- Rocky Linux 8 / RHEL 8 / Ubuntu 22.04 (推奨オペレーティングシステム)
- 最小 4 GB RAM (テスト、開発)、OpenSearch インスタンスごとに 8 GB の RAM を推奨 (最小基本要件、各環境および処理または保存されるデータ量に応じて、特定の要件を見積もる必要があります)。
- OpenSearch を動作させるノードでは SWAP を無効にします。
- 最小 4 つの CPU コア (最小基本要件。各環境および処理または保存されるデータ量に応じて、特定の要件を見積もる必要があります)。
- 50 GB システムストレージ。
- 100 GB OpenSearch ストレージ (最小基本要件。各環境および処理または保存されるデータ量に応じて、特定の要件を見積もる必要があります)。
- Pandora FMS サーバおよび Web コンソールから OpenSearch API (デフォルトポート
9200/TCP
) およびクラスタノード間の接続 (デフォルトポート9300/TCP
)。
これらの機能を備えた単一ノード環境では、1 日あたり最大 1 GB のデータを保存でき、30 日間保存できます。 より優れたデータ復元力、より優れたデータ処理とストレージ、およびフォールトトレランスが必要な場合は、OpenSearch クラスターの構成が必要になります (データの整合性を保証するには、少なくとも 3 つのノードが必要です)。 クラスタ環境に切り替えることでノード間の負荷分散も可能となり、環境の処理能力は2倍(3ノードの場合)となります。 異なるノードを同時に使用する場合、負荷分散システムが必要になります (Keepalived など)。
OpenSearch のインストールと設定
インストールに関する OpenSearch の公式ドキュメント:
https://opensearch.org/docs/latest/install-and-configure/install-opensearch/index /
インストール
マシン上で OpenSearch を実行する前に、パフォーマンスを向上させ、OpenSearch で使用できるメモリマップの数を増やすために、ホスト上のメモリページングとスワップを無効にする必要があります。 詳細については、“Important Settings” を参照してください。
# Disable memory paging and swapping. sudo swapoff -a # Edit the sysctl config file that defines the host's max map count. sudo vi /etc/sysctl.conf # Set max map count to the recommended value of 262144. vm.max_map_count=262144 # Reload the kernel parameters. sudo sysctl -p
Rocky Linux 8 の場合は、RPM パッケージでのインストールをお勧めします。
パッケージ一覧: https://opensearch.org/downloads.html
公式インストールドキュメント: https://opensearch.org/docs/latest/install-and-configure/install-opensearch/rpm/
OpenSearch をインストールしたら、Pandora FMS から OpenSearch へのアクセスを確認する必要があります。 このテストを実行する前に、ノードまたはクラスタを設定する必要があります。 このインストールチェックでは、次のコマンドを実行します。
curl -X GET https://<ip_opoensearch_box>:9200 -u 'admin:admin' --insecure
次のような応答が返ります。
{ "name" : "hostname", "cluster_name" : "opensearch", "cluster_uuid" : "6XNc9m2gTUSIoKDqJit0PA", "version" : { "distribution" : "opensearch", "number" : <version>, "build_type" : <build-type>, "build_hash" : <build-hash>, "build_date" : <build-date>, "build_snapshot" : false, "lucene_version" : <lucene-version>, "minimum_wire_compatibility_version" : "7.10.0", "minimum_index_compatibility_version" : "7.0.0" }, "tagline" : "The OpenSearch Project: https://opensearch.org/" }
デフォルトでは、OpenSearch のインストールでは SSL、ユーザ名、パスワードが有効になっており、これが推奨事項です。 デフォルトのユーザ名とパスワードを変更することをお勧めします。
ノード設定
まず設定ファイル /etc/opensearch/opensearch.yml
を編集します。その後、OpenSearch サービスを再起動します。
このファイルには、OpenSearch サービスのすべてのパラメータ設定が含まれています。 詳細については、公式ドキュメントを参照してください。
https://opensearch.org/docs/latest/install-and-configure/configuration/
サービスを開始して Pandora FMS で使用するために必要な最低限の設定。
- ポート番号
# ---------------------------------- 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 # For more information, consult the network module documentation.
- データおよびログの保存場所
# ----------------------------------- Paths # Path to directory where to store the data (separate multiple locations by comma): path.data: /var/lib/opensearch # Path to log files: path.logs: /var/log/opensearch
次の行のコメントを外して定義することも必要になります。
cluster.name: pandorafms node.name: ${HOSTNAME} network.host: 0.0.0.0
cluster.name
: これは、グループまたはクラスタの名前になります。node.name
:${HOSTNAME}
システム変数を使用してノードに名前を付けると、ホストの名前が自動的に取得されます。network.host
の値0.0.0.0
により、OpenSearch はすべてのネットワークインターフェイス (NIC) で待ち受けできます。 特定の NIC を使用するには、対応する特定の値を入力します。
単一ノードを使用する場合は、設定ファイルに次の行を追加して、単一ノードが起動できるようにします。
discovery.type: single-node
クラスターを使用する場合は、discovery.seed_hosts
パラメータを設定する必要があります。
discover.seed_hosts : ["ip:port", "ip", "ip"]
OpenSearch の最新バージョンでは、Java® 仮想マシンのメモリ管理は自動的に行われ、実稼働環境ではこの方法で管理することをお勧めします。そのため、JVM 値を変更する必要はありません。
OpenSearch を開始するには、次のように実行します。
systemctl start opensearch.service
再起動には restart
、停止には stop
、状態を確認するには status
を使用します。
サービスが開始しない場合は、/var/log/opensearch/
にあるログ (この場合はファイル pandorafms.log
またはノードに指定された名前) を確認してください。
OpenSearch のインストールと動作の確認は、次のコマンドで行なえます。
curl -X GET https://<node-ip> -u 'admin:admin' --insecure
OpenSearch クラスタのセットアップ
OpenSearch クラスタを設定するには、公式ドキュメントに従ってください。
https://opensearch.org/blog/optimize-opensearch-index-shard-size/
OpenSearch ユーザ管理
デフォルトのパスワードを admin
から変更するには、一連の手順に従う必要があります。 まず、OpenSearch によってインストールされた Java® JDK を使用していずれかのツールを使用できるように変数をエクスポートします。
export OPENSEARCH_JAVA_HOME=/usr/share/opensearch/jdk
次に、ハッシュ化されたパスワードを生成して OpenSearch 設定ファイルに配置するために、次のスクリプトを使用します (< password >
を使用するパスワードに置き換えます)。
/usr/share/opensearch/plugins/opensearch-security/tools/hash.sh -p <password>
例:
次に、テキストエディタ vim または nano でファイル /etc/opensearch/opensearch-security/internal_users.yml
を開き、必要なユーザのパスワードを変更します。
Pandora FMS で使用するために admin
ユーザのみを残すことをお勧めします。他のユーザを維持する必要はありません。
ファイル例:
変更を有効にするには、以下を実行する必要があります。
cd /usr/share/opensearch/plugins/opensearch-security/tools
OPENSEARCH_JAVA_HOME=/usr/share/opensearch/jdk ./securityadmin.sh -cd /etc/opensearch/opensearch-security/ -cacert /etc/opensearch/root-ca.pem -cert /etc/opensearch/kirk.pem -key /etc/opensearch/kirk-key.pem -icl -nhnv-t internalusers -icl -nhnv -cacert /etc/opensearch/root-ca.pem -cert /etc/opensearch/kirk.pem -key /etc/opensearch/ kirk-key.pem
最後のメッセージ Done with success
が表示されます。 新しいパスワードを確認するには (pandora
を使用した前の例に従って) 次のようにします:
OpenSearch でのユーザ管理の詳細については、以下を参照してください。
OpenSearch を使用する Pandora FMS 設定
OpenSearch を使用するように Pandora FMS を設定するには、“ログ収集と監視” を参照してください。
データモデルとテンプレート
本番環境に設定する前に、それが単一ノードであってもデータクラスタであっても、その用途に基づいてこのノードまたはクラスタに対応する設定を適用することをお勧めします。 Pandora FMS によって生成されたインデックスの場合、最も効果的な方法は、フィールドと保存されたデータの設定を定義するテンプレートを定義することです。
テンプレートは、インデックスの作成時にのみ適用される設定です。 テンプレートを変更しても、既存のインデックスには影響しません。
基本テンプレートを作成するには、次のフィールドを定義するだけで済みます。
curl -X PUT -ku 'admin:admin' https://<node_ip>:9200/_index_template/pandorafms -H 'Content-Type: application/json' -d' { "index_patterns": [ "pandorafms*" ], "template": { "aliases": { "pandorafms_logs": {} }, "settings": { "number_of_shards": 1, "auto_expand_replicas" : "0-1", "number_of_replicas": "0" }, "mappings" : { "properties" : { "agent_id" : { "type" : "long" }, "group_id" : { "type" : "long" }, "group_name" : { "type" : "text" }, "logcontent" : { "type" : "text" }, "source_id" : { "type" : "text" }, "suid" : { "type" : "text" }, "type" : { "type" : "text" }, "utimestamp" : { "type" : "long" }, "@timestamp": { "type": "date" } } } } } '
Pandora FMS (メニュー) インターフェイスを通じて、上記のテンプレートをアップロードできます。
- PUT _template/<templatename>: この例では、
PUT _template/pandorafms
です。
Pandora FMS インターフェイス自体を通じてテンプレートを確認することもできます。
- GET _template/<templatename>: この例では、
GET _template/pandorafms
です。
複数ノードテンプレート
複数ノードテンプレートを定義するには、次の情報を考慮してください。
- テンプレート (JSON 形式) を設定する場合、存在するノードと同じ数のシャードを設定する必要があります。ただし、レプリカを正しく設定するには、環境内のノードの数から 1 を減算します。
たとえば、3 つのノードが設定された Pandora FMS 環境で、number_of_shards
フィールドと number_of_replicas
フィールドを変更すると、次のようになります。
{ "index_patterns": ["pandorafms*"], "settings": { "number_of_shards": 3, "auto_expand_replicas" : "0-1", "number_of_replicas" : "2" },
コマンドラインから次のコマンドを実行して、環境テンプレートを一覧表示できます。
curl -X GET "localhost:9200/_cat/templates/*?v=true&s=name&pretty"
次のコマンドを実行すると、たとえば pandorafms
用に作成されたテンプレートの詳細を確認することもできます。
curl -X GET "localhost:9200/_template/pandorafms*?pretty"
これにより、定義した設定が JSON 形式で返されます。
これらの操作は、Pandora FMS インターフェイスを通じて実行できます。
- PUT _template/<template_name> {json_data}: 作成するテンプレートのデータを入力します。
- GET _template/><template_name>: 作成したテンプレートを確認できます。
OpenSearch を使うように Pandora FMS を設定するには、“ログ収集と監視” を参照してください。