AWS CloudWatch Logsからユーザーエージェントデータを分析し、OSとブラウザのシェアを視覚化する

a path leading to the top of a mountain

イントロダクション:

AWS CloudWatch Logsは、AWSリソース、アプリケーション、サービスのログデータを監視して保存するためのサービスです。

この記事では、CloudWatch Logsからユーザーエージェントデータを収集し、PythonとGoogle スプレッドシートを使用してOSとブラウザのシェアを視覚化する方法を解説します。

これはウェブサイトやアプリケーションのユーザー体験を最適化するために非常に有益です。

手順1: CloudWatch Logsからログを取得する

まず、CloudWatch Logsからユーザーエージェントデータを含むログを取得する必要があります。

AWS Management Consoleにログインし、CloudWatch Logsのページに移動します。

  1. ロググループを選択し、ログストリームを開きます。

  2. クエリを使用してログデータをフィルターします。以下は、ユーザーエージェント情報を含むログエントリを抽出するサンプルクエリです。

fields @timestamp, @message
| parse @message /(?<ip>[\d\.]+) - - \[(?<timestamp>[^\]]+)\] "(?<http_method>[^"]+)" (?<status_code>[^ ]+) (?<size>[^ ]+) "(?<referrer>[^"]*)" "(?<user_agent>[^"]+)"/
| stats count(*) by user_agent
  1. 上記のクエリをCloudWatch Logs Insightsのクエリエディタに貼り付け、実行します。

  2. 結果をCSVファイルとしてエクスポートします。

手順2: Pythonを使用してログデータを解析する

ログデータが得られたら、Pythonを使用して分析します。

この記事では、user_agentsというPythonライブラリを使用します。

このライブラリは、ユーザーエージェント文字列を解析して、デバイス、OS、ブラウザに関する情報を抽出するのに役立ちます。

user_agents ライブラリをインストールします。

pip install pyyaml ua-parser user-agents

次に、以下のPythonスクリプトを使用して、ユーザーエージェント文字列からデバイス、OSバージョン、ブラウザ、ブラウザバージョンを抽出し、CSVファイルに出力します。

import csv
from user_agents import parse
# ログファイルの読み込み
with open('logs.csv', 'r') as file:
logs = csv.DictReader(file)
# 結果を保存するためのリスト
results = []
# 各ログエントリを処理
for log in logs:
user_agent = log['user_agent']
count = log['count']
# user_agents ライブラリでユーザーエージェント文字列を解析
ua = parse(user_agent)
device_type = 'Mobile' if ua.is_mobile else 'Tablet' if ua.is_tablet else 'PC'
os = f"{ua.os.family} {ua.os.version_string}"
browser = f"{ua.browser.family}"
browser_version = f"{ua.browser.version_string}"
# 結果をリストに追加
results.append([device_type, os, browser, browser_version, count])
# 結果を新しいCSVファイルに出力
with open('parsed_logs.csv', 'w', newline='') as file:
writer = csv.writer(file)
writer.writerow(['Device', 'OS Version', 'Browser', 'Browser Version', 'Count'])
writer.writerows(results)

手順3: Google スプレッドシートでデータを視覚化する

最後に、Google スプレッドシートでデータを視覚化します。

  1. Google スプレッドシートを開き、手順2で生成された parsed_logs.csv をインポートします。

  2. ピボットテーブルを作成します。これには、データ範囲を選択し、「データ」メニューから「ピボットテーブル」を作成します。

  3. ピボットテーブルエディターで、「行」に分析したいカテゴリ(例:Device, OS Version, Browser)を追加し、「値」に「Count」を追加して合計を計算します。

  4. ピボットテーブルのデータを選択し、「挿入」メニューから「グラフ」を選択して円グラフを作成します。これで、OSやブラウザのシェアを視覚化することができます。

結論:

CloudWatch Logsからのログデータ分析は、アプリケーションのパフォーマンスとユーザー体験を向上させるのに役立つ重要なステップです。

このチュートリアルでは、Pythonのuser_agents ライブラリを使用してユーザーエージェントデータを解析し、Google スプレッドシートで視覚化する方法を紹介しました。

この情報は、デバイスやブラウザの最適化、または特定のOSバージョン向けの機能開発に役立てれば幸いです。