前書き

Sysdigは、包括的なオープンソースシステムアクティビティの監視、キャプチャ、および分析アプリケーションです。 カスタマイズ可能な出力を備えた強力なフィルター言語と、_chisels_と呼ばれるhttps://www.lua.org/[Lua]スクリプトで拡張できるコア機能を備えています。

アプリケーションは、カーネルをタップすることで機能します。これにより、すべてのシステムコールとカーネルを通過するすべての情報を確認できます。 また、これにより、システムで実行されているアプリケーションコンテナによって生成されるシステムアクティビティとイベントを監視および分析するための優れたツールになります。

コアSysdigアプリケーションは、インストールされているサーバーを監視します。 ただし、プロジェクトの背後にある会社は、任意の数のサーバーをリモートで監視できるSysdig Cloudと呼ばれるホストバージョンを提供しています。

スタンドアロンアプリケーションはほとんどのLinuxディストリビューションで使用できますが、WindowsおよびmacOSでも機能が制限されています。 `+ sysdig `コマンドラインツールのほかに、Sysdigには同様のオプションを持つ ` csysdig +`と呼ばれる対話型UIが付属しています。

このチュートリアルでは、Sysdigをインストールして使用し、Ubuntu 16.04サーバーを監視します。 ライブイベントをストリーミングし、イベントをファイルに保存し、結果をフィルタリングし、 `+ csysdig +`インタラクティブUIを探索します。

前提条件

このチュートリアルを完了するには、次のものが必要です。

ステップ1 –公式スクリプトを使用してSysdigをインストールする

UbuntuリポジトリにはSysdigパッケージがありますが、通常は現在のバージョンから1〜2リビジョン遅れています。 たとえば、発行時点では、Ubuntuのパッケージマネージャーを使用してSysdigをインストールすると、Sysdig 0.8.0になります。 ただし、プロジェクトの開発ページから公式スクリプトを使用してインストールできます。これは、推奨されるインストール方法です。 これが使用する方法です。

ただし、最初にパッケージデータベースを更新して、使用可能なパッケージの最新のリストを確認します。

sudo apt-get update

次のコマンドを使用して、 `+ curl +`でSysdigのインストールスクリプトをダウンロードします。

curl https://s3.amazonaws.com/download.draios.com/stable/install-sysdig -o install-sysdig

これにより、インストールスクリプトがファイル `+ install-sysdig `から現在のフォルダーにダウンロードされます。 このスクリプトを昇格された特権で実行する必要があります。インターネットからダウンロードしたスクリプトを実行することは危険です。 スクリプトを実行する前に、テキストエディターで開くか、 ` less +`コマンドを使用して画面にコンテンツを表示することにより、コンテンツを監査します。

less ./install-sysdig

スクリプトが実行されるコマンドに慣れたら、次のコマンドでスクリプトを実行します。

cat ./install-sysdig | sudo bash

このコマンドは、カーネルヘッダーとモジュールを含むすべての依存関係をインストールします。 インストールの出力は次のようになります。

Output* Detecting operating system
* Installing Sysdig public key
OK
* Installing sysdig repository
* Installing kernel headers
* Installing sysdig

...

sysdig-probe:
Running module version sanity check.
- Original module
  - No original module exists within this kernel
- Installation
  - Installing to /lib/modules/4.4.0-59-generic/updates/dkms/

depmod....

DKMS: install completed.
Processing triggers for libc-bin (2.23-0ubuntu5) ...

Sysdigがインストールされたので、それを使用するいくつかの方法を見てみましょう。

ステップ2 –システムをリアルタイムで監視する

このセクションでは、 `+ sysdig `コマンドを使用して、Ubuntu 16.04サーバー上のイベントを調べます。 ` sysdig +`コマンドを実行するにはroot権限が必要であり、任意の数のオプションとフィルターが必要です。 コマンドを実行する最も簡単な方法は、引数なしです。 これにより、2秒ごとに更新されるシステムデータのリアルタイムビューが得られます。

sudo sysdig

ただし、コマンドを実行するとすぐにわかるように、画面に書き込まれているデータは継続的にストリーミングされ、サーバー上で多くのイベントが発生するため、データを分析することは困難です。 `+ CTRL + C `を押して ` sysdig +`を停止します。

いくつかのオプションを指定してコマンドを再度実行する前に、コマンドの出力例を見て、出力に慣れてみましょう。

