开始使用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/ を開く。
先程作成したユーザーでログインします。
ユーザーを新規追加します。

image.png
image.png

确认结果

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

image.png
广告
将在 10 秒后关闭
bannerAds