开始使用Django进行AWS X-Ray
首先
这篇文章是2020年Hands Lab圣诞日历活动的第13天文章。
我开始使用 X-Ray 是因为我想要在 Lambda 中进行性能测量,但后来发现也可以用于 Django,于是就试了一下。
确认环境
-
- macOS
-
- python 3.7.8
- Django 3.1.4
AWS X-Ray 守护程序
为了在本地执行,您需要从官方下载守护程序。
请从以下链接下载OS X(可执行文件):
https://docs.aws.amazon.com/ja_jp/xray/latest/devguide/xray-daemon.html
请将ZIP文件下载并解压到任意位置。
# 解凍後作業ディレクトリを移動
cd ~/Downloads/aws-xray-daemon-macos-3.x
# 起動
./xray_mac -o -n ap-northeast-1
X-Ray IAM 创建
请从AWS管理控制台创建一个具有以下AWS管理策略的IAM用户,并获取其身份验证信息。
- AWSXrayWriteOnlyAccess
X射线配置文件设定
请使用获取到的认证信息来设置默认配置文件。
[default]
region = ap-northeast-1
output = json
[default]
aws_access_key_id = xxxxx
aws_secret_access_key = yyyyy
Django的配置
# 作業ディレクトリ作成(任意)
mkdir ~/LocalProjects/django-xray
# 仮想環境の作成
python -m venv ~/envs/django-xray
# アクティベート
source ~/envs/django-xray/bin/activate
# バージョン
python --version
Python 3.7.8
# Django インストール
pip install Django
# x-ray インストール
pip install aws-xray-sdk
# Django バージョン
python -m django --version
3.1.4
# 作業ディレクトリ移動
cd ~/LocalProjects/django-xray
# Django プロジェクト新規作成
django-admin startproject mysite
# テストDB作成
./manage.py migrate
# テストユーザー作成
./manage.py createsuperuser
Username (leave blank to use 'daisuke-araki'): (任意)
Email address: (未入力)
Password: (任意)
Password (again): (任意)
Superuser created successfully.
Django的配置
为了能够使用X-Ray,将进行配置更改。
https://docs.aws.amazon.com/zh_cn/xray/latest/devguide/xray-sdk-python-configuration.html
添加 AWS X-Ray 中间件
加入第一行。
MIDDLEWARE = [
'aws_xray_sdk.ext.django.middleware.XRayMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'aws_xray_sdk.ext.django',
]
XRAY_RECORDER = {
'AUTO_INSTRUMENT': True,
'AWS_XRAY_CONTEXT_MISSING': 'LOG_ERROR',
'AWS_XRAY_DAEMON_ADDRESS': '127.0.0.1:2000',
'AWS_XRAY_TRACING_NAME': 'My application',
'SAMPLING': False,
}
确认动作
# Django の起動
./manage.py runserver 18080
通过浏览器打开Django管理页面
我在Safari上进行了确认。
http://localhost:18080/admin/ を開く。
先程作成したユーザーでログインします。
ユーザーを新規追加します。


确认结果
我通过AWS管理控制台查看了X-Ray的状态。
可以确认Django请求已经自动计量了。
