私の小さなWebサイトはAlibabaCloudのECSで実行されており、Webサイトのサーバーログを分析してWebサイトのトラフィックを確認することがあります。ダークサイドによるダメージがないか見てみましょう!だから、いくつかのサーバーログ分析コマンドを集めて整理してください、あなたは試すことができます! |
1.IPアクセスの数を確認します。
awk '{print $ 1}' log_file | sort | uniq | wc -l
2.特定のページにアクセスした回数を表示します。
grep "/index.php" log_file | wc -l
3.各IPがアクセスしたページ数を確認します。
awk '{++ S [$ 1]} END {for(a in S)print a、S [a]}' log_file> log.txt
sort -n -t '' -k 2 log.txtを使用して、さらに並べ替えます
4.各IPがアクセスしたページ数を小さいものから大きいものへと並べ替えます。
awk '{++ S [$ 1]} END {for(a in S)print S [a]、a}' log_file | 並べ替え-n
5.特定のIPがアクセスしたページを確認します。
grep ^ 111.111.111.111 log_file | awk '{print $ 1、$ 7}'
6.検索エンジン統計のページを削除します。
awk '{print $ 12、$ 1}' log_file | grep ^ "Mozilla | awk '{print $ 2}' | sort | uniq | wc -l
7. 2015年8月16日の14:00に1時間に行われたIPアクセスの数を確認します。
awk '{print $ 4、$ 1}' log_file | grep 16 / Aug / 2015:14 | awk '{print $ 2}' | 並べ替え| uniq | wc -l
8.アクセス用の上位10個のIPアドレスを確認します
awk '{print $ 1}' | sort | uniq -c | sort -nr | head -10 access_log uniq -cはグループ統計と同等であり、統計を最上位の 猫に配置しますaccess.log | awk '{print $ 1}' | sort | uniq -c | sort -nr | head -10 cat access.log | awk '{counts [$(11)] + = 1}; END {for(url in counts)print counts [url]、url}
9.最も訪問された10個のファイルまたはページ
cat log_file | awk '{print $ 11}' | sort | uniq -c | sort -nr | head -10 cat log_file | awk '{print $ 11}' | sort | uniq -c | sort -nr | head -20 awk '{print $ 1}' log_file | sort -n -r | uniq -c | 並べ替え-n-r | 頭-20
最も訪問されたIPのトップ20
10.サブドメインによる訪問数は、リファラーに基づいて計算されますが、これはわずかに不正確です。
猫access.log | awk '{print $ 11}' | sed -e's / http: '-e's //.*//' | 並べ替え| uniq -c | 並べ替え-rn | 頭-20
11.転送サイズが最大のファイルを一覧表示します
cat www.access.log | awk '($ 7〜 / .php /){print $ 10 "" $ 1 "" $ 4 "" $ 7}' | sort -nr | head -100
12.出力が200,000バイト(約200kb)を超えるページと、対応するページの出現回数を一覧表示します
cat www.access.log | awk '($ 10> 200000 && $ 7〜 / .php /){print $ 7}' | sort -n | uniq -c | sort -nr | head -100
13.ログの最後の列にページファイルの転送時間が記録されている場合、クライアントにとって最も時間のかかるページがあります
cat www.access.log | awk '($ 7〜 / .php /){print $ NF "" $ 1 "" $ 4 "" $ 7}' | sort -nr | head -100
14.最も時間のかかるページ(60秒以上)と対応するページの出現回数を一覧表示します
cat www.access.log | awk '($ NF> 60 && $ 7〜 /。php/){print $ 7}' | sort -n | uniq -c | sort -nr | head -100
15.送信時間が30秒を超えるファイルを一覧表示します
cat www.access.log | awk '($ NF> 30){print $ 7}' | sort -n | uniq -c | sort -nr | head -20
16.現在のサーバーで実行中の各プロセスのプロセス数を逆の順序で一覧表示します
ps -ef | awk -F '' '{print $ 8 "" $ 9}' |並べ替え| uniq -c | sort -nr | head -20
17.apacheへの同時訪問の現在の数を表示します
httpd.conf内のMaxClientの数の違いは何ですか
netstat -an | grep ESTABLISHED | wc -l
18.次のパラメーターを使用して、データを表示できます
ps -ef | grep httpd | wc -l 1388 はhttpdプロセスの数をカウントし、1つのリクエストがApacheサーバーで使用されるプロセスを開始します。 Apacheが1388の同時リクエストを処理できることを意味します。この値は、Apacheが負荷状況に応じて自動的に調整できます。
netstat -nat | grep -i "80" | wc -l 4341 netstat -anは、システムの現在のネットワークリンクステータスを出力し、grep -i "80"は、ポート80に関連する接続を抽出するために使用されます。wc-l番号統計を接続するために使用されます。 返される最終的な数は、現在のすべてのポートに対する要求の総数です 。80netstat -na | grep ESTABLISHED | wc -l 376 netstat -anはシステムの現在のネットワークリンクステータスを出力し、grepESTABLISHEDは確立された情報を抽出します。接続。次に、wc -l statisticsによって返される最終的な数は、80個のポートすべてで確立された接続の総数です。 netstat -nat || grep ESTABLISHED | wc は、確立されたすべての接続の詳細なレコードを表示できます
19.各IPの接続数と各状態の接続の総数を出力します
netstat -n | awk '/ ^ tcp / {n = split($(NF-1)、array、 ":"); if(n <= 2)++ S [array [(1)]]; else ++ S [array [(4)]]; ++ s [$ NF]; ++ N} END {for(a in S){printf( "%-20s%s"、a、S [a]); ++ I} printf( "%-20s%s"、 "TOTAL_IP"、I); for(a in s)printf( "%-20s%s"、a、s [a]); printf( "%-20s%s" 、 "TOTAL_LINK"、N);} '
20.その他のコレクション
ログファイルで2012-05-04のアクセスページが最も高い上位20のURLを分析して並べ替えます
cat access.log | grep '04 / May / 2012 '| awk '{print $ 11}' | sort | uniq -c | sort -nr | head -20
訪問したページのURLアドレスでwww.abc.comのIPアドレスを照会します
cat access_log | awk '($ 11〜 / www.abc.com /){print $ 1}' | sort | uniq -c | sort -nr
最も訪問された10個のIPアドレスを取得し、時間でクエリすることもできます
cat linewow-access.log | awk '{print $ 1}' | sort | uniq -c | sort -nr | head -10
期間クエリログ期間
cat log_file | egrep '15 / Aug / 2015 | 16 / Aug / 2015 '| awk' {print $ 1} '| sort | uniq -c | sort -nr | head -10
2015/8/15から2015/8/16までの「/index.php?g=Member&m=Public&a=sendValidCode」のIPの逆順を分析します
cat log_file | egrep '15 / Aug / 2015 | 16 / Aug / 2015 '| awk '{if($ 7 == "/index.php?g=Member&m=Public&a=sendValidCode")print $ 1、$ 7}' | sort | uniq -c | sort -nr
($ 7〜 / .php /)$ 7に.phpが含まれている場合、出力されます。この文は、最も時間のかかる100PHPページを意味します。
cat log_file | awk '($ 7〜 /。php/){print $ NF "" $ 1 "" $ 4 "" $ 7}' | sort -nr | head -100
最も時間のかかるページ(60秒以上)と対応するページの出現回数を一覧表示します
cat access.log | awk '($ NF> 60 && $ 7〜 / .php /){print $ 7}' | sort -n | uniq -c | sort -nr | head -100
統計ウェブサイトのトラフィック(G)
cat access.log | awk '{sum + = $ 10} END {print sum / 1024/1024/1024}'
404接続をカウント
awk '($ 9〜 / 404 /)' access.log | awk '{print $ 9、$ 7}' | ソート
統計httpステータス
cat access.log | awk '{counts [$(9)] + = 1}; END {for(code in counts)print code、counts [code]} ' cat access.log | awk' {print $ 9} '| sort | uniq -c | sort -rn
1秒あたりの並行性
ウォッチ "awk '{if($ 9〜 / 200 | 30 | 404 /)COUNT [$ 4] ++} END {for(a in COUNT)print a、COUNT [a]}' log_file | sort -k 2 -nr |ヘッド-n10 "
帯域幅統計
cat apache.log | awk '{if($ 7〜 / GET /)count ++} END {print "client_request =" count}' cat apache.log | awk '{BYTE + = $ 11} END {print "client_kbyte_out =" BYTE / 1024 "KB"} '
特定の日に最も訪問された10のIPを見つける
cat /tmp/access.log | grep "20 / Mar / 2011" | awk '{print $ 3}' | sort | uniq -c | sort -nr | head
その日に最も高いIP接続を持つIPは何ですか
猫access.log | grep "10.0.21.17" | awk '{print $ 8}' | 並べ替え| uniq -c | sort -nr | ヘッド-n10
1時間にIP接続の数が最も多い10の期間
awk -vFS = "[:]" '{gsub( "-。*"、 ""、$ 1); num [$ 2 "" $ 1] ++} END {for(i in num)print i、num [i] } 'log_file | 並べ替え-n-k 3 -r | 頭-10
最も訪問された議事録を見つける
awk '{print $ 1}' access.log | grep "20 / Mar / 2011" | cut -c 14-18 | sort | uniq -c | sort -nr | head
5分のログを取る
if [$ DATE_MINUTE!= $ DATE_END_MINUTE]; then#開始タイムスタンプと終了タイムスタンプが等しいかどうかを判断する START_LINE = sed -n "/ $ DATE_MINUTE / =" $ APACHE_LOG | head -n1#等しくない場合、開始時刻を取得しますスタンプの行番号と終了タイムスタンプの行番号 tcpのリンクステータスを表示します
netstat -nat | awk '{print $ 6}' | sort | uniq -c | sort -rn netstat -n | awk '/ ^ tcp / {++ S [$ NF]}; END {for(a in S)print a、S [a]}' netstat -n | awk '/ ^ tcp / {++ state [$ NF]}; END {for(key in state)print key、 ""、state [key]} ' netstat -n | awk '/ ^ tcp / {++ arr [$ NF]}; END {for(k in arr)print k、 ""、arr [k]}' netstat -n | awk '/ ^ tcp / {print $ NF } '| sort | uniq -c | sort -rn netstat -ant | awk '{print $ NF}' | grep -v '[az]' | 並べ替え| uniq -c netstat -ant | awk '/ ip:80 / {split($ 5、ip、 ":"); ++ S [ip [1]]} END {for(a in S)print S [a]、 a} '| sort -n netstat -ant | awk' /:80 / {split($ 5、ip、 ":"); ++ S [ip [1]]} END {for(a in S)print S [ a]、a} '| sort -rn | head -n 10 awk' BEGIN {printf( " リクエスト数の上位20個のIPを検索します(通常、攻撃のソースを見つけるために使用されます): netstat -anlp | grep 80 | grep tcp | awk '{print $ 5}' | awk -F: '{print $ 1}' | sort | uniq -c | sort -nr | head -n20 netstat -ant | awk '/:80 / {split($ 5、ip、 ":"); ++ A [ip [1]]} END {for(i in A)print A [i]、i} '| sort -rn | head -n20 tcpdumpを使用してポート80アクセスをスニッフィングし、誰が最大値を持っているかを確認します tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F "。" '{print $ 1 "。" $ 2 "。" $ 3 "。" $ 4}' | sort | uniq -c | sort -nr | head-20 さらにtime_wait接続を検索 netstat-n | grep TIME_WAIT | awk '{print $ 5} '| sort | uniq -c | sort -rn | head-n20 その他のSYN接続を検索 netstat -an | grep SYN | awk' {print $ 5} '| awk -F:' {print $ 1} '| sort | uniq -c | sort -nr | more ポート netstatに従ってプロセスを一覧表示します-ntlp | grep 80 | awk '{print $ 7}'| cut -d / -f1 接続数と現在の接続数を表示 netstat -ant | grep $ ip:80 | wc -l netstat -ant | grep $ ip:80 | grep EST | wc -lIP 訪問数を表示 netstat-nat | grep ":80" | awk '{print $ 5}' | awk -F: '{print $ 1}' | sort | uniq -c | sort-n現在のリンクステータスを分析するLinuxコマンド netstat-n | awk '/ ^ tcp / {++ S [$ NF]} END {for(a in S)print a、S [ a]} ' watch "netstat -n | awk' / ^ tcp / {++ S [$ NF]} END {for(a in S)print a、S [a]} '"#時計は常に LAST_ACKを監視できます5 #Close TCP接続は2方向で閉じる必要があります。両当事者はFINを送信して、一方向のデータの閉鎖を示します。通信当事者が最後のFINを送信すると、送信者はLAST_ACK状態になります。送信者が最後のFIN、送信者はLAST_ACK状態です。TCP接続全体は、相手の確認(FinのAck確認)後に実際に閉じられます 。SYN_RECV30#は、処理を待機している要求の数を示します。ESTABLISHED1597 #は、通常のデータ送信を示します。status; FIN_WAIT1 51#サーバーがアクティブにtcp接続を閉じるように要求し ていることを示します; FIN_WAIT2 504#クライアントが接続を中断した ことを示します; TIME_WAIT 1057#処理されてタイムアウトの終了を待機した要求の数を示します。