コース一覧
Linux道場 商店街サーバー障害対応の10問
総合 サーバー健全化ミッション

Linux道場 商店街サーバー障害対応の10問

Linux入門で身に付けた技を、商店街事務局のサーバー当番として試す演習専用コースです。解説はありません。障害の報告と復旧条件だけを読み、原因を自分で突き止めて直します。手が止まったときのために、方針・使うコマンド・部分解の3段階のヒントを各問に用意しています。他の道場と違い、白紙から書き始めるのではなく、すでに壊れている機械の前に座るところから始まります。ブラウザの中で本物の Debian が動いていて、打ったコマンドはそのまま本物の機械に効きます。迷子のファイル探しから始まり、ログからの原因特定、権限、ディスク不足、暴走プロセス、PATH、スクリプトの起動失敗、定期実行の停止、バックアップからの復元と進み、最後は複数の障害が同時に起きたサーバーを健全な状態まで戻します。1問15分から45分、全10問で約5時間です。Linux入門を終えて「コマンドは知っているが、壊れた機械を前にすると手が止まる」と感じている方に向いています。

1
初段
01. 迷子のファイルを探し出せ15分
02. ログから犯人を特定せよ20分
03. 開けないファイルを開けろ20分
04. ディスクを空けろ25分
2
中段
01. 暴走プロセスを止めろ25分
02. コマンドが見つからない30分
03. 動かないスクリプトを直せ30分
3
師範
01. 定期実行が動かない理由を突き止めろ30分
02. バックアップから復元せよ35分
03. 総合 サーバー健全化ミッション45分

総合 サーバー健全化ミッション

師範 / 目安 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 -5

top -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段の順番は、実務でそのまま使えます。土台、手触り、裏方の順です。

直したことを記録に残す

実務の障害対応は、直して終わりではありません。何を直したかを残さないと、同じことが起きたときにまたゼロから調べることになります。今回は最後に報告書を書いてもらいます。

書式は問いません。何を見つけて何をしたかが、あとから読んで分かればそれで十分です。

完成条件

  1. サーバーの動きを重くしているものを止めること
  2. /var の中を圧迫している大きなファイルを取り除くこと。残しておくべきログまで消さないこと
  3. 会員名簿 /var/yumesaku/data/kaiin.csv が読めるようにすること
  4. 夜の売上まとめのタイマーが、登録され動いている状態にすること。呼ばれるサービスが最後まで通り、/var/log/yumesaku-uriage.log にまとめが書かれること
  5. 直した内容を /root/houkoku.txt に書き残すこと。4つの障害それぞれについて触れること

進め方

全部を一度に抱えないでください。1つ見つけたら1つ直し、直ったことを自分の目で確かめてから次へ行きます。それが最短です。

ヒントは3段階で、①方針、②使うコマンド、③部分解の順に出ます。1つも開けずに通せたら、その問題は自分のものです。


これで10問すべてです。鴫原さんが端末から目を上げて、短く言いました。

「もう、わしが見とらんでも大丈夫やな」

事務局の壁に、新しい紙が1枚貼られました。Linux道場・師範代を允許すると書かれています。ファイルを1つ探すところから始めて、いまあなたは何が壊れているかも知らされないサーバーを、自分の手で立て直せます。

課題

  1. CPU を食い潰しているプロセスを止めること
  2. /var の中を圧迫している大きなファイルを取り除くこと。必要なログまで消さないこと
  3. /var/yumesaku/data/kaiin.csv を読めるようにすること
  4. yumesaku-uriage.timer が登録され動いており、サービスが最後まで通ってログにまとめが書かれること
  5. 直した内容を /root/houkoku.txt に書き残すこと

ヒント

前のヒントを開くと次が開きます。開かずに解けると未開封クリアです

①方針 順番が効きます。まず土台 (暴走プロセスとディスク) を見て、次に手触り (読めないファイル) を見て、最後に裏方 (タイマーとサービス) を見ます。土台が傾いたまま上を調べても時間を捨てるだけです

ヒント 2ヒント 1 を開くと読めます
ヒント 3ヒント 2 を開くと読めます
  • 1. ps aux --sort=-%cpu と top -b -n 1 で、機械を苦しめているものを探す
  • 2. df -h と du -sh /var/log/* | sort -h で、ディスクを圧迫しているものを特定する
  • 3. ls -l で、読めないファイルの原因を確かめる
  • 4. systemctl list-timers と journalctl -u で、止まった定期実行を追う
  • 5. 1つ直すたびに、自分の目で直ったことを確かめる
  • 6. 直した内容を /root/houkoku.txt に書き残す

8 項目で採点します