跟踪 DNS 服务通知

https://blueprints.launchpad.net/ceilometer/+spec/dns-service-notifications

此蓝图的目标是捕获 Designate (DNSaaS) 在创建、更新和删除操作期间发出的通知事件。

问题描述

Designate (designate-central) 响应 designate-api 和其他 OpenStack 服务(nova、neutron)事件通过 designate-sink 发出通知。

这些通知是 CRUD 事件,通知 DNS 资源的创建、更新或删除,不包含特定的测量值。

Ceilometer 需要更新以消费和记录这些通知作为事件和特征。

如果 Ceilometer 处理并记录这些通知,其他服务将能够将其用于聚合和计费目的。

提议的变更

在 /etc/ceilometer/event_definitions.yaml 文件中定义 DNS 资源类型(域、记录)的事件定义和字段映射(特征定义)。

特征定义中的特征字段语法遵循 JSONPath 的一种变体。

需要在 event_definitions.yaml 中包含的域通知的事件定义和字段映射示例:

  • event_type: dns.domain.*

  • traits: &dns_domain_traits

  • status

  • fields: payload.status

  • retry

  • fields: payload.retry

  • description

  • fields: payload.description

  • expire

  • fields: payload.expire

  • email

  • fields: payload.email

  • ttl

  • fields: payload.ttl

  • 操作

  • fields: payload.action

  • name

  • fields: payload.name

  • id

  • fields: payload.id

  • created_at

  • fields: payload.created_at

  • updated_at

  • fields: payload.updated_at

  • version

  • fields: payload.version

  • parent_domain_id

  • fields: parent_domain_id

  • serial

  • fields: payload.serial

要在 Ceilometer 中启用事件处理,需要在 ceilometer.conf 中进行配置:

  • 在 notification 部分,将 store_events 配置为 True:

例如 - [notification] store_events = True

  • 在 event 部分,指定 event_definitions 文件的名称:

例如 - [event] definitions_cfg_file = event_definitions.yaml

DNS 事件类型遵循以下模式:

  • dns.<resource>.create

  • dns.<resource>.update

  • dns.<resource>.delete

其中 resource 是 domain、record、pool。

替代方案

使用通知插件监听交换机和主题上的通知,将 DNS 通知转换为样本。当通知表示 CRUD 事件以外的内容,并且包含可以测量的感兴趣的值时,这可能很有用。

使用事件可以更好地查询元数据,并避免聚合具有固定测量值 1 的样本的努力。

数据模型影响

无。

REST API 影响

无。

安全影响

无。

Pipeline 影响

无。

其他最终用户影响

无。

性能/可扩展性影响

没有新的影响。通知和存储处理层现有容量方面的担忧仍然存在。

其他部署影响

无。

开发者影响

无。

实现

负责人

主要负责人

rjaiswal

持续维护者

rjaiswal

工作项

  • 所有支持的 DNS 资源类型的事件定义和字段映射。

  • 事件验证。

未来生命周期

将来 Designate 将发出 dns.domain.exists 事件。当 Designate 发出此通知时,需要处理此事件。

DNS 资源类型集(domain、record、pool)可能会在未来发生变化。可能会出现需要支持的新类型的通知。

当 Designate 确认 PaaS 事件格式后,需要重构集成事件的字段映射以适应新的事件格式。

依赖项

DNSaaS 被一些人视为 PaaS 服务,并且可能拥有它自己的消息总线,用于发送通知。Ceilometer 最近已扩展为从多个消息总线消费通知 - https://review.openstack.org/#/c/77612/

如果有多个消息总线,则需要在 ceilometer 配置中配置多个传输端点(ceilometer.conf)。

测试

将添加单元和集成测试来验证生成的事件。

文档影响

无。

参考资料

https://docs.openstack.org/developer/ceilometer/events.html

https://docs.openstack.org/trunk/config-reference/content/ch_configuring-openstack-telemetry.html

https://specs.openstack.org/openstack/ceilometer-specs/specs/juno/paas-event-format-for-ceilometer.html

https://wiki.openstack.org/wiki/Designate

https://github.com/kennknowles/python-jsonpath-rw