监视事件通知系统”wakame-dolphin”的讨论

我已经被任命为2013年12月14日海藻用户组的主要负责人。我参与wakame-vdc项目作为开发者的早期阶段开始时就成为了一个贡献者,我的名字是@saicologic。

在过去的一年左右,我们一直在开发关于使用wakame-vdc和OSS(包括Zabbix和Fluentd)产品进行监控和日志收集的产品。在2013年9月Wakame-vdc v13.08发布时,加入了消息监控功能,因此这次我将介绍一个用于实现消息监控的产品,名为”wakame-dolphin”(以下简称Dolphin)。我们将Dolphin作为开源软件在Github上公开发布。

Dolphin的开发目的是将数据中心内管理的多个监视系统的监视结果汇集到一个地方,并将监视结果通知给系统管理员和用户。虽然与在港口备受瞩目的Fluentd有些相似之处,但Dolphin的设计也考虑了与Fluentd的组合使用。

以下是基于Dolphin的基本系统架构图。其中被称为AlertEngine的部分,指的是Zabbix和Fluentd。

系统配置图

                   +-----------------+
                   |                 |
                   |  HTTP Client    |
                   |                 |
                   +------^---+------+
                          |   |
                          |   |
+--------------+      +---+---v---+        +--------------+
|              |      |           |        |              |
| Alert Engine |----->|  Dolphin  +--------> Mail Server  |
|              |      |           |        |              |
+--------------+      +---^---+---+        +--------------+
                          |   |
                          |   |
                          |   |
                          |   |
                      +---+---v----+
                      |            |
                      |  DataBase  |
                      |            |
                      +------------+

Dolphin提供了两种主要功能。一是管理通知的目标地址,二是管理接收的监控结果(以下称事件)的数据的事件管理功能。

首先,您需要在Dolphin中注册目标信息。您可以在Header中通过添加X-Notification-Id字段,通过Body以JSON格式指定目标信息。

目前,Notification-Id由客户端添加,而不是由服务器端生成。同时,我们支持通过SMTP发送电子邮件作为发送方式。

标题

X-Notification-Id: 1
Content-Type: application/json

身体(JSON)

{
  "email":{
    "to":"demo@example.com"
  }
}

海豚内部存储的信息保存在数据库中,支持使用Cassandra和MySQL两种类型的数据库。

第二个功能是事件管理。在头部添加的X-Notification-Id是之前注册的ID。在Dolphin中,使用这个ID来查找目标并传送事件数据。X-Message-Type用于指定发送给目标时的消息类型。目前,它与邮件模板文件相匹配,将Body的信息与模板文件合并,以发送邮件的方式进行处理。Body用于存储称为事件监控结果的信息。内容的类型为JSON格式。

标题

Content-Type: application/json
X-Notification-Id: 1
X-Message-Type: ping

正文(JSON)

{
  "instance_id":"i-abcdefgh",
  "instance_name":"test",
  "instance_ip":"127.0.0.1",
  "account_id":"a-abcdefgh",
  "event_datetime":"2013-12-13 17:35:41 +0900",
  "message":"Alert!!!!"
}

Dolphin的基本操作已经完成。
之后,可以通过WebAPI更新和删除目的地信息,并获取活动信息。目前,活动信息还不提供删除功能。

关于系统配置的介绍就到这里为止,我也想稍微提一下Dolphin的实现。

Dolphin 是一个使用 Ruby 编写的多线程服务器。它使用名为 Celluloid 的基于 Actor 模型的库,以及基于 Celluloid 的 Reel 和 Sinatra 来实现 WebAPI。Celluloid 受到了 Erlang 这种计算机语言的影响,在 Ruby 上实现了像 supervisor 和 link 这样的 Erlang 功能。这意味着,即使线程因系统错误或故障而终止,由另一个线程监视的线程也可以自动重新启动,而不会停止提供服务。此外,该库还解决了多线程实现中的死锁问题,使得开发多线程系统变得更加轻松。此外,它还在构建数据中心内的虚拟网络的 openvnet 中使用,并受到人们的关注。

我希望未来能够不断开发能够自动化数据中心管理,使运营更加轻松的产品。再见!

广告
将在 10 秒后关闭
bannerAds