Sysdig - Linux用の強力なシステム監視およびトラブルシューティングツール


Sysdig は、Linux用のオープンソース、クロスプラットフォーム、強力で柔軟なシステム監視およびトラブルシューティングツールです。 WindowsやMac OSXでも動作しますが、機能は限られており、システムの分析、検査、デバッグに使用できます。

通常、Linuxの監視とデバッグのタスクを実行するには、次に示すようなさまざまなLinuxパフォーマンス監視ツールとトラブルシューティングツールを組み合わせて使用します。

  1. strace – discover system calls and signals to a process.
  2. tcpdump – raw network traffic monitoring.
  3. netstat – network connections monitoring.
  4. htop – real time process monitoring.
  5. iftop – real time network bandwidth monitoring.
  6. lsof – view which files are opened by which process.

しかし、 sysdig は、上記のすべてのツールをはじめとするさまざまな機能を1つのシンプルなプログラムで統合し、さらに優れたコンテナをサポートします。これにより、コンテナーだけでなく、Linuxシステムの実際の動作(イベントの流れ)をキャプチャー、保存、フィルタリング、および検査することができます。

コマンドラインインターフェースと強力なインタラクティブUI( csysdig )が付属しているので、システムアクティビティをリアルタイムで監視したり、トレースダンプを実行して後で分析することができます。あなたはcsysdigがどのように動くかを以下のビデオから見ることができます。

  • It is fast, stable and easy-to-use with comprehensively well documented.
  • Comes with native support for container technologies, including Docker, LXC.
  • It is scriptable in Lua; offers chisels (lightweight Lua scripts) for processing captured system events.
  • Supports useful filtering of output.
  • Supports system and application tracing.
  • It can be integrated with Ansible, Puppet and Logstash.
  • Enable sample advanced log analysis.
  • It also offers Linux server attack (forensics) analysis features for ethical hackers and lot’s more.

この記事では、Linuxシステムにsysdigをインストールし、それをシステム分析、監視、およびトラブルシューティングの基本例とともに使用する方法を説明します。

LinuxにSysdigをインストールする方法

sysdig パッケージのインストールは以下のコマンドを実行するのと同じくらい簡単です。すべてが整っていれば、Draios APT/YUMリポジトリからパッケージをダウンロードしてインストールします。

# curl -s https://s3.amazonaws.com/download.draios.com/stable/install-sysdig | bash 
OR
$ curl -s https://s3.amazonaws.com/download.draios.com/stable/install-sysdig | sudo bash

インストール後、/proc ファイルシステム、/dev/sysdig * sysdig を実行する必要があります>デバイスとsysdig-probeカーネルモジュールを自動ロードする必要があります(そうでない場合)。それ以外の場合は、sudoコマンドを使用してください。

最も基本的な例は引数なしでそれを実行することです、これはリアルタイムで更新されるイベントのあなたのLinuxシステムストリームを見ることを可能にするでしょう:

$ sudo sysdig

上記の出力(生データ)はおそらくあまり意味がありません、 csysdig を実行するとより便利な出力になります。

$ sudo csysdig 

しかし、 sysdig を使用するための簡単な方法が必要な場合は、 csysdig を続けてください。

Sysdigノミとフィルタについて

Sysdig彫刻刀は、sysdigイベントストリームを調べて便利なシステムトラブルシューティングの操作を実行するための最小限のLuaスクリプトです。以下のコマンドは、利用可能なすべての彫刻刀を表示するのに役立ちます。

$ sudo sysdig -cl

スクリーンショットは、さまざまなカテゴリの下にあるノミのサンプルリストを示しています。

特定の彫刻刀についてさらに知りたい場合は、 -i フラグを使用してください。

$ sudo sysdig -i topprocs_cpu

Sysdigフィルタを使用すると、イベントストリームから取得できる種類の出力がさらに強化され、出力をカスタマイズできます。コマンドラインの最後にそれらを指定する必要があります。

直接的で最も一般的なフィルタは、基本的な「 class.field = value 」のチェックです。チゼルとフィルタを組み合わせて、さらに強力なカスタマイズを行うこともできます。

