イントロダクション:
AWS CloudWatch Logsは、AWSリソース、アプリケーション、サービスのログデータを監視して保存するためのサービスです。
この記事では、CloudWatch Logsからユーザーエージェントデータを収集し、PythonとGoogle スプレッドシートを使用してOSとブラウザのシェアを視覚化する方法を解説します。
これはウェブサイトやアプリケーションのユーザー体験を最適化するために非常に有益です。
手順1: CloudWatch Logsからログを取得する
まず、CloudWatch Logsからユーザーエージェントデータを含むログを取得する必要があります。
AWS Management Consoleにログインし、CloudWatch Logsのページに移動します。
-
ロググループを選択し、ログストリームを開きます。
-
クエリを使用してログデータをフィルターします。以下は、ユーザーエージェント情報を含むログエントリを抽出するサンプルクエリです。
fields @timestamp, @message
| parse @message /(?<ip>[\d\.]+) - - \[(?<timestamp>[^\]]+)\] "(?<http_method>[^"]+)" (?<status_code>[^ ]+) (?<size>[^ ]+) "(?<referrer>[^"]*)" "(?<user_agent>[^"]+)"/
| stats count(*) by user_agent
-
上記のクエリをCloudWatch Logs Insightsのクエリエディタに貼り付け、実行します。
-
結果を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 スプレッドシートでデータを視覚化します。
-
Google スプレッドシートを開き、手順2で生成された parsed_logs.csv をインポートします。
-
ピボットテーブルを作成します。これには、データ範囲を選択し、「データ」メニューから「ピボットテーブル」を作成します。
-
ピボットテーブルエディターで、「行」に分析したいカテゴリ(例:Device, OS Version, Browser)を追加し、「値」に「Count」を追加して合計を計算します。
-
ピボットテーブルのデータを選択し、「挿入」メニューから「グラフ」を選択して円グラフを作成します。これで、OSやブラウザのシェアを視覚化することができます。
結論:
CloudWatch Logsからのログデータ分析は、アプリケーションのパフォーマンスとユーザー体験を向上させるのに役立つ重要なステップです。
このチュートリアルでは、Pythonのuser_agents ライブラリを使用してユーザーエージェントデータを解析し、Google スプレッドシートで視覚化する方法を紹介しました。
この情報は、デバイスやブラウザの最適化、または特定のOSバージョン向けの機能開発に役立てれば幸いです。