Salt 向け Junos Syslog エンジン
ジュニパーネットワークスでは、Salt を使用して Junos OS を実行するデバイスの管理をサポートしています。Saltインストールには、管理対象デバイスからのJunos OSシステムログメッセージをリッスンしてSaltイベントバスに公開する Junos syslogエンジン (Salt用)が含まれています。Junos syslogエンジンを既存またはカスタムリアクタと組み合わせて使用することで、Junos OSを実行しているデバイスのイベントベースの状態管理にSaltを使用することができます。
以下のセクションでは、Junos syslogエンジンの仕組み、設定および有効化の方法、送信およびサブスクライブするイベントの設定方法、イベントバスでこれらのイベントを表示する方法について説明します。
Junos Syslogエンジンについて
Junos OSはシステムログメッセージ( syslog メッセージとも呼ばれる)を生成し、日常業務のイベント、障害やエラーの状態、緊急またはクリティカルな状態のイベントなど、デバイスで発生するイベントを記録します。システムログメッセージには、次の情報が含まれます。
メッセージを生成した Junos OS プロセス
メッセージが生成された日時
イベントの重大度
イベントを一意に識別するタグ
イベントに関する情報を提供する文字列
例えば、以下の syslog メッセージは、ルータ 1 でのコミット操作が正常に完了したことを記録します。
Sep 3 11:52:22 router1 mgd[83498]: UI_COMMIT_COMPLETED: commit complete
ソルトエンジンは、ソルトによって監視され、活用される外部システムプロセスです。Salt エンジンは、Salt イベントバス上のイベントをエクスポートまたはインポートできます。SaltインストールにはJunos syslogエンジンが含まれており、Saltサーバーに送信されるJunos OSシステムログメッセージを監視し、Saltイベントバス上で公開することができます。 図1 は、Junos syslogエンジンを含むSaltのセットアップを示しています。有効にすると、Junos syslogエンジンは、指定されたポートでJunos OSを実行している管理対象デバイスからのsyslogイベントをリッスンします。

