使用Terraform集成Datadog和AWS

2020-05-16 05:35:24

我们喜欢度量,但讨厌手动流程。当我们在AWS集成中采用Datadog的内置功能时,我们迫不及待地想将AWS CloudWatch指标导入到Datadog中,但首先我们需要自动执行设置它所需的大量手动步骤。Datadog的AWS集成功能相当强大,一旦启用,它将自动将指定的CloudWatch指标同步到Datadog帐户。基本上,CloudWatch中的任何可用内容都可以很容易地在Datadog中与我们所有其他指标和仪表盘一起使用。

尽管集成功能强大且方便,但其设置过程实际上相当复杂。如Datadog文档中所述,需要18个手动步骤,包括:

如果您像我们一样拥有多个AWS帐户,您可能更喜欢自动执行此操作!在我们的例子中,这意味着使用Terraform。

在这篇博客文章中,我们想要分享Scribd如何使用Terraform在整个组织范围内自动化我们的Datadog和AWS集成。

为了解决这个问题,我们构建了terraform-aws-datadog模块。只需对HCL代码进行耦合,Terraform将执行所有必要步骤,以使用Scribd的最佳实践设置Datadog与特定AWS帐户的集成:

模块";datadog";{SOURCE=";git::https://github.com/scribd/terraform-aws-datadog.git?ref=master";aws_account_id=data.。AWS_CALLER_IDENTITY。当前。account_id datadog_api_key=var。datadog_api_key env=";产品";命名空间=";Team_Foo";}。

从AWS账户维护人员的角度来看,使用模块是继承集中化最佳实践的便捷方式。对于模块维护器,可以使用标准的Terraform模块发布流程发布对Datadog集成模块的任何更改。

最初,该模块只设置基础集成。随着采用率的增加,各个团队向该模块添加了更多功能。其中一个功能是自动设置CloudWatch的日志接收。

就像设置官方的AWS集成应用程序一样,日志同步的说明有点不堪重负。

模块DATADOG";{SOURCE=";git::https://github.com/scribd/terraform-aws-datadog.git?ref=master";DATADOG_APIKEY=var.。datadog_api_key env=";产品";名称空间=";project_foo";cloudwatch_log_group=[";cloudwatch_log_group_1";,";cloudwatch_log_group_2";]}。

就这样!。TerraForm将自动为指定日志组创建Datadog无服务器功能和触发器,以将所有CloudWatch日志转发到Datadog。在运行Terraform Apply之后,您应该能够在几分钟内看到日志显示在Datadog中。

通过将指标和日志同步到Datadog中,我们能够利用Datadog作为所有事物监控的中心中心。我们计划在将Scribd的基础设施迁移到AWS时,为该模块带来更多功能。

通过官方AWS集成获取的指标会被耦合分钟延迟,这不适合用作监控关键系统的信号。有机会通过自动设置Datadog代理来实现实时指标同步。

datadog-serverless-函数repos包含另外两个基于lambda的AWS扩展,我们可以将其添加为模块的可用功能:vpc_flow_log_monitor和rds_enhanced_monitor。

特别感谢泰勒·麦克卢尔(Taylor McClure)和汉密尔顿·霍德(Hamilton Hord)开始这个项目,以及赛基兰·伯尔(Sai Kiran Burle)、卡姆兰·法哈迪(Kamran Farhadi)和尤金·皮门诺夫(Eugene Pimenov