跳转到: 导航, 搜索

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”的网络接口未接收或传输任何数据。