服务
关于
CloudProse博客

2018年2月20日,星期二

我们是的大用户 数据狗 在Trek10,尤其是Datadog的AWS集成中。这是一项功能非常强大的服务,也是我们不可或缺的一部分 24/7 CloudOps 提供。与任何负责任的高级用户一样,我们一直在寻找改善Datadog与AWS配合的方式,并且我们乐于分享发现的东西。

数据狗的 事件流 将来自各种来源的事件集中到一个线程中。您可以轻松搜索&过滤您的流,图形/仪表板事件,在时间序列图上叠加事件,并针对事件创建警报。您可以插入自己的 自定义事件 包括API,电子邮件,Amazon SNS主题或其他各种预构建的集成在内的多种来源。这几乎具有无穷的有用应用程序。例如,您可能希望将部署事件覆盖在系统性能指标上,或者将每个自动扩展失败事件放入流中,并在某个时间段内收到多个事件时发出警报。

在AWS繁重的环境中,通过SNS进行的事件特别有用。 AWS可以将许多事件发送到SNS主题,这在Datadog事件流中可能有用,包括:

可是等等!

这有问题。这是原始SNS消息进入Datadog事件流时的外观:

只是一堆丑陋的JSON。 !可读性很重要,但是还有第二个更大的问题。 数据狗的事件流支持标记;这对于有效过滤流以覆盖图形并发出警报至关重要。这些事件没有带有有用信息的标签,可供我们过滤/警告。 (Datadog还支持全文搜索,但我们发现,它不足以可靠地过滤您所需的内容。)

我们的解决方案

我们为此开发了一个非常简单而优雅的解决方案:

  • 任何数量的账户中具有对Datadog事件流有用的消息的所有AWS服务都被配置为发布到单个集中式SNS主题。
  • 从该主题触发Lambda函数。
  • 此功能由一组映射模板提供支持。每个模板都有给定的匹配条件:来自相关JSON的键/值对,定义何时应使用该映射模板。
  • 模板使用 mustache.js 模板系统来代表由原始事件JSON中的数据构成的经过修饰的Datadog事件……至关重要,包括Datadog 事件流标签。

(旁注:如果您像我们一样沉迷于AWS,您可能会想知道,为什么不使用很棒的新 Amazon SNS邮件过滤 最近发布的功能!?!?相信我,我们希望可以。但是消息的发布者必须设置消息属性。这些是CloudWatch 大事记和Config之类的AWS服务正在发送的消息,而这些服务尚未提供。因此,AWS产品团队成员在阅读本文章时,请与我们联系!

一个示例映射模板,可从AWS Personal Health Dashboard(AWS Health)事件转换JSON:

matchKey: sourcematchValue: aws.healthtitle: 'Personal Health Dashboard Event: {{ "{{ detail-type "}} }}'text: | %%% Affected Service: {{ "{{ detail.service "}} }} Event Category: {{ "{{ detail.eventTypeCategory "}} }} Time: {{ "{{ detail.startTime "}} }} to {{ "{{ detail.endTime "}} }} {{ "{{ detail.eventDescription.0.latestDescription "}} }} [an example link](//www.xmjunrong.com/) %%%tags: - 'eventType:awsPHD' - 'PHDservice:{{ "{{ detail.service "}} }}'

现在,您将获得一个格式良好且易于阅读的Datadog事件,其中包含所需的信息和所需的标签。像这样:

很好吧?而且该系统非常容易扩展。为所有可能的事件创建一个SNS和一个Lambda,并为您的特定事件创建一个新的映射模板。

让我们知道您是否对此感兴趣。如果其他人有兴趣,我们正在考虑将这个小实用程序归纳并开源。

有疑问/意见吗?欢迎随时与我们联系 [email protected].

作者
安迪·沃宗(Andy Warzon)Trek10
安迪·沃宗(Andy Warzon)

创办人& CTO

创办人&CTO Andy一直在AWS上进行开发已有十多年,并且是AWS认证解决方案架构师-专业人士。