2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

GCPでロードバランサのアクセスログをBigQueryに同期する

Posted at

はじめに

現在、GCPでロードバランサとCompute Engineを使ってWebサービスを公開しています。

構成
インターネット <--> Cloud Load Balancing(GCP) <--> Compute Engine(GCP)

GCPのCloud Loggingの機能を使うと、ロードバランサのアクセスログをBigQueryにリアルタイムに同期することができます。

BigQueryを使ってアクセスログを解析したいときに手軽に利用することができます。

同期の方法と、簡単な解析のサンプルを紹介します。

シンクの作成

まずは「Logging > ログルーター」からシンクを作成します。

「Cloud HTTP ロードバランサ」から同期したいロードバランサを選択します。
シンクサービスは「BigQuery」を選択して、シンクのエクスポート先のBigQueryのデータセットを選択して、シンクを作成します。
sync.JPG

BigQueryで解析

シンクしたログは日別のテーブルに格納されます。
requests_20200421
requests_20200422
requests_20200423

「HTTPステータス」「ユーザーエージェント」「リファラ」「リクエストURL」「IPアドレス」「リクエストサイズ」などのカラムがあるので解析していきたいと思います

テーブル名の(your-project.your_dataset.requests_20200421)は、ご自身のアカウントのものに置き換えてください。

HTTPステータスを解析

500番台のリクエストを表示

SELECT * FROM `your-project.your_dataset.requests_20200421` WHERE httpRequest.status >= 500

リファラを解析

参照サイトの多い順に表示
ドメイン名の(example.com)は、ご自身のサイトのドメインに置き換えてください。

 SELECT
   httpRequest.referer AS referer,
   COUNT(*) AS access_count
 FROM `your-project.your_dataset.requests_20200421`
 WHERE httpRequest.referer NOT LIKE '%example.com%'
 GROUP BY referer
 ORDER BY access_count DESC

ユーザーエージェントを解析

アクセスされたユーザーエージェントの多い順に表示

 SELECT
   httpRequest.userAgent AS user_agent,
   COUNT(*) AS access_count
 FROM `your-project.your_dataset.requests_20200421`
 GROUP BY user_agent
 ORDER BY access_count DESC

おわりに

Fluentdなどでログを収集してBigQueryにインサートすることもできますが、ロードバランサのアクセスログを同期することで、手軽にBigQueryのアクセス解析が始められます。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?