可观测性即代码:利用Terraform配置Datadog

在我之前的一篇文章《Cloudformation与其背后的“基础设施即代码”》中,我提到了利用Cloudformation实现“基础设施即代码”,

可观测性即代码

“可观测性即代码”(Observability as Code)这一词条第一次出现在ThoughtWorks《技术雷达》19期:

可观测性是运转分布式系统与微服务架构必不可少的一部分。我们依赖不同的系统输出来推断分布式组件的内部状态,比如分布式追踪、日志聚合、系统指标等,进而诊断问题所在,并找到根本原因。
可观测性生态系统的一个重要方面就是监控——可视化以及分析系统的输出——并且在检测到异常时报警。传统的监控报警配置,都是通过图形界面的操作完成。这种方法导致控制面板页的配置不可重复,从而无法持续测试和调整报警,来避免报警疲劳或错过重要的报警,进而偏离组织的最佳实践。我们强烈建议使用代码来配置可观测性生态系统,称为可观测性即代码,并且采取基础设施即代码的方式搭建其基础设施。
因此,在选择提供可观测性的工具时,要选择支持通过代码版本控制进行配置,并能通过基础设施持续交付流水线执行 API 或命令行的产品。

实战:利用Terraform配置Datadog

resource "datadog_monitor" "high_cpu_usage_of_docker" {
  name               = "High CPU Usage of Docker"
  type               = "metric alert"
  message            = <<EOT
High CPU Usage of Docker @bywang@thoughtworks.com
EOT
  escalation_message = ""

  query = "max(last_5m):avg:docker.cpu.usage{*} > 20"
  notify_no_data    = false
  renotify_interval = 0
  notify_audit = false
  timeout_h = 0
  include_tags = true
  require_full_window = false
  new_host_delay = 300
  thresholds {
    warning = 10.0
    critical = 20.0
  }

}
Datadog Monitor

迁移:代码化原有手动配置的Datadog

通过一个d2tf工具可以实现将已有的Datadog配置转换成Terraform代码

Github仓库:https://github.com/geekeren/terraform-datadog-demos

推荐阅读更多精彩内容