シェルスクリプトはNginxのaccess.logのPVを定期的にカウントし、APIに送信してデータベースに保存します。

シェルスクリプトはNginxのaccess.logのPVを定期的にカウントし、APIに送信してデータベースに保存します。

1. PVとIPの統計

一日のPV(ページビュー)をカウントする

cat access.log | sed -n /`date "+%d\/%b\/%Y"`/p |wc -l

ある日のPVを数える

cat access.log | sed -n '/20\/Sep\/2018/p' | wc -l

ログで最もアクセス数が多い上位10のIPアドレスを表示します

cat access.log.1 |cut -d ' ' -f 1 | sort |uniq -c | sort -nr | awk '{print $0 }' | head -n 10

ログで1,000回以上の訪問がある上位10のIPアドレスを表示します

cat access.log.1 |cut -d ' ' -f 1 | sort |uniq -c | sort -nr | awk '{if($1>1000) print $0 }' | head -n 10

2. curlはデータを送信する

curlを使用してGETリクエストを送信する

curl http://127.0.0.1:8080/login?admin&passwd=12345678

curlを使用してPOSTリクエストを送信する

curl -d "user=admin&passwd=12345678" http://127.0.0.1:8080/login

curlを使用してJSONデータを送信する

curl -H "Content-Type:application/json" -X POST -d '{"user": "admin", "passwd":"12345678"}' http://127.0.0.1:8000/login

curl を使用して動的パラメータ POST リクエストを送信する

curl -i -X ​​POST -H "'コンテンツタイプ':'application/json'" -d '{"ATime":"'$atime'","BTime":"'$btime'"}' $url
curl -i -X ​​POST -H "'Content-type':'application/json'" -d '{"ATime":"'${atime}'","BTime":"'{$btime}'"}' ${url}

3. シェルスクリプトの統計と送信

#!/bin/bash
log_path=/var/log/nginx/access.log
ドメイン="http://127.0.0.1:8080/data/count"
log_date = `日付 "+%d/%b/%Y"`
${log_date} をエコーし​​ます
total_visit=`cat ${log_path} | grep $log_date|wc -l`
curl -d "count=${total_visit}" ${domain}
$total_visit をエコーする

4. サーバーはそれを受け入れ、データベースに保存します。

@RequestMapping(値 = "/count")
  パブリック void count(文字列 count){
  //ビジネスコード}

要約する

上記は私が紹介したシェルスクリプトです。Nginx の access.log の PV を定期的にカウントし、API に送信してデータベースに保存します。お役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。すぐに返信します。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

以下もご興味があるかもしれません:
  • シェルスクリプト nginx 自動化スクリプト
  • シェルスクリプトを使用して Nginx ログを分割するサンプルコード
  • Nginx キャッシュを一括クリアするシェル スクリプト
  • nginx ログカットシェルスクリプト
  • 一般的な nginx コマンドをシェル スクリプトに組み込む方法の詳細な説明

<<:  MySql 5.7.17 winx64 のインストールと設定に関する詳細なチュートリアル

>>:  ネイティブ js でカスタム難易度のマインスイーパ ゲームを実装する

推薦する

Linux の運用と保守で netstat の代わりに ss コマンドを使用する方法

序文Linux サーバーを操作および管理するときに、最もよく使用されるコマンドの 1 つが nets...

CocosCreator で物理エンジン ジョイントを使用する方法

目次マウスジョイント マウスジョイント距離ジョイント距離ジョイントモータージョイント直動ジョイント変...

HTMLはa要素hrefのURLリンクを自動的に更新したり新しいウィンドウを開いたりする機能を実装する

場合によっては、次のような機能を実装したいことがあります。リンクをクリックします。リンクがブラウザで...

CSS が初期読み込み時の白い画面の時間に与える影響

外部 CSS ファイルを使用したレンダリング パイプライン上図では、HTML データの要求から DO...

mysql バッチで大量のデータを削除する

mysql バッチで大量のデータを削除する1000万件のレコードを持つテーブル(syslogs)があ...

アップロード画像コントロールを実現するネイティブ js

この記事の例では、アップロード画像コントロールを実装するためのjsの具体的なコードを参考までに共有し...

Vue3.0はチェックボックスコンポーネントのカプセル化を実装します

この記事では、チェックボックスコンポーネントのカプセル化を実装するためのvue3.0の具体的なコード...

Vue は無限ロードウォーターフォールフローを実装します

この記事では、参考までに、無限ロードウォーターフォールフローを実現するためのVueの具体的なコードを...

dockerがredisを再起動するとmysqlデータが失われる問題を解決する

公式ドキュメント:したがって、mysql は次のように起動する必要があります。 docker run...

画像を使用してハイパーリンクのパーソナライズされた下線を実現します

画像内に下線付きのリンクが表示されても驚かないでください。実はとても簡単なので、あなたにもできるので...

tomcat ログ ディレクトリ内のログ ファイルの分析 (概要)

tomcat が起動されるたびに、次のログ ファイルがログ ディレクトリに自動的に生成され、日付順...

JavaScript+html はフロントエンドページでランダム QR コード検証を実装します

クールなフロントエンドページのランダムQRコード検証を参考までに共有します。具体的な内容は次のとおり...

LinuxでVIMエディタを使う方法

豊富なオプションを備えた強力なエディターとして、Vim は多くのユーザーに愛されています。この記事で...

Linux での MySQL 8.0.11 のインストールに関するチュートリアル

1. 公式サイトにアクセスしてインストールパッケージをダウンロードしますダウンロードリンク: クリッ...

ブルートフォース攻撃を防ぐためのシェルスクリプト設定

シェルスクリプトはアクセス制御を設定し、複数回のログイン失敗後にIPをブロックしてSSHのブルートフ...