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パッケージをインストールするのは、以下のコマンドを実行するだけで簡単です。これにより、すべての要件がチェックされます。すべてが整っている場合、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
インストールした後は、sysdigをルートとして実行する必要があります。なぜなら、/procファイルシステム、/dev/sysdig*デバイスなどの重要な領域へのアクセスが必要であり、sysdig-probeカーネルモジュールを自動でロードする必要があるためです(そうでない場合はsudoコマンドを使用してください)。
最も基本的な例は、引数なしで実行することです。これにより、Linuxシステムのイベントストリームがリアルタイムで更新されます。
$ sudo sysdig

上記の出力(生データ)はおそらくあなたにはあまり意味がないかもしれません。より有用な出力を得るには、csysdigを実行してください。
$ sudo csysdig

注意: このツールの実際の感触を得るには、実行中のLinuxシステムから前述のような生データを生成するsysdigを使用する必要があります。これには、フィルタやチゼルの使い方を理解する必要があります。
しかし、sysdigを簡単に使用する手段が必要な場合は、csysdigを続けてください。
Sysdigチゼルとフィルタの理解
Sysdigチゼルは、sysdigイベントストリームを調査し、有用なシステムトラブルシューティングアクションなどを実行するための最小限のLuaスクリプトです。以下のコマンドを使用して、利用可能なすべてのチゼルを表示できます:
$ sudo sysdig -cl
スクリーンショットには、異なるカテゴリーの鑿のサンプルリストが表示されています。

特定の鑿に関する詳細情報を知りたい場合は、-i
フラグを使用してください:
$ sudo sysdig -i topprocs_cpu

Sysdigフィルターは、イベントストリームから得られる出力の種類にさらなるパワーを加え、出力をカスタマイズすることができます。コマンドラインの最後にそれらを指定する必要があります。
A straightforward and commonest filter is a basic “class.field=value” check, you can also combine chisels with filters for even more powerful customizations.
利用可能なフィールドクラス、フィールド、およびその説明のリストを表示するには、次のように入力してください:
$ 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/Oを発見する
この簡単なコマンドを使用すると、遅いネットワークI/Oを検出できます:
$ 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ページを参照してください:
$ man sysdig $ man csysdig
また、これらの便利なLinuxパフォーマンスモニタリングツールもチェックしてください:
- BCC- Linuxパフォーマンスモニタリング、ネットワーキングなどのためのダイナミックトレーシングツール
- pyDash- WebベースのLinuxパフォーマンスモニタリングツール
- Perf – Linux用のパフォーマンスモニタリングおよび分析ツール
- Collectl: Linux向けの高度なオールインワンパフォーマンスモニタリングツール
- Netdata- Linuxシステム用のリアルタイムパフォーマンスモニタリングツール
Conclusion
Sysdigは、多数のコマンドラインツールからの機能を1つの優れたインターフェースにまとめ、Linuxシステムのイベントに深くアクセスし、データを収集して後で分析できるようにし、信じられないほどのコンテナサポートを提供します。
このツールに関する質問や意見がある場合は、以下のフィードバックフォームをご利用ください。
Source:
https://www.tecmint.com/sysdig-system-monitoring-and-troubleshooting-tool-for-linux/