Sysdig:それは何で、どのように使うか

Sysdigは、コンテナーをサポートするユニバーサルシステム可視化ツールです。 Sysdigが特別なのは、それ自体がマシンのカーネルにフックされ、コンテナーごとに情報が分離されることです。 このチュートリアルの範囲では、Sysdigのオープンソースバージョンに焦点を当てます。

次のセクションでは、次のことを行います。

  • Sysdigをインストールする
  • docker-composeを使用してWordpressインストールを起動する
  • Sysdigを使用してイベントを収集し、後で分析する
  • Sysdigを使用してリアルタイムでデータを分析する

前提条件

  • Dockerがシステムにインストールされています。 Dockerのインストールの詳細については、Dockerのインストールページを参照してください。
  • Docker Composeがシステムにインストールされています。 Docker Composeのインストール方法については、Install Docker Composeページを参照してください。
  • カーネルヘッダーはホストシステムにインストールされます。

Sysdigをインストールする

Dockerコンテナ内にSysdigをインストールするには、次の手順に従います。

  1. ターミナルウィンドウで、次のコマンドを実行してSysdig Dockerイメージをプルします。
Dockerプルsysdig / sysdig
デフォルトタグを使用:最新最新:sysdig / sysdigからプル2967486b0658:プル完了78101b780c72:プル完了7e78b657334d:プル完了650327159ca8:プル完了47ebf73ab754:プル完了bf51ac76a6d9:プル完了0cd11104dbf6:プル完了e6dcf17d00d5dfafdd9dfafddfdfdfdfdfdfdfdffdfdfdfdfd:dfdfdfdfdfd576dfdfdfdfd576d5d5576プルコンプリート6de86c8ed6e9:プルコンプリート8d1825f8be4b:プルコンプリートダイジェスト:sha256:bbfe6953fd2b3221a8974eb13024dd33c7e78aebef8fee3d7a0d9ecdeed84ce0ステータス:sysdig / sysdig:latestの新しいイメージをダウンロード

2.次のように入力して、コンテナでSysdigを実行します。

docker run -i -t --name sysdig --privileged -v /var/run/docker.sock:/host/var/run/docker.sock -v / dev:/ host / dev -v / proc:/ host / proc:ro -v / boot:/ host / boot:ro -v / lib / modules:/ host / lib / modules:ro -v / usr:/ host / usr:ro sysdig / sysdig
*ホストからの/ usr / srcリンクのセットアップ*存在する場合はsysdig-probeのアンロード* sysdigエラーのためのdkms installの実行! echoカーネル3.10.0-957.12.2.el7.x86_64のカーネルヘッダーが/lib/modules/3.10.0-957.12.2.el7.x86_64/buildまたは/lib/modules/3.10.0-957.12に見つかりません.2.el7.x86_64 / source。 * dkmsビルドの実行に失敗し、/ var / lib / dkms / sysdig / 0.26.4 / build / make.logが見つかりませんでした*システムsysdig-probeが存在する場合、それをロードしようとしています*プリコンパイルされた3.10のsysdig-probeを検索しよう.0-957.12.2.el7.x86_64カーネル構成が/host/boot/config-3.10.0-957.12.2.el7.x86_64で見つかりました* https://s3.amazonaws.com/downloadからプリコンパイル済みモジュールをダウンロードしようとしています.draios.com / stable / sysdig-probe-binaries / sysdig-probe-0.26.4-x86_64-3.10.0-957.12.2.el7.x86_64-82e2ae1fb159132636f7b50a762f20ef.koダウンロードに成功し、モジュールroot @ 7b14a23f22eb:/#をロードしました

上記のコマンドについて注意すべき点がいくつかあります。

  • -iフラグはSTDINを開いたままにします。
  • --privilegedパラメーターは、ホスト上のすべてのデバイスへのアクセスを提供します。 また、コンテナー内で実行されているプロセスが、ホストで実行されているプロセスと同じホストへのアクセスを許可するようにSELinuxを設定します。
  • -vフラグは、Sysdigがアクセスできる(ホスト上の)ファイルのリストを指定します。

Wordpressインストールをスピンアップする

このセクションでは、docker-composeコマンドを使用してWordpressをインストールします。

  1. 新しいターミナルウィンドウで、プロジェクトディレクトリに移動し、次のコマンドを入力します。
mkdir wordpress-sysdig && cd wordpress-sysdig

2.次の内容でdocker-composeというファイルを作成します。

