Datadog
接続
ターミナルからDatadogを接続します。Datadogが受け付けるフラグは--helpで確認できます。
polylane integration connect --type datadogDatadogサイトのAPIキーとアプリケーションキーです。
Datadogを接続すると、エージェントが調査中にログ、メトリクス、モニター、ダッシュボードを問い合わせられるようになります。
セットアップ
- Datadogサイト(US1、US3、US5、EU1、AP1など)を選びます。DatadogのURLを確認してください。
app.datadoghq.comはUS1、app.datadoghq.euはEU1です。 - Organization Settings → API KeysからAPIキーを入力します。
- Organization Settings → Application Keysからアプリケーションキーを入力します。
- Polylaneが両方のキーを検証し、接続します。
スコープのないアプリケーションキーは自分のユーザーと同じアクセス権を持ち、そのまま動作します。キーにスコープを設定する場合は、user_app_keys(接続に必須)に加えて、logs_read_data、timeseries_query、metrics_read、monitors_read、monitors_write、monitors_downtime、dashboards_read、slos_read、hosts_read、events_read、incident_read、apm_read、aws_configuration_read、create_webhooksを含めてください。キーは保存前に暗号化され、エージェントが目にすることはありません。
接続すると、Datadogにpolylaneという名前のWebhookが作成され、すべてのモニターがそれに購読されるため、アラートは発火と同時にPolylaneに届いてトリアージされます。
エージェントができること
- Datadogのクエリ構文でログを検索し絞り込む
- メトリクスの値と時間経過による傾向を読む
- どのモニターがアラート状態にあるかとその状態を確認する
- 調査でダッシュボードのデータを参照する
接続解除
PolylaneでDatadogを接続解除し、次にDatadogでアプリケーションキーとAPIキーを取り消します。
Terraformで管理しているリソースと並べて、DatadogのアラートをPolylaneに登録します。
Polylaneは、モニターのメッセージに@webhook-polylaneメンションを追加し、polylane:managedタグを付けることでモニターを購読します。定期的な同期がすべてのモニターにこの両方を適用するため、Terraformで管理しているモニターは、そのTerraform設定にも両方が含まれるまでドリフトを示します。各モニターに両方を追加してください。
resource "datadog_monitor" "high_error_rate" {
name = "High error rate on checkout"
type = "metric alert"
query = "sum(last_5m):sum:trace.http.request.errors{service:checkout}.as_count() > 50"
message = <<-EOT
{{#is_alert}}Error rate on checkout is above threshold.{{/is_alert}}
@webhook-polylane
EOT
tags = concat(var.tags, ["polylane:managed"])
}
最も簡単なセットアップは、Webhook自体はPolylaneに管理させ、メンションとタグだけをTerraformに置くことです。WebhookもTerraformで管理する場合は、DatadogのWebhook名は一意であるため、作成する代わりに既存のものをインポートします。まずリソースブロックを追加し、次にインポートします。
resource "datadog_webhook" "polylane" {
name = "polylane"
url = "https://sinks.polylane.com/v1/datadog"
encode_as = "json"
custom_headers = jsonencode({
"x-polylane-telemetry-token" = var.polylane_telemetry_token
})
payload = jsonencode({
alert_id = "$ALERT_ID"
alert_metric = "$ALERT_METRIC"
alert_query = "$ALERT_QUERY"
alert_scope = "$ALERT_SCOPE"
alert_status = "$ALERT_STATUS"
alert_title = "$ALERT_TITLE"
alert_transition = "$ALERT_TRANSITION"
alert_type = "$ALERT_TYPE"
date = "$DATE_POSIX"
event_msg = "$EVENT_MSG"
event_title = "$EVENT_TITLE"
event_type = "$EVENT_TYPE"
hostname = "$HOSTNAME"
id = "$ID"
link = "$LINK"
logs_sample = "$LOGS_SAMPLE"
org_id = "$ORG_ID"
org_name = "$ORG_NAME"
priority = "$PRIORITY"
snapshot = "$SNAPSHOT"
tags = "$TAGS"
user = "$USER"
username = "$USERNAME"
})
}
terraform import datadog_webhook.polylane polylane
テレメトリートークンは、ワークスペースへのアラート配信を認証します。PolylaneのSettings → Telemetry tokens(datadog-integrationという名前のトークン)で確認するか、同じページで新しいトークンを作成してください。インテグレーションを再接続すると新しいトークンでWebhookが再作成されるため、インポートしたWebhookはその後トークンの変数を更新する必要があります。
接続解除
接続解除すると、すべての同期とチェックが停止し、Polylaneが保持していた認証情報が削除されます。 Polylaneは、DatadogのAPIが許す範囲のものを取り除きます。次のものは、自分で取り除くまで残ります。
- @webhook-polylane appended to every monitor message
- polylane:managed tag on every monitor
polylane integration disconnect <id>ツール
12エージェントがスレッドで実行できる操作です。