Atom feed of this document
  

 事件索引

OpenStack 里通知的一般哲学是发出任何和所有可能需要的数据,然后让消费者过滤掉他们不感兴趣的内容。为了使处理更加简单有效,通知作为事件在 Ceilometer 中保存和处理。通知的有效载荷被转换为关键值对的扁平化集合,其中负载可以是任意复杂的 JSON 数据结构。这个转换是由配置文件指定的。

[注意]注意

该事件格式是为了高效的处理和查询。完全的将通知保存是为了审计的目的,可通过配置store_raw属性来启用将通知全部的存起来。

 事件转变

从通知到事件的转变是由一个配置文件所驱动的,此配置文件在ceilometer.conf配置文件中由definitions_cfg_file 所定义。

这包括了如何在通知内容中映射字段到特征的描述,而且有可选的插件来做任何的程序翻译(字符串切片,强制用例)。

每个event_type都定义了通知到事件的映射,它可以是通配符。如果对应的字段在已存在的且不为空的通知中,特征会添加到事件中。

[注意]注意

包含在 Telemetry 模块中的默认定义文件包括了一个已知通知和有用的特征的列表。所提供的映射可以被修改,以根据用户需求来包含更多或更少的数据。

如果没有预先设置定义文件,将会记录一个警告信息,但它会认为设置了一个空的定义文件。默认情况下,任意没有在定义文件中有相应事件定义的通知会被转换为一个最小特征的事件集合。这可以通过设置 ceilometer.conf 文件中的 drop_unmatched_notifications 选项来修改。如果该项被设置为 True,所有没有映射的通知将被丢弃。

如果通知有相关的数据,特征的基本配置 (均为 TEXT 类型) 会被添加到所有的事件中,这些相关数据为:service (消息的发布者)、tenant_id 和 request_id。它们不需要在事件定义中指定,是自动添加的,但它们的定义会被给定的 event_type 覆盖。

 事件定义格式

事件定义文件是 YAML 格式的。它由一个映射事件定义的列表组成。顺序是很重要的,定义列表会被倒序扫描以寻找一个匹配通知的 event_type 的定义。该定义将用于生成事件。执行倒序的是因为它通常希望有一个更通用的通配符定义 (如 compute.instance.*),和所有这些事件的一系列共同特征、一些更具体的包含上述特征以及更多的事件定义。

每个事件的定义都映射到2个键:

event_type

这是一个该定义会处理的 event_types 的列表 (或字符串,可以认为是只有 1 个元素的列表)。它们与 unix 的 shell glob 语法是通用的。一个排除的列表 (以 ! 开头) 会排除所有列表中匹配的类型。如果只使用了排除列表,定义会匹配所有没有与排除列表中匹配的内容。

特定

此是一个映射,键是特征的名称,值是特征的定义。

每个特点的定义会映射到下面的值:

在通知中的您所希望提取的这个特性的路径规范字段 (fields)。可以编写规范以匹配多个可能的字段。默认值是第一个该字段。路径可以以点的语法指定 (payload.host)。方括号语法 (payload[host]) 也是支持的。在其他情况下,如果您所寻找的字段的关键字包含了指定的字符,如 .,它将需要被引用 (以双引号或单引号引用):payload.image_meta.’org.openstack__1__architecture’。用于字段规范的语法是 JSONPath 的变异语法。

类型

(可选)此特征的数据类型。合法的属性是: text, int, float, 和 datetime。若没有指定默认是text

插件

(可选)用于在通知字段中的值进行简单的编程转换。

Questions? Discuss on ask.openstack.org
Found an error? Report a bug against this page


loading table of contents...