Sysdig - Linux 用の強力なシステム監視およびトラブルシューティング ツール
Sysdig は、オープンソース、クロスプラットフォーム、強力かつ柔軟な Linux 用のシステム監視およびトラブルシューティング ツールです。 Windows および Mac OSX でも動作しますが、機能は限られており、システム分析、検査、デバッグに使用できます。
通常、Linux の監視およびデバッグ タスクを実行するには、以下にリストされているツールを含む、さまざまな Linux パフォーマンス監視およびトラブルシューティング ツールを組み合わせて使用します。
- strace – システムコールとプロセスへのシグナルを検出します。
- tcpdump – 生のネットワーク トラフィックの監視。
- netstat – ネットワーク接続の監視。
- htop – リアルタイムのプロセス監視。
- iftop – リアルタイムのネットワーク帯域幅監視。
- lsof – どのファイルがどのプロセスによって開かれているかを表示します。
ただし、sysdig は、上記のすべてのツールやその他多くのツールが提供するものを 1 つのシンプルなプログラムに統合しており、さらに驚くべきコンテナーのサポートを備えています。これにより、Linux システムやコンテナーの実際の動作 (イベントのストリーム) をキャプチャ、保存、フィルターし、調査することができます。
コマンド ライン インターフェイスと強力な対話型 UI (csysdig) が付属しており、システム アクティビティをリアルタイムで監視したり、トレース ダンプを実行して後の分析のために保存したりできます。以下のビデオから csysdig がどのように機能するかを確認できます。
Sysdig の機能:
- 高速で安定しており、使いやすく、包括的に十分に文書化されています。
- Docker、LXCなどのコンテナテクノロジーのネイティブサポートが付属しています。
- Lua でスクリプト化可能です。は、キャプチャされたシステム イベントを処理するためのチゼル (軽量 Lua スクリプト) を提供します。
- 出力の便利なフィルタリングをサポートします。
- システムとアプリケーションのトレースをサポートします。
- Ansible、Puppet、Logstash と統合できます。
- サンプルの高度なログ分析を有効にします。
- また、倫理的ハッカー向けの Linux サーバー攻撃 (フォレンジック) 分析機能なども提供します。
この記事では、Linux システムに sysdig をインストールする方法と、システム分析、監視、トラブルシューティングの基本的な例とともに 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* などの重要な領域にアクセスする必要があるため、root として sysdig を実行する必要があります。 > デバイスであり、sysdig-probe カーネル モジュールを自動ロードする必要があります (そうでない場合に備えて)。それ以外の場合は、sudo コマンドを使用します。
最も基本的な例は、引数を指定せずに実行することです。これにより、リアルタイムで更新される Linux システムのイベント ストリームを表示できるようになります。
sudo sysdig
上記の出力 (生データ) はおそらくあまり意味がありません。より有用な出力を得るには、csysdig を実行します。
sudo csysdig
注: このツールの実際の感触を得るには、前に見たように実行中のデータから生データを生成するsysdig を使用する必要があります。 Linux システム: フィルターとチゼルの使用方法を理解する必要があります。
ただし、sysdig を使用する簡単な手段が必要な場合は、csysdig を続けてください。
Sysdig のチゼルとフィルターについて
Sysdig チゼルは、sysdig イベント ストリームを調べて、有用なシステム トラブルシューティング アクションなどを実行するための最小限の Lua スクリプトです。以下のコマンドは、利用可能なすべてのチゼルを表示するのに役立ちます。
sudo sysdig -cl
スクリーン ショットは、さまざまなカテゴリのノミのサンプル リストを示しています。
特定のチゼルに関する詳細情報を確認したい場合は、-i
フラグを使用します。
sudo sysdig -i topprocs_cpu
Sysdig フィルターは、イベント ストリームから取得できる出力の種類にさらなる機能を追加し、出力をカスタマイズできるようにします。これらはコマンドラインの最後に指定する必要があります。
簡単で最も一般的なフィルターは基本的な「class.field=value 」チェックです。チゼルとフィルターを組み合わせてさらに強力なカスタマイズを行うこともできます。
使用可能なフィールド クラス、フィールド、およびそれらの説明のリストを表示するには、次のように入力します。
sudo sysdig -l
Linux システム トレース ファイルの作成
後の分析のために 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
Linuxプロセスの監視
システム プロセスを一覧表示するには、次のように入力します。
sudo sysdig -c ps
CPU使用率によるプロセスの監視
CPU 使用率別に上位プロセスを監視するには、次のコマンドを実行します。
sudo sysdig -c topprocs_cpu
ネットワーク接続と I/O の監視
システムのネットワーク接続を表示するには、次を実行します。
sudo sysdig -c netstat
次のコマンドは、合計バイト数ごとに上位のネットワーク接続をリストするのに役立ちます。
sudo sysdig -c topconns
次に、次のようにネットワーク I/O ごとに上位のプロセスをリストすることもできます。
sudo sysdig -c topprocs_net
システムファイルI/Oの監視
システム上のプロセスによって読み書きされたデータを次のように出力できます。
sudo sysdig -c echo_fds
(読み取り + 書き込み) ディスク バイト別に上位プロセスを一覧表示するには、次を使用します。
sudo sysdig -c topprocs_file
Linux システムパフォーマンスのトラブルシューティング
システムのボトルネック (システム コールの遅さ) を監視するには、次のコマンドを実行します。
sudo sysdig -c bottlenecks
プロセスの実行時間を追跡する
プロセスの実行時間を追跡するには、次のコマンドを実行してトレースをファイルにダンプします。
sudo sysdig -w extime.scap -c proc_exec_time
次に、次のようにフィルターを使用して、特定のプロセス (この例ではpostgres) の詳細を絞り込みます。
sudo sysdig -r extime.scap proc.name=postgres
遅いネットワーク I/0 を検出する
この簡単なコマンドは、遅いネットワーク I/0 を検出するのに役立ちます。
sudo sysdig -c netlower
ログファイルエントリの監視
以下のコマンドは、syslog に書き込まれたすべてのメッセージを表示するのに役立ちます。特定のプロセスのログ エントリに興味がある場合は、前に示したようにトレース ダンプを作成し、それに応じてフィルタリングして除外します。
sudo sysdig -c spy_syslog
次のように、任意のプロセスによってログ ファイルに書き込まれたデータを出力できます。
sudo sysdig -c spy_logs
HTTPサーバーリクエストの監視
システム上で 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 パフォーマンス監視ツールも確認してください。
- BCC – Linux パフォーマンス監視、ネットワーキングなどのための動的トレース ツール
- pyDash – Web ベースの Linux パフォーマンス監視ツール
- Perf - Linux 用のパフォーマンス監視および分析ツール
- Collectl: Linux 用の高度なオールインワン パフォーマンス監視ツール
- Netdata – Linux システム用のリアルタイム パフォーマンス監視ツール
結論
Sysdig は、多数のコマンド ライン ツールの機能を 1 つの優れたインターフェイスにまとめているため、Linux システム イベントを深く掘り下げてデータを収集し、後の分析のために保存し、驚くべきコンテナ サポートを提供できます。
このツールについて質問したり、意見を共有したりするには、以下のフィードバック フォームを使用してください。