Microsoft Azure Deployment Manager

概要

Azure Deployment Manager (ADM) を使用すると、複雑なアプリケーションを安全にデプロイするための段階的ロールアウトを管理できます。

Datadog の使用によって、Azure Deployment Manager 用の健全性チェックを作成し、問題が検出された場合にデプロイを中止することが可能になります。

セットアップ

インストール

Datadog を ADM の健全性チェックとして使用するには、アクティブな Datadog アカウントと Azure Deployment Manager のアクティブなインスタンスが必要です。

構成

  1. 最初に、デプロイ用のモニターを Datadog でセットアップします。リージョンごとのモニターのセットアップから始めます。アプリケーションの複雑さによっては、各リージョンで、デプロイのさまざまな部分にそれぞれモニターが必要になる場合があります。チュートリアル: Resource Manager テンプレートで Azure Deployment Manager を使用するに従うと、何を監視するかを決定する際に役立ちます。モニターの考え方については、こちらのブログ記事を参照してください。
  2. リージョンごとに複数のモニターをセットアップすることにした場合は、ロールアウト手順ごと、またはリージョンごとに複合条件モニターを作成します。複合条件モニターは、複数のモニターを論理的に組み合わることで、1 つのデプロイ手順の全体的なステータスを示します。
  3. 次に、ロールアウトの一環として、Azure Deployment Manager のトポロジー内で Datadog を健全性チェックとして構成します。この健全性チェックは、デプロイ手順間の依存関係として設定します。テンプレートを使用し、<API_KEY><APP_KEY> をそれぞれ Datadog API キーとアプリケーションキーに置き換えてください。また、前の手順で作成した各モニター (または複合条件モニター) の resources にセクションを作成し、<MONITOR_ID> をモニター ID に置き換えます。1 つの健全性チェック手順に複数のチェックを追加することは可能ですが、健全性チェック手順ごとにチェックを 1 つ作成し、複合条件モニターごとに複数の健全性チェック手順を作成することをお勧めします。複合条件モニター以外を使用してチェックを設定している場合は、適宜 regex を更新してください。
  4. Microsoft のドキュメントに従って、デプロイを開始します。

健全性チェック例

以下に、健全性チェックとされる Azure Deployment Manager のロールアウトテンプレートの一部を示します。

{
    "healthChecks": [
        {
            "name": "datadogCompositeMonitor1",
            "request": {
                "method": "GET",
                "uri": "https://api.datadoghq.com/api/v1/monitor/<モニター_ID>?application_key=<アプリキー>",
                "authentication": {
                    "type": "ApiKey",
                    "name": "apikey",
                    "in": "Query",
                    "value": "<API_キー>"
                }
            },
            "response": {
                "successStatusCodes": ["200"],
                "regex": {
                    "matches": ["\"overall_state\"\\s*:\\s*\"OK\""],
                    "matchQuantifier": "All"
                }
            }
        }
    ]
}

健全性チェック手順例

以下に、健全性チェック手順とされる Azure Deployment Manager のロールアウトテンプレートの一部を示します。

{
    "apiVersion": "2018-09-01-preview",
    "type": "Microsoft.DeploymentManager/steps",
    "name": "datadogHealthCheckStep1",
    "location": "Central US",
    "tags": {},
    "properties": {
        "stepType": "healthCheck",
        "attributes": {
            "waitDuration": "PT5M",
            "maxElasticDuration": "PT10M",
            "healthyStateDuration": "PT10M",
            "type": "REST",
            "properties": {
                "healthChecks": [
                    {
                        "name": "datadogCompositeMonitor1",
                        "request": {
                            "method": "GET",
                            "uri": "https://api.datadoghq.com/api/v1/monitor/<モニター_ID>?application_key=<アプリキー>",
                            "authentication": {
                                "type": "ApiKey",
                                "name": "apikey",
                                "in": "Query",
                                "value": "<API_キー>"
                            }
                        },
                        "response": {
                            "successStatusCodes": ["200"],
                            "regex": {
                                "matches": ["\"overall_state\"\\s*:\\s*\"OK\""],
                                "matchQuantifier": "All"
                            }
                        }
                    }
                ]
            }
        }
    }
}

構成例の全体

以下に、1 つの Azure Deployment Manager ロールアウト手順のテンプレート全体を示します。

{
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {},
    "variables": {},
    "resources": [
        {
            "apiVersion": "2018-09-01-preview",
            "type": "Microsoft.DeploymentManager/steps",
            "name": "datadogHealthCheckStep1",
            "location": "Central US",
            "tags": {},
            "properties": {
                "stepType": "healthCheck",
                "attributes": {
                    "waitDuration": "PT5M",
                    "maxElasticDuration": "PT10M",
                    "healthyStateDuration": "PT10M",
                    "type": "REST",
                    "properties": {
                        "healthChecks": [
                            {
                                "name": "datadogCompositeMonitor1",
                                "request": {
                                    "method": "GET",
                                    "uri": "https://api.datadoghq.com/api/v1/monitor/<モニター_ID>?application_key=<アプリキー>",
                                    "authentication": {
                                        "type": "ApiKey",
                                        "name": "apikey",
                                        "in": "Query",
                                        "value": "<API_キー>"
                                    }
                                },
                                "response": {
                                    "successStatusCodes": ["200"],
                                    "regex": {
                                        "matches": [
                                            "\"overall_state\"\\s*:\\s*\"OK\""
                                        ],
                                        "matchQuantifier": "All"
                                    }
                                }
                            }
                        ]
                    }
                }
            }
        }
    ]
}

結果

あるロールアウト段階の健全性チェック手順を実行する際、Azure Deployment Manager は、そのデプロイ段階の健全性チェック手順で指定された複合条件モニターのステータスを Datadog Monitor API にクエリします。

Azure Deployment Manager は、テンプレートで指定されている正規表現を使用して応答をパースし、overall_status: OK の語句が含まれているかを確認します。

overall_status: OK が見つかった場合は、チェックは正常と見なされます。ステータスが WarnNo Data、または Alert の場合、チェックは異常と見なされ、Azure Deployment Manager はデプロイを中止します。

収集データ

メトリクス

Azure Deployment Manager は、メトリクスを報告しません。

イベント

Azure Deployment Manager には、イベントは含まれません。

サービスチェック

Azure Deployment Manager には、サービスのチェック機能は含まれません。

トラブルシューティング

ご不明な点は、Datadog のサポートチームまでお問合せください。