GremlinをDatadogにインテグレーションしてみた #reinvent

GremlinをDatadogにインテグレーションしてみた #reinvent

Clock Icon2019.12.23

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。AWS事業本部のKyoです。

前回に続きまして、カオスエンジニアリングツール Gremlinを監視ツール Datadogにインテグレーションしてみました。

Integrations - Datadog

GremlinのDatadogインテグレーションででできること

このインテグレーションを有効にすると、ダッシュボードの上部に攻撃をオーバーレイして、Gremlinイベントが発生したタイミングと、攻撃がメトリックに与える影響を正確に特定できます。(翻訳)

また、Datadog Event Stream内から以下も実施可能です。

  • グレムリン攻撃を再実行する
  • グレムリン攻撃のログを表示する
  • グレムリン攻撃を停止する

※これらはSlackと同様にGremlinアプリ経由でした。

前提

  • Gremlinアカウント
  • Gremlinデーモンをインストール済みのEC2インスタンス(Amazon Linux2)
  • Datadogアカウント

準備

まずDatadogからAPIキーを取得します。サイドバーのIntegrationsからAPIsを選択し、遷移先でAPI Keysを選択します。 紫色のバーをマウスオーバーするとAPIキーが表示されます。

Gremlin Appに移動します。前回と同じく、Company Settingsをクリックします。

Integrationsを選択肢、Datadogの右のAddをクリックします。APIキーの入力を求められるので、先ほど取得したAPIキーを入力します。

これでインテグレーションは完了です。

注意:APIキーが間違っていてもconnectedになるようです。私の環境ではAPIキーをそのままコピーすると空白が入ってしまいました。 インテグレーションを実施してもDatadogでイベントが表示されない場合はAPIキーを再確認してみてください。

動作確認

まず、対象のEC2インスタンスにSSH接続し、以下のコマンドでDatadog agentをインストールします。

DD_AGENT_MAJOR_VERSION=7 DD_API_KEY=<your key> bash -c "$(curl -L https://raw.githubusercontent.com/DataDog/datadog-agent/master/cmd/agent/install_script.sh)"

※APIキーは自身のものに置き換えてください。

DatadogのDashboards、Dashboard listから対象のホストを選択します。

対象のダッシュボードに遷移したら、以下の操作を実施します。

  1. 左上のSearchをクリックし、表示されるテキストボックスにgremlinと入力し、エンター(関連イベントが表示されます)
  2. 右上のプルダウンから時間間隔を15min単位に変更(必須ではありませんが、攻撃の期間を見やすくするため)

前々回と同様にGremlinアプリにてCPU攻撃を実施してみます。

CPU usageが急激に上昇し、下降したことが確認できました。またイベントにGremlinの開始と終了が表示されました(表示されない場合はリロードを試してみてください)。

なお、薄く表示されているバー(矢印参照)をマウスオーバーすると、対応するイベントがハイライトされます。

これによって、このCPU usageの上昇がGremlinによるものであることが分かります。

おわりに

今回はGremlinをDatadogにインテグレーションしてみました。

前回のSlackインテグレーションと合わせると「通知と監視」の仕組みが出来上がるので、カオス実験を実施する土壌ができるのではないでしょうか。

また、今回は実施しませんでしたが、DatadogとのインテグレーションではアラートとWebhookを利用して、「進行中のすべての攻撃を停止させる」といったことも可能なようです。本番環境等で実施する際にこの仕組みは安心ですね。

Halting Attacks Using the Datadog Webhook

以上、何かのお役に立てれば幸いです。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.