[Gremlinアップデート]環境で実行されているサービスを自動的に検出してくれるサービスディスカバリー機能が追加されました

2021.04.28

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

Gremlinにサービスを検出して実験のターゲットにできるというサービスディスカバリーが追加されました。

Services Discoveryは、環境で実行されているサービスを自動的に検出し、それらをカオス実験を実行するための新しいターゲットとして提示します。これで、サービスが実行されている各ホストを選択したり、複雑なタグ付けシステムを使用してホストにタグを付けたりすることなく、シングルクリックで分散サービスの実験を実行できます。

収集される情報や要件

エージェントがインストールされているLinuxマシンで,実行中のプロセスに関する情報を収集するとのことです。

  • プロセスID(PID)
  • 親プロセスID(PPID)
  • アクティブなUDPおよびTCPソケット(ipaddress:port)
  • 実行可能ファイルを処理するためのパス
  • 処理するコマンドライン引数

また、Gremlinのversionは 2.18.0以上 となります。

サービスは約1時間に1回照合されます。

サービスディスカバリーを有効にする

ドキュメントを参考にし、 Amazon Linux2の環境でアップデートしてみました。

コマンド例

# yum update gremlin gremlind
# gremlin version
gremlin version 2.18.0

version 2.18.0になったことを確認した後、

/etc/gremlin/config.yaml を開いて以下の設定を追加します。

※ デフォルトではサービスディスカバリーは無効となっています

collect_processes: true

その後、デーモンを再起動します。

# systemctl restart gremlind

注意点として、

エージェントでプロセス収集が構成された後、ホストおよびコンテナーベースのサービスがGremlinに表示されるまでに最大1時間かかる場合があります

とのことです。

Gremlinの管理画面で確認

Gremlinにログインし、左メニューにServicesというのが追加されているのでクリックします。

まだ反映されていないと以下のような画面になるはずです。

反映されると以下のような画面になります。

Gremlinエージェントが取得してきたサービスの一覧が表示されるようになります。

サービスの詳細画面では、

名前、説明、Dashboardsへのリンク、Runbooksへのリンク、このサービスを所有するユーザー(グレムリンチームの他のユーザーを選択できます) が表示されるようになり、

このサービスが起動しているTarget(Hostやコンテナ),サービスに対して行った攻撃が表示されるようになります。

Dashboardsへのリンクを追加すると、実験の影響が簡単に確認できるようになるかと思います。

Runbooksへのリンクも同様で、インシデント対応手順を簡単に確認できるようになりますね。

Attack Serviceというボタンを押せば、このサービスに対しての攻撃を作成できるようになります。

また、サービスを無視するといった設定も可能となっていました。

攻撃を作成する画面では、サービスを選択できるようにもなっています。

~~~~~~~~~~~~~~~~~

サービスディスカバリーが導入されたことにより、 サービスを検出する->攻撃を実行する->影響を確認する といったことができるようになるので サービス単位で管理し、障害の発見、回復力を高めていくといったアプローチがとりやすくなってくるのではないでしょうか。 マイクロサービスを導入していたりするとより効果が高いと思います。

参考