OpenStack群集事件通知

OpenStack群集事件通知,openstack,openstack-horizon,openstacksdk,Openstack,Openstack Horizon,Openstacksdk,到目前为止,根据我对OpenStack Python SDK的理解,我能够阅读虚拟机监控程序、服务器实例,但是,我没有看到一个API来接收和处理集群上发生的操作的更改通知/事件,例如添加新VM、删除现有VM等 有一个类似的老帖子(大约2016年),我很好奇在通知处理方面是否有任何变化? 我看到了一个文档,其中谈到通过消息总线发出通知,指示服务中发生的不同事件 我有以下问题: Does Openstack Python SDK support notification APIs? How do

到目前为止,根据我对OpenStack Python SDK的理解,我能够阅读虚拟机监控程序、服务器实例,但是,我没有看到一个API来接收和处理集群上发生的操作的更改通知/事件,例如添加新VM、删除现有VM等

有一个类似的老帖子(大约2016年),我很好奇在通知处理方面是否有任何变化?

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

我有以下问题:

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 SDK不提供这样的功能

云高计也帮不了你。它仅通过轮询和RPC上的通知收集数据。您仍然需要自己从云高计中查询数据。除此之外,云高计本身就存在一个问题,即它只会增长并会破坏您的数据库,这就是为什么在使用云高计时,您还应该使用gnocchi的原因

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

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

  • 写一些东西,它通过奥斯陆消息(RPC)接收通知,与云高计一样。请参阅配置中的
    oslo\u消息通知
    -部分:(中子也有这样一个选项),并像云高计一样使用
    messagingv2
    。但请注意,并非每个事件都会创建通知。云高计数据列表应提供创建通知的事件以及只能通过轮询收集的内容的良好概述:。通知事件的数量非常少,因此它可能无法提供您想要的所有事件

  • 在configs
    log
    as
    driver
    oslo\u messaging\u notifications
    部分中使用,将通知写入日志文件,并编写一个简单的程序来读取日志文件并处理或转发读取的内容。与第2个问题相同,并非每个事件都会创建通知(本例中为日志条目)。这也有一个问题,即通知和事件日志都是在计算节点上创建的(据我所知),因此您必须通过工具监视所有计算节点

  • 基于这样一个事实,我不知道编写一个通过RPC收集通知的工具需要做多少工作,因为我不知道,如果您想观看的所有事件都真的创建了一个通知(基于这里的概述:),我更喜欢第一名


    这是创建一个工具的最简单的方法,该工具定期通过REST-API运行GET请求,并将结果作为您自己的自定义通知转发到所需的目标。

    我遵循以下参考来实现此功能。此外,还与该代码和视频的作者聊天

    https://github.com/gibizer/nova-notification-demo/blob/master/ws_forwarder.py
    https://www.youtube.com/watch?v=WFq5JWXa9AM
    
    此外,我还面临其他问题:

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

    如果我必须收到Nova服务的通知,您能否提供配置文件更改的确切示例?我知道在nova.conf中,我们需要更改“传输url中的用户名/密码”以及“rabbitmq群集”配置。非常抱歉,我无法向您提供确切的示例:(但是,据我所知,您只需设置
    驱动程序
    nova.conf即可。当您想使用不同的RabbitMQ集群进行通知时,只需使用
    传输url
    。通常情况下,您看起来像是“仅”必须连接到rabbitmq群集才能接收通知并侦听正确的rabbitmq队列。此处ceilometer在此循环中注册其所有通知此处:这可能对您有所帮助。