総合 サーバー健全化ミッション
師範 / 目安 45分
月曜の朝、事務局の扉を開けると鴫原さんが受話器を耳と肩で挟んだまま手を振ってきました。
「商店街のサーバーが、もう何が何やらだ。週末に若い衆が触ったらしくてな。動きは重いし、ログは出んし、名簿は読めんし、夜のまとめも止まっとる。1つずつ聞いても誰も覚えとらん」
受話器を置いて、鴫原さんが向き直ります。
「10問目だ。今度は何が壊れとるかも教えん。自分で見つけて、自分で直してくれ」
道場の最後の課題です。新しい道具は出てきません。問1から問9で使った道具を、正しい順番で当てられるかだけを問います。
障害が複数あるときの進め方
1つの故障を直すのと、4つの故障を同時に渡されるのとでは、難しさの質が違います。効くのは順番です。
まず、機械そのものが苦しんでいないかを見ます。 CPU を食い潰しているプロセスや、埋まったディスクは、他のすべての調査を狂わせます。土台が傾いたまま上の階を調べても意味がありません。
ターミナル
top -b -n 1 | head -15
ps aux --sort=-%cpu | head -5
df -h
du -sh /var/log/* 2>/dev/null | sort -h | tail -5top -b -n 1 はページャに入らず1回だけ測る書き方です。ps aux --sort=-%cpu は CPU を食っている順に並べます。df -h は残り容量、du -sh は「どこが食っているか」です。この2つは役割が違うので、両方見ます。
次に、見えるはずのものが見えているかを確かめます。 ファイルが読めない、コマンドが見つからない、といった手触りの問題です。
ターミナル
ls -l <対象>
which <コマンド>
head -1 <スクリプト>最後に、裏で動く仕掛けを見ます。 タイマーやサービスは、失敗しても目の前に出ません。
ターミナル
systemctl list-timers --all --no-pager
systemctl status <名前> --no-pager
journalctl -u <名前> -n 30 --no-pagerこの3段の順番は、実務でそのまま使えます。土台、手触り、裏方の順です。
直したことを記録に残す
実務の障害対応は、直して終わりではありません。何を直したかを残さないと、同じことが起きたときにまたゼロから調べることになります。今回は最後に報告書を書いてもらいます。
書式は問いません。何を見つけて何をしたかが、あとから読んで分かればそれで十分です。
完成条件
- サーバーの動きを重くしているものを止めること
/varの中を圧迫している大きなファイルを取り除くこと。残しておくべきログまで消さないこと- 会員名簿
/var/yumesaku/data/kaiin.csvが読めるようにすること - 夜の売上まとめのタイマーが、登録され動いている状態にすること。呼ばれるサービスが最後まで通り、
/var/log/yumesaku-uriage.logにまとめが書かれること - 直した内容を
/root/houkoku.txtに書き残すこと。4つの障害それぞれについて触れること
進め方
全部を一度に抱えないでください。1つ見つけたら1つ直し、直ったことを自分の目で確かめてから次へ行きます。それが最短です。
ヒントは3段階で、①方針、②使うコマンド、③部分解の順に出ます。1つも開けずに通せたら、その問題は自分のものです。
これで10問すべてです。鴫原さんが端末から目を上げて、短く言いました。
「もう、わしが見とらんでも大丈夫やな」
事務局の壁に、新しい紙が1枚貼られました。Linux道場・師範代を允許すると書かれています。ファイルを1つ探すところから始めて、いまあなたは何が壊れているかも知らされないサーバーを、自分の手で立て直せます。
課題
- CPU を食い潰しているプロセスを止めること
- /var の中を圧迫している大きなファイルを取り除くこと。必要なログまで消さないこと
- /var/yumesaku/data/kaiin.csv を読めるようにすること
- yumesaku-uriage.timer が登録され動いており、サービスが最後まで通ってログにまとめが書かれること
- 直した内容を /root/houkoku.txt に書き残すこと
ヒント
前のヒントを開くと次が開きます。開かずに解けると未開封クリアです