第21章 システムモニタリングツール
システムを設定するには、多くの場合システム管理者は空きメモリの容量、空きディスク領域、ハードディスクのパーティション設定状況、実行中のプロセスを決定する必要があります。
21.1. システムプロセスの表示
21.1.1. ps コマンドの使用
ps
コマンドは、実行中のプロセスについての情報を表示します。静的な一覧、すなわちコマンドを実行するときに実行しているプロセスのスナップショットです。実行中のプロセスを定期的に更新した一覧を表示させるには、top
コマンドまたは System Monitor アプリケーションを代わりに使用します。
他のユーザーが所有しているプロセスを含め、現在システム上で実行中の全プロセスを一覧表示するには、シェルプロンプトで以下を入力します。
ps
ax
一覧のプロセスごとに、ps ax
コマンドが、プロセス ID (PID
)、関連しているターミナル (TTY
)、現在のステータス (STAT
)、累積された CPU 時間 (TIME
) および実行可能ファイルの名前 (COMMAND
) を示します。以下に例を示します。
~]$ ps ax
PID TTY STAT TIME COMMAND
1 ? Ss 0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 23
2 ? S 0:00 [kthreadd]
3 ? S 0:00 [ksoftirqd/0]
5 ? S> 0:00 [kworker/0:0H]
[output truncated]
各プロセスと同時に所有者も表示するには、以下のコマンドを使用します。
ps
aux
ps ax
コマンドで提供される情報以外に、ps aux
はプロセス所有者の有効なユーザー名 (USER
)、CPU のパーセンテージ (%CPU
) およびメモリ使用率 (%MEM
)、キロバイト単位での仮想メモリサイズ (VSZ
)、キロバイト単位での非スワップの物理メモリサイズ (RSS
)、プロセスの開始日時を表示します。以下に例を示します。
~]$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.3 0.3 134776 6840 ? Ss 09:28 0:01 /usr/lib/systemd/systemd --switched-root --system --d
root 2 0.0 0.0 0 0 ? S 09:28 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 09:28 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S> 09:28 0:00 [kworker/0:0H]
[output truncated]
ps
コマンドを grep
と組み合わせて使用して、特定のプロセスが実行中かどうかを確認することもできます。たとえば、Emacs が実行中かどうかを知るには、以下を入力します。
~]$ ps ax | grep emacs 12056 pts/3 S+ 0:00 emacs 12060 pts/2 S+ 0:00 grep --color=auto emacs
利用可能なコマンドラインオプションの一覧は、ps(1) の man ページを参照してください。
21.1.2. top コマンドの使用
top
コマンドは、システムで実行しているプロセスのリアルタイムの一覧を表示します。また、システムのアップタイム、現在の CPU およびメモリ使用率、実行中のプロセスの合計数についての追加情報も表示します。さらには、一覧の並び替えやプロセスの kill などの操作も実行できます。
top
コマンドを実行するには、シェルプロンプトで以下を入力します。
top
一覧表示された各プロセスについて top
コマンドはプロセス ID (PID
)、プロセス所有者の実効ユーザー名、(USER
)、優先度 (PR
)、nice 値 (NI
)、プロセスが使用する仮想メモリー容量 (VIRT
)、プロセスが使用する非スワップ物理メモリー容量 (RES
)、プロセスが使用する共有メモリー容量 (SHR
)、プロセスステータスフィールド (S
)、CPU 使用率 (%CPU
) およびメモリー使用率 (%MEM
)、累積 CPU 時間 (TIME+
)、実行ファイル名 (COMMAND
) を表示します。以下に例を示します。
~]$ top top - 16:42:12 up 13 min, 2 users, load average: 0.67, 0.31, 0.19 Tasks: 165 total, 2 running, 163 sleeping, 0 stopped, 0 zombie %Cpu(s): 37.5 us, 3.0 sy, 0.0 ni, 59.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1016800 total, 77368 free, 728936 used, 210496 buff/cache KiB Swap: 839676 total, 776796 free, 62880 used. 122628 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3168 sjw 20 0 1454628 143240 15016 S 20.3 14.1 0:22.53 gnome-shell 4006 sjw 20 0 1367832 298876 27856 S 13.0 29.4 0:15.58 firefox 1683 root 20 0 242204 50464 4268 S 6.0 5.0 0:07.76 Xorg 4125 sjw 20 0 555148 19820 12644 S 1.3 1.9 0:00.48 gnome-terminal- 10 root 20 0 0 0 0 S 0.3 0.0 0:00.39 rcu_sched 3091 sjw 20 0 37000 1468 904 S 0.3 0.1 0:00.31 dbus-daemon 3096 sjw 20 0 129688 2164 1492 S 0.3 0.2 0:00.14 at-spi2-registr 3925 root 20 0 0 0 0 S 0.3 0.0 0:00.05 kworker/0:0 1 root 20 0 126568 3884 1052 S 0.0 0.4 0:01.61 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0 6 root 20 0 0 0 0 S 0.0 0.0 0:00.07 kworker/u2:0 [output truncated]
表21.1「インタラクティブな top コマンド」 には、top
で使用できる便利な対話型のコマンドが含まれています。詳細は、top(1) の man ページを参照してください。
表21.1 インタラクティブな top コマンド
コマンド | 詳細 |
---|---|
Enter、Space | 表示を最新の情報に直ちに更新します。 |
h | インタラクティブコマンドのヘルプ画面を表示します。 |
h, ? | ウィンドウおよびフィールドグループのヘルプ画面を表示します。 |
k | プロセスを強制終了します。プロセス ID およびプロセスに送信するシグナルがプロンプトされます。 |
-n | 表示されるプロセス番号を変更します。番号を入力するようプロンプトされます。 |
u | 一覧をユーザー別に並べ替えます。 |
M | 一覧をメモリ使用率で並べ替えます。 |
%P | 一覧を CPU 使用率で並べ替えます。 |
q | ユーティリティーを終了して、シェルプロンプトに戻ります。 |
21.1.3. システムモニターツールの使用
System Monitor ツールの Processes
タブを使用することで、グラフィカルユーザーインターフェースからプロセスの表示、検索、優先度の変更、kill を行うことができます。
コマンドラインから System Monitor ツールを起動するには、シェルプロンプトで gnome-system-monitor
と入力します。この結果、System Monitor ツールが表示されます。また、GNOME デスクトップで Super キーを押してアクティビティーの概要を入力する場合は、System Monitor
と入力し、Enter を押します。この結果、System Monitor ツールが表示されます。Super キーはキーボードまたはその他のハードウェアに応じて様々なキーで表示されますが、多くの場合、Windows または Command キーとして通常は Spacebar の左側に表示されます。
Processes
タブをクリックして実行中プロセスの一覧を表示します。
図21.1 システムモニター — プロセス

一覧のプロセスごとに、System Monitor ツールは 名前 (Process Name
)、現在のステータス (Status
)、CPU 使用率のパーセンテージ (% CPU
)、nice 値 (Nice
)、プロセス ID (ID
)、メモリー使用量 (Memory
)、プロセスが待機中のチャネル (Waiting Channel
)、およびセッション (Session
) に関する追加情報を示します。特定の列で昇順で情報を並べ替えるには、その列の名前をクリックします。特定のコラム別に情報を昇順で並び替えるには、コラム名をクリックします。
デフォルトでは、System Monitor ツールは現在のユーザーが所有しているプロセスの一覧を表示します。表示メニューから各種オプションを選択すると、以下を実行できます。
- 実行中のプロセスのみの表示
- すべてのプロセスの表示
- ユーザーのプロセスの表示
- プロセスの依存関係の表示
また、2 つのボタンを使用して以下のことを行えます。
- プロセスの一覧を更新する
- 一覧からプロセスを選択し、 ボタンをクリックすることによりプロセスを終了する
21.2. メモリ使用量の表示
21.2.1. free コマンドの使用
free
コマンドは、システムのメモリの空き容量と使用量を表示します。シェルプロンプトで以下を入力してください。
free
free
コマンドは、物理メモリー (Mem
) およびスワップ領域 (Swap
) に関する情報を提供します。メモリーの合計量 (total
) だけでなく、使用メモリー容量 (used
)、空きメモリー容量 (free
)、共有メモリー容量 (shared
)、バッファーおよびキャッシュメモリー容量の合計 (buff/cache
)、利用可能なメモリー容量 (available
) を表示します。以下に例を示します。
~]$ free
total used free shared buff/cache available
Mem: 1016800 727300 84684 3500 204816 124068
Swap: 839676 66920 772756
デフォルトでは、free
は値をキロバイトで表示します。メガバイトで値を表示するには、-m
コマンドラインオプションを指定します。
free
-m
たとえば、以下のようになります。
~]$ free -m
total used free shared buff/cache available
Mem: 992 711 81 3 200 120
Swap: 819 65 754
利用可能なコマンドラインオプションの一覧は、free(1) の man ページを参照してください。
21.2.2. システムモニターツールの使用
System Monitor ツールの Resources
タブは、システムのメモリの空き容量と使用量を表示します。
コマンドラインから System Monitor ツールを起動するには、シェルプロンプトで gnome-system-monitor
と入力します。この結果、System Monitor ツールが表示されます。また、GNOME デスクトップで Super キーを押してアクティビティーの概要を入力する場合は、System Monitor
と入力し、Enter を押します。この結果、System Monitor ツールが表示されます。Super キーはキーボードまたはその他のハードウェアに応じて様々なキーで表示されますが、多くの場合、Windows または Command キーとして通常は Spacebar の左側に表示されます。
Resources
タブをクリックしてシステムのメモリー使用率を表示します。
図21.2 システムモニター — リソース

