在我之前的一篇文章《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
}
}
![](https://img.haomeiwen.com/i2154287/ecc00be6e3163822.png)
迁移:代码化原有手动配置的Datadog
通过一个d2tf工具可以实现将已有的Datadog配置转换成Terraform代码
Github仓库:https://github.com/geekeren/terraform-datadog-demos
网友评论