0

到目前为止,根据我对 OpenStack Python SDK 的理解,我能够读取 Hypervisor、Servers 实例,但是,我没有看到用于接收和处理集群上发生的操作的更改通知/事件的 API,例如 A添加新 VM,删除现有 VM 等。

有一个类似的旧帖子(大约 2016 年),我很好奇通知处理是否有任何变化? 从 openstack 到外部系统的通知

我看到一个文档,其中讨论了通过消息总线发出通知,指示服务中发生的不同事件。

https://docs.openstack.org/ironic/latest/admin/notifications.html

我有以下问题:

Does Openstack Python SDK support notification APIs?
How do I receive/monitor notifications for VM related changes?
How do I receive/monitor notifications for compute/hypervisor related changes?
How do I receive/monitor notifications for Virtual Switch related changes?

我在 openstack 中看到了诸如Notifications 之类的其他帖子,他们建议使用使用数据库的 Ceilometer 项目。有没有比使用像云高仪这样完全不同的服务更轻量级的解决方案?

提前感谢您在这方面的帮助。

4

2 回答 2

1

据我所知,Openstack SDK 不提供这样的功能。

云高仪也无济于事。它仅通过轮询和通过 RPC 的通知来收集数据。您仍然需要自己轮询来自云高仪的数据。除此之外,单独使用 ceilometer 存在问题,它只会增长并且会炸毁您的数据库,这就是为什么在使用 ceilometer 时也应该使用 gnocchi 的原因。

目前,我只为您看到 3 种可能的解决方案:

  1. 编写您自己的工具,该工具在后台永久运行,并通过 OpenstackSDK 和 REST-API 请求定期收集数据。

  2. 通过 oslo-messaging (RPC) 接收通知,编写一些类似云高仪的东西。请参阅oslo_messaging_notifications配置中的 - 部分:https ://docs.openstack.org/ocata/config-reference/compute/config-options.html#id35 (neutron 也有这样的选项)并messagingv2driverceilometer 一样使用。但请注意,并非每个事件都会创建通知。云高仪仪表数据列表应很好地概述哪些事件正在创建通知以及只能通过轮询收集的内容:https ://docs.openstack.org/ceilometer/pike/admin/telemetry-measurements.html . 通知事件的数量非常少,因此它可能无法提供您想要的所有事件。

  3. 在配置中的oslo_messaging_notifications-section 中log使用,driver将通知写入日志文件,并编写一个简单的程序来读取日志文件并处理或转发读取的内容。这是与数字 2 相同的问题,并非每个事件都会创建通知(此处为日志条目)。这也有一个问题,通知和事件日志是在计算节点上创建的(据我所知),因此您必须通过您的工具查看所有计算节点。

基于这样一个事实,我不知道,编写一个通过 RPC 收集通知的工具需要做多少工作,因为我不知道,如果您想要观看的所有事件都真的创建了一个通知(基于这里的概述:https ://docs.openstack.org/ceilometer/pike/admin/telemetry-measurements.html ),我更喜欢数字 1

它是创建工具的最简单方法,该工具定期在 REST-API 上运行 GET-Requests,并将结果作为您自己的自定义通知转发到所需的目的地。

于 2020-07-07T11:09:50.437 回答
0

我按照以下参考资料来完成这项工作。此外,与此代码和视频的作者聊天。

https://github.com/gibizer/nova-notification-demo/blob/master/ws_forwarder.py
https://www.youtube.com/watch?v=WFq5JWXa9AM

此外,我还面临其他问题:

  • 默认情况下,由于 IPTABLE 规则,OpenStack 服务器不允许您从远程主机连接到 RabbitMQ 总线。您必须在 IP 表中启用对 RabbitMQ 端口的访问。
于 2020-08-01T21:15:32.210 回答