SysdigでUbuntu16.04システムを監視する方法
序章
Sysdig は、包括的なオープンソースシステムのアクティビティ監視、キャプチャ、および分析アプリケーションです。 カスタマイズ可能な出力を備えた強力なフィルタリング言語と、chiselsと呼ばれるLuaスクリプトで拡張できるコア機能を備えています。
このアプリケーションは、カーネルを利用することで機能します。これにより、すべてのシステムコールと、カーネルを通過するすべての情報を確認できます。 これは、システム上で実行されているアプリケーションコンテナによって生成されたシステムアクティビティとイベントを監視および分析するための優れたツールにもなります。
コアSysdigアプリケーションは、インストールされているサーバーを監視します。 ただし、プロジェクトの背後にある会社は、任意の数のサーバーをリモートで監視できるSysdigCloudと呼ばれるホストバージョンを提供しています。
スタンドアロンアプリケーションは、ほとんどのLinuxディストリビューションで利用できますが、WindowsおよびmacOSでも、機能が制限された状態で利用できます。 以外に sysdig
コマンドラインツールであるSysdigには、 csysdig
同様のオプションで。
このチュートリアルでは、Sysdigをインストールして使用し、Ubuntu16.04サーバーを監視します。 ライブイベントをストリーミングし、イベントをファイルに保存し、結果をフィルタリングし、 csysdig
インタラクティブUI。
前提条件
このチュートリアルを完了するには、次のものが必要です。
- Ubuntu16.04初期サーバーセットアップガイドに従ってセットアップされた1つのUbuntu16.04サーバー。これには、sudo非rootユーザーとファイアウォールが含まれます。
ステップ1-公式スクリプトを使用したSysdigのインストール
UbuntuリポジトリにはSysdigパッケージがありますが、通常は現在のバージョンより1〜2リビジョン遅れています。 たとえば、公開時には、Ubuntuのパッケージマネージャーを使用してSysdigをインストールすると、Sysdig0.8.0が取得されます。 ただし、プロジェクトの開発ページから公式スクリプトを使用してインストールできます。これは、推奨されるインストール方法です。 これが私たちが使用する方法です。
ただし、最初に、パッケージデータベースを更新して、使用可能なパッケージの最新リストがあることを確認します。
- sudo apt-get update
次に、Sysdigのインストールスクリプトをダウンロードします。 curl
次のコマンドを使用します。
- 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
Ubuntu16.04サーバー上のいくつかのイベントを確認するコマンド。 The sysdig
コマンドを実行するにはroot権限が必要であり、任意の数のオプションとフィルターが必要です。 コマンドを実行する最も簡単な方法は、引数を使用しないことです。 これにより、2秒ごとに更新されるシステムデータのリアルタイムビューが提供されます。
- sudo sysdig
ただし、コマンドを実行するとすぐにわかるように、画面に書き込まれているデータは継続的にストリーミングされ、サーバーで多くのイベントが発生しているため、分析が難しい場合があります。 止まる sysdig
を押すことによって CTRL+C
.
いくつかのオプションを使用してコマンドを再度実行する前に、コマンドからの出力例を見て、出力に慣れましょう。
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 はイベントの名前です。例: ‘open’、’read’、’write’など。
- 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.severity.strフィルターから始めて、いくつか試してみましょう。これにより、送信されたメッセージを表示できます特定の重大度レベルでsyslogに接続します。 このコマンドは、syslogに送信されたメッセージを「情報」レベルで表示します。
- sudo sysdig syslog.severity.str=info
注:サーバーのアクティビティのレベルによっては、このコマンドを入力した後に出力が表示されない場合や、出力が表示されるまでに長い時間がかかる場合があります。 問題を強制するには、別のターミナルエミュレータを開き、syslogへのメッセージを生成するアクションを実行します。 たとえば、パッケージの更新を実行したり、システムをアップグレードしたり、任意のパッケージをインストールしたりします。
を押してコマンドを強制終了します 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 sysdig-trace-file.scap
Sysdigは、を押すまで、生成されたイベントをターゲットファイルに保存し続けます CTRL+C
. 時間の経過とともに、そのファイルは非常に大きくなる可能性があります。 ただし、 -n オプションを使用すると、Sysdigでキャプチャするイベントの数を指定できます。 目標数のイベントがキャプチャされると、イベントは終了します。 たとえば、300のイベントをファイルに保存するには、次のように入力します。
- sudo sysdig -n 300 -w sysdig-file.scap
Sysdigを使用して指定した数のイベントをファイルにキャプチャすることもできますが、 -C オプションを使用して、キャプチャを特定のサイズの小さなファイルに分割することをお勧めします。 また、ローカルストレージを圧倒しないように、保存されたファイルの一部のみを保持するようにSysdigに指示できます。 つまり、Sysdigは、1つのコマンドで、ファイルローテーションを使用したログへのイベントのキャプチャをサポートしています。
たとえば、サイズが1 MB以下のファイルにイベントを継続的に保存し、最後の5つのファイルのみを保持するには( -W オプションが行うことです)、次のコマンドを実行します。
- sudo sysdig -C 1 -W 5 -w sysdig-trace.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
リアルタイムキャプチャと同様に、保存されたイベントにフィルタを適用できます。 たとえば、プロセスによって生成された200のイベントを保存するには nano
、次のコマンドを入力します。
- sudo sysdig -n 200 -w sysdig-trace-nano.scap proc.name=nano
次に、サーバーに接続されている別の端末で、次のファイルを開きます。 nano
テキストを入力するかファイルを保存して、いくつかのイベントを生成します。 イベントはにキャプチャされます sysdig-trace-nano.scap
それまで sysdig
200のイベントを記録します。
サーバーで生成されたすべての書き込みイベントをキャプチャするにはどうすればよいですか? 次のようにフィルターを適用します。
- sudo sysdig -w sysdig-write-events.scap evt.type=write
プレス CTRL+C
しばらくして終了します。
を使用してシステムアクティビティをファイルに保存すると、さらに多くのことができます。 sysdig
、しかし、これらの例は、それをどのように実行するかについてかなり良いアイデアを与えてくれるはずです。 これらのファイルを分析する方法を見てみましょう。
ステップ4–Sysdigを使用したイベントデータの読み取りと分析
Sysdigを使用してファイルからキャプチャしたデータを読み取るのは、-rスイッチを sysdig
次のようなコマンド:
- sudo sysdig -r sysdig-trace-file.scap
これにより、ファイルのコンテンツ全体が画面にダンプされます。これは、特にファイルが大きい場合は、実際には最善の方法ではありません。 幸いなことに、書き込み中に適用したファイルを読み取るときに、同じフィルターを適用できます。
たとえば、 sysdig-trace-nano.scap
作成したトレースファイルですが、書き込みイベントなどの特定のタイプのイベントのみを確認するには、次のコマンドを入力します。
- sysdig -r sysdig-trace-nano.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 sysdig-write-events.scap 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アドレスをフィルタリングします。 != 比較演算子を使用して、IPアドレス以外のイベントを検索します。 11.11.11.11
:
- sysdig -r sysdig-write-events.scap fd.rip!=11.11.11.11
クライアント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 :shellshock攻撃を印刷します
- spy_users :インタラクティブなユーザーアクティビティを表示します。
- list_login_shells :ログインシェル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
クライアントアドレス列に自分以外の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
これにより、次の図のようなインターフェイスが開きます。このインターフェイスには、監視対象のホスト上のすべてのユーザーとアプリケーションによって生成されたイベントデータが表示されます。
インターフェイスの下部には、プログラムのさまざまな側面にアクセスするために使用できるいくつかのボタンがあります。 最も注目すべきは、ビューボタンです。これは、によって収集されたメトリックのカテゴリに似ています。 csysdig
. プロセス、システムコール、スレッド、コンテナ、
始めるとき csysdig
引数がない場合は、Processesビューからライブイベントが表示されます。 ビューボタンをクリックするか、 F2
キーを押すと、列の説明を含む、使用可能なビューのリストが表示されます。 を押して列の説明を表示することもできます F7
キーを押すか、凡例ボタンをクリックします。 そして、アプリケーション自体の要約マニュアルページ(csysdig
)を押すとアクセスできます F1
キーを押すか、ヘルプボタンをクリックします。
次の画像は、アプリケーションのViewsインターフェイスのリストを示しています。
注:すべてのボタンについて、ボタンの左側に対応するキーボードショートカットまたはホットキーがあります。 ショートカットキーを2回押すと、前のウィンドウに戻ります。 を押す ESC
キーは同じ結果を達成します。
あなたは走ることができますが csysdig
オプションと引数なしで、コマンドの構文 sysdig
の、通常は次の形式を取ります。
- sudo csysdig [option]... [filter]
最も一般的なオプションは-dで、これは更新間の遅延をミリ秒単位で変更するために使用されます。 たとえば、表示するには csysdig
出力は、デフォルトの2秒ではなく、10秒ごとに更新されます。次のように入力します。
- sudo csysdig -d 10000
-E オプションを使用すると、ビューからユーザーおよびグループ情報を除外できます。
- sudo csysdig -E
これは作ることができます csysdig
起動は速くなりますが、ほとんどの場合、速度の向上はごくわずかです。
指示します csysdig
特定の数のイベントの後でキャプチャを停止するには、-nオプションを使用します。 その数に達すると、アプリケーションは終了します。 キャプチャされたイベントの数は、5つの数字である必要があります。 そうしないと、 csysdig
UI:
- sudo csysdig -n 100000
トレースファイルを分析するには、 csysdig
-r オプションは、次のようになります。
- sudo csysdig -r sysdig-trace-file.scap
で使用したのと同じフィルターを使用できます sysdig
制限します csysdig
の出力。 したがって、たとえば、システム上のすべてのユーザーによって生成されたイベントデータを表示するのではなく、を起動してユーザーによる出力をフィルタリングできます。 csysdig
次のコマンドを使用して、rootユーザーによってのみ生成されたイベントデータを表示します。
- sudo csysdig user.name=root
出力はサーバーで実行されているものを反映しますが、出力は次の画像に示されているものと同様である必要があります。
イベントを生成する実行可能ファイルの出力を表示するには、パスを含まないバイナリの名前をフィルターに渡します。 次の例は、によって生成されたすべてのイベントを示しています nano
指図。 つまり、テキストエディタが存在するすべての開いているファイルが表示されます nano
:
- sudo csysdig proc.name=nano
使用可能なフィルターは数十あり、次のコマンドで表示できます。
- sudo csysdig -l
これは、で使用可能なフィルターを表示するために使用したものと同じオプションであることがわかります。 sysdig
指図。 そう sysdig
と csysdig
ほぼ同じです。 主な違いは csysdig
マウスに優しいインタラクティブUIが付属しています。 出る csysdig
いつでも、 Q
キーボードのキー。
結論
Sysdigは、サーバーの監視とトラブルシューティングに役立ちます。 これにより、アプリケーションコンテナーによって生成されたものを含め、監視対象ホスト上のすべてのシステムアクティビティに関する深い洞察が得られます。 このチュートリアルではコンテナについて具体的に説明していませんが、コンテナによって生成されたシステムアクティビティを監視する機能が、Sysdigを同様のアプリケーションと一線を画しています。 詳細については、プロジェクトのホームページを参照してください。
Sysdigのノミは、Sysdigのコア機能の強力な拡張機能です。 それらはLuaで書かれているので、いつでもカスタマイズしたり、最初から書いたりすることができます。 ノミの製作の詳細については、プロジェクトの公式チゼルページにアクセスしてください。