イベントポリシーをトリガーする内部イベントの生成
内部イベントの理解
内部イベント は、イベントポリシーをトリガーするために作成するイベントです。内部イベントはJunos OSプロセスでは生成されず、関連するシステムログメッセージもありません。最大 10 個の内部イベントを設定でき、時間間隔または時刻に基づいて内部イベントを生成できます。イベントポリシーは、他のイベントと同じ方法で内部イベントで照合できます。
10を超える内部イベントを含む設定をコミットしようとすると、Junos OSでエラーが発生し、コミットが失敗します。
内部イベントを設定するには、 [edit event-options]
階層レベルで以下のステートメントを含めます。
[edit event-options] generate-event { event-name (time-interval seconds <start-time start-time> | time-of-day time) <no-drift>; }
特定の頻度でイベントを生成するように time-interval
オプションを構成することも、特定の時刻にイベントを生成するように time-of-day
オプションを構成することもできます。Junos OS リリース 14.1 以降、内部イベントの no-drift
オプションを設定できるようになりました。 no-drift
を設定すると、Junos OSは、イベントをトリガーする際に生じた遅延を次のイベントのトリガーに伝播しません。
start-time
オプションでは、間隔ベースのイベントの開始日時を指定できます。そのため、start-time
オプションは time-interval
オプションで設定する必要があります。start-time
オプションを単独で、または time-of-day
オプションと一緒に設定し、設定をコミットすると、デバイスはエラーを生成し、コミットは失敗します。例えば:
[edit event-options generate-event event-midnight start-time] 'start-time "2020-9-1.16:50:00 -0700"' 'time-interval' is mandatory for 'start-time' configuration error: commit failed: (statements constraint check failed)
特定の時刻にイベントを生成する方法
特定の時刻にイベントを生成するには、 time-of-day
ステートメントを設定し、イベントが発生する時刻を指定します。 time-of-day
イベントは、ローカル デバイスの時刻を基準とし、24 時間形式 hh:mm:ss
を使用して設定されます。必要に応じて、UTC オフセットを含めて、UTC (協定世界時) を基準とした時刻を指定できます。構文は hh:mm:ss(+|-)hhmm
で、符号は UTC の東を表すプラス (+)、UTC の西を表すマイナス (-) です。
協定世界時は、グリニッジ子午線とも呼ばれる経度0°子午線上の時間です。ほとんどのタイム ゾーンの標準時刻は、UTC からオフセットされた整数の時間数です。
UTC オフセットを省略すると、Junos OS はデバイスのローカル タイム ゾーン設定に基づいて、設定内の time-of-day
ステートメントのオフセットを自動生成します。たとえば、現地時間に東部標準時 (UTC−05:00) を使用するデバイスがあるとします。次のコマンドは、毎晩午前 12:00 (00:00:00) に生成される event-midnight
という内部イベントを設定します。
[edit] user@host# set event-options generate-event event-midnight time-of-day 00:00:00
結果として得られる設定には、UTC からのデバイスのオフセットが自動的に含まれます。
user@host# show event-options generate-event { event-midnight time-of-day "00:00:00 -0500"; }
UTC を基準とした時刻を設定し、オフセットがデバイスのオフセットと異なる場合、Junos OS はデバイスの現地時間と設定で UTC からのオフセットを反映するように自動的に時刻を変換します。次の例では、毎晩午前 12:00 (00:00:00) に UTC から 6 時間遅れたオフセットで生成される event-midnight-cst
という追加の内部イベントを設定します。
[edit] user@host# set event-options generate-event event-midnight-cst time-of-day 00:00:00-0600
結果として得られる設定では、デバイスの現地時間と UTC オフセットを使用してイベントが表示されます。
user@host# show event-options generate-event { event-midnight time-of-day "00:00:00 -0500"; event-midnight-cst time-of-day "01:00:00 -0500"; }
同じデバイスが別の場所に出荷され、新しいタイム ゾーンを使用するように構成されている場合、構成された内部イベントには新しいローカル時刻とタイム ゾーン オフセットが反映されます。例えば:
[edit] user@host# set system time-zone America/Los_Angeles user@host# commit
user@host# show event-options generate-event { event-midnight time-of-day "21:00:00 -0800"; event-midnight-cst time-of-day "22:00:00 -0800"; }
set date
操作モード・コマンドを発行してシステム時刻を変更する場合は、commit full
コマンドまたは restart event-process
コマンドも発行することをお勧めします。そうしないと、時刻に基づく内部イベントが設定された時刻に生成されない可能性があります。
たとえば、15:55:00 に内部イベントを生成するようにデバイスを設定し、システム時刻を 15:47:17 から 15:53:00 に変更した場合、イベントはシステム時刻が設定された時刻 15:55:00 ではなく、約 16:00 になったときに生成されます。この問題は、 commit full
コマンドまたは restart event-process
コマンドを発行することによって訂正できます。
イベントポリシーは、他のイベントと同じ方法で内部イベントで照合できます。次の例では、毎晩午前 12:00 (00:00:00) に it-is-midnight
という内部イベントを生成します。eventd プロセスは、 it-is-midnight
イベントを受信すると、特定のアクションを実行する midnight-chores
イベント ポリシーをトリガーします。
[edit event-options] generate-event { it-is-midnight time-of-day "00:00:00 -0500"; } policy midnight-chores { events it-is-midnight; then { ... actions ... } }
繰り返し時間間隔でイベントを生成する方法
time-interval
ステートメントを設定し、間隔の頻度を秒単位で指定することで、例えば毎時など、繰り返し間隔でイベントを生成できます。時間間隔の範囲は 60 秒から 2,592,000 秒です。Junos OS は、設定をコミットしてから約 1 時間間隔で開始する最初のイベントを生成します。
たとえば、次のコマンドは、1 時間ごとに生成される event-every-hour
というイベントを設定します。
[edit] user@host# set event-options generate-event event-every-hour time-interval 3600
次のイベント ポリシーは、 event-every-hour
イベントが生成されると、3600 秒ごとに特定のアクションを実行します。
[edit event-options] generate-event { event-every-hour time-interval 3600; } policy hourly-checks { events event-every-hour; then { ... actions ... } }
サポートされているデバイスでは、オプションで、Junos OSが間隔ベースのイベントの生成を開始する日時を設定できます。開始時刻を構成すると、デバイスの再起動後など、予測可能な時刻にデバイスからイベントを生成できます。イベントの開始時刻を指定するには、time-interval
オプションに加えて [start-time
] オプションを設定します。開始時刻は、ローカル デバイスの時刻を基準とし、24 時間形式を使用して設定されます。構文は yyyy-mm-dd.hh:mm
です。例えば:
[edit event-options generate-event] user@host# set every-fifteen-minutes time-interval 900 start-time 2020-09-01.16:50
start-time
オプションを設定しない場合、Junos OS は、コミット操作の完了に必要な時間に応じて、設定をコミットしてから約 1 時間間隔で最初のイベントを生成します。コミット時間の後に発生する開始時間を設定すると、Junos OS は設定された開始時間に最初のイベントを生成し、開始時間後の 1 時間間隔で次のイベントを生成します。開始時刻をコミット時刻より時系列的に前に設定すると、Junos OS は、開始時刻以降の時間間隔の整数である最初のイベントを次回に生成します。表 1 は、開始時刻(設定されている場合)と設定がコミットされた時刻に基づく初期イベント時間の異なるシナリオを比較しています。
|
|
コミット時間 |
最初のイベント |
第2回イベント |
---|---|---|---|---|
900 |
– |
2020-09-01.17:00:08 |
2020-09-01.17:15:30 |
2020-09-01.17:30:30 |
900 |
2020-09-01.17:10 |
2020-09-01.17:00:08 |
2020-09-01.17:10:00 |
2020-09-01.17:25:00 |
900 |
2020-09-01.16:50 |
2020-09-01.17:00:08 |
2020-09-01.17:05:00 |
2020-09-01.17:20:00 |
900 |
2020-09-01.16:50 |
2020-09-01.17:17:08 |
2020-09-01.17:20:00 |
2020-09-01.17:35:00 |
同様に、開始時間を設定した場合、デバイスを再起動したりイベント プロセスを再開したりしても、Junos OSは設定された開始時間に基づいて次のイベントを生成します。 表 2 は、デバイス再起動後の初期イベント時間を比較したものです。表に示すように、開始時刻を指定すると、デバイスは開始時刻の後の整数の時間間隔として次のイベントを予測可能に生成します。開始時刻を指定しない場合、次のイベントは、デバイスがオンラインに戻り、イベント プロセスを開始してから 1 時間間隔になります。この場合、デバイスが再起動してJunos OSプロセスが開始されるまでに数分を要したため、次に予想されるイベントの時間よりかなり後にイベントが発生します。
|
|
最初のイベント |
再起動時間 |
次のイベント |
---|---|---|---|---|
900 |
– |
2020-09-01.16:50:00 |
2020-09-01.16:55:00 |
2020-09-01.17:13:08 |
900 |
2020-09-01.16:50 |
2020-09-01.16:50:00 |
2020-09-01.16:55:00 |
2020-09-01.17:05:00 |
必要に応じて、UTC オフセットを含めることで、 (+|-)hhmm
UTC を基準とした開始時刻を指定することができます (符号は UTC の東の場合はプラス (+)、UTC の西の場合はマイナス (-) です (例: 2020-09-14.11:00-0800)。UTC オフセットを指定した場合でも、 start-time
設定には常にデバイスのローカル タイム ゾーンの時刻と UTC オフセットが表示されます。
次に、UTC オフセットを使用して開始時刻を設定する例を示します。
[edit event-options generate-event] user#host# set every-twenty-minutes time-interval 1200 start-time 2020-09-16.20:30-0200
結果として得られる設定には、デバイスのローカルタイムゾーンのイベント時間とUTCオフセットが表示されます。
[edit event-options generate-event] user@host# show every-twenty-minutes time-interval 1200 start-time "2020-9-16.17:30:00 -0500";