この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
こんな場面を見たことはありませんか?その差は知識量ではなく、日々の「観察眼」の差です。
この記事では、20年以上Linuxサーバーの運用に携わってきた経験から、障害の予兆を捉えるための観察眼と、日々の運用で身につけるべき「違和感を掴む技術」をお伝えします。
この記事のポイント
・障害は突然起きるのではなく、必ず前兆がある
・観察眼はコマンドを覚えることより先に身につけるべき姿勢
・「昨日と違う」を言語化できることが早期発見につながる
・見逃しやすい3つの怪しいパターンを具体例で解説する
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
「何もないのに嫌な予感がする」は技術ではなく経験だ
私がSEとして現場に出るようになった2001年、最初に配属されたプロジェクトの先輩から言われた言葉があります。「サーバーは毎朝挨拶しに行け。ログを見るんじゃない、サーバーが正常な顔をしているかどうかを確認しに行くんだ」
当時の私には意味がよくわかりませんでした。ログを見るんじゃないなら何を見るのか、と。
でも20年以上たった今、この言葉の意味がよくわかります。
サーバーは「正常ですよ」というフリをしながら、静かに壊れていきます。監視ツールがアラートを上げるより前に、経験のある人間の目には「なんか変だ」という信号が届くことがある。その信号をキャッチできるかどうかが、観察眼の差です。
セミナーで3,100名以上を指導してきた中で、「障害の予兆を掴んだことがある」と言えるエンジニアは、実際にどんなことを見ているのかを整理してみました。
怪しい兆候を見逃しやすい3つのパターン
1. レスポンスが「遅い」ではなく「ばらついている」
サーバーのレスポンスが遅い、という状態は誰でも気づきます。問題は「たまに遅い」「時々引っかかる」というばらつきです。私が現場で何度も見てきたパターンがあります。平均レスポンスタイムは正常範囲内なのに、ある特定の時間帯だけ突然跳ね上がる。あるいは、同じ処理なのに10回中2回だけ遅い。
こういうばらつきは、多くの場合「何かが競合している」サインです。ディスクのI/Oが詰まり始めているとか、接続プールが埋まりかけているとか、バックグラウンドのcronジョブが予想より時間を食っているとか。
averageだけを見ていると見逃します。標準偏差やパーセンタイル(95th、99th)まで目が届くようになると、見える世界が変わります。
私が現場でよく使う確認手順はこうです。
# 直近のnginxアクセスログからリクエスト時間を集計する # $request_timeが含まれるログフォーマット前提 awk '{print $NF}' /var/log/nginx/access.log | sort -n | tail -20 # 実際の出力例(末尾20件 = 遅いリクエスト) 0.023 0.025 0.031 0.041 0.055 0.072 0.089 0.143 0.201 0.312 0.445 0.512 0.723 0.891 1.234 1.456 2.011 3.445 5.102 12.330 ← これが出たら要確認
2. ディスク使用率が「増えている」ではなく「増え方が変わった」
ディスク使用量が増えているのは正常なことです。ログが積まれたり、データが蓄積されたりするのは当然。怪しいのは「増え方のペースが変わったとき」です。
たとえば、普段は1日あたり100MB程度しか増えないサーバーで、ある日突然1GBずつ増え始めた。こういう変化は、単純な「ディスク残量アラート」では拾えません。残量が80%になって初めてアラートが出ますが、そのときにはもう原因の特定が大変になっていることが多い。
私が現場でやっていたのは、cronで毎日dfの出力をファイルに書き出し、前日との差分を見る、という単純な仕組みです。
# cronに登録するスクリプト例(/usr/local/bin/disk-daily.sh) #!/bin/bash DATE=$(date +%Y%m%d) YESTERDAY=$(date -d '1 day ago' +%Y%m%d) LOG_DIR="/var/log/disk-history" mkdir -p "${LOG_DIR}" df -h > "${LOG_DIR}/df_${DATE}.txt" # 前日ファイルがあれば差分出力 if [ -f "${LOG_DIR}/df_${YESTERDAY}.txt" ]; then echo "=== ディスク使用量の変化 (${YESTERDAY} -> ${DATE}) ===" diff "${LOG_DIR}/df_${YESTERDAY}.txt" "${LOG_DIR}/df_${DATE}.txt" fi
3. プロセス数が「多い」ではなく「同じプロセスが複数起動している」
`ps aux` でプロセス一覧を見たとき、「なんか数が多い気がする」という感覚を持てるかどうか。特に注意が必要なのは、同じ名前のプロセスが複数走っている状況です。1つだけ走っているはずのデーモンが3つ起動していたり、cronで起動するシェルスクリプトが前回の実行が終わらないまま次の起動が走っていたり。
私が現役SE時代に経験した実際のインシデントです。本番のApacheが突然リクエストを処理しなくなった。ログには何も残っていない。調べたら、MaxClientsを超えたプロセスが積み上がって、新規接続を受け付けられない状態になっていました。
その原因は、画像処理の重いバッチ処理がniceコマンドなしで走っていたため、CPUを専有してApacheの子プロセスがタイムアウト→再起動を繰り返し、プロセス数が膨れ上がったというものでした。
こういうケースを防ぐには、プロセス数の「正常な範囲」を事前に把握しておくことです。
# プロセス名ごとの数を集計する ps aux | awk '{print $11}' | sort | uniq -c | sort -rn | head -20 # 実際の出力例 52 /usr/sbin/httpd ← MaxClients=50のはずが超えている 12 /usr/bin/php-fpm 8 [kworker/...] 3 /bin/sh ← 同じshが3つ走っている。要確認 2 /usr/sbin/mysqld 1 /usr/sbin/sshd
観察眼は「記録」から生まれる
「違和感を掴む技術」と書きましたが、実は違和感とは「過去との比較」によってしか生まれません。普段がどんな状態かを知らない人は、異常を異常と認識できません。これはLinuxに限らず、あらゆる運用の基本です。
私のセミナーでは、「サーバー観察ノートをつけなさい」と受講生に伝えています。難しいことではなく、毎朝確認したときのdf、ps、vmstatの結果をメモしておく、それだけです。
1ヶ月続けると、自分のサーバーの「普通」が頭に入ります。その「普通」との差分こそが、怪しい兆候の正体です。
たとえばこういう確認を毎朝の習慣にするといいです。
# 毎朝確認するコマンドセット(3分で終わる) # 1. ディスク使用量 df -h # 2. メモリ使用量 free -m # 3. ロードアベレージ(3つの数字がCPU数以下なら正常) uptime # 4. 直近のエラーログ(昨夜から今朝の間) journalctl -p err --since "yesterday" --until "now" | tail -30 # 5. プロセス数(HTTPDやphp-fpmの数を確認) ps aux | grep -c httpd
「見ていない」と「気づいていない」は全然違う
受講生からよく聞かれる質問が「観察眼ってどうやって鍛えるんですか?」というものです。私の答えはいつも同じです。「毎日見ること、そして記録すること」。
センスではありません。毎日コツコツ積み重ねた観察の記録が、違和感の解像度を高めていきます。
20年以上の運用経験の中で、「なんか変だ」という感覚で問題を早期発見できた瞬間は何十回もありました。でも振り返れば、それは全て「いつもと違う何かがある」という、記録に基づいた比較から来ていた。
コマンドの数を覚えることも大事ですが、毎日サーバーに向き合う習慣こそが、エンジニアとしての本当の地力になります。
「異常かどうかわからない」時のトラブルシュート手順
「これは異常なのか、それとも普通の状態なのか判断できない」——観察を始めたばかりの頃は誰でもこの壁にぶつかります。そういうときは次の順序で確認してください。
・まずログのエラー行を確認する:`journalctl -p err --since "1 hour ago"` でERR以上が出ていれば明確な異常です
・次にリソース上限に達していないか見る:`df -h` でディスク90%超、`free -m` でSwap使用率50%超は要警戒
・プロセスが想定外に多くないか確認する:主要デーモンのプロセス数が普段の倍以上なら調査が必要です
・「昨日と何かが違うか」を自分に問う:数値が正常範囲でも「違和感がある」なら原因を一つひとつ潰していく
「異常かどうかわからない」という感覚自体が、観察眼が育ちつつあるサインです。迷ったら確認する、この習慣が観察眼をさらに鍛えます。
まとめ
Linuxサーバーの「怪しい兆候」を見逃さないための観察眼について、3つのパターンと習慣を紹介しました。| 見るべきポイント | 怪しいサイン | 確認コマンド |
|---|---|---|
| レスポンスタイム | 平均は正常でもばらつきが大きい | awk '{print $NF}' access.log | sort -n | tail -20 |
| ディスク使用量 | 増え方のペースが急変した | df -h を毎日記録して差分確認 |
| プロセス数 | 同じプロセスが想定より多く起動している | ps aux | awk '{print $11}' | sort | uniq -c | sort -rn |
| システム全体 | 「昨日と何かが違う」という感覚 | 毎朝5コマンドセットで記録を継続する |
この記事が、毎日のサーバー観察を習慣化するきっかけになれば幸いです。
よくある疑問:どこから観察を始めればいいか?
「何を見ればいいのかわからない」という方のために、観察の始め方をまとめます。最初から全部やろうとすると続きません。まず1つだけ選んでください。
・ディスクから始める:`df -h` を毎日同じ時間に実行してメモする。1週間続けると増え方のパターンが見えてきます
・プロセスから始める:`ps aux | grep httpd | wc -l` の数を毎朝記録する。その数字が「普通」の状態です
・ログエラーから始める:`journalctl -p err --since "1 hour ago"` を習慣化する。エラーゼロが続く日常が「正常」のベースラインです
どれか1つを1ヶ月続けてください。気づくと「普通の状態」が体に染み込み、違和感を感じる感覚が育ってきます。
観察眼は特別な才能ではありません。始める人と始めない人の差だけです。
サーバーの「怪しい兆候」を掴む観察眼も含め、現場で通用するLinuxの「型」を身につけたいあなたへ
障害の前兆を見抜く力、ログを正しく読む習慣、設定変更前後の確認手順——これらは、実際に手を動かす環境の中でこそ身につくスキルです。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、'Linuxサーバー構築入門マニュアル(図解60P)'を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 前のページへ:本番適用前に検証する習慣の身につけ方
- この記事の属するカテゴリ:Linux学習ガイドへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます