Data Nodeの設定
この文書では、Data Nodeでパッケージのインストールを終えた後に実行する作業について説明します。この作業はControl Node設定を終えた後に進めることができます。
- フェデレーション通信アカウント設定: Data Nodeのフェデレーションアカウントパスワードを設定します。
- Data Nodeペア設定: ウェブコンソールでData Nodeペアを登録し、関連設定を実行します。
フェデレーション通信アカウント設定
Logpressoシェル接続
Data Node AとBでそれぞれLogpressoシェルに接続し、初期パスワードを変更する必要があります。パスワード紛失に備えてSSHキーを登録しておくことを推奨します。
基本パスワードの変更
-
ターミナルで次のコマンドを実行し、Logpressoシェルに接続してください。ポート番号は
logpresso.confファイルのSSH_PORT設定により異なる場合があります(デフォルト値: 7022)。ssh -p 7022 root@localhost -
パスワードを求めるプロンプトが表示されたら、Logpressoシェル初期パスワードを入力してください。
-
新しいパスワード入力プロンプトが表示されたら、新しいパスワードを入力し、Enterキーを押してください。Logpressoシェルアカウントは各ノードのSSH接続にのみ使用されるため、ノードごとに異なるパスワードを設定しても問題ありません。
Please change the default password. New password: # 新しいパスワードを入力後Enter Retype password: # 新しいパスワードを再入力後Enter Password changed successfully. Logpresso SNR-4.0.2511.1 (build 20250805) on Araqne Core 4.0.5 logpresso> # LogpressoシェルプロンプトCautionLogpressoシェルは基本パスワードの再使用を拒否します。どのアカウントでも絶対に基本パスワードを再使用しないでください。基本パスワードを使用して問題が発生した場合、Logpressoはこれについて責任を負いません。
オペレーティングシステムによっては、Logpressoシェルに接続する際にSSHキー交換および暗号化アルゴリズムのネゴシエーションで接続できない場合があります。Data Node A、Bの~/.ssh/configファイルに次の内容を追加し、ssh sonarコマンドで接続してください。
Host sonar
HostName 127.0.0.1
Port 7022
User root
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
KexAlgorithms +diffie-hellman-group14-sha1
Ciphers +aes256-cbc
PreferredAuthentications publickey # SSHキーログイン
IdentityOnly yes # SSHキーログイン
IdentityFile ~/.ssh/logpresso_rsa # SSHキーログイン
SSHキー登録(オプション)
SSHキー認証でLogpressoシェルに接続できます。パスワード紛失時にも接続できるため、SSHキー登録を推奨します。
-
RSAキーがない場合は、次のコマンドを実行してキーペアを生成してください。
ssh-keygen -t rsa -b 2048 -f ~/.ssh/logpresso_rsaNoteLogpressoシェルはssh-rsaキーのみをサポートします。
-
Logpressoシェルで次のコマンドを実行し、SSH公開鍵を登録してください。
account.addSshKey root -
プロンプトが表示されたら、SSH公開鍵を入力してください。公開鍵は
~/.ssh/logpresso_rsa.pubファイルにあります。SSH public key? ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQ... # 公開鍵全体を入力 root password: # 現在のパスワードを入力 addedTip公開鍵ファイルの絶対パスを直接指定することもできます: account.addSshKey root /home/logpresso/.ssh/logpresso_rsa.pub
-
次のコマンドを実行し、登録されたSSHキーの一覧を確認してください。
account.sshKeys rootコマンドを実行すると、次のように登録されたSSHキーを確認できます。
Authorized SSH keys --------------------- 1: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQ... -
これで、パスワードなしでSSHキーでLogpressoシェルに接続できます。
ssh -p 7022 -i ~/.ssh/logpresso_rsa root@localhost
フェデレーションアカウントパスワードの設定
フェデレーションアカウントは、クラスターを構成するすべてのノード間の通信に使用するアカウントで、すでにControl Nodeペアに指定されたフェデレーションアカウントパスワードをそのまま使用します。
-
Data Node A、BのLogpressoシェルで次のコマンドを実行し、フェデレーションアカウントのパスワードを変更してください。
dom.resetPassword localhost root -
新しいパスワード入力プロンプトが表示されたら、Control Nodeペアで指定したフェデレーションアカウントパスワードを同一に入力し、Enterキーを押してください。
New Password: # パスワードを入力後Enter- パスワードは一度だけ入力できます。パスワードを誤って入力した場合は、
dom.resetPassword localhost rootコマンドを再実行すればよいです。
Noteフェデレーションアカウントrootは、Logpressoシェルアカウントrootと名前が同じでも、互いに異なる認証ドメインに属します。フェデレーションパスワード変更の過程でaraqne.logに一時的にERRORログが記録される場合がありますが、変更を終えた後に解決されます。
- パスワードは一度だけ入力できます。パスワードを誤って入力した場合は、
-
この文書を参考にして、フェデレーションアカウントのPassword ExpirationをUnlimitedに変更してください。
- ウェブブラウザを開き、
https://<Data Node A IPアドレス>:8443に接続してから、フェデレーションアカウントでログインしてください。 - ウェブコンソール左側メニューでSystem > Users画面に移動してください。
- フェデレーションアカウント一覧でrootをクリックしてください。
- Passwd. ExpirationフィールドでUnlimitedを選択し、Saveボタンをクリックしてください。
- ノードBでも同一の作業を実行してください。
- ウェブブラウザを開き、
Data Nodeペア設定
Data Nodeペア登録
ウェブコンソールSystem > Clusters > Node画面でData Nodeペアを登録します。
-
クラスターノード一覧の右上でAddボタンをクリックし、Data Nodeペアを設定してください。各プロパティに対する説明はユーザー説明書でノードペアの追加を参照してください。
- Type: Data Nodeを選択
- Name: Data Nodeペア識別子を入力(例:
d1)- Saveボタンをクリックした後は変更できません。
- Description: ノードペアに対する説明(省略可能)。
- TLS: 選択
- Certification Verification: 選択しない
- Connection Timeout: デフォルト値を使用
- Read Timeout: デフォルト値を使用
- Use HA Mode: 選択
- Virtual IP: 選択しない
- Node A Settings
- Node ID: ノードA識別子を入力(例:
d1a) - Address: ノードAの実際のIPアドレスと通信ポート(例:
203.0.113.129:8443)- Data Nodeのポート番号は
8443です。
- Data Nodeのポート番号は
- Login Name:
rootを入力 - Password: フェデレーションアカウントパスワードを入力
- Node ID: ノードA識別子を入力(例:
- Node B Settings
- Node ID: ノードB識別子を入力(例:
d1b) - Address: ノードBの実際のIPアドレスと通信ポート(例:
203.0.113.130:8443) - Login Name:
rootを入力 - Password: フェデレーションアカウントパスワードを入力
- Node ID: ノードB識別子を入力(例:
-
入力を完了した後、Saveボタンをクリックしてください。次のようにData Nodeペアが追加されたことを確認してください。
-
追加されたData NodeのNameをクリックしてプロパティを確認し、修正できます。NameやNode IDを誤って指定した場合は、ノードペアを削除して再構成する必要があります。
ノードAとノードBのGUIDを安全な場所に記録してください。この値はノードGUID設定で使用されます。
キー暗号化キーの複製
Control Nodeのキー暗号化キー(KEK、Key Encryption Key)をData Node A、Bに同一に複製します。
-
Control Node AまたはBのLogpressoシェルで次のコマンドを実行し、暗号化キー文字列を安全な場所に記録してください。
sonar.cipherKey -
Data Node A、BのLogpressoシェルでそれぞれ次のコマンドを実行し、同一の暗号化キーを構成してください。
KEY_STRINGはControl Nodeの暗号化キー文字列です。sonar.setCipherKey KEY_STRING
ノードGUID設定
Data Nodeペア登録の段階で確認したData Node A、BのGUIDを、各ノードのLogpressoシェルで同一に設定します。
-
Data Node AとBのLogpressoシェルで次のコマンドを実行し、各ノードのポリシー同期用GUIDをLogpressoエンジンに設定してください。
GUID_STRINGは各ノードのGUID文字列です。sonar.setGuid GUID_STRING # 各ノードに合ったGUIDを入力 -
各ノードのポリシー同期用GUIDは、次のコマンドで確認できます。
sonar.nodeConfig
マスターノード接続設定
Data NodeはControl Nodeの制御を受けます。Data NodeがControl Nodeに接続する方式で通信が行われるため、ポリシーマスターノード接続のための情報を設定する必要があります。
-
ノードAとノードBのLogpressoシェルで次のコマンドを実行してください。
sonar.setMaster次は、コマンド実行後に出力されるプロンプトと入力する値に対する説明です。ここで使用するアカウントはフェデレーションアカウントです。
host? 203.0.113.193 # Control Nodeペアの代表IPアドレス port? 443 # 443を入力 account? root # フェデレーションアカウントであるrootを入力 password? # フェデレーションアカウントパスワードを入力 connect timeout? 10000 # Enterキーを押すとデフォルト値を使用 read timeout? 10000 # Enterキーを押すとデフォルト値を使用 secure? true # trueを入力(デフォルト値はfalse) skip cert check? true # trueを入力(デフォルト値はfalse)オプション 説明 例 host Control Nodeペアの代表IPアドレス 203.0.113.193 port Control Nodeのフェデレーション通信ポート 443 account フェデレーションアカウント root password フェデレーションアカウントパスワード connect timeout サーバー接続待機時間 10000 (ms) read timeout 応答待機時間 10000 (ms) secure TLS通信の適用可否 true skip cert check TLS証明書の有効性検査の省略可否 true -
次のコマンドを実行し、ノード設定が適用されたか確認してください。
sonar.nodeConfig次は、コマンド実行後に正常に設定されたときに確認できる出力例です。
guid: ffe0c23a-31b6-4227-8ebb-7922aa5e86e7 host=203.0.113.193, port=443, account=root, connectTimeout=10000, readTimeout=10000, secure=true, skipCertCheck=true crypto_file_path: null
データ複製モード設定
ノードペアを構成すると、2つのノード間でテーブルデータを複製できます。ここでいう「テーブル」とは、データベーステーブルではなく、Logpressoエンジンがデータを保存するファイルベースのテーブルを意味します。
2つのノードに同一のデータが存在すると、分散クエリ実行時に重複検索が発生する場合があります。これを防ぐために、各ノードにアクティブ(ACTIVE)またはスタンバイ(STANDBY)のいずれかのデータ複製モードを設定する必要があります。
- アクティブノード: ログテーブルの原本を保存し、分散クエリ時に検索対象になります。
- スタンバイノード: アクティブノードのログテーブルデータをリアルタイムで複製されます。複製されたテーブルは原本と同一のテーブルIDを使用し、分散クエリ時に検索から除外されるため、重複検索が発生しません。
logpresso.setActiveNodeコマンドは、相手ノードをアクティブに指定して自身をスタンバイに設定します。
ノードA設定(アクティブ)
-
ノードAのLogpressoシェルで次のコマンドを実行し、ペアノード(ノードB)の名前を確認してください。
logpresso.nodeStatuses次は出力例です。
Federation Nodesセクションで[d1b]がノードBの名前です。Local ------------------ Node GUID: b6b014f9-88c2-48c1-96c8-e23d8bdb65bc Instance GUID: af43a33f-7985-41cb-9c7b-31224e47c35a Federation Nodes ------------------ [d1b] node_guid=44494d5a-40c7-4e02-93bb-71adb50f3aec, instance_guid=3189e170-dae7-465a-a713-21e3da40cbb7, repl_mode=null, pair_guid=null, invalid_guid=false, alive=true, paired=true, failure=false, last connect=2025-06-09 13:39:20, last alive=2025-06-10 14:08:08, created=2025-06-09 13:39:20Notelogpresso.nodeStatusesコマンドの出力に表示されるNode GUIDとInstance GUIDは、Logpressoエンジンがログテーブル複製と分散クエリのために使用する識別子です。Node GUIDはデータベースの識別に使用され、DB_GUIDファイルに記録して永続的に保管します。Instance GUIDは現在実行中のプロセス識別子で、ノードプロセスを開始するたびに変更されます。
-
次のコマンドを実行し、ノードBをスタンバイノードに指定すると、ノードAはアクティブノードになります。コマンド例で
d1bは上で確認したノードBの名前です。logpresso.setStandbyNode d1b -
logpresso.nodeStatusesコマンドを再度実行すると、LocalセクションでReplication ModeがACTIVEに設定されたことがわかります。------------------ Node GUID: b6b014f9-88c2-48c1-96c8-e23d8bdb65bc Instance GUID: af43a33f-7985-41cb-9c7b-31224e47c35a Replication Mode: ACTIVE Pair Node: d1b Federation Nodes ------------------ [d1b] node_guid=44494d5a-40c7-4e02-93bb-71adb50f3aec, instance_guid=3189e170-dae7-465a-a713-21e3da40cbb7, repl_mode=null, pair_guid=null, invalid_guid=false, alive=true, paired=true, failure=false, last connect=2025-06-09 13:49:36, last alive=2025-06-10 14:08:08, created=2025-06-09 13:49:36
ノードB設定(スタンバイ)
-
ノードBのLogpressoシェルで次のコマンドを実行し、ノードAをアクティブに指定すると、ノードBはスタンバイノードになります。
d1aはlogpresso.nodeStatusesコマンドの実行結果で確認したノードAの名前です。logpresso.setActiveNode d1a -
logpresso.nodeStatusesコマンドを実行すると、LocalセクションでReplication ModeがSTANDBYに設定されたことがわかります。Local ------------------ Node GUID: 44494d5a-40c7-4e02-93bb-71adb50f3aec Instance GUID: 3189e170-dae7-465a-a713-21e3da40cbb7 Replication Mode: STANDBY Pair Node: d1a Federation Nodes ------------------ [d1a] node_guid=6b6b014f9-88c2-48c1-96c8-e23d8bdb65bc, instance_guid=af43a33f-7985-41cb-9c7b-31224e47c35a, repl_mode=ACTIVE, pair_guid=44494d5a-40c7-4e02-93bb-71adb50f3aec, invalid_guid=false, alive=true, paired=true, failure=false, last connect=2025-03-26 17:03:11, last alive=2025-03-27 13:40:55, created=2025-03-26 17:03:11
システムログ転送設定
Data NodeのCPU、メモリなどの性能情報を収集するように設定します。収集されたデータは、ウェブコンソールSystem > Performance Monitor画面で確認できます。
-
Data Node A、BのLogpressoシェルでそれぞれ
sentry.setGuidコマンドを実行し、Sentry GUIDを設定してください。ここでGUIDはノードIDを意味します。たとえば、Data Node AのノードIDがd1aの場合は、次のように設定してください。sentry.setGuid d1a -
Data Node A、Bで次のコマンドを実行し、ログを転送するControl Nodeを設定してください。
# sentry.addBase BASE_NAME IP_ADDR PORT SENTRY_CERT CA_CERT SWAP_SIZE sentry.addBase c1 203.0.113.193 7140 logpresso-sentry logpresso-ca 1073741824BASE_NAME: Control Nodeペアの名前(例:c1)IP_ADDR: Control Nodeペアの代表IPアドレス(例:203.0.113.193)PORT: Sentryポート(例:7140)SENTRY_CERT: Sentry証明書(例:logpresso-sentry)CA_CERT: Logpresso CA証明書(例:logpresso-ca)SWAP_SIZE: スワップサイズ(例:1073741824(=1GB)、単位: バイト)
-
次のコマンドを実行し、接続を確認してください。
sentry.connections次は、コマンド実行後に正常に設定されたときに確認できる出力例です。
Connections -------------------- [c1] id=2035698886, peer=(1b3fcc3f-61ce-41ae-9c45-d0096b8b7fff, /203.0.113.193:7140), trusted level=Low, ssl=true, props={phase=post_hello, type=command}
ノード間ライセンス共有設定
クラスター環境で、すべてのノードが同一のライセンスの適用を受けるように設定します。Control Nodeに登録したライセンスは、Data Node、Forwarder Nodeにも適用されます。ここでは、Control NodeのライセンスをData Nodeに適用する方法について説明します。
-
ノードAとノードBのLogpressoシェルで次のコマンドを実行し、ライセンス共有を有効にしてください。
logpresso.setLicenseMode slave -
次のコマンドを実行し、ライセンスマスターの状態を確認してください。
logpresso.licenseMode正常に設定されると、次のように出力されます。
SLAVE -
(Control Node A、B) この文書を参考にして、Data Nodeをライセンススレーブとして登録してください。
- ウェブブラウザを開き、
https://<Control Node A IPアドレス>:8443に接続してください。 - フェデレーションアカウントでログイン後、Settings > License Managementに移動してください。
- All Node ListでRegister Nodeをクリックしてください。
- ライセンススレーブノードの情報を入力し、生成をクリックしてください。
- Name: Data Node識別用の名前(例:
d1a、d1b) - ホストアドレス: Data NodeのIPアドレス
- Port: Data Nodeのフェデレーション通信ポート。8443を入力してください。
- User: フェデレーションアカウントID(
root) - Password: フェデレーションアカウントのパスワード
- Secure: Enableを選択してください。
- Verify Certification: Enableにチェックされている場合は選択を解除してください。
- Connection Timeout: デフォルト値を使用してください。
- Read Timeout: デフォルト値を使用してください。
- Name: Data Node識別用の名前(例:
- Control Node Bでも同一の作業を実行してください。
- ウェブブラウザを開き、
分散クエリの有効化
分散クエリ(Distributed Query)は、複数のノードに分散保存されたテーブルデータを1つのクエリで統合照会する機能です。分散クエリの実行時に重複検索を防止し、正常なクエリ結果を得るには、すべてのノードで分散クエリを有効にする必要があります。
-
ノードAとノードBのLogpressoシェルでそれぞれ次のコマンドを実行し、分散クエリを有効にしてください。
logpresso.enablePlanner -
次のコマンドを実行し、分散クエリの状態を確認してください。
logpresso.plannerStatus正常に有効化されると、次のように出力されます。
Running: true
ウェブサーバー設定
パッケージのインストール後に開いているウェブサービスポートがあります。不要なポートを閉じ、Data Nodeの運用に必要なポートのみを開放します。
-
Logpressoシェルで次のコマンドを実行し、開いているウェブサービスポートを確認してください。
httpd.bindings次は、コマンド実行後に確認できる出力例です。
/0.0.0.0:8443 (ssl: key logpresso-web, trust null), opened, default context: webconsole, idle timeout: 0seconds, log file prefix: null, access log: false, error log: false /0.0.0.0:18443 (ssl: key logpresso-web, trust null), opened, default context: sonar-explanation, idle timeout: 0seconds, log file prefix: null, access log: false, error log: false /0.0.0.0:443 (ssl: key logpresso-web, trust null), opened, default context: sonar, idle timeout: 0seconds, log file prefix: null, access log: false, error log: false /0.0.0.0:44300 (ssl: key logpresso-web, trust null), opened, default context: deploy, idle timeout: 0seconds, log file prefix: null, access log: false, error log: false -
次のコマンドを実行し、開いているウェブポートをすべて閉じ、証明書の変更を反映してフェデレーション通信に使用するポートのみを開放してください。
httpd.close 8443 httpd.close 18443 httpd.close 443 httpd.close 44300 httpd.openSsl 8443 webconsole logpresso-web
WebSocketフレーム設定(オプション)
フェデレーション通信はWebSocketを使用するため、分散クエリの結果が大きかったり、転送するデータが多かったりすると、デフォルトのWebSocketフレームサイズでは転送が失敗する場合があります。大容量データを円滑に処理するには、フレームサイズを増やす必要があります。
-
ノードAとノードBのLogpressoシェルで次のコマンドを実行し、現在の設定値を確認してください。
webconsole.maxFrameSizeデフォルト値は8MBで、コマンドの実行結果は次のとおりです。
8,388,608 bytes -
次のコマンドを実行し、フレームサイズを変更してください。例で設定した値は84MBです。
webconsole.setMaxFrameSize 83886080 -
再度
webconsole.maxFrameSizeコマンドを実行し、変更された値を確認してください。83,886,080 bytes
クエリキャッシュ設定
クエリ性能の最適化のため、テーブルメタデータ、逆インデックス、ブルームフィルタをメモリにキャッシュします。各キャッシュの役割は次のとおりです。
- テーブルキャッシュ: クエリ時にディスクから読み込んだログデータをキャッシュし、同一データの再照会時にディスクI/Oなしでメモリからすぐに返します。
- 逆インデックスキャッシュ: フルテキスト検索のために、特定の検索語(term)が含まれる文書IDの一覧をキャッシュします。
- ブルームフィルタ0/1キャッシュ: ブルームフィルタは、特定の検索語が該当するセグメントに存在するかを高速に判別する確率的データ構造です。ブルームフィルタ0は高速な判別に、ブルームフィルタ1は精密な判別に使用されます。
ノードAとノードBのLogpressoシェルで次のコマンドを実行し、キャッシュサイズを設定してください。
logpresso.tableCacheConfig max_weight CACHE_SIZE # テーブルキャッシュ
logpresso.indexCacheConfig inverted max_weight CACHE_SIZE # 逆インデックスキャッシュ
logpresso.indexCacheConfig bloomfilter0 max_weight CACHE_SIZE # ブルームフィルタ0キャッシュ
logpresso.indexCacheConfig bloomfilter1 max_weight CACHE_SIZE # ブルームフィルタ1キャッシュ
CACHE_SIZEは、日処理量とメモリ容量を考慮して次の表の値を入力してください。キャッシュサイズの入力単位はバイトです。
| 日処理量 | RAM | HEAP | DM | max_weight | inverted | bloomfilter0 | bloomfilter1 |
|---|---|---|---|---|---|---|---|
| 500GB/日 | 128GB | 26GB | 76GB | 4,294,967,296 | 53,687,091,200 | 12,884,901,888 | 1,073,741,824 |
- max_weight: テーブルキャッシュ
- inverted: 逆インデックス(inverted index)キャッシュ
- bloomfilter0: ブルームフィルタ0キャッシュ
- bloomfilter1: ブルームフィルタ1キャッシュ
- カンマ(
,)は入力しないでください。カンマは読みやすくするために単位を区切って表示しています。
キャッシュをGB単位に換算すると、次の表のとおりです。
| 日処理量 | RAM | HEAP | DM | max_weight | inverted | bloomfilter0 | bloomfilter1 |
|---|---|---|---|---|---|---|---|
| 500GB/日 | 128GB | 26GB | 76GB | 4GB | 50GB | 12GB | 1GB |
サービス再起動
変更した設定を適用するには、Logpressoサービスを再起動する必要があります。作業の順序は次のとおりです。
- 停止順序: スタンバイ → アクティブ
- 開始順序: アクティブ → スタンバイ
デフォルトでは、ノードAがアクティブ、ノードBがスタンバイです。システム運用中にアクティブノードを先に開始すると、原本データサービスを迅速に復旧し、スタンバイノードが開始時にすぐに複製接続を結ぶことができます。
ノードを停止するには、
-
スタンバイノード(ノードB)で次のコマンドを実行し、Logpressoサービスを停止してください。
sudo systemctl stop logpresso -
ノードBが停止したら、アクティブノードAで同一のコマンドを実行し、サービスを停止してください。
ノードを開始するには、
-
ノードAで次のコマンドを実行し、Logpressoサービスを開始してください。
sudo systemctl start logpresso -
ノードAが正常に開始されたら、ノードBで同一のコマンドを実行し、Logpressoサービスを開始してください。
-
ノードAのウェブコンソールにログインした後、System > Performance Monitor画面で各Data Nodeの状態が緑色で表示されるか確認してください。
Control Nodeとのストリームクエリ接続
Data Nodeでリアルタイム探知規則が生成したイベントデータをControl Nodeに転送し、最終的なイベント処理(alert)が実行されるようにパイプラインを構成します。各構成要素の役割は次のとおりです。
sonar_event_logger(Data Node): Data Nodeのsonar_eventストリームクエリの出力を収集するストリーム収集器sonar_event_data(Control Node): Data Nodeのsonar_event_loggerからデータを読み込むストリームクエリsonar_event(Control Node):sonar_event_dataを入力として受け取り、alertコマンドを実行してイベントを処理し、保存するストリームクエリ
最終的に、次のようなデータフローが構成されます: (Data Node A、B) sonar_event_logger → (Control Node A、B) sonar_event_data → (Control Node A、B) sonar_event
sonar_event_logger収集器の作成
-
(Data Node A、B) Logpressoシェルで次のコマンドを実行し、
sonar_event_logger収集器を作成してください。# logapi.createLogger LOGGER_FACTORY_NAME NAMESPACE LOGGER_NAME logapi.createLogger stream local sonar_event_loggerLOGGER_FACTORY_NAME: 収集器ファクトリ名。streamを入力してください。NAMESPACE: 収集器ネームスペース。localを入力してください。LOGGER_NAME: 作成する収集器の名前。sonar_event_loggerを入力してください。
次は、コマンド実行後に出力されるプロンプトと入力する値に対する説明です。
Stream query name (required)? sonar_event # sonar_eventを入力 transformer (optional, enter to skip)? # Enterキーを押して入力を省略Stream query name: 収集されたログを受け取るデータストリームクエリの名前。sonar_eventを入力してください。transformer: 何も入力せずにEnterキーを押してください。
プロンプトにすべての値を入力すると、次のように作成された収集器情報が出力されます。
logger created: name=local\sonar_event_logger, factory=local\stream, status=stopped (passive), log count=0, log volume=0, last start=null, last run=null, last log=null -
(Data Node A、B)
logapi.loggersコマンドを実行し、sonar_event_logger収集器が作成されたか確認してください。次は出力結果の例で、sonar_event_logger収集器のenabledフィールドはdisabled、statusフィールドはstoppedと表示されます。Loggers ---------------------- +------------------------------+--------------------+----------+---------+------------+----------+------------+-----------+---------------------------+-------------+-------+ | name | factory | enabled | status | intvl.(ms) | schedule | time range | log count | last log | stop reason | error | +------------------------------+--------------------+----------+---------+------------+----------+------------+-----------+---------------------------+-------------+-------+ | local\sonar_system_alert | system-alert | enabled | running | 0 | null | null | 17 | 2025-07-09 15:09:59 +0900 | | | | local\sonar_event_logger | stream | disabled | stopped | 0 | null | null | 0 | null | | | +------------------------------+--------------------+----------+---------+------------+----------+------------+-----------+---------------------------+-------------+-------+ -
(Control Node A) Logpressoシェルで
logapi.loggersコマンドを実行し、現在作成されている収集器の一覧を照会してください。Data Nodeで作成した収集器が各Data Nodeのネームスペース(d1a、d1b)で表示されます。Loggers ---------------------- +--------------------------------+--------------------+----------+---------+------------+----------+------------+-----------+---------------------------+-------------+-------+ | name | factory | enabled | status | intvl.(ms) | schedule | time range | log count | last log | stop reason | error | +--------------------------------+--------------------+----------+---------+------------+----------+------------+-----------+---------------------------+-------------+-------+ | d1a\sonar_event_logger | stream | disabled | stopped | 0 | null | null | 0 | null | | | | d1a\sonar_system_alert | system-alert | enabled | running | 0 | null | null | 17 | 2025-07-09 15:09:59 +0900 | | | | d1b\sonar_event_logger | stream | disabled | stopped | 0 | null | null | 0 | null | | | | d1b\sonar_system_alert | system-alert | enabled | running | 0 | null | null | 23 | 2025-07-09 15:09:59 +0900 | | | | local\sonar_system_alert | system-alert | enabled | running | 0 | null | null | 72 | 2025-07-09 16:17:10 +0900 | | | +--------------------------------+--------------------+----------+---------+------------+----------+------------+-----------+---------------------------+-------------+-------+ -
(Control Node A) 次のコマンドを実行し、Data Nodeの収集器を管理対象として登録してください。管理対象として登録された収集器はシステム再起動時に自動的に開始され、HA環境で状態同期が実行されます。
# logpresso.createLogger NAMESPACE\LOGGER_NAME logpresso.createLogger d1a\sonar_event_logger logpresso.createLogger d1b\sonar_event_loggerNAMESPACE\LOGGER_NAME: 収集器のフルネーム。手順3で確認した収集器名を入力してください。
-
(Control Node A) 次のコマンドを実行し、収集器を有効にしてください。
# logapi.startLogger NAMESPACE\LOGGER_NAME logapi.startLogger d1a\sonar_event_logger logapi.startLogger d1b\sonar_event_loggerNAMESPACE\LOGGER_NAME: 収集器のフルネーム。手順3で確認した収集器名を入力してください。
-
(Control Node A)
logapi.loggersコマンドを実行し、出力された収集器の一覧でsonar_event_logger収集器のenabledフィールドにenabled、statusフィールドにrunningが表示されるか確認してください。Loggers ---------------------- +--------------------------------+--------------------+---------+---------+------------+----------+------------+-----------+---------------------------+-------------+-------+ | name | factory | enabled | status | intvl.(ms) | schedule | time range | log count | last log | stop reason | error | +--------------------------------+--------------------+---------+---------+------------+----------+------------+-----------+---------------------------+-------------+-------+ | d1a\sonar_event_logger | stream | enabled | running | 0 | null | null | 0 | null | | | | d1a\sonar_system_alert | system-alert | enabled | running | 0 | null | null | 17 | 2025-07-09 15:09:59 +0900 | | | | d1b\sonar_event_logger | stream | enabled | running | 0 | null | null | 0 | null | | | | d1b\sonar_system_alert | system-alert | enabled | running | 0 | null | null | 23 | 2025-07-09 15:09:59 +0900 | | | | local\sonar_system_alert | system-alert | enabled | running | 0 | null | null | 72 | 2025-07-09 16:17:10 +0900 | | | +--------------------------------+--------------------+---------+---------+------------+----------+------------+-----------+---------------------------+-------------+-------+
sonar_event_dataストリームクエリの作成
Data Nodeの収集器に収集されるデータをControl Nodeのsonar_eventストリームクエリに転送するために、次の過程を進めます。
-
(Control Node A) Logpressoシェルで次のコマンドを実行し、ストリームクエリを作成してください。
# logpresso.createStreamQuery NAME SOURCE_TYPE logpresso.createStreamQuery sonar_event_data loggerNAME: ストリームクエリの名前。sonar_event_dataを入力してください。SOURCE_TYPE: データソースタイプ。loggerを入力してください。
次は、コマンド実行後に出力されるプロンプトと入力する値に対する説明です。
interval? 60 # 60(秒)を入力 query? bypass # bypassを入力 loggers? d1a\sonar_event_logger, d1b\sonar_event_logger # Data Node A、Bの収集器フルネームの一覧を入力 owner? root # 所有者アカウント名を入力 async [y/N]? N # Nを入力interval: ストリームクエリの実行周期。60を入力してください。query: ストリームクエリのクエリ文字列。bypassを入力してください。loggers: 接続する収集器のフルネーム。d1a\sonar_event_loggerを入力してください。owner: 所有者アカウント名。rootを入力してください。async: 非同期モード実行の可否。Nを入力してください。
-
logpresso.streamQueriesコマンドを実行し、ストリームクエリの一覧にsonar_event_dataストリームクエリが照会されるか確認してください。次は出力結果の例で、sonar_event_dataストリームクエリのenabledフィールドはtrue、runningフィールドはtrueと表示されます。Stream Queries ---------------- +-----------------------------------------+-------------+--------------+---------------------+---------+---------+-------+-------+ | name | input count | output count | last refresh | running | enabled | async | error | +-----------------------------------------+-------------+--------------+---------------------+---------+---------+-------+-------+ | sonar_event | 0 | 0 | 2025-07-09 15:14:54 | true | true | false | null | | sonar_event_data | 0 | 0 | 2025-07-09 15:21:35 | true | true | false | null | | ..... | +-----------------------------------------+-------------+--------------+---------------------+---------+---------+-------+-------+
sonar_eventストリームクエリの接続
次に、Control Node Aでsonar_eventストリームクエリに、上で作成したデータソースストリームクエリを接続します。
-
LogpressoウェブコンソールAnalysis > Queries画面で次のコマンドを実行し、sonar_event_dataが追加されたストリームクエリの一覧を生成してください。
system-streams | search name == "sonar_event" | eval streams = format("sonar_event_data,%s", strjoin(",", input_streams)) | fields streams -
streamsフィールドにある値を安全な場所にコピーしておいてください。次の段階でstreamsプロンプトにこの値を入力する必要があります。 -
次のコマンドを実行し、
sonar_eventストリームクエリとsonar_event_dataストリームクエリを接続します。# logpresso.updateStreamQuery NAME SOURCE_TYPE logpresso.updateStreamQuery sonar_event STREAM # STREAMを大文字で入力NAME: ストリームクエリの名前。sonar_eventを入力してください。SOURCE_TYPE: データソースタイプ。STREAMを入力してください。
次は、コマンド実行後に出力されるプロンプトと入力する値に対する説明です。
interval? 0 # 0を入力 query? alert # alertを入力 streams? sonar_rule_00001,sonar_rule_00003,sonar_rule_00005, ..., sonar_rule_00051,sonar_event_data # streamsフィールドからコピーした値 async [y/N]? N # Nを入力 owner? root # 所有者アカウント名を入力Cautionlogpresso.updateStreamQueryコマンドは既存のデータをすべて上書きするため注意してください。streamプロンプトに値を入力するとき、input_streamsフィールドから照会したストリームの一覧とsonar_event_dataをカンマ(,)で区切って正確に入力する必要があります。
Control Nodeペア同期
先に設定したsonar_event_logger収集器とsonar_event_data、sonar_eventストリームクエリは、Logpressoシェルで手動で作成した構成で、同期による自動冗長化がサポートされません。
クラスター同期を停止した後、Control Node Aで実行した設定過程をControl Node Bで同一に実行し、クラスターを再起動する必要があります。
-
(Control Node A) ターミナルで
logpressoサービスを停止してください。sudo systemctl stop logpresso -
(Control Node B) Logpressoシェルで次のコマンドを実行し、Control Node Bに残っている収集器を管理対象から除去し、収集器インスタンスを削除してください。
# logapi.removeLogger NAMESPACE\LOGGER_NAME logapi.removeLogger d1a\sonar_event_logger logapi.removeLogger d1b\sonar_event_loggerNAMESPACE\LOGGER_NAME: 収集器のフルネーム
-
(Data Node A、B) Data Node A、Bで収集器を作成してください。
# sonar_event_logger収集器の作成 logapi.createLogger stream local sonar_event_logger -
(Control Node B) Control Node Aで実行した作業を同一にControl Node Bで実行してください。
# sonar_event_logger収集器の作成 logpresso.createLogger d1a\sonar_event_logger logpresso.createLogger d1b\sonar_event_logger # sonar_event_logger収集器の有効化 logapi.startLogger d1a\sonar_event_logger logapi.startLogger d1b\sonar_event_logger # sonar_event_dataストリームクエリの作成 logpresso.createStreamQuery sonar_event_data logger # sonar_event_data Control Node Bのストリームクエリ一覧でinput_streamsフィールド値の確認 system streams | search name == "sonar_event_data" | order source_type, name, running, enabled, async, interval, query_string, owner, input_streams # sonar_eventストリームクエリの接続 logpresso.updateStreamQuery sonar_event STREAM -
(Control Node B) ターミナルで次のコマンドを実行し、
logpressoサービスを停止してください。sudo systemctl stop logpresso -
(Control Node A、Control Node Bの順に) ターミナルで次のコマンドを実行し、
logpressoサービスを開始してください。Control Node Aが先に開始されると、Aの設定がControl Node Bに同期されます。sudo systemctl start logpresso


