DatadogでAzure Appllication Gatewayの正常性監視

 

DatadogをAzureのテナントと接続する事で、Azureのリソース(Application Gateway等)のメトリック監視やダッシュボード表示を行う事が出来ます。

今回は、DatadogでAzureリソースのダッシュボード作成、メトリック監視設定を試してみました。

設定対象はAzure Application Gatewayのバックエンドプールの正常性(正常なホスト(Healthy host count))としてみました。

なお、Azure Monitorを使ったAzure Application Gatewayのバックエンドプールの正常性監視はこちらに記載しています。

Azure MonitorでApplication Gateway正常性プローブを監視

また、AzureとDatadogの接続についてはこちらに記載しています。

DatadogとAzure接続してリソース取得

1.DatadogでもAzure Application Gatewayのバックエンド正常性メトリックを取得出来る

まずAzure Application Gatewayの正常性プローブの変化は、バックエンドプールにある正常なホストの数の変化で分かります。

マイクロソフト様のサイトを読むと、以下のような事が言えます。

https://docs.microsoft.com/ja-jp/azure/application-gateway/application-gateway-metrics#backend-metrics

      • 正常なホスト(Healthy host count)の数が0の場合は、すべてのバックエンドプールに問題が発生しており、サイトが表示されない状態

次にDatadogで取得されるAzure Appllication Gatewayのメットリック値を確認します。

https://docs.datadoghq.com/ja/integrations/azure_application_gateway/

こちらを確認すると、azure.network_applicationgateways.healthy_host_countという項目があり、正常なホスト(Healthy host count)がDatadogでも確認出来そうです。

2.Datadogでダッシュボードを作成してAzure Application Gatewayの正常なホスト(Healthy host count)の数をグラフ表示する

DatadogでApplication Gatewayの正常なホスト(Healthy host count)を表示してみます。

まずメニューのDashboards>New Dashboardを選択します。

Crate dashbordが表示されますので、ダッシュボード名をつけてNew Screenboardを選択します。(今回の場合はどちらを選択しても問題ないです。)

空のダッシュボードが作成されますので、Edit Widgetsを選択しApplication Gatewayのウィザードを追加します。

ウィジェットを表示する項目の編集画面が表示されます。今回は時系列の状態をグラフ表示させたかったので、Timeseriesを選択しました。

次に取得する値の設定画面が表示されます。Application Gatewayの正常なホストを数をバックエンドプール単位で表示しますので、以下の値を設定します。設定が完了したらSaveを選択します。

      • Metric:azure.network_applicationgateways.healthy_host_count
      • avg by:name、backendpool

ダッシュボードの編集画面に戻りますので、Save Changesを選択して保存します。

これで設定は完了です。作成したダッシュボードを表示させると下記のように表示されます。

3.DatadogでAzure Application Gatewayのバックエンドプール監視をしてみる(正常なホスト(Healthy host count)の数で監視する)

DatadogでApplication Gatewayの正常なホスト(Healthy host count)の監視設定をしてみます。

今回の監視設定は下記の条件で実施します。

      • 監視対象:Azure Appllication Gateway
      • 監視項目:Healthy host count
      • 監視間隔:5分
      • ワーニング発出条件:2以下の場合(5分間で正常なホストカウントが2以下の場合)
      • アラート発出条件:0の場合(5分間正常なホストが存在しない場合)

まずメニューのMonitors>New Monitorを選択します。

Select a monitor typeが表示されますので、Metric(今回はメトリック監視なので)を選択します。

Select a metric to monitorの画面が表示されます。実際の監視設定を行います。

まずChoose the detection methodを選択になります。今回はThreshold Alertを選択します。

次にDefine the metricで監視対象の設定を行います。

Application Gatewayの正常なホストを数をバックエンドプール単位で監視しますので、以下の値を設定します。

      • Metric:azure.network_applicationgateways.healthy_host_count
      • avg by:name、backendpool

 

Set alert conditionsでアラート発出条件を設定します。

今回は以下の条件で設定します。

      • Triger when the metric
        • below or equal to
        • in total
        • 5 minutes
      • Alert threshold:0
      • Warning threshold:2
      • Delay evaluation by:900

5分間で正常なホスト(Healthy host count)が0の場合(5分間通信が行えない状態の場合)、アラートとしています。

また、Azureの場合、DatadogがAzureからメトリック収集する間隔が5分間隔になります。

その為、Delay evaluation byを設定しないと、直近5分間応答がない状態になってしまう為、Delay evaluation byを設定します。(今回はDatadogの推奨設定である900秒(15分)を設定しています。)