バージョン: '3.3'サービス:db:イメージ:mysql:5.7ボリューム:-db_data:/ var / lib / mysql再起動:常に環境:MYSQL_ROOT_PASSWORD:somewordpress MYSQL_DATABASE:wordpress MYSQL_USER:wordpress MYSQL_PASSWORD:wordpress wordpress:depends_on:-db image: wordpress:最新のポート:-"8000:80"再起動:常に環境:WORDPRESS_DB_HOST:db:3306 WORDPRESS_DB_USER:wordpress WORDPRESS_DB_PASSWORD:wordpress WORDPRESS_DB_NAME:wordpressボリューム:db_data:{}

3.次のコマンドを使用して、切り離しモードでdocker-compose upコマンドを実行します。

docker-compose up -d
デフォルトのドライバーでネットワーク "wordpress-sysdig_default"を作成しますデフォルトのドライバーでボリューム "wordpress-sysdig_db_data"を作成しますwordpress(wordpress:latest)をプルしています...最新:ライブラリー/ワードプレスからプルしています8c04561117a4:プル完了d6b7434b63a2:プル完了83d8859e9744:プル完了9c3d824d0ad5:プル完了9e316fd5b3b3:プル完了578b40496c37:プル完了814ae7711d3c:プル完了4896fed78b:bプルプルを完了するecda5b7aad12:プルを完了する84256a6b6b44:プルを完了する35d4f385efb7:プルを完了するbf697c2ae701:プルを完了するd054b015f084:プルを完了するダイジェスト:sha256:73e8d8adf491c7a358ff94c74clatecを作成する... press_1 ...完了

4.次の方法でコンテナのステータスを確認できます。

ドッカーps

すべてが順調であれば、次のような出力が表示されます。

コンテナーIDイメージコマンド作成されたステータスポート名f390eec29f52 wordpress:latest "docker-entrypoint.s…"約1分前アップ約1分0.0.0.0:8000->80/tcp wordpress-sysdig_wordpress_1 a844840626d8 mysql:5.7 "docker-entrypoint。 s… "約1分前Up約1分3306 / tcp、33060 / tcp wordpress-sysdig_db_1 7b14a23f22eb sysdig / sysdig"/docker-entrypoint.… "13分前Up 13分sysdig

5.これでWordpressが起動して実行されます。 ブラウザでhttp:// localhost:8000にアクセスして、インストールウィザードを開始します。

6.インストールウィザードが完了したら、サンプルポストを作成してみましょう。

データをファイルに収集する

このセクションでは、Sysdigを使用してイベントを収集し、後で分析する方法を示します。

  1. キャプチャしたすべてのイベントをファイルにダンプするには、Sysdigコンテナーに移動し、次のコマンドを入力します。
sysdig -w monitoring-wordpress.scap

2.新しいターミナルウィンドウで、abを使用して10000リクエストを作成し、最大100のリクエストを同時に実行します。

ab -n 1000 -c 100 http:// localhost:8000 /?p = 7
これはApacheBench、バージョン2.3です<$ Revision:1430300 $> Copyright 1996 Adam Twiss、Zeus Technology Ltd、http://www.zeustech.net/ Licensed to the Apache Software Foundation、http://www.apache.org/ Benchmarking localhost(しばらくお待ちください)完了100リクエスト完了200リクエスト完了300リクエスト完了400リクエスト完了400リクエスト完了500リクエスト完了600リクエスト完了700リクエスト完了800リクエスト完了900リクエスト完了1000リクエスト完了1000リクエスト

上記の出力は簡潔にするために省略されていることに注意してください。

3.ツアーSysdigコンテナに戻り、「CTRL + C」を入力してデータのキャプチャを停止します。

データの分析

ここで、monitoring-wordpress.scapファイルのサイズを見ると、Sysdigが80M以上のデータをキャプチャしたことがわかります。

ls -lh monitoring-wordpress.scap
-rw-r--r--。 1ルートルート80M 1月7日16:28 monitoring-wordpress.scap

この大量のデータを調べるには、ノミと呼ばれるものを使用します。

ノミは基本的に、イベントストリームを分析して有用なアクションを実行するLuaスクリプトです。

次のコマンドを実行して、ノミのリストを表示できます。

sysdig -cl
カテゴリ:アプリケーション--------------------- httplog HTTPリクエストログhttptopトップHTTPリクエストmemcachelog memcachedリクエストログカテゴリ:CPU使用率---------- --------- spectrogram OSの待ち時間をリアルタイムで視覚化します。 subsecoffsetサブ秒のオフセット実行時間を視覚化します。 topcontainers_cpu CPU使用率別の上位コンテナーtopprocs_cpu CPU使用率別の上位プロセスカテゴリー:エラー---------------- topcontainers_errorエラー数別の上位コンテナーtopfiles_errorsエラー数別の上位ファイルtopprocs_errors番号別上位プロセスエラーの

