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

推薦する

js を使用して数字推測ゲームを実装する

先週、先生が私に数字当てゲームをするちょっとした宿題を出しました。とても面白いと思ったので、適当に書...

JSデータ型検出のさまざまな方法の概要

目次背景データ型を決定する方法は何ですか? 1. typeof を使用して基本データ型を決定します。...

CSS 等高レイアウトの一般的な方法

等高レイアウト同じ親コンテナー内の同じ高さの子要素のレイアウトを指します。等高レイアウトの実装の観点...

MySQL はどのようにしてデータベースの削除と暴走を効果的に防ぐことができますか?

目次セーフモード設定テスト1. where句なしで更新および削除する2. 非インデックスキーの削除3...

ubuntu15.10 での hadoop2.7.2 の詳細なインストールと設定

Linux での Hadoop インストール チュートリアルはインターネットや書籍に多数ありますが、...

HTTPS の原則の説明

HTTPS ウェブサイトの構築コストが下がるにつれて、ほとんどのウェブサイトが HTTPS プロトコ...

CSS3 を使用して円形スクロール プログレス バー アニメーションを作成する例

テーマ今日は、CSS3 を使用して円形スクロール プログレス バー アニメーションを作成する方法を説...

MySQL InnoDB 監視 (システム層、データベース層)

MySQL InnoDB 監視 (システム層、データベース層) MySQL の監視に関しては、My...

mysqlタイムスタンプの使用

序文:タイムスタンプ フィールドは、MySQL でよく使用されます。たとえば、データ行が作成または変...

6ull が Linux ドライバ モジュールをロードできない問題の解決方法

目次0x01 ドライバーモジュールのロードに失敗しました0x02 ソリューション要約する0x01 ド...

Reactフック入門チュートリアル

ステートフック例: 'react' から useState をインポートします。 関...

Centos6.5 glibc アップグレードプロセスの紹介

目次シナリオ要件glibc バージョンglibcのインストールglibc ソフトリンクシナリオ要件C...

タブバーの切り替え効果を実現するJavaScript

タブバー: 異なるタブをクリックすると異なるコンテンツが表示され、クリックしたタブのスタイルが変更さ...

フロントエンドネットワーク、JavaScriptの最適化、開発のヒントについて簡単に説明します。

1. ネットワークの最適化YSlowには23のルールがあります。これら数十のルールは、主に、不要な...

MySQL可視化ツールNavicatへの接続方法

Navicatをインストールした後次のエラーが発生する場合があります: Client does no...