NotificationEventExamples
通知示例和快速参考
提示
- Nova 生成的通知以 JSON 格式生成,并放置在 AMQP 队列上。
- 像 Yagi 这样的外部应用程序可以将它们格式化为 ATOM 格式并将其作为 feed 发布。
- 通知可以是即时通知,在发生特定事件时生成,也可以是周期性通知,涵盖一段时间内的使用情况。
- 目前,大多数通知都是即时的,到目前为止,只有“compute.instance.exists”事件是唯一的周期性事件。
- 所有通知都包含一些元数据(例如事件类型和消息 ID),以及根据消息类型而变化的有效负载。
- 对于许多任务,Nova 通常会发出两个即时通知,一个是在耗时任务开始时(例如实例创建),另一个是在该任务成功完成时。事件类型将区分这两个通知。
示例
即时通知
{"event_type": "compute.instance.resize.confirm.start",
"timestamp": "2012-03-12 17:01:29.899834",
"message_id": "1234653e-ce46-4a82-979f-a9286cac5258",
"priority": "INFO",
"publisher_id": "compute.compute-1-2-3-4",
"payload": {"state_description": "",
"display_name": "testserver",
"memory_mb": 512,
"disk_gb": 20,
"tenant_id": "12345",
"created_at": "2012-03-12 16:55:17",
"instance_type_id": 2,
"instance_id": "abcbd165-fd41-4fd7-96ac-d70639a042c1",
"instance_type": "512MB instance",
"state": "active",
"user_id": "67890",
"launched_at": "2012-03-12 16:57:29",
"image_ref_url": "http://127.0.0.1:9292/images/a1b2c3b4-575f-4381-9c6d-fcd3b7d07d17"}}
{"event_type": "compute.instance.create.end",
"timestamp": "2012-03-12 17:00:24.156710",
"message_id": "00004e00-8da5-4c39-8ffb-c94ed0b5278c",
"priority": "INFO",
"publisher_id": "compute.compute-1-5-6-7",
"payload": {"state_description": "",
"display_name": "testserver",
"memory_mb": 512,
"disk_gb": 20,
"tenant_id": "12345",
"created_at": "2012-03-12 16:58:32",
"instance_type_id": 2,
"instance_id": "abcdef01-7b76-4b43-9143-fb2385df48a3",
"instance_type": "512MB instance",
"state": "active",
"user_id": "67890",
"fixed_ips":
[{"floating_ips": [],
"meta": {},
"type": "fixed",
"version": 6,
"address": "fe80::1234:5678"},
{"floating_ips": [],
"meta": {},
"type": "fixed",
"version": 4, "address": "127.0.1.1"},
{"floating_ips": [],
"meta": {},
"type": "fixed",
"version": 4,
"address": "10.180.0.151"}],
"launched_at": "2012-03-12 17:00:23.998518",
"image_ref_url": "http://127.0.0.1:9292/images/12345678-201f-4600-b5a1-0b97e2b1cb31"}}
周期性通知
- 这些通知涵盖事件,例如一段时间内的使用情况。此类事件涵盖的周期称为审计周期。通常,这些周期性通知由 worker 进程(例如 nova-compute)中的周期性任务或 cronjob 每审计周期从 cron 生成一次。Nova 在其配置文件中设置了系统范围的审计周期。Nova 将收集和汇总统计信息,例如在该期间内的带宽使用情况。生成周期性事件时,将为最近完成的审计周期生成它们。(请注意,审计周期的时机*不受*脚本或任务运行时间的影响。)
系统审计周期:这在 Novas 的配置文件中配置在“instance_usage_audit_period”选项下。
- 有效的审计周期是
hour Each hour, for example "2012-03-01 01:00UTC" to "2012-03-01 02:00UTC".
- 可以使用 @<数字> 后缀来指定小时的分钟数。(例如 hour@30 表示 01:30UTC-02:30UTC)
day Daily. For example "2012-03-01 00:00UTC" to "2012-03-02 00:00UTC"
- 可以使用 @<数字> 后缀来指定一天中的小时数。(例如 day@6 表示“2012-03-01 06:00UTC”到“2012-03-02 06:00UTC”)
month Monthly. For example: "2012-03-01 00:00UTC" to "2012-04-01 00:00UTC".
- 可以使用 @<数字> 后缀来指定月份中的天数。(例如 month@15 表示“2012-03-15 00:00UTC”到“2012-04-15 00:00UTC”)
year Yearly. For example: "2011-01-01 00:00UTC" to "2012-01-01 00:00UTC".
- 可以使用 @<数字> 后缀来指定月份。(例如 year@4 表示“2011-04-01 00:00UTC”到“2012-04-01 00:00UTC”)
示例
{"event_type": "compute.instance.exists",
"timestamp": "2012-03-13 17:01",
"message_id": "0ab1ac0a-2867-402d-83c7-d7087262470c",
"priority": "INFO",
"publisher_id": "api.node-127-0-1-42",
"payload": {"state_description": "",
"display_name": "testserver",
"memory_mb": 512,
"disk_gb": 20,
"audit_period_beginning": "2012-03-12 06:00:00",
"audit_period_ending": "2012-03-13 06:00:00",
"tenant_id": "12345",
"created_at": "2012-03-12 16:55:17",
"instance_type_id": 2,
"bandwidth": {"public": {"bw_in": 12342000, "bw_out": 987654321},
"private": {"bw_in": 0, "bw_out": 0}},
"instance_id": "8888eeee-f1d0-4fd7-96ac-d70639a042c1",
"instance_type": "512MB instance",
"state": "active",
"user_id": "67890",
"launched_at": "2012-03-12 16:57:29",
"image_ref_url": "http://127.0.0.1:9292/images/a3a2a1a0-575f-4381-9c6d-fcd3b7d07d17"}}
示例详细说明
这是一个 compute.instance.exists 事件(目前是我们拥有的唯一周期性事件)。
这些会定期生成,为最近完成的审计期间内处于活动状态的每个实例生成一个事件。
这些可用于同步外部系统对 nova 安装正在运行的实例的了解。可以从 compute.instance.(create|delete).end 事件中获取此信息,但 exists 允许您在查看超过 1 个审计周期的通知数据的情况下进行实例会计。此事件还包含带宽使用数据。
此特定事件中的一些数据
- timestamp:此特定事件于 3 月 13 日 17:01 utc 生成(大概是在 cronjob 运行时)
- audit_period_(beginning|ending):它涵盖了 3 月 12 日 06:00 utc 到 3 月 13 日同一时间段的审计周期。(我们的示例系统设置为“day@6”的审计周期)
- created_at:我们的示例实例请求于 3 月 12 日 16:55:17 创建
- launched_at:它实际上于 3 月 12 日 16:57:29 启动
- bandwidth:我们的示例实例有两个虚拟网络接口。在此审计周期内,连接到名为“public”的网络接口接收到 12.3MB 的流量。它传输了 987.6MB。连接到名为“private”的网络接口未接收或传输任何数据。