※Delay evaluation byを設定しているので実際にアラート検出が行えるのは最大20分後になってしまいます。(実際の利用にあたっては監視間隔を含めてチューニングが必要になります。)

最後にSay what’s happeningで通知方法を設定します。今回は以下の条件で設定しています。

      • 通知メールタイトル:Appllication Gateway Healthy Host Count alert
      • メール本文:

        {{#is_alert}}Application Gatewayバックエンド異常
        APGW名: {{name.name}}
        バックエンド名: {{backendsettingspool.name}}
        バックエンド状態:{{value}}
        {{/is_alert}}

        {{#is_recovery}}Application Gatewayバックエンド正常性回復
        APGW名: {{name.name}}
        バックエンド名: {{backendsettingspool.name}}
        バックエンド状態:{{value}}
        {{/is_recovery}}
        @Mailアドレス

        ※is_alertでアラート発生時、is_recoveryでアラート回復時の内容を設定します。

Saveで保存します。これで設定は完了です。

実際にアラートを発生させてみると、こんな感じでアラートメールが送信される事が確認出来ました。

—実際のメール内容—

[Triggered] Appllication Gateway Healthy Host Count alert

Application Gatewayバックエンド異常
APGW名: Application Gateway名 
バックエンド名: バックエンドプール名 
バックエンド状態:0.0

DatadogでAzureのログを収集する

 

Azureの取得されるログをDatadogに転送する事が出来ます。

今回はDatadogのサイト記載の内容に沿って、AzureのログをDatadogで収集する設定をしてみました。

https://docs.datadoghq.com/ja/integrations/azure/?tab=azurecliv20

設定は以下の順序で実施します。

      • Azure Event Hubを作成する
      • Azure Functionsを作成する
        • Azure Function(関数アプリ)を作成する
        • 実際にDataDogへログ転送するFunction(関数)を作成する
      • 診断設定でAzure Event Hubへログ転送設定する

AzureとDatadogの接続についてはこちらに記載しています。

DatadogとAzure接続してリソース取得

1.診断設定(Log転送先)で指定するAzure Event Hubを作成する

まず、最初にAzure Event Hubを作成します。

1)AzureのメニューでEvent Hubsを選択します。下記画面が表示されるので、追加をクリックします。

2)名前空間を作成します。リソースグループ名、Event Hub名、ロケーションを指定します。ロケーションはログの収集を行うリソースと同じロケーションを選択します。

価格レベルはBasicを選択します。

設定したら確認および作成を選択します。(なお、タグや可用性セットの設定を行う場合は、それぞれの画面で設定を行います。)

確認画面が表示されますので作成すればAzure Event Hubが作成されます。

3)作成したEvent Hubs名前空間を選択します。Event Hubsを選択すると下記画面が表示されますのでイベントハブを選択します。

4)イベントハブの作成画面が表示されますので名前を設定します。

これでAzure Event Hubの設定作業は完了です。

2.Azure Functions(関数アプリ)を作成する

Datadogへのログ転送はAzure Functions(関数アプリ)で行います。

Azure Functions(関数アプリ)のトリガーをEvent Hubとして作成します。Datadogへ転送するFunction(関数)を利用し、Event Hubを経由してDatadogへログ転送されます。

まずAzure Functions(関数アプリ)の作成を行います。

なお作成時にストレージアカウントが必要になりますので、必要に応じて事前に準備します。

1)Azure Function(関数アプリ)のメニューを選択します。下記画面が表示されますので追加をクリックします。

2)Azure Function(関数アプリ)の作成画面が表示されますので、リソースグループ名、関数アプリ名、ロケーション名を設定します。ランタイムスタック等は下記の値で設定を行います。

      • 公開:コード
      • ランタイムスタック;Node.js
      • バージョン:12LTS

3)ホスティングの設定を行います。ストレージアカウント名を選択します。事前に準備していない場合は新規作成を選択して作成します。

      • オペレーティングシステム:Winodws
      • プランの種類:消費量(サーバレス)

プランの種類は環境や利用状況に合わせて適時変更下さい。

 

4)必要に応じてApplication Insightの設定を行います。Datadogへのログ転送にあたってはどちらを選択しても問題ありません。(今回は”はい”を選択していますがどちで問題ありません。)

5)タグの画面が表示されますので必要に応じて設定を行います。

タグが必要なければそのまま確認および作成をクリックし次に進みます。

