顧客環境を偵察する
目標
文書もダッシュボードもない顧客先のサーバーに初めて入り、30分以内に環境地図を1枚描き出せるようになります。
なぜ重要なのか
見知らぬ環境で最も高くつくミスは、適当なログを開いてみることです。ログは海であり、サイズも形式も知らずに入ると、時間だけが消えます。偵察の目的は答えを見つけることではなく、探索範囲を確定することです。ファイルが何行かがわかれば、grep1回が何秒かがわかり、収集区間がわかれば、報告された時刻のログがそもそも存在するかどうかがわかります。そして容量の確認では、必ず2つを一緒に見ます。ブロックとinodeは別のリソースなので、容量が残っていてもinodeが尽きるとファイルが作れません。dfだけを見て「ディスクには余裕があります」と顧客に答えて、あとで問い返されることが、実際によくあります。
ステップ
/root/reconディレクトリを作成してください。- このシステムのディストリビューション名が入るように、
/root/recon/os.txtを作成してください。 /opt/dataの下のファイル一覧をサイズ付きで/root/recon/files.txtに保存してください。/opt/dataの最上位で最も容量が大きいファイル名だけを/root/recon/biggest.txtに書いてください。/opt/data/web.logの全体の行数を、/root/recon/weblog_lines.txtに数字で書いてください。- ファイルシステムの容量とinodeの使用量を両方とも
/root/recon/disk.txtに保存してください。 /opt/data/web.logで最も早い時刻と最も遅い時刻を、/root/recon/timerange.txtに書いてください。- 上で調べたことを
/root/recon/map.md1枚にまとめてください。ディストリビューション、最大のファイル名、web.logの行数、ログの収集区間がすべて入っている必要があります。
参考
cat /etc/os-release,ls -lS,du -h,wc -l,df -h,df -i- 2つのコマンドの出力を1つのファイルにまとめるには、
>>で追記します。 - よくあるミス1:
dfだけを確認して、inodeを見落としてしまうことです。容量とinodeは別のリソースです。 - よくあるミス2: ステップ4でパスまで書いてしまうことです。ファイル名だけが必要です。
偵察用の作業ディレクトリを作る
/root/reconディレクトリを作成してください。
出力物を1か所に集めておくと、あとでレポートにまとめられます。mkdirに-pを付けると、すでに存在してもエラーになりません。
ディストリビューションを確認する
このシステムのディストリビューション名が入るように、/root/recon/os.txtを作成してください。
ディストリビューションの情報は、/etc/os-releaseにkey=valueの形で入っています。この値が、ログのパスとパッケージコマンドを決めます。
データのインベントリを作る
/opt/dataの下のファイル一覧をサイズ付きで/root/recon/files.txtに保存してください。
/opt/dataをサイズ付きで一覧表示してください。ls -lやduの出力を、そのままファイルに渡せば済みます。
最も大きいファイルを探す
/opt/dataの最上位で最も容量が大きいファイル名だけを/root/recon/biggest.txtに書いてください。
目で数えずに並べ替えてください。lsにはサイズ順に並べ替えるオプションがあり、duはsortと組み合わせます。ファイル名だけを書きます。
Webログの行数を数える
/opt/data/web.logの全体の行数を、/root/recon/weblog_lines.txtに数字で書いてください。
行数がわかれば、grep1回が何秒かかるかを予測できます。wcの行を数えるオプションを使ってください。
容量とinodeを一緒に記録する
ファイルシステムの容量とinodeの使用量を両方とも/root/recon/disk.txtに保存してください。
dfは既定ではブロックだけを表示します。inodeを見る別のオプションがあり、2つの出力が1つのファイルにどちらも入っている必要があります。
ログの収集区間を調べる
/opt/data/web.logで最も早い時刻と最も遅い時刻を、/root/recon/timerange.txtに書いてください。
web.logの2つ目のフィールドが時刻です。そのフィールドだけを取り出して並べ替えると、最も早い値と最も遅い値が両端に来ます。
環境地図1枚にまとめる
上で調べたことを/root/recon/map.md1枚にまとめてください。ディストリビューション、最大のファイル名、web.logの行数、ログの収集区間がすべて入っている必要があります。
前のステップで調べた値をMarkdown1枚に集めてください。ディストリビューション、最大のファイル、ログの行数、収集区間がすべて入っている必要があります。