Collectl:Linux用の高度なオールインワンパフォーマンスモニタリングツール


Linuxシステム管理者の最も重要な義務は、管理しているシステムが非常に良好な状態にあることを確認することです。 Linuxシステム管理者が利用できるtopやhtopなどのシステムのプロセスを監視および表示するのに役立つツールはたくさんありますが、これらのツールはどれもcollectlと競合できません。

collectlは、現在のシステムステータスを説明するパフォーマンスデータを収集するために使用できる、非常に優れた機能豊富なコマンドラインユーティリティです。他のほとんどの監視ツールとは異なり、collectlは限られた数のシステムメトリックに焦点を合わせていません。代わりに、CPU、ディスク、メモリ、ネットワーク、ソケット、tcp、inode、infinibandなどのさまざまなタイプのシステムリソースに関する情報を収集できます。 lustre、memory、nfs、processes、quadrics、slabs、buddyinfo。

collectlを使用することの非常に良い点は、top、ps、 iotopなどの特定の目的のみで設計されたユーティリティの役割を果たすこともできることです。 collecltを便利なツールにするいくつかの機能は何ですか?

多くの調査を行った後、私は皆さんのためにcollectlコマンドラインユーティリティの最も重要な機能のいくつかを含むリストをまとめました。

  1. It can run interactively, as a daemon or both.
  2. It can display the output in many formats.
  3. It has the ability to monitor almost any subsystem.
  4. It can play the role of many other utilities such as ps, top, iotop, vmstat.
  5. It has the ability to record and playback the captured data.
  6. It can export the data in various file formats. (this is very useful when you want to analyse the data with external tools).
  7. It can run as a service to monitor remote machines or an entire server cluster.
  8. It can display the data in the terminal, write to a file or a socket.

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

collectlユーティリティはすべてのLinuxディストリビューションで実行され、実行する必要があるのはperlだけなので、collectlをマシンにインストールする前に、Perlがマシンにインストールされていることを確認してください。

次のコマンドを使用して、UbuntuなどのDebianベースのマシンにcollectlユーティリティをインストールできます。

$ sudo apt-get install collectl

Red Hatベースのディストリビューションを使用している場合は、yumコマンドを使用してリポジトリから簡単に取得できます。

# yum install collectl

collectlユーティリティのいくつかの実用的な例

collectlツールのインストールが完了すると、オプションがなくても、ターミナルから簡単に実行できます。次のコマンドは、CPU、ディスク、およびネットワークの統計情報を非常に短く、人間が読める形式で表示します。

# collectl

waiting for 1 second sample...
#
#cpu sys inter  ctxsw KBRead  Reads KBWrit Writes   KBIn  PktIn  KBOut  PktOut 
  13   5   790   1322      0      0     92      7      4     13      0       5 
  10   2   719   1186      0      0      0      0      3      9      0       4 
  12   0   753   1188      0      0     52      3      2      5      0       6 
  13   2   733   1063      0      0      0      0      1      1      0       1 
  25   2   834   1375      0      0      0      0      1      1      0       1 
  28   2   870   1424      0      0     36      7      1      1      0       1 
  19   3   949   2271      0      0     44      3      1      1      0       1 
  17   2   809   1384      0      0      0      0      1      6      0       6 
  16   2   732   1348      0      0      0      0      1      1      0       1 
  22   4   993   1615      0      0     56      3      1      2      0       3

ターミナル画面に表示される上記の出力からわかるように、コマンド出力に存在するシステムメトリック値は、1行に表示されるため、非常に簡単に操作できます。

collectlユーティリティをオプションなしで実行すると、次のサブシステムに関する情報が表示されます。

  1. cpu
  2. disks
  3. network

注:この場合、サブシステムは、測定可能なあらゆるタイプのシステムリソースです。

以下に示すように、コマンドを–allオプションと組み合わせて、スラブを除くすべてのサブシステムの統計を表示することもできます。