Junos syslogエンジンは、イベントを受信すると、イベント情報を抽出し、Saltフォーマットに変換して、Saltイベントバスに公開します。以下の出力は、Salt イベントバスに表示されるものと同じコミット完了イベントを表しています。
jnpr/syslog/router1/UI_COMMIT_COMPLETED { "_stamp": "2019-09-03T18:52:11.279878", "daemon": "mgd", "event": "UI_COMMIT_COMPLETED", "facility": 23, "hostip": "198.51.100.2", "hostname": "router1", "message": "commit complete", "pid": "83498", "priority": 188, "raw": "<188>Sep 3 11:52:22 router1 mgd[83498]: UI_COMMIT_COMPLETED: commit complete", "severity": 4, "timestamp": "2019-09-03 18:52:11" }
ソルトイベントはすべて、イベントタグと本文で構成される同じ基本データ構造を使用します。イベント タグはイベントの概要の説明であり、本文はイベントの詳細を含むディクショナリです。前の例では、イベント タグは jnpr/syslog/router1/UI_COMMIT_COMPLETED
です。
Junos Syslogエンジンを有効にする方法
Junos syslogエンジンを使用するには、エンジンを実行するサーバーに および twisted
Pythonモジュールをインストールする必要がありますpyparsing
。このドキュメントでは、Junos syslog エンジンが Salt マスター上で実行されていることを前提としています。前提条件をインストールしてJunos syslogエンジンを有効にするための詳しい手順については、『Salt for Junos OSクイックスタートガイド』の「Junos Syslogエンジンの設定」を参照してください。
Junos syslogエンジンを使用するには、Junos OSを実行しているデバイスが、Salt マスターの指定されたポートに syslog メッセージを送信するように設定する必要があります。すべてのイベントを送信するか、特定のファシリティまたはメッセージの重大度レベルに対応するイベントのみを送信するようにデバイスを設定できます。
すべてのイベントを送信するには、すべてのファシリティとすべてのメッセージの重大度レベルを示す を設定します any any
。
[edit] saltuser@router1# set system syslog host salt-server port 9999 any any saltuser@router1# commit
たとえば、重大度レベルが info 以上のセキュリティ イベントのみを送信するには、 を設定します security info
。
[edit] saltuser@router1# set system syslog host salt-server port 9999 security info saltuser@router1# commit
システム ロギング機能とメッセージの重大度レベルについては、 Junos OS のシステム ログ機能とメッセージの重大度レベルを参照してください。
Junos syslogエンジンを有効にするには、Salt マスター設定ファイルの キーの下 engines
にあるエンジンを設定し、Junos OS を実行しているデバイスで設定したものと同じポートを指定する必要があります。
engines: - junos_syslog: port: 9999
設定を適用するには、Junos syslogエンジンプロセスを自動的に開始するSaltマスターを再起動する必要があります。次に、Junos syslogエンジンは、指定されたポートでJunos OS syslogメッセージをリッスンし、イベント情報を抽出して、SaltイベントバスにSalt形式で公開します。特定のイベントが発生したときに自動的にアクションを実行するリアクタを作成および設定するには、 Junos OSイベント用のSalt Reactorsの設定を参照してください。
イベントタグの設定方法
Salt イベントバスに発行されたイベントには、イベントタグとデータの 2 つのコンポーネントがあります。Junos OS イベントでは、次のデフォルトのイベント タグ(またはイベント トピック)構文を使用します。
jnpr/syslog/hostname/event
Junos OS イベントのイベント タグは、常に で始まる必要がありますが、エンジン設定で パラメーターを定義しtopic
、含めるフィールドを指定することで、jnpr/syslog
残りのフィールドをカスタマイズできます。例えば、以下の設定では、デバイスのIPアドレス、メッセージを生成したプロセス、イベントを含むイベントタグが生成されます。
engines: - junos_syslog: port: 9999 topic: jnpr/syslog/hostip/daemon/event
この構文を設定すると、完了したコミット操作イベントのタグは次のようになります。
jnpr/syslog/198.51.100.2/mgd/UI_COMMIT_COMPLETED
イベントタグフィールドには、 の後に jnpr/syslog/
以下のフィールドを任意に組み合わせて含めることができます。
daemon
event
hostip
hostname
message
pid
priority
raw (the raw event data forwarded from the device)
severity
timestamp
特定のJunos OSプロセスのイベントをサブスクライブする方法
Junos Syslogエンジンを有効にする方法の説明に従って、Junos OSを実行しているデバイスがJunos syslogエンジンに送信するsyslogイベントを設定することができます。デフォルトでは、Junos syslogエンジンは、Saltイベントバスで受信したすべてのイベントのイベントデータを公開します。エンジン設定で パラメーターを設定するdaemon
ことで、Junos syslogエンジンをカスタマイズして、特定のプロセスのみをサブスクライブすることもできます。このパラメーターを設定すると、Junos syslogエンジンは、Salt イベントバス上のプロセスに関連するイベントのみを公開します。
以下のSaltエンジン構成は、管理プロセス(mgd)とルーティングプロトコルプロセス(rpd)からのイベントにJunos syslogエンジンをサブスクライブします。
engines: - junos_syslog: port: 9999 topic: jnpr/syslog/hostname/event daemon: - mgd - rpd
設定を適用するためにソルトマスタープロセスを再起動した後、Junos syslogエンジンは、これら2つのプロセスからのイベントのみをソルトイベントバスに公開します。
jnpr/syslog/router1/UI_DBASE_LOGIN_EVENT { "_stamp": "2019-08-28T22:16:42.612723", "daemon": "mgd", "event": "UI_DBASE_LOGIN_EVENT", "facility": 23, "hostip": "198.51.100.2", "hostname": "router1", "message": "User 'saltuser' entering configuration mode", "pid": "52764", "priority": 189, "raw": "<189>Aug 28 15:17:00 router1 mgd[52764]: UI_DBASE_LOGIN_EVENT: User 'saltuser' entering configuration mode", "severity": 5, "timestamp": "2019-08-28 22:16:42" }
ソルトイベントバスでイベントを表示する方法
ソルトランナーは、ミニオンではなくソルトマスターでモジュールを実行します。ランナーを実行するには、 salt-run
コマンドを使用します。Salt マスターイベントバス上のイベントをリアルタイムで表示するには、次のコマンドを実行して、ターミナルにイベントを表示します。
saltuser@salt-master~$ sudo salt-run state.event pretty=True jnpr/syslog/router1/UI_COMMIT_COMPLETED { "_stamp": "2019-07-24T17:17:30.390374", "daemon": "mgd", "event": "UI_COMMIT_COMPLETED", "facility": 23, "hostip": "198.51.100.2", "hostname": "router1", "message": "commit complete", "pid": "5795", "priority": 188, "raw": "<188>Jul 24 10:17:38 router1 mgd[5795]: UI_COMMIT_COMPLETED: commit complete", "severity": 4, "timestamp": "2019-07-24 17:17:30"
イベントをすばやくトリガーする場合は、次の例に示すようにミニオンにpingを実行できます。
saltuser@salt-master~$ sudo salt 'router1' test.ping
対応するイベントバス出力は、Salt ジョブとミニオンの応答を示しています。
20190626185606864697 { "_stamp": "2019-06-26T18:56:06.865972", "minions": [ "router1" ] } salt/job/20190626185606864697/new { "_stamp": "2019-06-26T18:56:06.867352", "arg": [], "fun": "test.ping", "jid": "20190626185606864697", "minions": [ "router1" ], "missing": [], "tgt": "router1", "tgt_type": "glob", "user": "sudo_saltuser" } salt/job/20190626185606864697/ret/router1 { "_stamp": "2019-06-26T18:56:06.968557", "cmd": "_return", "fun": "test.ping", "fun_args": [], "id": "router1", "jid": "20190626185606864697", "retcode": 0, "return": true, "success": true }
Junos syslogエンジンの設定をテストするには、Junos OSを実行しているデバイスで操作を実行します。デバイスは、その操作のファシリティとその重大度レベルでメッセージをJunos syslogエンジンに送信するように設定する必要があります。さらに、エンジンは、そのプロセス (またはデフォルトであるすべてのプロセス) からのメッセージをサブスクライブする必要があります。この操作を実行すると、Junos syslogエンジンがイベントをSalt イベントバスに公開します。