確認および作成画面が表示されますので、作成をクリックします。これでAzure Function(関数アプリ)の作成は完了です。

3.Datadogへログ転送を行うFunction(関数)を作成する

Datadogへのログ転送を行うFunction(関数)を作成します。

1)先ほど作成したAzure Functions(関数アプリ)を選択します。Function(関数)を選択すると下記画面が表示されますので追加をクリックします。

2)関数の追加画面が表示されます。Azure Event Hub Triggerを選択します。

開発環境を選択項目として表示された場合は、ポータルでの開発を選択します。

3)詳細画面が表示されますので、以下の通り設定します。

        • 新しい関数:関数名(任意)
        • Event Hub Name:作成したEvent Hub名

設定したらEvent Hub ConnectionでNewを選択します。

次の画面が表示されますので、事前に作成したEvent Hub名を指定します。設定したらOKを選択します。

これでFunction(関数)の箱が出来ました。次に環境変数の設定を行います。(Datadogサイトと順番が違います。今回は先に環境変数を設定します。)

4)Azure Functions(関数アプリ)のメニューで構成を選択すると下記画面が表示されます。新しいアプリケーション設定を選択します。

5)アプリケーション設定の追加/編集が表示されますので環境変数を追加します。

      • 名前;DD_API_KEY
      • 値:DatadogのAPI KEY(DatadogのIntegrations/APIs/APIKeysで確認される値)

これで環境変数の設定が終わりましたので、次に実際のFunction(関数)を作成します。

6)関数アプリ(Azure Functions)の画面で関数のメニューを選択する作成したFunction(関数)が表示されますので選択します。

7)コードとテストのメニューを選択すると下記画面が表示されます。Datadogへ転送するIndex.jsを作成します。

Index.jsを選択し、下記サイトのIndex.jsをコピーし下記画面のようにペーストして保存します。

https://github.com/DataDog/datadog-serverless-functions/blob/master/

azure/activity_logs_monitoring/index.js

8)トリガーの設定値を確認します。Function(関数)の画面で統合を選択すると下記画面されるのでトリガーを選択します。

トリガーの編集画面が表示されるので、以下の値を確認します。

      • Event parameter name:eventHubMessages
      • Event Hub cardinality:Many
      • Data Type:空白

 

これでFunction(関数)の設定は完了です。実際に送信されるのかテストしてみます。

9)Function(関数)の画面でコードとテストのメニューを選択し、テストと実行をクリックします。

下記画面が表示されるので、キーにmaster(Host Key)を選択し、実行をクリックします。

完了した際に下記メッセージが表示されていれば送信は完了です。

Datadog側でもLog受信の確認を行います。

LogsのメニューでSearchを選択すとLog Explorerが表示されます。下記のようにTest Messageと表示されていれば受信出来ています。

4.診断設定でEvent Hub(イベントハブ)への転送設定をする

実際にAzureのLogをDatadogに転送するのには、診断設定でEvent Hubへのログ転送設定が必要になります。

下記のように、イベントハブへのストリームを選択し、作成したEvent Hubを指定します。

これでAzureのLogをDatadogに転送する設定が完了です。

Datadog Agentを使ってAzure VMのリソース監視

 

マルチクラウド対応の監視サービス(SaaS)であるDatadogを使って、Azure VMのリソース監視を行ってみました。

Datadogを使って、Azure VMのリソース監視を行う場合は以下の2つの方法があります。

      • DatadogとAzureテナントを接続しAzureのメトリック情報を利用する
      • Azure VMにDatadog Agentをインストールしリソース情報を取得する

今回はAzure VMにDatadogのエージェントインストールする方法で試してみました。(今後プロセス監視やログ監視を行う事を考慮しエージェントを利用した方法を選択しています。)

    • 今回実施した内容
      • Azure VMのCPU使用率監視
      • Azure VMのメモリ使用率監視
      • Azure VMのディスク使用率監視

今回の設定にあたっては、Datadogのドキュメントを参考に実施しています。

https://docs.datadoghq.com/ja/monitors/monitor_types/metric/?tab=threshold

また、Azure VMへのDatadog Agentインストールはこちらで実施しております。

Datadog Agentを使ってAzure VMのリソース取得

----

1.DatadogでAzure VMのCPU使用率を監視する

Datadogで監視設定を行うメニューはMonitorsになります。

今回は新規設定になりますので、下記の通りNew Monitorを選択します。

CPU使用率等のリソース監視はメトリック監視になりますので、メトリックを選択します。