# collectl --all

waiting for 1 second sample...
#
#cpu sys inter  ctxsw Cpu0 Cpu1 Free Buff Cach Inac Slab  Map   Fragments KBRead  Reads KBWrit Writes   KBIn  PktIn  KBOut  PktOut   IP  Tcp  Udp Icmp  Tcp  Udp  Raw Frag Handle Inodes  Reads Writes Meta Comm 
  16   3   817   1542  430  390   1G 175M   1G 683M 193M   1G nsslkjjebbk      0      0     24      3      1      1      0       1    0    0    0    0  623    0    0    0   8160 240829      0      0    0    0 
  11   1   745   1324  316  426   1G 175M   1G 683M 193M   1G nsslkjjebbk      0      0      0      0      0      3      0       2    0    0    0    0  622    0    0    0   8160 240828      0      0    0    0 
  15   2   793   1683  371  424   1G 175M   1G 683M 193M   1G ssslkjjebbk      0      0      0      0      1      1      0       1    0    0    0    0  622    0    0    0   8160 240829      0      0    0    0 
  16   2   872   1875  427  446   1G 175M   1G 683M 193M   1G ssslkjjebbk      0      0     24      3      1      1      0       1    0    0    0    0  622    0    0    0   8160 240828      0      0    0    0 
  24   2   842   1383  473  368   1G 175M   1G 683M 193M   1G ssslkjjebbk      0      0    168      6      1      1      0       1    0    0    0    0  622    0    0    0   8160 240828      0      0    0    0 
  27   3   844   1099  478  365   1G 175M   1G 683M 193M   1G nsslkjjebbk      0      0      0      0      1      6      1       9    0    0    0    0  622    0    0    0   8160 240828      0      0    0    0 
  26   5   823   1238  396  428   1G 175M   1G 683M 193M   1G ssslkjjebbk      0      0      0      0      2     11      3       9    0    0    0    0  622    0    0    0   8160 240828      0      0    0    0 
  15   1   753   1276  361  391   1G 175M   1G 683M 193M   1G ssslkjjebbk      0      0     40      3      1      2      0       3    0    0    0    0  623    0    0    0   8160 240829      0      0    0    0

しかし、ユーティリティを使用してCPU使用率をどのように監視しますか? 「-s」オプションは、収集または再生するサブシステムデータを制御するために使用する必要があります。

たとえば、次のコマンドを使用して、CPU使用率の概要を監視できます。

# collectl -sc

waiting for 1 second sample...
#
#cpu sys inter  ctxsw 
  15   2   749   1155 
  16   3   772   1445 
  14   2   793   1247 
  27   4   887   1292 
  24   1   796   1258 
  16   1   743   1113 
  15   1   743   1179 
  14   1   706   1078 
  15   1   764   1268

コマンドを「scdn」と組み合わせるとどうなりますか?コマンドラインツールの使用方法を学ぶための最良の方法は、可能な限り練習することです。そのため、ターミナルで次のコマンドを実行して、何が起こるかを確認してください。

# collectl -scdn

waiting for 1 second sample...
#
#cpu sys inter  ctxsw KBRead  Reads KBWrit Writes   KBIn  PktIn  KBOut  PktOut 
  25   4   943   3333      0      0      0      0      1      1      0       2 
  27   3   825   2910      0      0      0      0      1      1      0       1 
  27   5   886   2531      0      0      0      0      0      0      0       1 
  20   4   872   2406      0      0      0      0      1      1      0       1 
  26   1   854   2091      0      0     20      2      1      1      0       1 
  39   4  1004   3398      0      0      0      0      2      8      3       6 
  41   6   955   2464      0      0     40      3      1      2      0       3 
  25   7   890   1609      0      0      0      0      1      1      0       1 
  16   2   814   1165      0      0    796     43      2      2      0       2 
  14   1   779   1383      0      0     48      6      1      1      0       1 
  11   2   795   1285      0      0      0      0      2     14      1      14