上記の出力は簡潔にするために省略されていることに注意してください。

ノミに関する詳細情報を取得するには、次の例のように、sysdigコマンドの後に-iフラグとノミの名前を指定して実行します。

sysdig -i httptop
カテゴリ:アプリケーション--------------------- httptop上位HTTPリクエスト上位HTTPリクエストを表示:ncalls、時間、またはバイト引数:[string] by-上位HTTPトランザクションを表示作成者:ncalls、時間、またはtesで、デフォルトはncallsです。

例を続けると、httptopチゼルを使用して上位のHTTPリクエストを表示する方法は次のとおりです。

sysdig -r monitoring-wordpress.scap -c httptop
ncallsメソッドのURL ----------------------------------------------- --------------------------------- 2001 GET localhost:8000 /?p = 7 14オプション* 2 GET localhost: 8000 / favicon.ico 1 GET /wp-content/themes/twentytwenty/assets/fonts/inter/Inter-upright-var.woff2 1 GET localhost / v1.24 / containers / 6bd8418eb03f / json 1 GET localhost / v1.24 /コンテナ/ 06def7875617 / json 1 GET /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 GET /v1.24/images/db39680b63ac47a1d989da7b742f7b382af34d85a68214f8977bad59c058000 1 GET

-pcontainerフラグを使用すると、コンテナに適した形式で同じ情報を表示できます。

sysdig -r monitoring-wordpress.scap -c httptop -pcontainer
ncallsコンテナメソッドのURL ---------------------------------------------- ---------------------------------- 1000 wordpress-sysdig_wo GET localhost:8000 /?p = 7 1000ホストGET localhost:8000 /?p = 7 43 wordpress-sysdig_wo OPTIONS * 1 sysdig GET /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 sysdig GET localhost / v1.24 / containers / 06def7875617 / json 1 sysdig1.2 / syscon1.2 GET / sysdig1.2 / ers cd06093b141b / json 1 sysdig GET /v1.24/images/00e230fe24da9067f9b6e65cfbe9935a5affac1ae8e44edb6a5b0ccc26374d 1 sysdig GET /v1.24/images/db39680b63ac47a1d989da7b742f7b682c8977a85d59b142f8b12af8dd8da7b742f8b682fd8aafcdd8d3dd9a9d9a9d8d3d0d

より深く掘る

Sysdigは、コンテナーの内部動作に関する詳細な洞察を可能にするコンテンツが豊富な情報をキャプチャします。 いくつかのコンテナーを実行していて、どのプロセスが最もCPUを消費しているのかを知りたいとしましょう。

  1. イベントをキャプチャした期間中にアクティブだったコンテナをリストします。
sysdig -r monitoring-wordpress.scap -c lscontainers

2.次のようにして、CPUを最も多く消費したコンテナを特定できます。

sysdig -r monitoring-wordpress.scap -c topcontainers_cpu
CPU%container.name --------------------------------------------- ----------------------------------- 5.37%wordpress-sysdig_wordpress_1 1.35%wordpress-sysdig_db_1 0.84%ホスト0.51% sysdig

3. topprocs_cpuチゼルを使用すると、さらに深く掘り下げて最もCPUを集中的に使用するプロセスを特定できます。

sysdig -r monitoring-wordpress.scap -c topprocs_cpu container.nameにwordpress_1が含まれています
CPU%プロセスPID ---------------------------------------------- ---------------------------------- 0.12%apache2 8383 0.11%apache2 9413 0.11%apache2 9300 0.11%apache2 9242 0.11%apache2 8897 0.11%apache2 8422 0.10%apache2 9372 0.10%apache2 9241 0.10%apache2 8424 0.09%apache2 9429

詳細を確認したい場合、psチゼルはより冗長な代替手段を提供します。

sysdig -r monitoring-wordpress.scap -c ps container.name = wordpress-sysdig_wordpress_1
TID PID USER VIRT RES FDLIMIT CMD 5896 5896 root 232.82M 22.32M 429496729 apache2 8383 8383 www-data 307.44M 25.46M 429496729 apache2 8422 8422 www-data 235.44M 22.90M 429496729 apache2 8424 8424 www-data 307.44M 8897M 2946M46 8897 www-data 235.44M 22.89M 429496729 apache2 9154 9154 www-data 235.44M 22.91M 429496729 apache2 9241 9241 www-data 307.44M 25.66M 429496729 apache2 9242 9242 www-data 307.44M 25.67M 429496729 apache2 9300 9300 www-data 22.89M 429496729 apache2 9372 9372 www-data 235.44M 22.89M 429496729 apache2 9413 9413 www-data 233.44M 20.77M 429496729 apache2