監視設定画面が表示されますので設定項目を順番に設定していきます。

    • 監視設定で行う設定項目
      • Choose the detection method:検出方法(例;しきい値監視)
      • Define the metric監視条件(例;CPU使用率)
      • Set alert conditions:しきい値(例;90%以上でAlert)
      • Say what’s happening:通知方法(例;Mail通知)

最初に検出方法をChoose the detection methodで設定します。

しきい値監視の場合は、Threshold Alertを選択します。

次に監視条件(メトリクス)をDefine the metricで設定します。

Datadog Agent経由で取得されるOSのリソース情報はsystemになるようです。

    • CPU使用率
      • Metric:system.cpu.user
      • avg by:host

avg byでhostを指定する事で、host単位の値で検知可能です。設定しないと平均値となります。host1 100% host2 10%の場合55%となります。

Multi Alert /hostの指定も同様の意味で指定されます。

次にしきい値をSet alert conditionsで設定します。今回はCPU使用率が90%(Alert)と80%(Warn)のしきい値でアラートを発生させる設定します。

      • 条件1:adove(より上)
      • 条件2:on average(平均値)
      • 条件3:5minntes
      • Alert Threshold :90
      • Warning Threshold:80

なお、データ取得が出来てない場合に通知する場合は、Do not notifyをNotifyに変更します。

次に通知方法をSay what’s happeningで通知方法を設定します。今回はメール通知を利用します。

is alertで発生時、is recoveryで復旧時の定義をします。サンプルではHost名やCPU使用率を表示するようにしています。inculedの部分はチェックを外してます。

 

設定が完了したら、Datadogでテストメール送信を行い確認します。

テストメール送信を行うと下記メールが届きメール送信内容の確認出来ます。

2.DatadogでAzure VMのメモリ使用率(空き容量)を監視する

Azure VMのメモリ使用率監視を設定します。

CPU使用率と同様の設定方法になりますが、監視条件(メトリクス)をDefine the metricで設定する方法が若干異なります。

メモリついてはサイズで取得される為、メモリ使用率については計算が必要になります。

    • メモリの空き容量を計算し算出します。(a+b+c)
      • a(system.mem.cached)
      • b(system.mem.buffered)
      • c(system.mem.free)
    • 全体のメモリ容量を以下の値で取得されます。
      • d(system.mem.total)
    • メモリ使用率(%)は以下の式で計算されます。
      • (d-(a+b+c))/d*100

※複数行指定する場合は、Advancedを選択します。Add Query +で行を追加します。

実際に設定するとこのような画面になります。

CPU使用率と同様に、Set alert conditionsでしきい値、Say what’s happeningで通知設定を行えば監視設定完了です。

3.DatadogでAzure VMのディスク使用率(空き容量)を監視する

Azure VMのディスク使用率監視を設定します。監視条件(メトリクス)をDefine the metricを下記の通り設定します。

    • ディスク使用率
      • Metric:system.disk.in_use
      • avg by:host,device_name

avg byでhostとdevice_nameを指定する事でデバイス(ドライブ等)単位でディスク使用率の取得が出来ます。

※CPU使用率と同様に%設定したかったので*100しています。

CPU使用率と同様に、Set alert conditionsでしきい値、Say what’s happeningで通知設定を行えば監視設定完了です。

Datadog Agentを使ってAzure VMのリソース取得

 

Datadogはマルチクラウド対応の監視サービス(SaaS)です。

Datadogではエージェントレスでのクラウド監視だけではなく、通常の監視のようにAzure VMにエージェントを入れた監視も可能です。

今回はアラート設定の下準備として、Azure VMにDatadogのエージェントインストールを試してみました。

    • 今回実施した内容
      • Azure VM(Cent OS & Windows)へData Dogのエージェントインストール
      • Data DogでAzure VMからリソースデータ取得出来ているの確認

DatadogとAzureのテナント接続についてはこちらで試しております。

DatadogとAzure接続してリソース取得

----

1.Azure VMにDatadogのエージェントをインストールする(Cent OS編)

Azure VM(Cent OS 7)にDatadogのエージェントをインストールしてみます。

1)最初にDataDogにログインします。

2)IntegrationsのメニューでAgentを選択します。CentOS/Red Hatの項目を選択すると下記画面が表示されます。

3)Use our easy one-step installに表示されているDDコマンドをコピーし、監視対象のAzure VM上で実行します。