利用可能なフィールドクラス、フィールドとその説明のリストを表示するには、次のように入力します。

$ sudo sysdig -l

後で分析するためにsysdig出力をファイルにダンプするには、このように -w フラグを使用します。

トレースダンプファイルは -r フラグを使って読むことができます。

$ sudo sysdig -r trace.scap

-s オプションは、各システムイベントについてキャプチャされるデータのバイト数を指定するために使用されます。この例では、 mongod プロセスのイベントをフィルタリングしています。

$ sudo sysdig -s 3000 -w trace.scap
$ sudo sysdig -r trace.scap proc.name=mongod

システムプロセスを一覧表示するには、次のように入力します。

$ sudo sysdig -c ps

CPU使用率で上位プロセスを監視するには、次のコマンドを実行します。

$ sudo sysdig -c topprocs_cpu

システムネットワーク接続を表示するには、次のコマンドを実行します。

$ sudo sysdig -c netstat

次のコマンドは、上位ネットワーク接続を合計バイト数で一覧表示するのに役立ちます。

$ sudo sysdig -c topconns

次に、次のようにネットワークI/O別に上位プロセスを一覧表示することもできます。

$ sudo sysdig -c topprocs_net    

以下のように、システム上のプロセスによって読み書きされたデータを出力できます。

$ sudo sysdig -c echo_fds

トップバイトのプロセスを(読み取り+書き込み)ディスクバイト数で一覧表示するには、次のようにします。

$ sudo sysdig -c topprocs_file   

システムのボトルネック(遅いシステムコール)を監視するには、次のコマンドを実行します。

$ sudo sysdig -c bottlenecks

プロセスの実行時間を追跡するには、このコマンドを実行してトレースをファイルにダンプします。

$ sudo sysdig -w extime.scap -c proc_exec_time 

次に、フィルタを使用して特定のプロセスの詳細(この例では postgres )を次のように絞り込みます。

$ sudo sysdig -r extime.scap proc.name=postgres

この簡単なコマンドは遅いネットワークI/0を検出するのに役立ちます。

$ sudo sysdig -c netlower     

以下のコマンドは、syslogに書き込まれたすべてのメッセージを表示するのに役立ちます。特定のプロセスのログエントリに関心がある場合は、前に示したようにトレースダンプを作成し、それに応じて除外します。

$ sudo sysdig -c spy_syslog      

次のように、任意のプロセスによってログファイルに書き込まれた任意のデータを印刷できます。

$ sudo sysdig -c spy_logs   

私たちのシステムでApacheやNginxのようなHTTPサーバーが動作している場合は、次のコマンドでサーバーのリクエストログを調べます。

$ sudo sysdig -c httplog    
$ sudo sysdig -c httptop   [Print Top HTTP Requests] 

以下のコマンドですべてのログインシェルIDを表示できます。

$ sudo sysdig -c list_login_shells

大事なことを言い忘れましたが、あなたは以下のようにシステムユーザーのインタラクティブな活動を示すことができます:

$ sudo sysdig -c spy_users

詳しい使用方法と例については、sysdigとcsysdigのマニュアルページを参照してください。

$ man sysdig 
$ man csysdig

参照:https://www.sysdig.org/

これらの便利なLinuxパフォーマンスモニタリングツールもチェックしてください。

  1. BCC – Dynamic Tracing Tools for Linux Performance Monitoring, Networking and More
  2. pyDash – A Web Based Linux Performance Monitoring Tool
  3. Perf- A Performance Monitoring and Analysis Tool for Linux
  4. Collectl: An Advanced All-in-One Performance Monitoring Tool for Linux
  5. Netdata – A Real-Time Performance Monitoring Tool for Linux Systems

Sysdigは多数のコマンドラインツールの機能を1つの注目すべきインターフェースにまとめているので、Linuxシステムのイベントを詳しく調べて後で分析するために保存でき、素晴らしいコンテナサポートを提供します。

このツールに関する質問や意見を共有するには、以下のフィードバックフォームを使用してください。