Ceilometer/blueprints/alarm-over-time
< Ceilometer | blueprints
总结
想法是在 API 部分创建一个新型的告警规则,以及一个新的告警评估器,它会随着时间改变状态并触发告警操作。
将这种告警与其他告警结合使用,将能够覆盖以下用例。
用户故事
- 我不想在一段时间内接收告警回调。
- 如果另一个告警处于特定状态,我想每三小时触发一次告警操作。
API v2 扩展建议
{
name: AlarmOverTime,
type: time,
description: Change at ,
time_rule: {
time_spec: "Mon-Fri 00:08",
duration: 43200
},
...
}
time_spec 格式是指我们需要将状态更改为告警的时间,而 duration(秒)是我们保持告警状态的时间。
评估器行为
上面的告警将会在每个工作日晚上 8 点到第二天早上 8 点(持续 12 小时)将告警状态设置为“告警”。
告警操作会在每次状态改变时被调用。
其他示例
time_rule: {
time_spec: "1/3:00",
duration: 0
}
上面的告警将每 3 小时将告警状态设置为“告警”,持续 0 秒。
实际上,尽可能短的时间,例如:告警的 evaluation_interval,因为告警需要重新评估才能变回“ok”状态。
这种行为允许将这种告警与其他告警结合使用,以便在另一个告警也处于“告警”状态时,每 3 小时触发一些操作。
时间规范格式
time_spec 格式与 systemd 日历格式 相同
一些从 systemd 文档中提取的示例
Sat,Thu,Mon-Wed,Sat-Sun → Mon-Thu,Sat,Sun *-*-* 00:00:00
Mon,Sun 12-*-* 2,1:23 → Mon,Sun 2012-*-* 01,02:23:00
Wed *-1 → Wed *-*-01 00:00:00
Wed-Wed,Wed *-1 → Wed *-*-01 00:00:00
Wed, 17:48 → Wed *-*-* 17:48:00
Wed-Sat,Tue 12-10-15 1:2:3 → Tue-Sat 2012-10-15 01:02:03
*-*-7 0:0:0 → *-*-07 00:00:00
10-15 → *-10-15 00:00:00
monday *-12-* 17:00 → Mon *-12-* 17:00:00
Mon,Fri *-*-3,1,2 *:30:45 → Mon,Fri *-*-01,02,03 *:30:45
12,14,13,12:20,10,30 → *-*-* 12,13,14:10,20,30:00
mon,fri *-1/2-1,3 *:30:45 → Mon,Fri *-01/2-01,03 *:30:45
03-05 08:05:40 → *-03-05 08:05:40
08:05:40 → *-*-* 08:05:40
05:40 → *-*-* 05:40:00
Sat,Sun 12-05 08:05:40 → Sat,Sun *-12-05 08:05:40
Sat,Sun 08:05:40 → Sat,Sun *-*-* 08:05:40
2003-03-05 05:40 → 2003-03-05 05:40:00
2003-03-05 → 2003-03-05 00:00:00
03-05 → *-03-05 00:00:00
hourly → *-*-* *:00:00
daily → *-*-* 00:00:00
monthly → *-*-01 00:00:00
weekly → Mon *-*-* 00:00:00
*:2/3 → *-*-* *:02/3:00
额外思考
在 ceilometer 中创建一个用于“duration”的 wsme 类型,将时间单位转换为秒会很酷。