供養の地

使わなかった設定を供養します。

Datadog Logs Pipelinesの処理順序をTerraformで管理する

できるようになること

  • Pipelineの順番をTerraformで管理できるようになる(プリセットのPipeline含む)
  • Pipelineの有効化/無効化をTerraformで管理できるようになる(プリセットのPipeline含む) f:id:tp7hayct:20200712193146p:plain

手順

  • DatadogAPIでpipelineの一覧を抽出する(pipeline_idを出力させるため)
curl -X GET https://api.datadoghq.com/api/v1/logs/config/pipelines \
-H "Content-Type: application/json" \
-H "DD-API-KEY: xxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "DD-APPLICATION-KEY: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  • 目的のものがでてくる("id":"gfewuaiffwoafjowaeg9124")*1
[{"id":"gfewuaiffwoafjowaeg9124","type":"pipeline","name":"Java","is_enabled":true,"is_read_only":true,"filter":{"query":"source:java"},"processors":[{"name":"Parsing Java Default formats","is_enabled":true,"source":"message","samples(省略)
  • main.tfに以下の書き込み
resource "datadog_logs_integration_pipeline" "java" {
}
  • terraform importでterraform.tfstateに落とし込む(backend "s3"はオフにしておく)
terraform import datadog_logs_integration_pipeline.java gfewuaiffwoafjowaeg9124
  • terraform.tfstateの当該行に"module"を追加(moduleで構成している場合)
    {
      "module": "module.datadog", ←この行
      "mode": "managed",
      "type": "datadog_logs_integration_pipeline",
      "name": "java",
      "provider": "provider.datadog",
      "instances": [
        {
          "schema_version": 0,
          "attributes": {
            "id": "gfewuaiffwoafjowaeg9124",
            "is_enabled": true
          },
          "private": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
        }
      ]
    },
  • 後は、datadog_logs_pipeline_orderで順番を変更する。
resource "datadog_logs_integration_pipeline" "python" {
    is_enabled = true
}
resource "datadog_logs_integration_pipeline" "java" {
    is_enabled = true
}
resource "datadog_logs_integration_pipeline" "nginx" {
    is_enabled = false
}

resource "datadog_logs_pipeline_order" "pipeline_order" {
    name = "pipeline_order"
    depends_on = [
      datadog_logs_custom_pipeline.java_test_custom,
      datadog_logs_integration_pipeline.java,
      datadog_logs_integration_pipeline.python,
    ]
    pipelines = [
      datadog_logs_custom_pipeline.java_test_custom.id,
      datadog_logs_integration_pipeline.java.id,
      datadog_logs_integration_pipeline.python.id,
    ]
}

結論

面倒なのでPipelinesの順序は流石に手で変更したほうがいい。 一番面倒なのはプリセットのPipelineは、ログを流し始めるまでpipeline_idが生成されない事。 環境ごとにJavaのログを流す→上記の工程を実施しないといけない。

参考

www.terraform.io www.terraform.io

*1:idは適当な値に変更してます