シェルスクリプトは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 でカスタム難易度のマインスイーパ ゲームを実装する

推薦する

インターフェーステストプラットフォームを構築するためのDjango+Vue+Dockerの詳細な説明

1. 冒頭の2つの単語みなさんこんにちは。私の名前はLin Zonglinです。私はテストエンジニア...

Uniappがスライディングスコアリング効果を実現

この記事では、スライディングスコアリングを実装するためのuniappの具体的なコードを参考までに共有...

Alibaba Cloud Centos 7.5 に MySQL をインストールするチュートリアル

CentOS 7 の yum ソースには、MySQL を正常にインストールするための mysql-s...

LambdaProbe を使用して Tomcat を監視する方法

導入: Lambda Probe (旧称 Tomcat Probe) は、Apache Tomcat...

Windows で Graphviz をインストールして開始する方法のチュートリアル

ダウンロードとインストール環境変数の設定インストール環境変数の設定確認基本的な描画の紹介グラフディグ...

Vue+elementUI コンポーネントは、折りたたみ可能な動的レンダリングのマルチレベル サイドバー ナビゲーションを再帰的に実装します。

かなり前に実装された機能ですが、クリックすると選択したメニュー項目の背景色が白くなることに気付きまし...

HTMLシールドの右クリックメニューと左クリック入力機能の例

右クリックメニューを無効にする <body oncontextmenu=self.event....

Dockerを使用してブログサイトを素早く構築する方法の詳細な説明

目次1. 準備2. 展開プロセス3. アクセステストHalo は、ブログに慣れている学生に追加のオプ...

Vue のスロットスコープの詳細な理解(初心者向け)

Baidu には slot-scope に関する記事が既にたくさんありますが、以前よく学習しておら...

ie8/ie9/ie10/ie11 chrome firefox を区別するための CSS コード

ウェブサイトの互換性のデバッグは本当に面倒です。今日のウェブサイト デザイナーは、以前よりもはるかに...

Linux ディスクとディスク パーティションを理解するための記事

序文Linux システムのすべてのハードウェア デバイスは、ファイルの形式で表現され、使用されます。...

Vueプロジェクトのフロントエンドを最適化およびパッケージ化するための必須のボーナスアイテム

目次序文1. ルーティングの遅延読み込み1. ルートの遅延読み込みが必要なのはなぜですか? 2. ル...

MySQL 8.0はJSONを扱えるようになりました

目次1. 概要2. JSON基本ツール3. JSONパス式4. JSONを検索して変更する序文:長い...

MySql カンマ連結文字列クエリの 2 つの方法

次の2つの関数は、 FIND_IN_SETと同じように使用されます。使用する場合、 FIND_IN_...