デフォルトのオプションは「cdn」であり、CPU、ディスク、ネットワークデータを表していることは簡単に理解できます。コマンドの結果は、「collectl-scn」の出力と同じです。

メモリに関するデータを収集する場合は、次のコマンドを使用します。

# collectl -sm

waiting for 1 second sample...
#
#Free Buff Cach Inac Slab  Map 
   1G 177M   1G 684M 193M   1G 
   1G 177M   1G 684M 193M   1G 
   1G 177M   1G 684M 193M   1G 
   1G 177M   1G 684M 193M   1G 
   1G 177M   1G 684M 193M   1G 
   1G 177M   1G 684M 193M   1G 
   1G 177M   1G 684M 193M   1G 
   1G 177M   1G 684M 193M   1G

上記の出力は、メモリ使用量、空きメモリ、およびシステムのパフォーマンスに関するその他の重要な情報に関する詳細情報を取得する場合に非常に役立ちます。

tcpに関するいくつかのデータはどうですか?次のコマンドを使用して実行します。

# collectl -st

waiting for 1 second sample...
#
#  IP  Tcp  Udp Icmp 
    0    0    0    0 
    0    0    0    0 
    0    0    0    0 
    0    0    0    0 
    0    0    0    0 
    0    0    0    0 
    0    0    0    0 
    0    0    0    0 
    0    0    0    0 
    0    0    0    0 
    0    0    0    0

ある程度の経験を積んだ後は、オプションを簡単に組み合わせて、必要な結果を得ることができます。たとえば、tcpの「t」とcpuの「c」を組み合わせることができます。次のコマンドはそれを行います。

# collectl -stc

waiting for 1 second sample...
#
#cpu sys inter  ctxsw   IP  Tcp  Udp Icmp 
  23   8   961   3136    0    0    0    0 
  24   5   916   3662    0    0    0    0 
  21   8   848   2408    0    0    0    0 
  30  10   916   2674    0    0    0    0 
  38   3   826   1752    0    0    0    0 
  31   3   820   1408    0    0    0    0 
  15   5   781   1335    0    0    0    0 
  17   3   802   1314    0    0    0    0 
  17   3   755   1218    0    0    0    0 
  14   2   788   1321    0    0    0    0

私たち人間が利用可能なすべてのオプションを覚えるのは難しいので、私はツールでサポートされているサブシステムの要約リストを投稿しています。

  1. b – buddy info (memory fragmentation)
  2. c – CPU
  3. d – Disk
  4. f – NFS V3 Data
  5. i – Inode and File System
  6. j – Interrupts
  7. l – Lustre
  8. m – Memory
  9. n – Networks
  10. s – Sockets
  11. t – TCP
  12. x – Interconnect
  13. y – Slabs (system object caches)

システム管理者またはLinuxユーザーにとって非常に重要なデータは、ディスク使用量で収集されたデータです。次のコマンドは、ディスク使用量を監視するのに役立ちます。

# collectl -sd

waiting for 1 second sample...
#
#KBRead  Reads KBWrit Writes 
      0      0      0      0 
      0      0      0      0 
      0      0     92      7 
      0      0      0      0 
      0      0     36      3 
      0      0      0      0 
      0      0      0      0 
      0      0    100      7 
      0      0      0      0

「-sD」オプションを使用して個々のディスク上のデータを収集することもできますが、ディスク全体の情報は報告されないことを知っておく必要があります。

# collectl -sD

waiting for 1 second sample...