Output253566 11:16:42.808339958 0 sshd (12392) > rt_sigprocmask
253567 11:16:42.808340777 0 sshd (12392) < rt_sigprocmask
253568 11:16:42.808341072 0 sshd (12392) > rt_sigprocmask
253569 11:16:42.808341377 0 sshd (12392) < rt_sigprocmask
253570 11:16:42.808342432 0 sshd (12392) > clock_gettime
253571 11:16:42.808343127 0 sshd (12392) < clock_gettime
253572 11:16:42.808344269 0 sshd (12392) > read fd=10(<f>/dev/ptmx) size=16384
253573 11:16:42.808346955 0 sshd (12392) < read res=2 data=..

出力の列は次のとおりです。

Output%evt.num %evt.outputtime %evt.cpu %proc.name (%thread.tid) %evt.dir %evt.type %evt.info

各列の意味は次のとおりです。

  • * evt.num *は増分イベント番号です。

  • * evt.outputtime *はイベントのタイムスタンプであり、カスタマイズできます。

  • * evt.cpu は、イベントがキャプチャされたCPU番号です。 上記の出力では、 evt.cpu 0 *であり、これはサーバーの最初のCPUです。

  • * proc.name *は、イベントを生成したプロセスの名前です。

  • * thread.tid *は、イベントを生成したTIDであり、シングルスレッドプロセスのPIDに対応します。

  • * evt.dir はイベントの方向です。 入力イベントには> 、終了イベントには <*が表示されます。

  • * evt.type *は、イベントの名前です。 「オープン」、「読み取り」、「書き込み」など

  • * evt.info *はイベント引数のリストです。 システムコールの場合、これらはシステムコール引数に対応する傾向がありますが、常にそうとは限りません。一部のシステムコール引数は、単純化またはパフォーマンス上の理由で除外されています。

前のコマンドで行ったように、「+ sysdig +」を実行することにはほとんど価値がありません。これは、大量の情報が流入しているためです。 ただし、次の構文を使用してコマンドにオプションとフィルターを適用できます。

sudo sysdig [option] [filter]

以下を使用して、使用可能なフィルターの完全なリストを表示できます。

sysdig -l

いくつかのクラスまたはカテゴリにまたがる広範なフィルタのリストがあります。 クラスの一部を次に示します。

  • * fd *:FD番号やFD名などのファイル記述子(FD)情報でフィルターします。

  • * process *:イベントを生成したプロセスのIDや名前などのプロセス情報でフィルターします。

  • * evt *:イベント番号や時間などのイベント情報でフィルターします。

  • * user *:ユーザーID、ユーザー名、ユーザーのホームディレクトリ、ログインシェルなどのユーザー情報をフィルターします。

  • * group *:グループIDや名前などのグループ情報でフィルターします。

  • * syslog *:ファシリティや重大度などのsyslog情報をフィルターします。

  • * fdlist *:ポーリングイベントのファイル記述子をフィルターします。

このチュートリアルのすべてのフィルターをカバーすることは実用的ではないため、特定の重大度レベルでsyslogに送信されたメッセージを表示できる* syslog クラスの syslog.severity.str *フィルターから始めましょう。 このコマンドは、「情報」レベルでsyslogに送信されたメッセージを表示します。

sudo sysdig syslog.severity.str=info

`+ CTRL + C +`を押してコマンドを強制終了します。

かなり簡単に解釈できるはずの出力は、次のようになります。

