7
3

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.

ハンズラボAdvent Calendar 2020

Day 13

Django で始める AWS X-Ray

Last updated at Posted at 2020-12-13

はじめに

この記事は ハンズラボ Advent Calendar 2020 13日目の記事です。

Lambdaで実行計測を取りたくて始めたX-Rayでしたが、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-Ray プロファイル設定

取得した認証情報でデフォルトプロファイルを設定してください。

~/.aws/config
[default]
region = ap-northeast-1
output = json
~/.aws/credentials
[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/ja_jp/xray/latest/devguide/xray-sdk-python-configuration.html

AWS X-Ray ミドルウェアを追加する

1行目を追加します。

/mysite/settings.config
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

7
3
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
7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?