# DISK STATISTICS (/sec)
#           Pct
#Name       KBytes Merged  IOs Size  KBytes Merged  IOs Size  RWSize  QLen  Wait SvcTim Util
sda              0      0    0    0      52     11    2   26      26     1     8      8    1
sda              0      0    0    0       0      0    0    0       0     0     0      0    0
sda              0      0    0    0      24      0    2   12      12     0     0      0    0
sda              0      0    0    0     152      0    4   38      38     0     0      0    0
sda              0      0    0    0     192     45    3   64      64     1    20     20    5
sda              0      0    0    0     204      0    2  102     102     0     0      0    0
sda              0      0    0    0       0      0    0    0       0     0     0      0    0
sda              0      0    0    0     116     26    3   39      38     1    16     16    4
sda              0      0    0    0       0      0    0    0       0     0     0      0    0
sda              0      0    0    0       0      0    0    0       0     0     0      0    0
sda              0      0    0    0      32      5    3   11      10     1    16     16    4
sda              0      0    0    0       0      0    0    0       0     0     0      0    0

他の詳細サブシステムを使用して、詳細データを収集することもできます。以下は、詳細サブシステムのリストです。

  1. C – CPU
  2. D – Disk
  3. E – Environmental data (fan, power, temp), via ipmitool
  4. F – NFS Data
  5. J – Interrupts
  6. L – Lustre OST detail OR client Filesystem detail
  7. N – Networks
  8. T – 65 TCP counters only available in plot format
  9. X – Interconnect
  10. Y – Slabs (system object caches)
  11. Z – Processes

collectlユーティリティには多くの利用可能なオプションがありますが、1つの記事だけでそれらすべてをカバーするのに十分な時間とスペースがありません。ただし、ユーティリティをtopおよびpsとして使用する方法について言及し、教えることは価値があります。

collectlをtopユーティリティとして機能させるのは非常に簡単です。ターミナルで次のコマンドを実行するだけで、Linuxシステムでtopツールを実行したときに同様の出力が表示されます。

# collectl --top

# TOP PROCESSES sorted by time (counters are /sec) 13:11:02
# PID  User     PR  PPID THRD S   VSZ   RSS CP  SysT  UsrT Pct  AccuTime  RKB  WKB MajF MinF Command
^COuch!tecmint  20     1   40 R    1G  626M  0  0.01  0.14  15  28:48.24    0    0    0  109 /usr/lib/firefox/firefox 
 3403  tecmint  20     1   40 R    1G  626M  1  0.00  0.20  20  28:48.44    0    0    0  600 /usr/lib/firefox/firefox 
 5851  tecmint  20  4666    0 R   17M   13M  0  0.02  0.06   8  00:01.28    0    0    0    0 /usr/bin/perl 
 1682  root     20  1666    2 R  211M   55M  1  0.02  0.01   3  03:10.24    0    0    0   95 /usr/bin/X 
 3454  tecmint  20  3403    8 S  216M   45M  1  0.01  0.02   3  01:23.32    0    0    0    0 /usr/lib/firefox/plugin-container 
 4658  tecmint  20  4657    3 S  207M   17M  1  0.00  0.02   2  00:08.23    0    0    0  142 gnome-terminal 
 2890  tecmint  20  2571    3 S  340M   68M  0  0.00  0.01   1  01:19.95    0    0    0    0 compiz 
 3521  tecmint  20     1   24 S  710M  148M  1  0.01  0.00   1  01:47.84    0    0    0    0 skype 
    1  root     20     0    0 S    3M    2M  0  0.00  0.00   0  00:02.57    0    0    0    0 /sbin/init 
    2  root     20     0    0 S     0     0  1  0.00  0.00   0  00:00.00    0    0    0    0 kthreadd 
    3  root     20     2    0 S     0     0  0  0.00  0.00   0  00:00.60    0    0    0    0 ksoftirqd/0 
    5  root      0     2    0 S     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 kworker/0:0H 
    7  root      0     2    0 S     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 kworker/u:0H 
    8  root     RT     2    0 S     0     0  0  0.00  0.00   0  00:04.42    0    0    0    0 migration/0 
    9  root     20     2    0 S     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 rcu_bh 
   10  root     20     2    0 R     0     0  0  0.00  0.00   0  00:02.22    0    0    0    0 rcu_sched 
   11  root     RT     2    0 S     0     0  0  0.00  0.00   0  00:00.05    0    0    0    0 watchdog/0 
   12  root     RT     2    0 S     0     0  1  0.00  0.00   0  00:00.07    0    0    0    0 watchdog/1 
   13  root     20     2    0 S     0     0  1  0.00  0.00   0  00:00.73    0    0    0    0 ksoftirqd/1 
   14  root     RT     2    0 S     0     0  1  0.00  0.00   0  00:01.96    0    0    0    0 migration/1 
   16  root      0     2    0 S     0     0  1  0.00  0.00   0  00:00.00    0    0    0    0 kworker/1:0H 
   17  root      0     2    0 S     0     0  1  0.00  0.00   0  00:00.00    0    0    0    0 cpuset

