0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SadServersで障害復旧を体験してみた #2

Posted at

はじめに

トラブルシューティングの体験をしてliunxコマンドを記憶に定着させるためと
現場でどんなことをやっているか実際にやって経験値を積みたいのでやってみた。

#2のシナリオをやってみた

問題 webサーバーにaccess.logファイルがありそこにhttpリクエストが1行ずつ構成されているのでその中で最も多くアクセスしているIPアドレスを特定して指定されたファイルに書き込む事で解決できる。

スクリーンショット 2024-11-14 22.35.11.png

まずはlsでファイルがあるか確認した。

ls -la /home/admin/access.log

スクリーンショット 2024-11-14 22.26.41.png

ちゃんと存在していた

fileの中身をのぞいてみた

cat /home/admin/access.log

スクリーンショット 2024-11-14 22.27.27.png

確かになんかいっぱいアクセスされている、この中から一番アクセスされてるIPアドレスの特定...なるほど!分からん。

ヒントを見てみた

ヒントを見るとawkを使えるみたいなことを書いていた。みたことあるけどいまいち使い方がわからないので調べた。

awkとは

awk(オーク)と呼ぶ。由来はプログラミング言語開発者のAho(エイホ)さん、Weinberger(ワインバーガー)さん、Kernighan(カーニハン)さんの頭文字からきてるらしい

awk はテキスト処理が得意で表記表現の文字列の検索が得意で他にいっぱいやれることがあって全ては把握できていない

awk '{print $1}'

こんな構成ではfile内のスペースやタブなどで区切られている部分を絞るかんじで$1なら一番最初の区切りが対象になる
上のaccess.logファイルの中身でいうと、

   $2=-(ハイフン) 
   $3=-(ハイフン) 
   $4=タイムスタンプ

のようにいる部分だけ指定して表示させたり集計することができる。

これにいくつかコマンドを追加してIPアドレスの集計を行う

sort コマンド

sort(ソート)は表示入力やファイルの内容をソートする役割
ただ整列、並び替えするだけでは集計出来ないのでさらにコマンドを追加
-g オプション uniqの出力を数値で並べる
-r オプション逆順での意味のソートをする 数値が高い順に並ぶ

uniq コマンド

uniq(ユニーク)はソートされた内容の重複を削除して、重複した行の数を数える、このコマンドを正常に使うには先にsortで並び替える必要がある。
-c オプションでそれぞれの行が何回出現したかを表示する。

head コマンド

head(ヘッド) 上位10を出力する これを入れないと行が多すぎる時に見切れる

catからawkに渡す

cat /home/admin/access.log | awk '{print $1}' |sort | uniq -c | sort -gr | head

catでファイルの中身を出力してそれをパイプでawkに渡す事で、重複した行を削除して同じ行を計算してくれる。
表示のしていは$1だけなのでIPアドレスのみが多い順で10位まで出力される

スクリーンショット 2024-11-14 22.32.47.png

特定したIPアドレスを指定されたファイルに書き込む

vimなどのエディタではなくヒントに書かれてあるecho > {ファイル名}の形で記述する

# ファイルはSadServersから指定がある
echo 特定したIP > /home/admin/highestip.txt

回答が正解か確認してみる

スクリーンショット 2024-11-14 22.35.23.png

見事に正解した! ヒントがほぼ答えなのでそのコマンドについて調べて概要がわかると正解に辿りつけそう。ただ、全ての機能とかオプションまで覚えるのは大変だなと感じた。

まとめ

awkはテキスト処理と表記表現の文字列の検索が得意で、必要な情報だけ見たい時にそこだけピックアップできる。重複する情報もあるのでsortで並び替えてuniqソートされた内容の重複を削除して-cで集計する。
集計したものをsort -grunipの出力した内容を数値と逆順で並び替える。
これで最も多くアクセスしているIPアドレスを特定することができた。

感想

awkは奥が深くてやれることが多くあり全て把握するのには時間がかかると思った。
こうして実体験する過程で使い方を学ぶことで、実際に障害復旧する時に大いに役立つコマンドだと言うことが分かった。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?