[ユーザー名@host名 ]$ DD_AGENT_MAJOR_VERSION=7 DD_API_KEY=API_KEY DD_SITE=”datadoghq.com” bash -c “$(curl -L https://s3.amazonaws.com/dd-agent/scripts/install_script.sh)”

Agentがインストールされて監視が開始します。(デフォルトでは自動的に監視が開始されます。)

Agent の停止する場合は下記コマンドを実行します。

[ユーザー名@host名 ]$ systemctl stop datadog-agent

※Agentインストール完了した時点でCPUやメモリ使用率といったリソース情報は取得開始されます。

2.Azure VMにDatadogのエージェントをインストールする(Windows編)

Azure VM(Windows)にDatadogのエージェントをインストールしてみます。

1)IntegrationsのメニューでAgentを選択します。Windowsの項目を選択すると下記画面が表示されます。Datadog Agent Installerをクリックするとダウンロードが開始されます。

※3に表示されるAPI Key、4に表示されるDataDog Regionはインストール時に利用します。

2)ダウンロードされたIntallerをクリックするとインストールが開始されます。Datadog Agent Setup画面が表示されますので、NextをクリックしSetupを開始します。

※Winodwsのセキュリティメッセージが表示された場合は実行を選択します。

3)下記ライセンス承認画面が表示されますので、確認し問題なければチェックボックスにチェックを入れてNextをクリックします。

4)1)の画面で確認したAPI Keyをコピー&ペーストしてNextをクリックします。

5)1)の画面で確認したRegionを選択しNextをクリックします。

6)Install開始画面が表示されますので、Installをクリックします。

これでDatadog Agentのインストールは完了です。自動的にData Dogに接続されリソースの収集が開始されます。

3.Datadogで取得されているリソース情報を確認する

DatadogのAgentのリソース取得が出来ているかを確認してみます。

InfrastructureのメニューでInfrastructure listを選択すると下記画面が表示されます。Agentからリソース収集されているホストの一覧が表示されます。

※Azure VM側でAgentを停止すると表示されません。

ホスト名を選択すると、ホストで取得されているリソース情報が確認出来ます。

特に何も設定することなく、リソース情報の確認が出来ます。

取得したリソースでの監視設定はこちらで試しております。

Datadog Agentを使ってAzure VMのリソース監視

DatadogとAzure接続してリソース取得

 

Datadogはマルチクラウド対応の監視サービス(SaaS)です。AzureやAWS等のパブリッククラウドの監視がサービス提供されています。

Azureでは仮想マシンといったIaaS環境だけではなく、サーバレスのサービス等のPaaSも監視する事が出来ます。

    • Datadog製品紹介ページ

https://www.datadoghq.com/ja/product/

このDatadogですが、無料アカウントを作成すれば、2週間すべての機能を利用する事が出来ます。

Datadogを利用してAzureの情報取得を試してみました。実施にあたってはDatadogサイトに記載のドキュメントを参考に実施しております。

    • Datadogマニュアル

https://docs.datadoghq.com/ja/integrations/azure/

    • AzureとDatadog接続に必要な設定内容
      • AzureテナントでのDatadog用のサービスプリンシパル作成(別記事で実施)
      • DatadogでAzureテナントへの接続設定

なおAzureテナント側でのサービスプリンシパル作成についてはこちらで実施しております。

Azure サービスプリンシパルを作成

 

Datadogエージェントを使ったリソース情報取得はこちらで試しております。。

Datadog Agentを使ってAzure VMのリソース取得

——-

1.DatadogでAzureテナントへの接続設定

DatadogでAzureテナントへの接続設定を行います。

Datadogの無料アカウントは作成済みの前提とします。

1)Datadogにログインし、Integrationsのメニューを選択すると下記画面が表示されます。Azureを選択します。(監視する内容関係なく、一番最初はAzureへの接続設定が必要になります。)

2)Azure Integrations画面が表示されます。

      • Tenant ID:アプリケーションの画面で確認したテナントID
      • Client ID:アプリケーションの画面で確認したクライアントID
      • Client Secret:アプリケーションの画面で確認したシークレット値
      • Optionaliy limit metrics collection to hosts with tag:監視対象に設定したTAG

※TAGを設定しない場合、すべて監視対象となる為注意が必要です。

値を入力し、Install Integrationをクリックすると設定完了です。

2.DatadogでAzureリソースが見えているかを確認する

Data DogでAzureテナントへの接続設定が終わると、特に設定なく監視が開始されます。

そのため、監視対象側でタグ設定を行い、監視対象を絞るなどそういう設定が必要になります。

今後、実際のアラート設定を試していきたいと思います。