生成内部事件以触发事件策略
了解内部事件
内部事件 是为触发事件策略而创建的事件。内部事件不是由 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
选项可以为基于间隔的事件指定开始日期和时间。因此,必须使用该选项配置time-interval
该start-time
选项。如果单独配置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) 作为其本地时间。以下命令配置一个名为 event-midnight
的内部事件,该事件在每晚上午 12:00 (00:00:00) 生成。
[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 的偏移量。以下示例配置一个名为的附加内部事件,该事件 event-midnight-cst
每天晚上上午 12:00 (00:00:00) 生成,偏移量比 UTC 晚 6 小时。
[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,则会在系统时间大约为 16:00 时生成事件,而不是在配置的时间 15:55:00 生成。您可以通过发出 commit full
或 restart event-process
命令来更正此问题。
事件策略可以像匹配其他事件一样匹配内部事件。下面的示例生成每晚在上午 12:00 (00:00:00) 调用 it-is-midnight
的内部事件。当事件进程收到 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 会在您提交配置后大约一个时间间隔生成第一个事件。
例如,以下命令配置每小时生成的一个调用 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 将在您提交配置后大约一个时间间隔内生成第一个事件,具体取决于完成提交操作所需的时间。如果配置在提交时间之后发生的开始时间,Junos OS 将在配置的开始时间生成第一个事件,并在开始时间之后的某个时间间隔生成下一个事件,依此类推。如果配置的开始时间在提交时间之前按时间顺序排列,则 Junos OS 将在下次生成第一个事件,即开始时间之后的整数时间间隔。 表 1 根据开始时间(如果已配置)和提交配置的时间,比较了初始事件时间的不同方案。
|
|
提交时间 |
第一个事件 |
第二次活动 |
---|---|---|---|---|
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 比较了设备重新启动后的初始事件时间。如表中所示,指定开始时间时,设备可以预测地将下一个事件生成为开始时间之后的整数时间间隔。如果未指定开始时间,则下一个事件是设备重新联机并开始事件进程后的一个时间间隔。在这种情况下,设备需要几分钟才能重新启动并启动 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 偏移量,以指定相对于 UTC (+|-)hhmm
的开始时间,方法是追加到时间,其中符号为 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";