役立つヒント

上記の例(sysdig -w monitoring-wordpress.scap)のようにSysdigを実行してイベントをキャプチャすると、使用可能なすべてのスペースを消費するまで、イベントファイルは継続的に大きくなります。 これを防ぐには、いくつかの方法があります。

  • -nフラグを渡して、Sysdigがキャプチャーするイベントの数を指定します。 Sysdigが指定された数のイベントをキャプチャすると、自動的に終了します。
sysdig -n 5000 -w monitoring-wordpress.scap
  • -Cフラグを使用してSysdigを構成し、キャプチャーを指定したサイズの小さなファイルに分割します。 次の例では、イベントを10 MB未満のファイルに継続的に保存しています。
sysdig -C 10 -w monitoring-wordpress.scap

これにより、10 MB以下の一連のファイルが作成されます。

ls -lh monitoring-wordpress *
-rw-r--r--。 1ルートルート9.6M 1月7日17:13 monitoring-wordpress.scap0 -rw-r--r--。 1ルートルート9.6M 1月7日17:14 monitoring-wordpress.scap1 -rw-r--r--。 1ルートルート9.6M 1月7日17:14 monitoring-wordpress.scap2 -rw-r--r--。 1ルートルート9.6M 1月7日17:14 monitoring-wordpress.scap3 -rw-r--r--。 1ルートルート9.6M 1月7日17:14 monitoring-wordpress.scap4 -rw-r--r--。 1ルートルート9.6M 1月7日17:14 monitoring-wordpress.scap5 -rw-r--r--。 1ルートルート9.6M 1月7日17:14 monitoring-wordpress.scap6 -rw-r--r--。 1ルートルート9.6M 1月7日17:14 monitoring-wordpress.scap7 -rw-r--r--。 1ルートルート6.4M 1月7日17:14 monitoring-wordpress.scap8
  • -Wフラグを使用して、Sysdigが保持するファイルの最大数を指定します。 たとえば、次のように-Cフラグと-Wフラグを組み合わせることができます。
sysdig -C 10 -W 4 -w monitoring-wordpress.scap

上記のコマンドは、最後の4つのキャプチャファイルのみを保持します。

ls -lh monitoring-wordpress *
-rw-r--r--。 1ルートルート7.2M 1月7日17:21 monitoring-wordpress.scap0 -rw-r--r--。 1ルートルート9.6M 1月7日17:21 monitoring-wordpress.scap1 -rw-r--r--。 1ルートルート9.6M 1月7日17:21 monitoring-wordpress.scap2 -rw-r--r--。 1ルートルート9.6M 1月7日17:21 monitoring-wordpress.scap3 root @ cd06093b141b:/#sysdig -C 10 -W 4 -w monitoring-wordpress.scap

リアルタイムモニタリング

Sysdigを使用すると、リアルタイムでデータを分析することもできます。 一見すると、デフォルトではすべてのイベントが継続的にコンソールに出力されるため、これは困難な作業のように見えます。 幸いにも、ノミが役立ちます。

例を見てみましょう。

コンテナごとにプロセスを分析する

  1. 次のコマンドを実行して、コンテナを一覧表示します。
ドッカーps
コンテナーIDイメージコマンド作成されたステータスポート名5b253e74e8e7 sysdig / sysdig "/docker-entrypoint.…" 9分前アップ9分sysdig 06def7875617 wordpress:latest "docker-entrypoint.s…" 3時間前アップ3時間0.0.0.0:8000 -> 80 / tcp wordpress-sysdig_wordpress_1 6bd8418eb03f mysql:5.7 "docker-entrypoint.s…" 3時間前アップ3時間3306 / tcp、33060 / tcp wordpress-sysdig_db_1

2.以下を使用して、WordPressコンテナーで実行されているプロセスを分析できます。

sysdig -pc -c topprocs_cpu container.name = wordpress-sysdig_wordpress_1

3.同様に、MySQLコンテナーで実行されているプロセスを分析できます。

sysdig -pc -c topprocs_cpu container.name = wordpress-sysdig_db_1

この例とあまり変わらないことに注意してください。Sysdigはネットワークトラフィック、ディスク使用量などを監視できます。

このチュートリアルでは、Sysdigを使用してコンテナによって生成されるアクティビティを明確に理解するための基本を学びました。 このブログ投稿の例は、始めるのに役立ちました。今後のチュートリアルでは、CsysdigおよびSysdig Inspectの使用方法を紹介します。