Memory and Swap History
セクションでは、System Monitor ツールがメモリーとスワップの使用量履歴をグラフィック表示します。また、物理メモリー (Memory
) およびスワップ領域 (Swap
) の合計量および使用中の量が表示されます。
21.3. CPU 使用率の表示
21.3.1. システムモニターツールの使用
System Monitor ツールの Resources
タブは、システムの現在の CPU 使用率を表示します。
コマンドラインから System Monitor ツールを起動するには、シェルプロンプトで gnome-system-monitor
と入力します。この結果、System Monitor ツールが表示されます。また、GNOME デスクトップで Super キーを押してアクティビティーの概要を入力する場合は、System Monitor
と入力し、Enter を押します。この結果、System Monitor ツールが表示されます。Super キーはキーボードまたはその他のハードウェアに応じて様々なキーで表示されますが、多くの場合、Windows または Command キーとして通常は Spacebar の左側に表示されます。
Resources
タブをクリックし、システムの CPU 使用率を表示します。
CPU History
セクションで、System Monitor ツールは、CPU 使用率履歴をグラフィックで表し、現在使用中の CPU 容量のパーセンテージを表示します。
21.4. ブロックデバイスとファイルシステムの表示
21.4.1. lsblk コマンドの使用
lsblk
コマンドを使用すると、利用可能なブロックデバイスの一覧を表示できます。blkid
コマンドよりも詳細な情報が提供され、出力フォーマットを細かく制御できるようになります。udev から情報を読み取るため、root
以外のユーザーも使用できます。ブロックデバイスの一覧を表示するには、シェルプロンプトで以下のコマンドを入力します。
lsblk
一覧表示された各ブロックデバイスについて lsblk
コマンドが表示するのは次のとおりです。デバイス名 (NAME
)、メジャーデバイス番号 (MAJ:MIN
) およびマイナーデバイス番号 (RM
) を表示します。デバイスが読み取り専用 (SIZE
) の場合は、そのサイズ (RO
)、そのタイプ (TYPE
)、デバイスがマウントされている場所 (MOUNTPOINT
) が表示されます。以下に例を示します。
~]$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 1024M 0 rom vda 252:0 0 20G 0 rom |-vda1 252:1 0 500M 0 part /boot `-vda2 252:2 0 19.5G 0 part |-vg_kvm-lv_root (dm-0) 253:0 0 18G 0 lvm / `-vg_kvm-lv_swap (dm-1) 253:1 0 1.5G 0 lvm [SWAP]
デフォルトでは、lsblk
はツリーのような形式でブロックデバイスを一覧表示します。情報を通常のリストとして表示するには、-l
コマンドラインオプションを追加します。
lsblk
-l
たとえば、以下のようになります。
~]$ lsblk -l NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 1024M 0 rom vda 252:0 0 20G 0 rom vda1 252:1 0 500M 0 part /boot vda2 252:2 0 19.5G 0 part vg_kvm-lv_root (dm-0) 253:0 0 18G 0 lvm / vg_kvm-lv_swap (dm-1) 253:1 0 1.5G 0 lvm [SWAP]
利用可能なコマンドラインオプションの一覧は、lsblk(8) の man ページを参照してください。
21.4.2. blkid コマンドの使用
blkid
コマンドを使用すると、利用可能なブロックデバイスに関する低レベルの情報を表示できます。root
特権が必要なため、root
ユーザー以外では lsblk
コマンドを使用する必要があります。これを行うには、root
でシェルプロンプトで以下を入力してください。
blkid
一覧表示された各ブロックデバイスについて blkid
コマンドは、汎用一意識別子 (UUID
)、ファイルシステムのタイプ (TYPE
)、ボリュームラベル (LABEL
) などの属性を表示します。以下に例を示します。
~]# blkid /dev/vda1: UUID="7fa9c421-0054-4555-b0ca-b470a97a3d84" TYPE="ext4" /dev/vda2: UUID="7IvYzk-TnnK-oPjf-ipdD-cofz-DXaJ-gPdgBW" TYPE="LVM2_member" /dev/mapper/vg_kvm-lv_root: UUID="a07b967c-71a0-4925-ab02-aebcad2ae824" TYPE="ext4" /dev/mapper/vg_kvm-lv_swap: UUID="d7ef54ca-9c41-4de4-ac1b-4193b0c1ddb6" TYPE="swap"
デフォルトでは、blkid
コマンドはすべての利用可能なブロックデバイスを一覧表示します。特定のデバイスの情報のみを表示するには、コマンドラインでデバイス名を指定します。
blkid device_name
たとえば、/dev/vda1
に関する情報を表示するには、root
で以下のように入力します。
~]# blkid /dev/vda1 /dev/vda1: UUID="7fa9c421-0054-4555-b0ca-b470a97a3d84" TYPE="ext4"
また、上記のコマンドを -o udev
および -p
のコマンドラインオプションと共に使用して、詳細情報を取得することもできます。このコマンドを実行するには、root
権限が必要な点に注意してください。
blkid -po udev device_name
以下に例を示します。
~]# blkid -po udev /dev/vda1 ID_FS_UUID=7fa9c421-0054-4555-b0ca-b470a97a3d84 ID_FS_UUID_ENC=7fa9c421-0054-4555-b0ca-b470a97a3d84 ID_FS_VERSION=1.0 ID_FS_TYPE=ext4 ID_FS_USAGE=filesystem
利用可能なコマンドラインオプションの一覧は、blkid(8) の man ページを参照してください。
21.4.3. findmnt コマンドの使用
findmnt
コマンドは、現在マウントされているファイルシステムの一覧を表示します。シェルプロンプトで以下を入力してください。
findmnt
一覧表示された各ファイルシステムについて findmnt
コマンドが表示するのは、次のとおりです。ターゲットマウントポイント (TARGET
)、ソースデバイス (SOURCE
)、ファイルシステムタイプ (FSTYPE
)、および関連するマウントオプション (OPTIONS
)。以下に例を示します。
~]$ findmnt TARGET SOURCE FSTYPE OPTIONS / /dev/mapper/rhel-root xfs rw,relatime,seclabel,attr2,inode64,noquota ├─/proc proc proc rw,nosuid,nodev,noexec,relatime │ ├─/proc/sys/fs/binfmt_misc systemd-1 autofs rw,relatime,fd=32,pgrp=1,timeout=300,minproto=5,maxproto=5,direct │ └─/proc/fs/nfsd sunrpc nfsd rw,relatime ├─/sys sysfs sysfs rw,nosuid,nodev,noexec,relatime,seclabel │ ├─/sys/kernel/security securityfs securityfs rw,nosuid,nodev,noexec,relatime │ ├─/sys/fs/cgroup tmpfs tmpfs rw,nosuid,nodev,noexec,seclabel,mode=755 [output truncated]
デフォルトでは、findmnt
はツリーのような形式でファイルシステムを一覧表示します。情報を通常のリストとして表示するには、-l
コマンドラインオプションを追加します。
findmnt
-l
たとえば、以下のようになります。
~]$ findmnt -l TARGET SOURCE FSTYPE OPTIONS /proc proc proc rw,nosuid,nodev,noexec,relatime /sys sysfs sysfs rw,nosuid,nodev,noexec,relatime,seclabel /dev devtmpfs devtmpfs rw,nosuid,seclabel,size=933372k,nr_inodes=233343,mode=755 /sys/kernel/security securityfs securityfs rw,nosuid,nodev,noexec,relatime /dev/shm tmpfs tmpfs rw,nosuid,nodev,seclabel /dev/pts devpts devpts rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000 /run tmpfs tmpfs rw,nosuid,nodev,seclabel,mode=755 /sys/fs/cgroup tmpfs tmpfs rw,nosuid,nodev,noexec,seclabel,mode=755 [output truncated]
特定のタイプのファイルシステムのみを一覧表示するよう選択することも可能です。これを行うには、-t
コマンドラインオプションに続けてファイルシステムタイプを追加します。
findmnt
-t
type
たとえば、すべての xfs
ファイルシステムを一覧表示するには、以下のコマンドを入力します。
~]$ findmnt -t xfs
TARGET SOURCE FSTYPE OPTIONS
/ /dev/mapper/rhel-root xfs rw,relatime,seclabel,attr2,inode64,noquota
└─/boot /dev/vda1 xfs rw,relatime,seclabel,attr2,inode64,noquota
利用可能なコマンドラインオプションの一覧は、findmnt(8) の man ページを参照してください。
21.4.4. df コマンドの使用
df
コマンドは、システムのディスク領域の使用量についての詳しいレポートを表示します。シェルプロンプトで以下を入力してください。
df
一覧表示された各ファイルシステムについて df
コマンドが表示するのは次のとおりです。名前 (Filesystem
)、サイズ (1K-blocks
または Size
)、使用容量 (Used
)、利用可能な領域のサイズ (Available
)、領域使用量のパーセンテージ (Use%
)、およびファイルシステムがマウントされている場所 (Mounted on
)。以下に例を示します。
~]$ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/vg_kvm-lv_root 18618236 4357360 13315112 25% / tmpfs 380376 288 380088 1% /dev/shm /dev/vda1 495844 77029 393215 17% /boot
デフォルトでは、df
コマンドは 1 キロバイトブロック単位でパーティションのサイズを、キロバイト単位で使用中および利用可能なディスク領域の容量を表示します。メガバイトおよびギガバイトで情報を表示するには、コマンドラインオプション -h
を指定して、df
が人間が判読可能な形式で値を表示します。
df
-h
たとえば、以下のようになります。
~]$ df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_kvm-lv_root 18G 4.2G 13G 25% / tmpfs 372M 288K 372M 1% /dev/shm /dev/vda1 485M 76M 384M 17% /boot
利用可能なコマンドラインオプションの一覧は、df(1) の man ページを参照してください。
21.4.5. du コマンドの使用
du
コマンドはディレクトリー内のファイルが使用している領域を表示します。現在の作業ディレクトリー内のサブディレクトリー用のディスク使用量を表示するには、オプションなしで以下のコマンドを実行します。
du
以下に例を示します。
~]$ du
14972 ./Downloads
4 ./.mozilla/extensions
4 ./.mozilla/plugins
12 ./.mozilla
15004 .
デフォルトでは、du
コマンドはキロバイト単位でディスク使用量を表示します。メガバイトおよびギガバイトで情報を表示するには、コマンドラインオプション -h
を指定して、df が人間が判読可能な形式で値を表示します。
du
-h
たとえば、以下のようになります。
~]$ du -h
15M ./Downloads
4.0K ./.mozilla/extensions
4.0K ./.mozilla/plugins
12K ./.mozilla
15M .
du
コマンドは、一覧の最後で常に現在のディレクトリーの合計量を表示します。この情報のみを表示するには、-s
コマンドラインオプションを指定します。
du
-sh
以下に例を示します。
~]$ du -sh
15M .
利用可能なコマンドラインオプションの一覧は、du(1) の man ページを参照してください。
21.4.6. システムモニターツールの使用
System Monitor ツールの File Systems
タブは、グラフィカルユーザーインターフェースでファイルシステムおよびディスク領域の使用量を表示します。
コマンドラインから System Monitor ツールを起動するには、シェルプロンプトで gnome-system-monitor
と入力します。この結果、System Monitor ツールが表示されます。また、GNOME デスクトップで Super キーを押してアクティビティーの概要を入力する場合は、System Monitor
と入力し、Enter を押します。この結果、System Monitor ツールが表示されます。Super キーはキーボードまたはその他のハードウェアに応じて様々なキーで表示されますが、多くの場合、Windows または Command キーとして通常は Spacebar の左側に表示されます。
File Systems
タブをクリックし、ファイルシステムの一覧を表示します。
図21.3 システムモニター — ファイルシステム
![システムモニターアプリケーションの[ファイルシステム]タブ。](https://access.redhat.com/webassets/avalon/d/Red_Hat_Enterprise_Linux-7-System_Administrators_Guide-ja-JP/images/6d0241c044d1b13fbc5a700d593d4fa6/system-monitor-file-systems.png)
一覧表示されている各ファイルシステムについて、システム System Monitor ツールはソースデバイス (Device
)、ターゲットマウントポイント (Directory
)、およびファイルシステムタイプ (Type
) 、そのサイズ (Total
)、利用可能な容量 (Available
)、および使用中 (Used
) が表示されます。
21.5. ハードウェア情報の表示
21.5.1. lspci コマンドの使用
lspci
コマンドは、PCI バスおよびそれらに接続されているデバイスの情報を表示します。システム内にあるすべての PCI デバイスを一覧表示するには、シェルプロンプトで以下を入力してください。
lspci
これは、以下のようにデバイスのシンプルな一覧を表示します。
~]$ lspci 00:00.0 Host bridge: Intel Corporation 82X38/X48 Express DRAM Controller 00:01.0 PCI bridge: Intel Corporation 82X38/X48 Express Host-Primary PCI Express Bridge 00:1a.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4 (rev 02) 00:1a.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #5 (rev 02) 00:1a.2 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #6 (rev 02) [output truncated]
-v
コマンドラインオプションを使用して詳細の出力を表示することもできます。詳細の出力には -vv
を指定することもできます。
lspci
-v
|-vv
たとえば、システムのビデオカードの製造元やモデル、メモリサイズを確認するには、以下を入力します。
~]$ lspci -v
[output truncated]
01:00.0 VGA compatible controller: nVidia Corporation G84 [Quadro FX 370] (rev a1) (prog-if 00 [VGA controller])
Subsystem: nVidia Corporation Device 0491
Physical Slot: 2
Flags: bus master, fast devsel, latency 0, IRQ 16
Memory at f2000000 (32-bit, non-prefetchable) [size=16M]
Memory at e0000000 (64-bit, prefetchable) [size=256M]
Memory at f0000000 (64-bit, non-prefetchable) [size=32M]
I/O ports at 1100 [size=128]
Expansion ROM at <unassigned> [disabled]
Capabilities: <access denied>
Kernel driver in use: nouveau
Kernel modules: nouveau, nvidiafb
[output truncated]
利用可能なコマンドラインオプションの一覧は、lspci(8) の man ページを参照してください。
21.5.2. lsusb コマンドの使用
lsusb
コマンドは、USB バスおよびそれらに接続されているデバイスの情報を表示します。システム内にあるすべての USB デバイスを一覧表示するには、シェルプロンプトで以下を入力してください。
lsusb
これは、以下のようにデバイスのシンプルな一覧を表示します。
~]$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
[output truncated]
Bus 001 Device 002: ID 0bda:0151 Realtek Semiconductor Corp. Mass Storage Device (Multicard Reader)
Bus 008 Device 002: ID 03f0:2c24 Hewlett-Packard Logitech M-UAL-96 Mouse
Bus 008 Device 003: ID 04b3:3025 IBM Corp.
-v
コマンドラインオプションを使用すると、さらに詳細な出力を表示することもできます。
lsusb
-v
たとえば、以下のようになります。
~]$ lsusb -v
[output truncated]
Bus 008 Device 002: ID 03f0:2c24 Hewlett-Packard Logitech M-UAL-96 Mouse
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x03f0 Hewlett-Packard
idProduct 0x2c24 Logitech M-UAL-96 Mouse
bcdDevice 31.00
iManufacturer 1
iProduct 2
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
[output truncated]
利用可能なコマンドラインオプションの一覧は、lsusb(8) の man ページを参照してください。
21.5.3. lscpu コマンドの使用
lscpu
コマンドを使用すると、CPU の数、アーキテクチャー、ベンダー、ファミリー、モデル、CPU キャッシュなど、システムに存在する CPU に関する情報を一覧表示できます。シェルプロンプトで以下を入力してください。
lscpu
以下に例を示します。
~]$ lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Thread(s) per core: 1 Core(s) per socket: 4 Socket(s): 1 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 23 Stepping: 7 CPU MHz: 1998.000 BogoMIPS: 4999.98 Virtualization: VT-x L1d cache: 32K L1i cache: 32K L2 cache: 3072K NUMA node0 CPU(s): 0-3
利用可能なコマンドラインオプションの一覧は、lscpu(1) の man ページを参照してください。
21.6. ハードウェアエラーの確認
Red Hat Enterprise Linux 7 では、新しい ハードウェアイベントレポートメカニズム (HERM)が導入されました。 このメカニズムは、システムにより報告されたエラーと DIMM (Dual In-line Memory: デュアルインラインメモリーモジュール) 向けの EDAC (Error Detection And Correction: エラー検出および修正) メカニズムにより報告されたエラーを収集し、ユーザースペースに報告します。ユーザースペースデーモンである rasdaemon
は、カーネルの追跡メカニズムから送信されるすべての RAS (Reliability, Availability, and Serviceability: 信頼性、利用可能性、およびサービス性) エラーイベントを取得および処理し、ログに記録します。edac-utils
が提供していた機能は、rasdaemon
に置き換えられました。
rasdaemon
をインストールするには、root
で以下のコマンドを入力します。
~]# yum install rasdaemon
サービスを以下のように起動します。
~]# systemctl start rasdaemon
システム起動時にサービスを実行するには、以下のコマンドを入力します。
~]# systemctl enable rasdaemon
ras-mc-ctl
ユーティリティーは、EDAC ドライバーと連携する手段を提供します。以下のコマンドを入力してコマンドオプションの一覧を表示します。
~]$ ras-mc-ctl --help
Usage: ras-mc-ctl [OPTIONS...]
--quiet Quiet operation.
--mainboard Print mainboard vendor and model for this hardware.
--status Print status of EDAC drivers.
output truncated
メモリーコントローラーイベントのサマリーを表示するには、root
として実行します。
~]# ras-mc-ctl --summary Memory controller events summary: Corrected on DIMM Label(s): 'CPU_SrcID#0_Ha#0_Chan#0_DIMM#0' location: 0:0:0:-1 errors: 1 No PCIe AER errors. No Extlog errors. MCE records summary: 1 MEMORY CONTROLLER RD_CHANNEL0_ERR Transaction: Memory read error errors 2 No Error errors
メモリーコントローラーが報告するエラーのリストを表示するには、root
として実行します。
~]# ras-mc-ctl --errors Memory controller events: 1 3172-02-17 00:47:01 -0500 1 Corrected error(s): memory read error at CPU_SrcID#0_Ha#0_Chan#0_DIMM#0 location: 0:0:0:-1, addr 65928, grain 7, syndrome 0 area:DRAM err_code:0001:0090 socket:0 ha:0 channel_mask:1 rank:0 No PCIe AER errors. No Extlog errors. MCE events: 1 3171-11-09 06:20:21 -0500 error: MEMORY CONTROLLER RD_CHANNEL0_ERR Transaction: Memory read error, mcg mcgstatus=0, mci Corrected_error, n_errors=1, mcgcap=0x01000c16, status=0x8c00004000010090, addr=0x1018893000, misc=0x15020a086, walltime=0x57e96780, cpuid=0x00050663, bank=0x00000007 2 3205-06-22 00:13:41 -0400 error: No Error, mcg mcgstatus=0, mci Corrected_error Error_enabled, mcgcap=0x01000c16, status=0x9400000000000000, addr=0x0000abcd, walltime=0x57e967ea, cpuid=0x00050663, bank=0x00000001 3 3205-06-22 00:13:41 -0400 error: No Error, mcg mcgstatus=0, mci Corrected_error Error_enabled, mcgcap=0x01000c16, status=0x9400000000000000, addr=0x00001234, walltime=0x57e967ea, cpu=0x00000001, cpuid=0x00050663, apicid=0x00000002, bank=0x00000002
これらのコマンドは、ras-mc-ctl(8)
の man ページにも説明されています。
21.7. Net-SNMP を使用したパフォーマンスのモニタリング
Red Hat Enterprise Linux 7 には、柔軟かつ拡張可能な SNMP (simple network management protocol: シンプルネットワークマネージメントプロトコル) エージェントを含む Net-SNMP ソフトウェアスイートが含まれています。このエージェントと関連ユーティリティーを使用すると、多くのシステムからのパフォーマンスデータを SNMP
プロトコルによるポーリングに対応する各種ツールに提供することができます。
このセクションでは、ネットワーク上でパフォーマンスデータを安全に提供するための Net-SNMP エージェントの設定方法、SNMP プロトコルを使用したデータの取得方法、カスタムのパフォーマンスメトリックを提供するための SNMP エージェントの拡張方法について説明します。
21.7.1. Net-SNMP のインストール
Net-SNMP ソフトウェアスイートは、Red Hat Enterprise Linux ソフトウェアディストリビューションの RPM パッケージのセットとして利用可能です。表21.2「利用可能な Net-SNMP パッケージ」 は、各パッケージと内容を要約したものです。
表21.2 利用可能な Net-SNMP パッケージ
パッケージ | 提供する項目 |
---|---|
net-snmp | SNMP Agent Daemon とドキュメント。このパッケージは、パフォーマンスデータをエクスポートするために必要です。 |
net-snmp-libs |
|
net-snmp-utils |
|
net-snmp-perl |
|
net-snmp-python | Python 向け SNMP クライアントライブラリー。このパッケージは Optional チャンネルにより提供されることに注意してください。Red Hat 追加チャンネルの詳細については、「Optional および Supplementary リポジトリーの追加」 を参照してください。 |
これらのパッケージをインストールするには、以下の形式で yum
コマンドを使用します。
yum
install
package…
たとえば、本セクションで使用される SNMP Agent Daemon および SNMP クライアントをインストールするには、root
としてシェルプロンプトで以下を入力します。
~]# yum install net-snmp net-snmp-libs net-snmp-utils
Red Hat Enterprise Linux に新しいパッケージをインストールする方法の詳細は、「パッケージのインストール」 を参照してください。
21.7.2. Net-SNMP Daemon の実行
net-snmp パッケージには、SNMP Agent Daemon であるsnmpd
が含まれています。本セクションでは、snmpd
サービスを起動、停止、再起動する方法を説明します。Red Hat Enterprise Linux 7でのシステムサービスの管理の詳細については、10章systemd によるサービス管理 を参照してください。
21.7.2.1. サービスの起動
現行のセッションで snmpd
サービスを実行するには、シェルプロンプトで root
として以下を入力します。
systemctl start snmpd.service
起動時にサービスが自動的に起動するよう設定するには、以下のコマンドを使用します。
systemctl enable snmpd.service
21.7.2.2. サービスの停止
実行中の snmpd
サービスを停止するには、シェルプロンプトで root
として以下を入力します。
systemctl stop snmpd.service
ブート時のサービスの起動を無効にするには、以下のコマンドを使用します。
systemctl disable snmpd.service
21.7.2.3. サービスの再起動
実行中の snmpd
サービスを再起動するには、シェルプロンプトで以下を入力します。
systemctl restart snmpd.service
このコマンドで、サービスの停止と再起動が連続して行われます。サービスを停止せずに設定の再読み込みだけを行いたい場合は、代わりに以下のコマンドを実行します。
systemctl reload snmpd.service
これにより、実行中の snmpd
サービスが設定を再読み込みします。
21.7.3. Net-SNMP の設定
Net-SNMP Agent Daemon 設定を変更するには、/etc/snmp/snmpd.conf
設定ファイルを編集します。Red Hat Enterprise Linux 7 に備わっているデフォルトの snmpd.conf
ファイルには、多くのコメントが含まれているため、エージェント設定の際の適切なスタート地点となります。
本セクションでは、システム情報と認証の設定という 2 つの一般的なタスクにフォーカスしています。利用可能な設定ディレクティブの詳細については、snmpd.conf
(5) の man ページを参照してください。また、net-snmp パッケージには snmpconf
と呼ばれるユーティリティーがあり、これを使って有効なエージェント設定を対話形式で作成できます。
本セクションで説明されている snmpwalk
ユーティリティーを使用するには、net-snmp-utils パッケージがインストールされている必要がある点に注意してください。
設定ファイルの変更を反映させるには、snmpd
として以下のコマンドを実行し、root
サービスに設定の再読み取りを強制します。
systemctl reload snmpd.service
21.7.3.1. システム情報の設定
Net-SNMP は、system
ツリー経由で基本的なシステム情報を提供します。たとえば、次の snmpwalk
コマンドはデフォルトのエージェント設定を持つ system
ツリーを示しています。
~]# snmpwalk -v2c -c public localhost system SNMPv2-MIB::sysDescr.0 = STRING: Linux localhost.localdomain 3.10.0-123.el7.x86_64 #1 SMP Mon May 5 11:16:57 EDT 2014 x86_64 SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (464) 0:00:04.64 SNMPv2-MIB::sysContact.0 = STRING: Root <root@localhost> (configure /etc/snmp/snmp.local.conf) [output truncated]
デフォルトでは、sysName
オブジェクトはホスト名に設定されています。sysLocation
および sysContact
オブジェクトは、syslocation
および syscontact
ディレクティブの値を変更することで /etc/snmp/snmpd.conf
ファイルで設定できます。以下に例を示します。
syslocation Datacenter, Row 4, Rack 3 syscontact UNIX Admin <admin@example.com>
設定ファイルに変更を加えた後は、再度 snmpwalk
コマンドを実行し、設定を再読み込みしてテストします。
~]# systemctl reload snmp.service ~]# snmpwalk -v2c -c public localhost system SNMPv2-MIB::sysDescr.0 = STRING: Linux localhost.localdomain 3.10.0-123.el7.x86_64 #1 SMP Mon May 5 11:16:57 EDT 2014 x86_64 SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (35424) 0:05:54.24 SNMPv2-MIB::sysContact.0 = STRING: UNIX Admin <admin@example.com> SNMPv2-MIB::sysName.0 = STRING: localhost.localdomain SNMPv2-MIB::sysLocation.0 = STRING: Datacenter, Row 4, Rack 3 [output truncated]
21.7.3.2. 認証の設定
Net-SNMP Agent Daemon は SNMP プロトコルの 3 つの全バージョンに対応します。最初の 2 つのバージョン (1 と 2c) は、コミュニティ文字列 を使用した簡易認証を提供します。この文字列は、エージェントとクライアントのユーティリティー間で共有される秘密です。この文字列は、ネットワーク上でクリアテキストで渡されますが、安全であるとはみなされません。SNMP プロトコルのバージョン 3 は、各種プロトコルを使用したユーザー認証とメッセージの暗号化に対応しています。また Net-SNMP エージェントは、SSH によるトンネリング、および X.509 証明書を用いた TLS 認証にも対応しています。
SNMP Version 2c Community の設定
SNMP version 2c community を設定するには、/etc/snmp/snmpd.conf
設定ファイルの rocommunity
または rwcommunity
ディレクティブを使用します。ディレクティブの形式は、以下のとおりです。
directive community source OID
ここでの community は使用するコミュニティ文字列、source は IP アドレスまたはサブネット、OID はアクセスを提供する SNMP ツリーです。たとえば、次のディレクティブは、ローカルマシン上でコミュニティー文字列 redhat を使用するクライアントに system
ツリーへの読み取り専用のアクセスを与えます。
rocommunity redhat 127.0.0.1 .1.3.6.1.2.1.1
設定をテストするには、-v
および -c
オプションを指定して snmpwalk
コマンドを使用します。
~]# snmpwalk -v2c -c redhat localhost system SNMPv2-MIB::sysDescr.0 = STRING: Linux localhost.localdomain 3.10.0-123.el7.x86_64 #1 SMP Mon May 5 11:16:57 EDT 2014 x86_64 SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (101376) 0:16:53.76 SNMPv2-MIB::sysContact.0 = STRING: UNIX Admin <admin@example.com> SNMPv2-MIB::sysName.0 = STRING: localhost.localdomain SNMPv2-MIB::sysLocation.0 = STRING: Datacenter, Row 4, Rack 3 [output truncated]
SNMP Version 3 User の設定
SNMP version 3 ユーザー を設定するには、net-snmp-create-v3-user
コマンドを使用します。このコマンドは、ユーザーを作成し、そのユーザーへのアクセス権限を付与する /var/lib/net-snmp/snmpd.conf
および /etc/snmp/snmpd.conf
ファイルにエントリーを追加します。net-snmp-create-v3-user
コマンドは、エージェントが実行されていない場合にのみ実行できることに注意してください。以下の例では redhatsnmp というパスワードを持つ admin ユーザーを作成します。
~]# systemctl stop snmpd.service ~]# net-snmp-create-v3-user Enter a SNMPv3 user name to create: admin Enter authentication pass-phrase: redhatsnmp Enter encryption pass-phrase: [press return to reuse the authentication pass-phrase] adding the following line to /var/lib/net-snmp/snmpd.conf: createUser admin MD5 "redhatsnmp" DES adding the following line to /etc/snmp/snmpd.conf: rwuser admin ~]# systemctl start snmpd.service
net-snmp-create-v3-user
が /etc/snmp/snmpd.conf
に追加するrwuser
ディレクティブ (または -ro
コマンドラインオプションが指定された場合の rouser
) には、rwcommunity
および rocommunity
ディレクティブに対して類似した形式があります。
directive usernoauth
|auth
|priv
OID
ここでの user はユーザー名で、OID はアクセスを提供する SNMP ツリーです。デフォルトでは、Net-SNMP Agent Daemon は認証済み要求のみを許可します (auth
オプション)noauth
オプションを使用すると、認証されていないリクエストを許可でき、priv
オプションは暗号化の使用を強制します。authpriv
オプションを使用すると、要求の認証、応答の暗号化が必要であると指定します。
たとえば、以下の行では、ユーザー admin にツリー全体への読み取りと書き込みのアクセスを付与します。
rwuser admin authpriv .1
設定をテストするには、使用しているユーザーのホームディレクトリー内に .snmp/
ディレクトリーを作成して、そのディレクトリーに次の行を含む snmp.conf
と呼ばれる設定ファイルを作成します (~/.snmp/snmp.conf
):
defVersion 3 defSecurityLevel authPriv defSecurityName admin defPassphrase redhatsnmp
これで、エージェントをクエリーする場合、snmpwalk
コマンドはこれらの認証設定を使用するようになります。
~]$ snmpwalk -v3 localhost system SNMPv2-MIB::sysDescr.0 = STRING: Linux localhost.localdomain 3.10.0-123.el7.x86_64 #1 SMP Mon May 5 11:16:57 EDT 2014 x86_64 [output truncated]
21.7.4. SNMP によるパフォーマンスデータの取得
Red Hat Enterprise Linux の Net-SNMP Agent は、SNMP プロトコルによりパフォーマンスの各種情報を提供します。さらにエージェントは、システム上のインストールされた RPM パッケージの一覧、システム上で現在実行中のプロセス一覧、またはシステムのネットワーク設定をクエリーすることもできます。
本セクションでは、SNMP による利用可能なパフォーマンスチューニングに関連する OID の概要について説明します。ここでは、net-snmp-utils パッケージがインストールされ、「認証の設定」 の記載通りに、ユーザーは SNMP ツリーへのアクセスが許可されていることを前提としています。
21.7.4.1. ハードウェアの設定
Net-SNMP に含まれる Host Resources MIB
は、ホストの現在のハードウェアおよびソフトウェア設定に関する情報をクライアントユーティリティーに表示します。表21.3「利用可能な OID」 は、その MIB で利用可能なさまざまな OID の概要を示します。
表21.3 利用可能な OID
OID | 詳細 |
---|---|
| アップタイム、ユーザー数、実行中のプロセス数などのシステム情報全般が含まれています。 |
| メモリおよびファイルシステムの使用に関するデータが含まれています。 |
| すべてのプロセッサー、ネットワークデバイス、ファイルシステムの一覧が含まれています。 |
| 実行中の全プロセス一覧が含まれています。 |
| HOST-RESOURCES-MIB::hrSWRun からのプロセステーブル上のメモリと CPU 統計が含まれています。 |
| RPM データベースの一覧が含まれています。 |
入手可能な情報の概要を取得するために使用できる Host Resources MIB には、多くの SNMP テーブルがあります。以下の例では、HOST-RESOURCES-MIB::hrFSTable
が示されています。
~]$ snmptable -Cb localhost HOST-RESOURCES-MIB::hrFSTable
SNMP table: HOST-RESOURCES-MIB::hrFSTable
Index MountPoint RemoteMountPoint Type
Access Bootable StorageIndex LastFullBackupDate LastPartialBackupDate
1 "/" "" HOST-RESOURCES-TYPES::hrFSLinuxExt2
readWrite true 31 0-1-1,0:0:0.0 0-1-1,0:0:0.0
5 "/dev/shm" "" HOST-RESOURCES-TYPES::hrFSOther
readWrite false 35 0-1-1,0:0:0.0 0-1-1,0:0:0.0
6 "/boot" "" HOST-RESOURCES-TYPES::hrFSLinuxExt2
readWrite false 36 0-1-1,0:0:0.0 0-1-1,0:0:0.0
HOST-RESOURCES-MIB
の詳細は、/usr/share/snmp/mibs/HOST-RESOURCES-MIB.txt
ファイルを参照してください。
21.7.4.2. CPU およびメモリー情報
大半のシステムのパフォーマンスデータは UCD SNMP MIB
にあります。systemStats
OID は、プロセッサー使用率に関する多くのカウンターを提供します。
~]$ snmpwalk localhost UCD-SNMP-MIB::systemStats
UCD-SNMP-MIB::ssIndex.0 = INTEGER: 1
UCD-SNMP-MIB::ssErrorName.0 = STRING: systemStats
UCD-SNMP-MIB::ssSwapIn.0 = INTEGER: 0 kB
UCD-SNMP-MIB::ssSwapOut.0 = INTEGER: 0 kB
UCD-SNMP-MIB::ssIOSent.0 = INTEGER: 0 blocks/s
UCD-SNMP-MIB::ssIOReceive.0 = INTEGER: 0 blocks/s
UCD-SNMP-MIB::ssSysInterrupts.0 = INTEGER: 29 interrupts/s
UCD-SNMP-MIB::ssSysContext.0 = INTEGER: 18 switches/s
UCD-SNMP-MIB::ssCpuUser.0 = INTEGER: 0
UCD-SNMP-MIB::ssCpuSystem.0 = INTEGER: 0
UCD-SNMP-MIB::ssCpuIdle.0 = INTEGER: 99
UCD-SNMP-MIB::ssCpuRawUser.0 = Counter32: 2278
UCD-SNMP-MIB::ssCpuRawNice.0 = Counter32: 1395
UCD-SNMP-MIB::ssCpuRawSystem.0 = Counter32: 6826
UCD-SNMP-MIB::ssCpuRawIdle.0 = Counter32: 3383736
UCD-SNMP-MIB::ssCpuRawWait.0 = Counter32: 7629
UCD-SNMP-MIB::ssCpuRawKernel.0 = Counter32: 0
UCD-SNMP-MIB::ssCpuRawInterrupt.0 = Counter32: 434
UCD-SNMP-MIB::ssIORawSent.0 = Counter32: 266770
UCD-SNMP-MIB::ssIORawReceived.0 = Counter32: 427302
UCD-SNMP-MIB::ssRawInterrupts.0 = Counter32: 743442
UCD-SNMP-MIB::ssRawContexts.0 = Counter32: 718557
UCD-SNMP-MIB::ssCpuRawSoftIRQ.0 = Counter32: 128
UCD-SNMP-MIB::ssRawSwapIn.0 = Counter32: 0
UCD-SNMP-MIB::ssRawSwapOut.0 = Counter32: 0
特に、ssCpuRawUser
、ssCpuRawSystem
、ssCpuRawWait
、ssCpuRawIdle
OID は、システムがカーネルスペース、ユーザー空間、または I/O でプロセッサー時間の大半を要しているかどうかを判断するのに役に立つカウンターを提供します。ssRawSwapIn
および ssRawSwapOut
はシステムがメモリー消費から不足しているかどうかを判断する際に有用です。
より多くのメモリー情報は、free
コマンドに類似したデータを提供する UCD-SNMP-MIB::memory
OID で入手できます。
~]$ snmpwalk localhost UCD-SNMP-MIB::memory
UCD-SNMP-MIB::memIndex.0 = INTEGER: 0
UCD-SNMP-MIB::memErrorName.0 = STRING: swap
UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 1023992 kB
UCD-SNMP-MIB::memAvailSwap.0 = INTEGER: 1023992 kB
UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 1021588 kB
UCD-SNMP-MIB::memAvailReal.0 = INTEGER: 634260 kB
UCD-SNMP-MIB::memTotalFree.0 = INTEGER: 1658252 kB
UCD-SNMP-MIB::memMinimumSwap.0 = INTEGER: 16000 kB
UCD-SNMP-MIB::memBuffer.0 = INTEGER: 30760 kB
UCD-SNMP-MIB::memCached.0 = INTEGER: 216200 kB
UCD-SNMP-MIB::memSwapError.0 = INTEGER: noError(0)
UCD-SNMP-MIB::memSwapErrorMsg.0 = STRING:
負荷平均は、UCD SNMP MIB
でも入手可能です。SNMP テーブル UCD-SNMP-MIB::laTable
には、1 分、5 分、15 分間の負荷平均の一覧があります。
~]$ snmptable localhost UCD-SNMP-MIB::laTable
SNMP table: UCD-SNMP-MIB::laTable
laIndex laNames laLoad laConfig laLoadInt laLoadFloat laErrorFlag laErrMessage
1 Load-1 0.00 12.00 0 0.000000 noError
2 Load-5 0.00 12.00 0 0.000000 noError
3 Load-15 0.00 12.00 0 0.000000 noError
21.7.4.3. ファイルシステムとディスク情報
Host Resources MIB
は、ファイルシステムのサイズと使用方法についての情報を提供します。各ファイルシステム (および各メモリープール) には、HOST-RESOURCES-MIB::hrStorageTable
テーブルにエントリーがあります。
~]$ snmptable -Cb localhost HOST-RESOURCES-MIB::hrStorageTable
SNMP table: HOST-RESOURCES-MIB::hrStorageTable
Index Type Descr
AllocationUnits Size Used AllocationFailures
1 HOST-RESOURCES-TYPES::hrStorageRam Physical memory
1024 Bytes 1021588 388064 ?
3 HOST-RESOURCES-TYPES::hrStorageVirtualMemory Virtual memory
1024 Bytes 2045580 388064 ?
6 HOST-RESOURCES-TYPES::hrStorageOther Memory buffers
1024 Bytes 1021588 31048 ?
7 HOST-RESOURCES-TYPES::hrStorageOther Cached memory
1024 Bytes 216604 216604 ?
10 HOST-RESOURCES-TYPES::hrStorageVirtualMemory Swap space
1024 Bytes 1023992 0 ?
31 HOST-RESOURCES-TYPES::hrStorageFixedDisk /
4096 Bytes 2277614 250391 ?
35 HOST-RESOURCES-TYPES::hrStorageFixedDisk /dev/shm
4096 Bytes 127698 0 ?
36 HOST-RESOURCES-TYPES::hrStorageFixedDisk /boot
1024 Bytes 198337 26694 ?
HOST-RESOURCES-MIB::hrStorageSize
と HOST-RESOURCES-MIB::hrStorageUsed
にある OID を使用して、マウントされた各ファイルシステムの残りの容量を算出することができます。
I/O データは、UCD-SNMP-MIB::systemStats
(ssIORawSent.0
と ssIORawRecieved.0
) と UCD-DISKIO-MIB::diskIOTable
の両方で利用可能です。後者は、前者と比べてより粒度の細かいデータを提供します。このテーブルには、diskIONReadX
および diskIONWrittenX
の OID があり、システムブートから問題のブロックデバイスに対し読み取りおよび書き込みを実行したバイト数のカウンターを提供します。
~]$ snmptable -Cb localhost UCD-DISKIO-MIB::diskIOTable
SNMP table: UCD-DISKIO-MIB::diskIOTable
Index Device NRead NWritten Reads Writes LA1 LA5 LA15 NReadX NWrittenX
...
25 sda 216886272 139109376 16409 4894 ? ? ? 216886272 139109376
26 sda1 2455552 5120 613 2 ? ? ? 2455552 5120
27 sda2 1486848 0 332 0 ? ? ? 1486848 0
28 sda3 212321280 139104256 15312 4871 ? ? ? 212321280 139104256
21.7.4.4. ネットワーク情報
Interfaces MIB
は、ネットワークデバイスの情報を提供します。IF-MIB::ifTable
は、SNMP テーブルにシステム上の各インターフェースのエントリー、インターフェースの設定、インターフェース用の各種パケットカウンターを提供します。以下の例は、2 つの物理ネットワークインターフェースを持つシステム上の ifTable
の最初の数コラムを示しています。
~]$ snmptable -Cb localhost IF-MIB::ifTable
SNMP table: IF-MIB::ifTable
Index Descr Type Mtu Speed PhysAddress AdminStatus
1 lo softwareLoopback 16436 10000000 up
2 eth0 ethernetCsmacd 1500 0 52:54:0:c7:69:58 up
3 eth1 ethernetCsmacd 1500 0 52:54:0:a7:a3:24 down
ネットワークトラフィックは、OIDs IF-MIB::ifOutOctets
および IF-MIB::ifInOctets
で利用できます。以下の SNMP クエリーは、このシステム上の各インターフェースに対するネットワークトラフィックを取得します。
~]$snmpwalk localhost IF-MIB::ifDescr
IF-MIB::ifDescr.1 = STRING: lo IF-MIB::ifDescr.2 = STRING: eth0 IF-MIB::ifDescr.3 = STRING: eth1 ~]$snmpwalk localhost IF-MIB::ifOutOctets
IF-MIB::ifOutOctets.1 = Counter32: 10060699 IF-MIB::ifOutOctets.2 = Counter32: 650 IF-MIB::ifOutOctets.3 = Counter32: 0 ~]$snmpwalk localhost IF-MIB::ifInOctets
IF-MIB::ifInOctets.1 = Counter32: 10060699 IF-MIB::ifInOctets.2 = Counter32: 78650 IF-MIB::ifInOctets.3 = Counter32: 0
21.7.5. Net-SNMP の拡張
Net-SNMP Agent は、raw システムメトリックに加えてアプリケーションメトリックを提供するために拡張することができます。これにより、パフォーマンス問題のトラブルシューティングだけでなく容量計画も行うことができます。たとえば、試験中に電子メールシステムの 5 分の負荷平均が 15 であったことを把握しておくことは役に立つかもしれませんが、毎秒 80,000 メッセージの処理中に電子メールシステムの負荷平均が 15 であることを知っておく方がはるかに役立ちます。アプリケーションメトリックがシステムメトリックと同じインターフェースで使用可能な場合、システムパフォーマンスの様々な負荷状況の影響も視覚化することができます (たとえば 10,000 メッセージが追加されると、負荷平均は 100,000 まで直線的に増加します)。
Red Hat Enterprise Linux に同梱されているアプリケーションの多くは、Net-SNMP Agent を拡張して、SNMP によるアプリケーションメトリックを提供します。カスタムアプリケーション用にエージェントを拡張する方法もいくつかあります。本セクションでは、Optional チャンネルのシェルスクリプトと Perl プラグインを使ったエージェントの拡張方法について説明します。本セクションでは、net-snmp-utils および net-snmp-perl パッケージがインストールされ、「認証の設定」 で説明されているようにユーザーに SNMP ツリーへのアクセスが許可されていることを前提としています。
21.7.5.1. シェルスクリプトによる Net-SNMP の拡張
Net-SNMP Agent は、任意のシェルスクリプトをクエリーするために使用可能な拡張 MIB (NET-SNMP-EXTEND-MIB
) を提供します。実行するシェルスクリプトを指定するには、/etc/snmp/snmpd.conf
ファイルの extend
ディレクティブを使用します。定義されると、Agent は SNMP により終了コードとコマンドの出力を提供します。以下の例では、プロセステーブルの httpd
プロセスの数を決定するスクリプトを使ってこの仕組みを説明しています。
Net-SNMP エージェントでは、proc
ディレクティブでプロセステーブルをチェックする組み込みメカニズムも利用できます。詳細は snmpd.conf(5) の man ページを参照してください。
以下のシェルスクリプトの終了コードは、任意の時点におけるシステム上での実行中の httpd
プロセス数です。
#!/bin/sh
NUMPIDS=pgrep httpd | wc -l
exit $NUMPIDS
SNMP 経由でこのスクリプトを利用できるようにするには、スクリプトをシステムパス上の場所にコピーし、実行可能なビットを設定して、/etc/snmp/snmpd.conf
ファイルに extend
ディレクティブを追加します。extend
ディレクティブの形式は次のとおりです。
extend
name prog args
ここでの name は拡張するための識別文字列、prog は実行するプログラム、args はプログラムに渡す引数です。たとえば、上記のシェルスクリプトが /usr/local/bin/check_apache.sh
にコピーされた場合、以下のディレクティブは SNMP ツリーにスクリプトを追加します。
extend httpd_pids /bin/sh /usr/local/bin/check_apache.sh
スクリプトは NET-SNMP-EXTEND-MIB::nsExtendObjects
でクエリーできます。
~]$ snmpwalk localhost NET-SNMP-EXTEND-MIB::nsExtendObjects NET-SNMP-EXTEND-MIB::nsExtendNumEntries.0 = INTEGER: 1 NET-SNMP-EXTEND-MIB::nsExtendCommand."httpd_pids" = STRING: /bin/sh NET-SNMP-EXTEND-MIB::nsExtendArgs."httpd_pids" = STRING: /usr/local/bin/check_apache.sh NET-SNMP-EXTEND-MIB::nsExtendInput."httpd_pids" = STRING: NET-SNMP-EXTEND-MIB::nsExtendCacheTime."httpd_pids" = INTEGER: 5 NET-SNMP-EXTEND-MIB::nsExtendExecType."httpd_pids" = INTEGER: exec(1) NET-SNMP-EXTEND-MIB::nsExtendRunType."httpd_pids" = INTEGER: run-on-read(1) NET-SNMP-EXTEND-MIB::nsExtendStorage."httpd_pids" = INTEGER: permanent(4) NET-SNMP-EXTEND-MIB::nsExtendStatus."httpd_pids" = INTEGER: active(1) NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."httpd_pids" = STRING: NET-SNMP-EXTEND-MIB::nsExtendOutputFull."httpd_pids" = STRING: NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."httpd_pids" = INTEGER: 1 NET-SNMP-EXTEND-MIB::nsExtendResult."httpd_pids" = INTEGER: 8 NET-SNMP-EXTEND-MIB::nsExtendOutLine."httpd_pids".1 = STRING:
注意する点は、終了コード (この例では 8) は INTEGER (整数) タイプとして、出力は STRING (文字列) タイプとして、示されていることです。複数のメトリクスを整数として公開するには、extend
ディレクティブを使用してスクリプトに異なる引数を指定します。例えば、以下のシェルスクリプトを使用すると、任意の文字列に一致するプロセスの数を見つけ出すことができ、プロセスの数を示すテキスト文字列も出力します。
#!/bin/sh
PATTERN=$1
NUMPIDS=pgrep $PATTERN | wc -l
echo "There are $NUMPIDS $PATTERN processes."
exit $NUMPIDS
以下の /etc/snmp/snmpd.conf
ディレクティブは、上記のスクリプトが /usr/local/bin/check_proc.sh
にコピーされたときに httpd
PID の数と snmpd
PID の数の両方を指定します。
extend httpd_pids /bin/sh /usr/local/bin/check_proc.sh httpd extend snmpd_pids /bin/sh /usr/local/bin/check_proc.sh snmpd
以下の例は、nsExtendObjects
OID のsnmpwalk
コマンドの出力を示しています。
~]$ snmpwalk localhost NET-SNMP-EXTEND-MIB::nsExtendObjects NET-SNMP-EXTEND-MIB::nsExtendNumEntries.0 = INTEGER: 2 NET-SNMP-EXTEND-MIB::nsExtendCommand."httpd_pids" = STRING: /bin/sh NET-SNMP-EXTEND-MIB::nsExtendCommand."snmpd_pids" = STRING: /bin/sh NET-SNMP-EXTEND-MIB::nsExtendArgs."httpd_pids" = STRING: /usr/local/bin/check_proc.sh httpd NET-SNMP-EXTEND-MIB::nsExtendArgs."snmpd_pids" = STRING: /usr/local/bin/check_proc.sh snmpd NET-SNMP-EXTEND-MIB::nsExtendInput."httpd_pids" = STRING: NET-SNMP-EXTEND-MIB::nsExtendInput."snmpd_pids" = STRING: ... NET-SNMP-EXTEND-MIB::nsExtendResult."httpd_pids" = INTEGER: 8 NET-SNMP-EXTEND-MIB::nsExtendResult."snmpd_pids" = INTEGER: 1 NET-SNMP-EXTEND-MIB::nsExtendOutLine."httpd_pids".1 = STRING: There are 8 httpd processes. NET-SNMP-EXTEND-MIB::nsExtendOutLine."snmpd_pids".1 = STRING: There are 1 snmpd processes.
整数の終了コードは 0 から 255 の範囲に制限されています。256 を超える可能性がある値については、スクリプトの標準出力 (文字列として入力されるもの) を使用するか、エージェントを拡張するという別の方法を実行してください。
この最後の例では、システムの空きメモリと httpd
プロセスの数のクエリーを示しています。このクエリーは、パフォーマンステスト中にメモリ負担に与えるプロセス数の影響を知るために使用することができます。
~]$ snmpget localhost \ 'NET-SNMP-EXTEND-MIB::nsExtendResult."httpd_pids"' \ UCD-SNMP-MIB::memAvailReal.0 NET-SNMP-EXTEND-MIB::nsExtendResult."httpd_pids" = INTEGER: 8 UCD-SNMP-MIB::memAvailReal.0 = INTEGER: 799664 kB
21.7.5.2. Perl による Net-SNMP の拡張
extend
ディレクティブを使用したシェルスクリプトの実行は、S N M P でカスタムアプリケーションメトリクスを公開する非常に限定的な方法です。Net-SNMP エージェントは、カスタムオブジェクトを公開するための埋め込み Perl インターフェースも提供します。Optional チャンネルの net-snmp-perl パッケージは、Red Hat Enterprise Linux で組み込み Perl プラグインの作成に使用される NetSNMP::agent
Perl モジュールを提供します。
Optional および Supplementary チャンネルをサブスクライブする前に、「対象範囲の詳細」を参照してください。これらのチャンネルからパッケージをインストールする場合は、Red Hat カスタマーポータルの記事「証明書ベースの管理を使用して、Optional および Supplementary チャンネル、-devel パッケージにアクセスする方法」で説明されている手順を行ってください。
NetSNMP::agent
Perl モジュールは、エージェントの OID ツリーの一部に対する要求を処理するために使用される agent
オブジェクトを提供します。agent
オブジェクトのコンストラクターには、エージェントを snmpd
のサブエージェントまたはスタンドアロンエージェントとして実行するためのオプションがあります。埋め込みエージェントを作成するために必要な引数はありません。
use NetSNMP::agent (':all'); my $agent = new NetSNMP::agent();
agent
オブジェクトには、コールバック関数を特定の OID に登録するために使用される register
メソッドがあります。register
関数は、名前、OID、コールバック関数へのポインターを取ります。以下の例は、hello_handler
と呼ばれるコールバック関数を OID .1.3.6.1.4.1.8072.9999.9999
で要求を処理する SNMP Agent に登録しています:
$agent->register("hello_world", ".1.3.6.1.4.1.8072.9999.9999", \&hello_handler);
通常、OID .1.3.6.1.4.1.8072.9999.9999
(NET-SNMP-MIB::netSnmpPlaypen
) はデモ目的でのみ使用されます。お客様の組織に root OID がない場合は、ISO Name Registration Authority (米国では ANSI) にご連絡いただくと取得できます。
ハンドラー関数は、4 つのパラメーター (HANDLER
、REGISTRATION_INFO
、REQUEST_INFO
、および REQUESTS
) で呼び出されます。REQUESTS
パラメーターには、現在の呼び出しの要求一覧が含まれており、反復されデータが追加されるはずです。一覧の request
オブジェクトには get 及び set メソッドがあるため、要求の OID
と value
を操作することができます。例として、以下の呼び出しは「hello world」という文字列に要求オブジェクトの値を設定します。
$request->setValue(ASN_OCTET_STR, "hello world");
ハンドラー関数は、GET 要求と GETNEXT 要求という 2 種類の SNMP 要求に応答できます。要求のタイプは、ハンドラー関数に第 3 のパラメーターとして渡される getMode
オブジェクトの request_info
メソッドを呼び出すことによって、決定されます。要求が GET 要求である場合、呼び出し元は、ハンドラーに要求の OID に応じて request
オブジェクトの value
を設定するよう求めます。要求が GETNEXT 要求である場合、呼び出し元は、ハンドラーに要求の OID をツリー内で次に利用可能な OID に設定するよう求めます。以下のコードは、この例を示しています。
my $request; my $string_value = "hello world"; my $integer_value = "8675309"; for($request = $requests; $request; $request = $request->next()) { my $oid = $request->getOID(); if ($request_info->getMode() == MODE_GET) { if ($oid == new NetSNMP::OID(".1.3.6.1.4.1.8072.9999.9999.1.0")) { $request->setValue(ASN_OCTET_STR, $string_value); } elsif ($oid == new NetSNMP::OID(".1.3.6.1.4.1.8072.9999.9999.1.1")) { $request->setValue(ASN_INTEGER, $integer_value); } } elsif ($request_info->getMode() == MODE_GETNEXT) { if ($oid == new NetSNMP::OID(".1.3.6.1.4.1.8072.9999.9999.1.0")) { $request->setOID(".1.3.6.1.4.1.8072.9999.9999.1.1"); $request->setValue(ASN_INTEGER, $integer_value); } elsif ($oid < new NetSNMP::OID(".1.3.6.1.4.1.8072.9999.9999.1.0")) { $request->setOID(".1.3.6.1.4.1.8072.9999.9999.1.0"); $request->setValue(ASN_OCTET_STR, $string_value); } } }
getMode
が MODE_GET
を返すと、ハンドラーは request
オブジェクトでの getOID
の呼び出しの値を分析します。request
の value
は、OID が「.1.0」で終わる場合は string_value
、OID が「.1.1」で終わる場合は integer_value
に設定されます。getMode
が MODE_GETNEXT
を返す場合、ハンドラーは要求の OID が .1.0 かどうかを見つけ出し、その後 .1.1 に対する OID と値を設定します。ツリーで要求が .1.0 より高い場合は、.1.0 に対する OID と値が設定されます。実際、これはツリーの次の値を返すため、snmpwalk
のようなプログラムは構造に関する事前知識なくツリーをトラバースできます。
変数のタイプは NetSNMP::ASN
からの定数を使用して設定されます。利用可能な定数の全一覧については、perldoc
の NetSNMP::ASN
を参照してください。
この例の Perl プラグインのコード全一覧は、以下のとおりです:
#!/usr/bin/perl use NetSNMP::agent (':all'); use NetSNMP::ASN qw(ASN_OCTET_STR ASN_INTEGER); sub hello_handler { my ($handler, $registration_info, $request_info, $requests) = @_; my $request; my $string_value = "hello world"; my $integer_value = "8675309"; for($request = $requests; $request; $request = $request->next()) { my $oid = $request->getOID(); if ($request_info->getMode() == MODE_GET) { if ($oid == new NetSNMP::OID(".1.3.6.1.4.1.8072.9999.9999.1.0")) { $request->setValue(ASN_OCTET_STR, $string_value); } elsif ($oid == new NetSNMP::OID(".1.3.6.1.4.1.8072.9999.9999.1.1")) { $request->setValue(ASN_INTEGER, $integer_value); } } elsif ($request_info->getMode() == MODE_GETNEXT) { if ($oid == new NetSNMP::OID(".1.3.6.1.4.1.8072.9999.9999.1.0")) { $request->setOID(".1.3.6.1.4.1.8072.9999.9999.1.1"); $request->setValue(ASN_INTEGER, $integer_value); } elsif ($oid < new NetSNMP::OID(".1.3.6.1.4.1.8072.9999.9999.1.0")) { $request->setOID(".1.3.6.1.4.1.8072.9999.9999.1.0"); $request->setValue(ASN_OCTET_STR, $string_value); } } } } my $agent = new NetSNMP::agent(); $agent->register("hello_world", ".1.3.6.1.4.1.8072.9999.9999", \&hello_handler);
プラグインをテストするには、上記のプログラムを /usr/share/snmp/hello_world.pl
にコピーし、/etc/snmp/snmpd.conf
設定ファイルに以下の行を追加します。
perl do "/usr/share/snmp/hello_world.pl"
新しい Perl プラグインをロードするためには、SNMP Agent Daemon を再起動する必要があります。再起動すると、snmpwalk
は新しいデータを返すはずです。
~]$ snmpwalk localhost NET-SNMP-MIB::netSnmpPlaypen
NET-SNMP-MIB::netSnmpPlaypen.1.0 = STRING: "hello world"
NET-SNMP-MIB::netSnmpPlaypen.1.1 = INTEGER: 8675309
snmpget
を使用すると、ハンドラーの他のモードを使用することも可能です:
~]$snmpget localhost \
NET-SNMP-MIB::netSnmpPlaypen.1.0 \
NET-SNMP-MIB::netSnmpPlaypen.1.1
NET-SNMP-MIB::netSnmpPlaypen.1.0 = STRING: "hello world" NET-SNMP-MIB::netSnmpPlaypen.1.1 = INTEGER: 8675309
21.8. 関連資料
システム情報の収集方法についてさらに知るには、以下のリソースを参照してください。
21.8.1. インストールされているドキュメント
-
lscpu(1):
lscpu
コマンドの man ページです。 -
lsusb(8):
lsusb
コマンドの man ページです。 -
findmnt(8):
findmnt
コマンドの man ページです。 -
blkid(8):
blkid
コマンドの man ページです。 -
lsblk(8):
lsblk
コマンドの man ページです。 -
ps(1):
ps
コマンドの man ページです。 -
top(1):
top
コマンドの man ページです。 -
free(1):
free
コマンドの man ページです。 -
df(1):
df
コマンドの man ページ。 -
du(1):
du
コマンドの man ページです。 -
lspci(8):
lspci
コマンドの man ページです。 -
snmpd(8):
snmpd
サービスの man ページです。 -
snmpd.conf(5): 利用可能な設定ディレクティブについての全ドキュメントを含む
/etc/snmp/snmpd.conf
ファイルの man ページです。
このページには機械翻訳が使用されている場合があります (詳細はこちら)。