LoginSignup
1
0

More than 1 year has passed since last update.

GremlinでLinuxのCPUに簡単に負荷をかけてみよう

Last updated at Posted at 2021-12-27

はじめに

今、カオスエンジニアリングについてキャッチアップしていて、そのメモの一部です。まずはわかりやすいインフラ(Linux)からです。

カオスエンジニアリングとは実際に稼働している本番システムの一部に模擬障害を発生させて、自動復旧させる強いシステムを作り上げていく、障害発生に備える運用技術の手法です。

負荷試験でLinuxでCPUに負荷をかける場合は、 Linuxのターミナルで yes コマンドを使って、そして1回の実行では負荷が足りないので、yesコマンドを連打しますよね。

yes > /dev/null &
yes > /dev/null &
・
・・
・・・
yes > /dev/null &

この投稿は、 yes コマンドの代わりにカオスエンジニアリングツールのGremlinを使ってLinuxのCPUに負荷をかけてみたという話になります。
image.png

そして、負荷をかけた時の確認をこの投稿では htopで確認します。

前提

以下の2つを準備

Gremlinのアカウントの作成

  1. Gremlinのホームページにて、Free版でアカウントを作成
    URL : https://www.gremlin.com/

  2. Gremlinに作成したアカウントでログイン

  3. Team IDと Secret Keyの取得
    この後、UbuntuにGremlinのDaemonをインストールする際に使用します。画像の①、②、③の順番にクリックして Team IDSecret Keyをコピーして保存しておいてください。
    image.png

Gremlin クライアントとデーモンのインストール

(参考) Ubuntu上にインストール
https://www.gremlin.com/community/tutorials/how-to-install-and-use-gremlin-on-ubuntu-18-04/

手順

1 Gremlin リポジトリの追加

echo "deb https://deb.gremlin.com/ release non-free" | sudo tee /etc/apt/sources.list.d/gremlin.list

2 GPG keyのインポート

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 

3 Gremlinクライアントとデーモンのインストール

$ sudo apt-get update && sudo apt-get install -y gremlin gremlind

4 Gremlinの初期設定
gremlin initコマンドを実行して色設定を行います。
Team IDTeam Secretは Gremlinのアカウント作成した際にメモをとったTeam IDTeam Secretの値を入力します。

$ gremlin init
Metadata set for [ gremlin-client-version: 2.22.0 ]
Metadata set for [ os-type: Linux ]
Metadata set for [ os-name: Ubuntu ]
Metadata set for [ local-ip: IPアドレスが自動表示 ]
Metadata set for [ local-hostname: ホスト名が自動表示 ]
Please input your Team ID: "<チームIDを入力>
Please input your Team Secret: "<シークレットキーを入力>"

これで、Ubuntuに Gremlinのエージェントとデーモンのインストールが終了しました。

次は、Gremlinのポータル画面から、実際に Ubuntuに対して、CPUの負荷をかけて攻撃してみましょう。

Gremlinを使って UbuntuにCPUの負荷をかける実験をやってみる

  1. Ubuntuの負荷の状況を確認

    まず、下図は、実験をする前のUbuntuで htopコマンドを実行すると、下図の上部の 1から16までは、全て 0.0%で 無風の状態であることがわかります。
    image.png

  2. 下図のCreate Attackボタンをクリックして、攻撃を作成します。
    image.png

  3. まず、攻撃対象を設定します。
    image.png
    上図のWhat do you want to target で ①Infrastrucre、②Hostsを選択しホストの中から攻撃対象を選べるようにします。
    次に、Choose Hosts to targetをクリックし、今回は③local-hostでホスト名で対象を選択しました。

  4. 攻撃の種類を選択します。
    image.png
    上図のCategoryの中から今回は①Resourceと Atacksからは②CPUを選択しました。

  5. 次にCPUで攻撃するための期間やコア数などの詳細を設定します。
    image.png

    ここでは上図の①から③の設定を以下の様にし、1日間、仮想マシンのCPU14コアに対して、90%負荷をかけるシナリオをにしました。

    • Length : 攻撃する期間 (秒) ここでは1日 86,400秒を入力
    • CPU Capacity : 1コアあたりのCPUの使用率 ここでは90%を入力
    • Cores : 負荷をかける対象のコア数 ここでは14コアを入力
  6. これで、Ubuntuに攻撃をする準備が整いました。
    下図のUnleash Gremlinボタンをクリックして、Ubuntuへの攻撃を開始します。
    image.png

  7. Ubuntuへの攻撃が始まり、Gremlinのポータル画面では、CPU使用率のグラフが時系列順に表示される様になります。
    image.png

  8. Ubuntuのhtopの画面では、負荷が掛かっているのがわかります。
    image.png
    ポイントとして、

    • 赤枠①では、Gremlinのポータルで設定した14コアに約90%の負荷がかかっています。
    • 赤枠②では、gremlin attack cpu -l 86400 -c 14 -p 90と GremlinのClientを使って負荷をかけているのがわかります。

これは、下図のGremlinのアーキテクチャを確認すると Linuxに導入したGremlinのdaemonが図の右側のGremlinのコントロールプレーンにハートビートを受信して、攻撃できる状態なのか確認し、可能なら、clientから実際の攻撃を行っている仕組みになってます。
image.png

最後に

この投稿では、カオスエンジニアリングのツールの1つであるGremlinを使って、UbuntuのCPUを負荷をかける実験を行いました。

Gremlinは、Gremlinのアカウントと負荷をかける対象にClientとDaemonをインストールするだけで、CPU負荷をかけることができます。
CPU以外にも攻撃の種類は用意されているので、ぜひお試しください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0