障害などで使うコマンド・手順一覧

2020.3.4 (水)

障害時っていうのは「まずは原因がわからない」っていうところが起点になるので、そこからはじめます。たいていの場合、運用者・管理者はだいたいの予想がつくということもあるのだけど、それでも「何もわからない」というのを起点にした方がいいです。障害は何かしらの機能不全ということだと思うので、その機能不全の原因を探ります。
目に見える機能不全とある条件下のみで発生する機能不全もあるので一概には言えませんが、いろいろな角度から探りを入れます。コンピューターの嫌なところは全体を俯瞰できないというところで結局は細々と自分で具y帯的なところを洗い出して最終的に(総合的に)俯瞰図を頭の中で作成してそれを見ながら判断するということになります。

基本的な確認(HDDストレージの容量・メモリ・CPUロードアベレージ)

ロードアベレージを確認します。簡易的にはuptimeで十分です。前回の再起動日時も確かめましょう。
もちろんマシンの環境によりますがロードアベレージは

$ uptime
 12:15:00 up 4 days, 21:29,  1 user,  load average: 0.00, 0.17, 0.56

ちょっと詳しく見たい場合はtopで状態を見たほうがいいです。メモリやプロセスも同時に確認できます。

top - 12:16:56 up 4 days, 21:31,  1 user,  load average: 0.04, 0.15, 0.51
Tasks: 134 total,   1 running, 133 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  13382960k total,  3956120k used,  9426840k free,   174992k buffers
Swap:  4227068k total,        0k used,  4227068k free,  2691016k cached

ストレージの使用量を確認しておきます。大まかなHDDの使用率を確認します。100%になっていると書き込み自体ができなくなるので障害の原因になります。

$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_voyager3-lv_root
                       16G   13G  2.2G  86% /
tmpfs                 6.4G     0  6.4G   0% /dev/shm
/dev/sda1             477M   68M  384M  16% /boot

サービス、デーモンなどの起動状況

起動しているサービスの一覧を出します。ここからプロセスやスレッドを探してゆくこともできます。

# service --status-all
lvmetad は停止しています
dmeventd は停止しています
netconsole モジュールは読み込まれていません。
設定されたデバイス:
lo eth0
(中略)
sandbox is stopped
saslauthd は停止しています
openssh-daemon (pid  984) を実行中...
svnserve は停止しています

起動しているサービスの利用中のポートを洗い出します。停止してはいけないもの、または無駄に動いているものを確認できます。

# netstat -ltupn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:6379                0.0.0.0:*                   LISTEN      1092/redis-server *
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      984/sshd
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1074/master
tcp        0      0 :::6379                     :::*                        LISTEN      1092/redis-server *
tcp        0      0 :::22                       :::*                        LISTEN      984/sshd
udp        0      0 0.0.0.0:35532               0.0.0.0:*                               26232/local
udp        0      0 192.168.60.162:123          0.0.0.0:*                               995/ntpd
udp        0      0 127.0.0.1:123               0.0.0.0:*                               995/ntpd
udp        0      0 0.0.0.0:123                 0.0.0.0:*                               995/ntpd
udp        0      0 ::1:123                     :::*                                    995/ntpd
udp        0      0 fe80::21a:4aff:fe4f:5c04:123 :::*                                    995/ntpd
udp        0      0 :::123                      :::*                                    995/ntpd

procの調査

procfs