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

推薦する

最新の超詳細な VMware 仮想マシンのダウンロードとインストールのグラフィック チュートリアル

目次1. 仮想マシンをダウンロードする2. 仮想マシンのインストールVMware のダウンロードとイ...

Linux システムの仮想ホストで Swoole Loader 拡張機能を有効にする方法

特記事項: Swoole 拡張機能のみがインストールされ、サーバーはホストにインストールされません。...

MySQL 最適化: キャッシュ最適化

何人かのブロガーが私の記事を評価してくれたのは嬉しいです。マークと知り合ってからは、私は彼をフォロー...

K3s 入門ガイド - Docker で K3s を実行するための詳細なチュートリアル

k3dとは何ですか? k3d は、Docker で K3s クラスターを実行するための小さなプログ...

Dockerのインストール、イメージの作成、NodeJSプログラムの読み込みと実行の詳細なプロセス

システム環境: Windows 7 1. DockerをインストールするDocker公式サイトからd...

CentOS 7 で yum を使用して MySQL 5.7.20 をインストールする最も簡単な方法

CentOS7 のデフォルトのデータベースは mariadb ですが、mysql を使っている人も多...

Linux がますます人気になっている 10 の理由

Linux はますます多くのユーザーに愛されてきました。なぜ Linux はこれほど急速に発展し、い...

Node.js の非同期ジェネレータと非同期反復の詳細な説明

序文ジェネレーター関数は、async/await が導入される前から JavaScript に存在し...

Nginx プロキシを使用してインターネットを閲覧する方法

私は通常、Tomcatや他のアプリケーションのリバースプロキシとしてnginxを使用しています。実際...

Vue+SpringBoot のフロントエンドとバックエンドの分離におけるクロスドメインの問題

フロントエンドとバックエンドを分離した開発では、フロントエンドがバックエンドの API を呼び出して...

ページキャッシュを無効にするいくつかの方法を共有する

本日、開発中に、顧客からページをキャッシュしないように要求される方法に遭遇しました。調べたところ、ペ...

レスポンシブデザインについて知っておくべきこと

レスポンシブデザインとは、ウェブサイトの開発プロセス中に、ユーザーの操作やデバイス環境に応じて対応す...

Vue でコンポーネントを一括インポート、登録、使用する方法

序文コンポーネントは、非常に頻繁に使用されるものです。多くの人は、コンポーネントを 1 つのファイル...

Webデザインチュートリアル(3):デザインの手順と考え方

<br />前のチュートリアル:Webデザインチュートリアル(2):模倣と盗作について。...

MySQL 5.7.20 共通ダウンロード、インストール、設定方法と簡単な操作スキル(解凍版無料インストール)

早朝に MySQL 5.7.19 のインストールを終えたばかりですが、午前中に MySQL が最新バ...