Linux用の強力なシステムモニタリングおよびトラブルシューティングツール

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

通常、Linuxの監視およびデバッグタスクを実行するために、以下にリストされているさまざまなLinuxパフォーマンスモニタリングおよびトラブルシューティングツールの組み合わせを使用します:

  1. strace – プロセスへのシステムコールとシグナルを発見します。
  2. tcpdump – 生のネットワークトラフィックを監視します。
  3. netstat – ネットワーク接続を監視します。
  4. htop – リアルタイムのプロセス監視です。
  5. iftop – リアルタイムのネットワーク帯域幅監視です。
  6. 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
Watch Linux System Events

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

$ sudo csysdig 
Monitor Linux System Events

注意: このツールの実際の感触を得るには、実行中のLinuxシステムから前述のような生データを生成するsysdigを使用する必要があります。これには、フィルタやチゼルの使い方を理解する必要があります。

しかし、sysdigを簡単に使用する手段が必要な場合は、csysdigを続けてください。

Sysdigチゼルとフィルタの理解

Sysdigチゼルは、sysdigイベントストリームを調査し、有用なシステムトラブルシューティングアクションなどを実行するための最小限のLuaスクリプトです。以下のコマンドを使用して、利用可能なすべてのチゼルを表示できます:

$ sudo sysdig -cl

スクリーンショットには、異なるカテゴリーの鑿のサンプルリストが表示されています。

View Sysdig Chisels

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

$ sudo sysdig -i topprocs_cpu
View Sysdig Chisel Info

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
View Sysdig Field Classes

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
Create MongoDB Trace File

Linuxプロセスの監視

システムプロセスのリストを表示するには、次のように入力してください:

$ sudo sysdig -c ps
Monitor Linux Processes

CPU使用率によるプロセスの監視

CPU使用率の高いトッププロセスを監視するには、次のコマンドを実行してください:

$ sudo sysdig -c topprocs_cpu
Monitor Processes by CPU Usage

ネットワーク接続とI/Oの監視

システムのネットワーク接続を表示するには、次のように入力してください:

$ sudo sysdig -c netstat
Monitor Network Connections

次のコマンドは、合計バイト数でトップネットワーク接続をリストするのに役立ちます:

$ sudo sysdig -c topconns

次に、次のようにしてネットワークI/Oによるトッププロセスもリストできます:

$ sudo sysdig -c topprocs_net    

システムファイルI/Oの監視

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

$ sudo sysdig -c echo_fds
Monitor System IO

(読み取り+書き込み)ディスクバイト数によるトッププロセスのリストを表示するには、以下を使用してください:

$ sudo sysdig -c topprocs_file   

Linuxシステムのパフォーマンスのトラブルシューティング

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

$ sudo sysdig -c bottlenecks
Troubleshoot Linux Performance

プロセスの実行時間を追跡する

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

$ sudo sysdig -w extime.scap -c proc_exec_time 
Track Process Execution 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] 
Monitor HTTP Requests

ログインシェルとインタラクティブなユーザーのアクティビティを表示する

以下のコマンドを使用すると、すべてのログインシェルIDを表示できます:

$ sudo sysdig -c list_login_shells

最後に、システムユーザーのインタラクティブなアクティビティを表示できます:

$ sudo sysdig -c spy_users
Monitor User Activity

より詳しい使用方法や例については、sysdigおよびcsysdigのmanページを参照してください:

$ man sysdig 
$ man csysdig

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

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

  1. BCC- Linuxパフォーマンスモニタリング、ネットワーキングなどのためのダイナミックトレーシングツール
  2. pyDash- WebベースのLinuxパフォーマンスモニタリングツール
  3. Perf – Linux用のパフォーマンスモニタリングおよび分析ツール
  4. Collectl: Linux向けの高度なオールインワンパフォーマンスモニタリングツール
  5. Netdata- Linuxシステム用のリアルタイムパフォーマンスモニタリングツール
Conclusion

Sysdigは、多数のコマンドラインツールからの機能を1つの優れたインターフェースにまとめ、Linuxシステムのイベントに深くアクセスし、データを収集して後で分析できるようにし、信じられないほどのコンテナサポートを提供します。

このツールに関する質問や意見がある場合は、以下のフィードバックフォームをご利用ください。

Source:
https://www.tecmint.com/sysdig-system-monitoring-and-troubleshooting-tool-for-linux/