近頃アラート対応を行う機会が増えてきました。アラート対応では日々の運用と比べ、適切な判断と素早い対応が必要となることを実感します。
アラートの内容にもよりますが、サーバ内の処理状況を確認する際はCPUやメモリ、ディスク等の各種利用状況を確認し、暫時的な対応や原因の追及を行います。今回はその際に利用するコマンドをまとめていきます。
実行環境
OS:AlmaLinux 9.5
ログオン状況の確認
複数人が接続できるサーバの場合、誰が接続しているのかを確認することがあります。もし他の人が接続しており作業中の場合、自分の操作は止めておこうなどの判断ができます。
wコマンド(procps-ng 3.3.17)でログオンユーザ名、接続元、処理内容などが表示されます。
[root@example.com ~]# w
16:03:47 up 60 days, 23:25, 1 user, load average: 0.00, 0.00, 0.00
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
user pts/0 16:03 0.00s 0.00s 0.02s sshd: user [priv]
USER | ログオンユーザ |
TTY | 端末名 |
FROM | 接続元 |
LOGIN@ | ログイン時間 |
IDLE | アイドル時間 |
JCPU | 端末すべてのプロセス使用時間 |
PCPU | 実行プロセスの使用時間 |
WHAT | 実行コマンド |
ディスク容量の確認
ディスク使用率が高まっている場合、どの領域がよく使用されているかを探します。容量が大きい領域やあまり使用されてない領域については、別領域への退避や削除、容量追加等の対応を行います。
パーティションごとの容量確認
dfコマンド(GNU coreutils 8.32)ではパーティションごとに割り当てられている容量、ディスク使用率などを確認します。
[root@example.com ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 16G 0 16G 0% /dev/shm
Filesystem | パーティション名 |
Size | 割り当て容量 |
Used | 使用容量 |
Avail | 残り容量 |
Use% | 使用率 |
Mounted on | マウント |
ディレクトリごとの容量確認
duコマンド(GNU coreutils 8.32)で指定のディレクトリの使用量を確認します。
例えば、ログディレクトリの中でどこが容量を使用しているかを確認する場合、以下のようにパスを指定します。
[root@example.com ~]# du -h /var/log
73M /var/log/httpd
24M /var/log/mail
:
:
メモリ/CPUの確認
メモリやCPUの使用率はおおよそ監視ツールなどで通知されるかと思いますが、詳細はコマンドで確認します。
メモリの使用率
freeコマンド(procps-ng 3.3.17)ではメモリの全体使用状況を確認します。-hオプションで単位をよしなに調整してくれます。
[root@example.com ~]# free -h
total used free shared buff/cache available
Mem: 30Gi 1.6Gi 27Gi 652Mi 3.2Gi 29Gi
total | 全体の容量 |
used | 使用中メモリ容量 |
free | 未割当ての容量 |
shared | 共有メモリ容量 |
buffers | ファイルバッファ |
cached | キャッシュ |
CPU/メモリの使用状況
topコマンド(procps-ng 3.3.17)では、どのプロセスがよく使用しているのかリアルタイムで確認します。topコマンドを実行後、Mを入力するとメモリの使用率順、Cを入力するとCPUの使用率順にプロセスが表示されます。
[root@example.com ~]# top
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
48996 root 20 0 2638412 86268 55808 S 0.0 0.3 4:53.76 dockerd
715 root 20 0 109736 85032 84008 S 0.0 0.3 1:33.73 systemd-journal
:
:
PID | プロセスID |
USER | プロセスを所有しているユーザ |
PR | 優先度 |
NI | 相対優先度 |
VIRT | 仮想メモリ |
RES | 物理メモリ |
SHR | 共有メモリ |
S | プロセスの状態 |
%CPU | CPU使用率 |
%MEM | メモリ使用率 |
VSZ | メモリ使用サイズ(仮想メモリを含む) |
RSS | メモリ使用サイズ(仮想メモリを除く) |
COMMAND | 実行コマンド |
プロセス使用状況の確認
プロセスを確認する際、psコマンドで処理状況を確認します。サーバを圧迫しているプロセスがある場合、停止等の対応を行います。
今回はpsコマンド(procps-ng 3.3.17)にオプションauxfを追加して、でプロセスの詳細表示と子プロセスを一緒に表示してみます。
[root@example.com ~]# ps auxf
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 2 0.0 0.0 0 0 ? S 2015 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 2015 10:06 \_ [migration/0]
root 4 0.0 0.0 0 0 ? S 2015 10:05 \_ [ksoftirqd/0]
:
:
USER | プロセスを所有しているユーザ |
PID | プロセスID |
%CPU | CPU使用率 |
%MEM | メモリ使用率 |
VSZ | メモリ使用サイズ(仮想メモリを含む) |
RSS | メモリ使用サイズ(仮想メモリを除く) |
TTY | プロセスを制御している端末名 |
STAT | プロセスの状態 |
START | プロセス開始時刻 |
TIME | プロセス稼働時間 |
COMMAND | 実行コマンド |
まとめ
アラートや障害対応ではどこで何が起きているか把握するため、把握したい項目に応じたコマンドやオプションを活用する必要があります。
これまで列挙してきたコマンドは一部となりますが、実務でも活用できるようにしていきたいと思います。