跟踪 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