最後になりましたが、psツールとしてcollectlユーティリティを使用するには、ターミナルで次のコマンドを実行します。ターミナルで「ps」コマンドを実行するときと同じ方法で、システム内のプロセスに関する情報を取得します。

# collectl -c1 -sZ -i:1

waiting for 1 second sample...

### RECORD    1 >>> tecmint-vgn-z13gn <<< (1397979716.001) (Sun Apr 20 13:11:56 2014) ###

# PROCESS SUMMARY (counters are /sec)
# PID  User     PR  PPID THRD S   VSZ   RSS CP  SysT  UsrT Pct  AccuTime  RKB  WKB MajF MinF Command
    1  root     20     0    0 S    3M    2M  0  0.00  0.00   0  00:02.57    0    0    0    0 /sbin/init 
    2  root     20     0    0 S     0     0  1  0.00  0.00   0  00:00.00    0    0    0    0 kthreadd 
    3  root     20     2    0 S     0     0  0  0.00  0.00   0  00:00.60    0    0    0    0 ksoftirqd/0 
    5  root      0     2    0 S     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 kworker/0:0H 
    7  root      0     2    0 S     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 kworker/u:0H 
    8  root     RT     2    0 S     0     0  0  0.00  0.00   0  00:04.42    0    0    0    0 migration/0 
    9  root     20     2    0 S     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 rcu_bh 
   10  root     20     2    0 S     0     0  0  0.00  0.00   0  00:02.24    0    0    0    0 rcu_sched 
   11  root     RT     2    0 S     0     0  0  0.00  0.00   0  00:00.05    0    0    0    0 watchdog/0 
   12  root     RT     2    0 S     0     0  1  0.00  0.00   0  00:00.07    0    0    0    0 watchdog/1 
   13  root     20     2    0 S     0     0  1  0.00  0.00   0  00:00.73    0    0    0    0 ksoftirqd/1 
   14  root     RT     2    0 S     0     0  1  0.00  0.00   0  00:01.96    0    0    0    0 migration/1 
   16  root      0     2    0 S     0     0  1  0.00  0.00   0  00:00.00    0    0    0    0 kworker/1:0H 
   17  root      0     2    0 S     0     0  1  0.00  0.00   0  00:00.00    0    0    0    0 cpuset 
   18  root      0     2    0 S     0     0  1  0.00  0.00   0  00:00.00    0    0    0    0 khelper 
   19  root     20     2    0 S     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 kdevtmpfs 
   20  root      0     2    0 S     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 netns 
   21  root     20     2    0 S     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 bdi-default 
   22  root      0     2    0 S     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 kintegrityd

多くのLinuxシステム管理者がこのツールを気に入って、最大限に活用するとそのパワーを感じると確信しています。 collectlに関する知識を次のレベルに進めたい場合は、そのマニュアルページを参照して練習を続けてください。

ターミナルで次のコマンドを入力して、読み始めてください。

# man collectl

参照リンク

collectlホームページ