Output10716 03:15:37.111266382 0 sudo (26322) < sendto syslog sev=info msg=Jan 24 03:15:37 sudo: pam_unix(sudo:session): session opened for user root b
618099 03:15:57.643458223 0 sudo (26322) < sendto syslog sev=info msg=Jan 24 03:15:57 sudo: pam_unix(sudo:session): session closed for user root
627648 03:16:23.212054906 0 sudo (27039) < sendto syslog sev=info msg=Jan 24 03:16:23 sudo: pam_unix(sudo:session): session opened for user root b
629992 03:16:23.248012987 0 sudo (27039) < sendto syslog sev=info msg=Jan 24 03:16:23 sudo: pam_unix(sudo:session): session closed for user root
639224 03:17:01.614343568 0 cron (27042) < sendto syslog sev=info msg=Jan 24 03:17:01 CRON[27042]: pam_unix(cron:session): session opened for user
639530 03:17:01.615731821 0 cron (27043) < sendto syslog sev=info msg=Jan 24 03:17:01 CRON[27043]: (root) CMD (   cd / && run-parts --report /etc/
640031 03:17:01.619412864 0 cron (27042) < sendto syslog sev=info msg=Jan 24 03:17:01 CRON[27042]: pam_unix(cron:session): session closed for user

単一のプロセスでフィルタリングすることもできます。 たとえば、 `+ nano +`からイベントを探すには、次のコマンドを実行します:

sudo sysdig proc.name=nano

このコマンドは `+ nano `をファイラーするため、ファイルを開いて出力を表示するには、 ` nano `テキストエディターを使用する必要があります。 別のターミナルエディターを開き、サーバーに接続し、 ` nano +`を使用してテキストファイルを開きます。 数文字を書いて、ファイルを保存します。 その後、元の端末に戻ります。

次のような出力が表示されます。

Output21840 11:26:33.390634648 0 nano (27291) < mmap res=7F517150A000 vm_size=8884 vm_rss=436 vm_swap=0
21841 11:26:33.390654669 0 nano (27291) > close fd=3(<f>/lib/x86_64-linux-gnu/libc.so.6)
21842 11:26:33.390657136 0 nano (27291) < close res=0
21843 11:26:33.390682336 0 nano (27291) > access mode=0(F_OK)
21844 11:26:33.390690897 0 nano (27291) < access res=-2(ENOENT) name=/etc/ld.so.nohwcap
21845 11:26:33.390695494 0 nano (27291) > open
21846 11:26:33.390708360 0 nano (27291) < open fd=3(<f>/lib/x86_64-linux-gnu/libdl.so.2) name=/lib/x86_64-linux-gnu/libdl.so.2 flags=4097(O_RDONLY|O_CLOEXEC) mode=0
21847 11:26:33.390710510 0 nano (27291) > read fd=3(<f>/lib/x86_64-linux-gnu/libdl.so.2) size=832

再度、 `+ CTRL + C +`を入力してコマンドを強制終了します。

`+ sysdig +`を使用してシステムイベントのリアルタイムビューを取得することは、常にそれを使用する最良の方法ではありません。 幸いなことに、別の方法があります-後で分析するためにイベントをファイルにキャプチャします。 方法を見てみましょう。

ステップ3 – Sysdigを使用してシステムアクティビティをファイルにキャプチャする

`+ sysdig `を使用してシステムイベントをファイルにキャプチャすると、それらのイベントを後で分析できます。 システムイベントをファイルに保存するには、「 sysdig +」に* -w *オプションを渡し、次のようにターゲットファイル名を指定します。

sudo sysdig -w .scap

Sysdigは、 `+ CTRL + C +`を押すまで、生成されたイベントをターゲットファイルに保存し続けます。 時間とともに、そのファイルは非常に大きくなる可能性があります。 ただし、*-n *オプションを使用すると、Sysdigでキャプチャするイベントの数を指定できます。 目標数のイベントがキャプチャされると、終了します。 たとえば、300個のイベントをファイルに保存するには、次のように入力します。

sudo sysdig -n 300 -w .scap

Sysdigを使用して、指定した数のイベントをファイルにキャプチャできますが、*-C *オプションを使用してキャプチャを特定のサイズの小さなファイルに分割することをお勧めします。 また、ローカルストレージを圧倒しないように、Sysdigに保存されたファイルの一部のみを保持するように指示できます。 つまり、Sysdigは、1つのコマンドで、ファイルのローテーションを使用してイベントをログにキャプチャすることをサポートしています。

たとえば、サイズが1 MB以下のファイルにイベントを継続的に保存し、最後の5つのファイルのみを保持するには(これが* -W *オプションの機能です)、次のコマンドを実行します。

sudo sysdig -C 1 -W 5 -w .scap

`+ ls -l sysdig-trace * +`を使用してファイルを一覧表示すると、次のような出力が5つのログファイルと共に表示されます。

Output-rw-r--r-- 1 root root 985K Nov 23 04:13 sysdig-trace.scap0
-rw-r--r-- 1 root root 952K Nov 23 04:14 sysdig-trace.scap1
-rw-r--r-- 1 root root 985K Nov 23 04:13 sysdig-trace.scap2
-rw-r--r-- 1 root root 985K Nov 23 04:13 sysdig-trace.scap3
-rw-r--r-- 1 root root 985K Nov 23 04:13 sysdig-trace.scap4

リアルタイムキャプチャと同様に、保存されたイベントにフィルターを適用できます。 たとえば、プロセス「+ nano +」によって生成された200個のイベントを保存するには、次のコマンドを入力します。

sudo sysdig -n 200 -w .scap proc.name=nano

次に、サーバーに接続された別のターミナルで、 `+ nano `でファイルを開き、テキストを入力するかファイルを保存してイベントを生成します。 イベントは、「 sysdig 」が200個のイベントを記録するまで、「 sysdig-trace-nano.scap +」にキャプチャされます。

サーバーで生成されたすべての書き込みイベントをどのようにキャプチャしますか? 次のようにフィルターを適用します。

sudo sysdig -w .scap evt.type=write

しばらくしてから終了するには、 `+ CTRL + C +`を押します。

`+ sysdig +`を使用してシステムアクティビティをファイルに保存すると、さらに多くのことができるようになりますが、これらの例はその方法についてかなり良いアイデアを与えてくれるはずです。 これらのファイルを分析する方法を見てみましょう。

ステップ4 – Sysdigを使用したイベントデータの読み取りと分析

Sysdigを使用してファイルからキャプチャしたデータを読み取るには、次のように* -r *スイッチを `+ sysdig +`コマンドに渡すだけです。

sudo sysdig -r .scap

これは、ファイルのコンテンツ全体を画面にダンプします。これは、特にファイルが大きい場合、実際には最適なアプローチではありません。 幸いなことに、書き込み中に適用したファイルを読み取るときに同じフィルターを適用できます。

たとえば、作成した `+ sysdig-trace-nano.scap +`トレースファイルを読み取り、書き込みイベントなどの特定のタイプのイベントのみを表示するには、次のコマンドを入力します。

sysdig -r .scap evt.type=write

出力は次のようになります。

Output21340 13:32:14.577121096 0 nano (27590) < write res=1 data=.
21736 13:32:17.378737309 0 nano (27590) > write fd=1 size=23
21737 13:32:17.378748803 0 nano (27590) < write res=23 data=#This is a test file..#
21752 13:32:17.611797048 0 nano (27590) > write fd=1 size=24
21753 13:32:17.611808865 0 nano (27590) < write res=24 data= This is a test file..#
21768 13:32:17.992495582 0 nano (27590) > write fd=1 size=25
21769 13:32:17.992504622 0 nano (27590) < write res=25 data=TThis is a test file..# T
21848 13:32:18.338497906 0 nano (27590) > write fd=1 size=25
21849 13:32:18.338506469 0 nano (27590) < write res=25 data=hThis is a test file..[5G
21864 13:32:18.500692107 0 nano (27590) > write fd=1 size=25
21865 13:32:18.500714395 0 nano (27590) < write res=25 data=iThis is a test file..[6G
21880 13:32:18.529249448 0 nano (27590) > write fd=1 size=25
21881 13:32:18.529258664 0 nano (27590) < write res=25 data=sThis is a test file..[7G
21896 13:32:18.620305802 0 nano (27590) > write fd=1 size=25

前のセクションで保存したファイルの内容を見てみましょう: `+ sysdig-write-events.scap +`ファイル。 ファイルに保存されるすべてのイベントは書き込みイベントであることがわかっているため、コンテンツを表示してみましょう。

sudo sysdig -r  evt.type=write

これは部分的な出力です。 イベントをキャプチャしたときにサーバーでSSHアクティビティがあった場合、次のように表示されます。

Output42585 19:58:03.040970004 0 gmain (14818) < write res=8 data=........
42650 19:58:04.279052747 0 sshd (22863) > write fd=3(<4t>11.11.11.11:43566->22.22.22.22:ssh) size=28
42651 19:58:04.279128102 0 sshd (22863) < write res=28 data=.8c..jp...P........s.E<...s.
42780 19:58:06.046898181 0 sshd (12392) > write fd=3(<4t>11.11.11.11:51282->22.22.22.22:ssh) size=28
42781 19:58:06.046969936 0 sshd (12392) < write res=28 data=M~......V.....Z...\..o...N..
42974 19:58:09.338168745 0 sshd (22863) > write fd=3(<4t>11.11.11.11:43566->22.22.22.22:ssh) size=28
42975 19:58:09.338221272 0 sshd (22863) < write res=28 data=66..J.._s&U.UL8..A....U.qV.*
43104 19:58:11.101315981 0 sshd (12392) > write fd=3(<4t>11.11.11.11:51282->22.22.22.22:ssh) size=28
43105 19:58:11.101366417 0 sshd (12392) < write res=28 data=d).(...e....l..D.*_e...}..!e
43298 19:58:14.395655322 0 sshd (22863) > write fd=3(<4t>11.11.11.11:43566->22.22.22.22:ssh) size=28
43299 19:58:14.395701578 0 sshd (22863) < write res=28 data=.|.o....\...V...2.$_...{3.3|
43428 19:58:16.160703443 0 sshd (12392) > write fd=3(<4t>11.11.11.11:51282->22.22.22.22:ssh) size=28
43429 19:58:16.160788675 0 sshd (12392) < write res=28 data=..Hf.%.Y.,.s...q...=..(.1De.
43622 19:58:19.451623249 0 sshd (22863) > write fd=3(<4t>11.11.11.11:43566->22.22.22.22:ssh) size=28
43623 19:58:19.451689929 0 sshd (22863) < write res=28 data=.ZT^U.pN....Q.z.!.i-Kp.o.y..
43752 19:58:21.216882561 0 sshd (12392) > write fd=3(<4t>11.11.11.11:51282->22.22.22.22:ssh) size=28

上記の出力のすべての行に* 11.11.11.11:51282→ 22.22.22.22:ssh*が含まれていることに注意してください。 これらは、クライアントの外部IPアドレス「11.11.11.11」からサーバーのIPアドレス「22.22.22.22」に至るイベントです。 これらのイベントはサーバーへのSSH接続を介して発生したため、これらのイベントは予期されています。 しかし、この既知のクライアントIPアドレスからではない他のSSH書き込みイベントはありますか? 見つけるのは簡単です。

Sysdigで使用できる比較演算子は多数あります。 最初に見たのは* = です。 その他は!= > > = <*、および* ⇐ です。 次のコマンドでは、 fd.rip *はリモートIPアドレスでフィルタリングします。 *!= *比較演算子を使用して、 `+ 11.11.11.11 +`以外のIPアドレスからのイベントを検索します。

sysdig -r  fd.rip!=

クライアントIPアドレス以外のIPアドレスからの書き込みイベントがあったことを示した部分的な出力は、次の出力に示されています。

Output294479 21:47:47.812314954 0 sshd (28766) > read fd=3(<4t>33.33.33.33:49802->22.22.22.22:ssh) size=1
294480 21:47:47.812315804 0 sshd (28766) < read res=1 data=T
294481 21:47:47.812316247 0 sshd (28766) > read fd=3(<4t>33.33.33.33:49802->22.22.22.22:ssh) size=1
294482 21:47:47.812317094 0 sshd (28766) < read res=1 data=Y
294483 21:47:47.812317547 0 sshd (28766) > read fd=3(<4t>33.33.33.33:49802->22.22.22.22:ssh) size=1
294484 21:47:47.812318401 0 sshd (28766) < read res=1 data=.
294485 21:47:47.812318901 0 sshd (28766) > read fd=3(<4t>33.33.33.33:49802->22.22.22.22:ssh) size=1
294486 21:47:47.812320884 0 sshd (28766) < read res=1 data=.
294487 21:47:47.812349108 0 sshd (28766) > fcntl fd=3(<4t>33.33.33.33:49802->22.22.22.22:ssh) cmd=4(F_GETFL)
294488 21:47:47.812350355 0 sshd (28766) < fcntl res=2(<f>/dev/null)
294489 21:47:47.812351048 0 sshd (28766) > fcntl fd=3(<4t>33.33.33.33:49802->22.22.22.22:ssh) cmd=5(F_SETFL)
294490 21:47:47.812351918 0 sshd (28766) < fcntl res=0(<f>/dev/null)
294554 21:47:47.813383844 0 sshd (28767) > write fd=3(<4t>33.33.33.33:49802->22.22.22.22:ssh) size=976
294555 21:47:47.813395154 0 sshd (28767) < write res=976 data=........zt.....L.....}[email protected],ecdh-sha2-nistp256,ecdh-s
294691 21:47:48.039025654 0 sshd (28767) > read fd=3(<4t>221.229.172.117:49802->45.55.71.190:ssh) size=8192

さらなる調査はまた、不正なIPアドレス「33.33.33.33」が中国のマシンに属していることを示しました。 それは心配することです! これは、Sysdigを使用してサーバーに到達するトラフィックを注意深く監視する方法のほんの一例です。

追加のスクリプトを使用してイベントストリームを分析してみましょう。

手順5 –システムの監視と分析にSysdigノミを使用する

Sysdigの用語では、_chisels_は、Sysdigイベントストリームを分析して有用なアクションを実行するために使用できるLuaスクリプトです。 すべてのSysdigインストールに付属する50近くのスクリプトがあり、次のコマンドを使用して、システムで使用可能なノミのリストを表示できます。

sysdig -cl

より興味深いノミのいくつかは次のとおりです。

  • * netstat *:ネットワーク接続をリストします(オプションでフィルターします)。

  • * shellshock_detect *:https://en.wikipedia.org/wiki/Shellshock_(software_bug)[shellshock]攻撃を出力します

  • * spy_users *:インタラクティブなユーザーアクティビティを表示します。

  • * listloginshells *:ログインシェルIDを一覧表示します。

  • * spy_ip *:指定されたIPアドレスと交換されたデータを表示します。

  • * spy_port *:指定されたIPポート番号を使用して交換されたデータを表示します。

  • * spy_file *:任意のプロセスがすべてのファイルに対して行った読み取りまたは書き込みをエコーし​​ます。 オプションで、ファイルの名前を指定して、そのファイルへの読み取りまたは書き込みのみをインターセプトできます。

  • * httptop *:上位のHTTPリクエストを表示します

関連する引数を含むチゼルのより詳細な説明については、「-i +」フラグを使用し、その後にチゼルの名前を続けます。 したがって、たとえば、 ` netstat +`チゼルに関する詳細情報を表示するには、次のように入力します。

sysdig -i netstat

`+ netstat`チゼルの使用について知っておくべきことをすべて理解したので、次を実行してシステムを監視するためにその力を活用します。

sudo sysdig -c netstat

出力は次のようになります。

OutputProto Server Address           Client Address           State          TID/PID/Program Name
tcp   22.22.22.22:22           11.11.11.11:60422        ESTABLISHED    15567/15567/sshd
tcp   0.0.0.0:22               0.0.0.0:*                LISTEN         1613/1613/sshd
  • Client Address 列に自分以外のIPアドレスからの ESTABLISHED * SSH接続が表示されている場合、それは赤いフラグであるはずであり、さらに詳しく調べる必要があります。

はるかに興味深いノミは `+ spy_users +`です。これにより、システム上のインタラクティブなユーザーアクティビティを表示できます。

このコマンドを終了します。

sudo sysdig -c spy_users

次に、2番目のターミナルを開き、サーバーに接続します。 その2番目のターミナルでいくつかのコマンドを実行し、 `+ sysdig `を実行しているターミナルに戻ります。 最初の端末で入力したコマンドは、 ` sysdig -c spy_users +`コマンドを実行した端末にエコーされます。

次に、グラフィカルツールであるCsysdigを見てみましょう。

ステップ6 –システムの監視と分析にCsysdigを使用する

Csysdigは、Sysdigに付属するもう1つのユーティリティです。 コマンドラインで `+ sysdig `を使用できるのと同じ機能を提供するインタラクティブなユーザーインターフェイスがあります。 「 top 」、「 htop 」、「 strace +」のようですが、機能が豊富です。

`+ sysdig `コマンドと同様に、 ` csysdig `コマンドはライブモニタリングを実行し、後で分析するためにイベントをファイルにキャプチャできます。 しかし、 ` csysdig +`は、2秒ごとに更新されるシステムデータのより便利なリアルタイムビューを提供します。 その例を表示するには、次のコマンドを入力します。

sudo csysdig

これにより、次の図のようなインターフェイスが開き、監視対象ホスト上のすべてのユーザーとアプリケーションによって生成されたイベントデータが表示されます。

image:https://assets.digitalocean.com/articles/sysdig_ubuntu_1604/LEhCwvI.jpg [Csysdigのメインインターフェース]

インターフェイスの下部には、プログラムのさまざまな側面にアクセスするために使用できるいくつかのボタンがあります。 最も注目に値するのは* Views ボタンで、これは `+ csysdig +`によって収集されたメトリックのカテゴリに似ています。 * Processes *、 System Calls Threads Containers Processes CPU Page Faults Files 、および Directories *を含む、すぐに使用可能な29のビューがあります。

引数なしで + csysdig +`を起動すると、* Processes ビューからライブイベントが表示されます。 * Views *ボタンをクリックするか、 `+ F2 +`キーを押すと、列の説明を含む利用可能なビューのリストが表示されます。 また、 `+ F7 +`キーを押すか、 Legend ボタンをクリックして、列の説明を表示することもできます。 そして、アプリケーション自体の要約マニュアルページ( `+ csysdig +)には、 `+ F1 +`キーを押すか、 Help *ボタンをクリックしてアクセスできます。

次の画像は、アプリケーションの* Views *インターフェースのリストを示しています。

image:https://assets.digitalocean.com/articles/sysdig_ubuntu_1604/R7oHhHT.jpg [Csysdigビューウィンドウ]

オプションと引数なしで「+ csysdig 」を実行できますが、コマンドの構文は「 sysdig +」の場合と同様に、通常次の形式を取ります。

sudo csysdig [option]...  [filter]

最も一般的なオプションは* -d *で、更新間の遅延をミリ秒単位で変更するために使用されます。 たとえば、デフォルトの2秒ではなく、10秒ごとに更新される「+ csysdig +」の出力を表示するには、次のように入力します。

sudo csysdig -d 10000
  • -E *オプションを使用して、ビューからユーザーおよびグループ情報を除外できます。

sudo csysdig -E

これにより、 `+ csysdig +`の起動が速くなりますが、ほとんどの場合、速度の向上はごくわずかです。

特定の数のイベントの後にキャプチャを停止するように+ csysdig に指示するには、*-n *オプションを使用します。 アプリケーションは、その数に達すると終了します。 キャプチャされたイベントの数は、5つの数字である必要があります。そうしないと、 ` csysdig +` UIも表示されません。

sudo csysdig -n 100000

トレースファイルを分析するには、次のように* -r *オプションに `+ csysdig +`を渡します。

sudo csysdig -r .scap

`+ sysdig `で使用したのと同じフィルターを使用して、 ` csysdig `の出力を制限できます。 そのため、たとえば、システム上のすべてのユーザーが生成したイベントデータを表示するのではなく、次のコマンドで ` csysdig +`を起動することにより、ユーザーによる出力をフィルター処理できます。

sudo csysdig user.name=root

出力は、サーバーで実行されているものを反映しますが、次の画像に示すようになります。

image:https://assets.digitalocean.com/articles/sysdig_ubuntu_1604/CFsMTrH.jpg [ルートによって生成されたCsysdigデータ]

イベントを生成する実行可能ファイルの出力を表示するには、パスなしでバイナリの名前をフィルターに渡します。 次の例は、 `+ nano `コマンドによって生成されたすべてのイベントを表示します。 言い換えると、テキストエディターが ` nano +`であるすべての開いているファイルが表示されます。

sudo csysdig proc.name=nano

使用可能なフィルターは数十個あり、次のコマンドで表示できます。

sudo csysdig -l

これは、 `+ sysdig `コマンドで使用可能なフィルターを表示するために使用したのと同じオプションであることがわかります。 したがって、「 sysdig 」と「 csysdig 」はほぼ同じです。 主な違いは、 ` csysdig `にはマウスフレンドリーなインタラクティブUIが付属していることです。 いつでも「 csysdig 」を終了するには、キーボードの「 Q +」キーを押します。

結論

Sysdigは、サーバーの監視とトラブルシューティングに役立ちます。 これにより、アプリケーションコンテナによって生成されたものを含む、監視対象ホスト上のすべてのシステムアクティビティに関する深い洞察が得られます。 このチュートリアルでは特にコンテナについて説明しませんでしたが、コンテナによって生成されるシステムアクティビティを監視する機能は、Sysdigを同様のアプリケーションと区別するものです。 詳細については、プロジェクトのhttp://www.sysdig.org/ [ホームページ]をご覧ください。

Sysdigのノミは、Sysdigのコア機能の強力な拡張機能です。 これらはLuaで記述されているため、常にカスタマイズしたり、ゼロから記述したりできます。 ノミの作成の詳細については、プロジェクトのhttp://www.sysdig.org/wiki/writing-a-sysdig-chisel,-a-tutorial [公式チゼルページ]をご覧ください。