🔍

FastAPIにNew Relicを導入する方法

2023/11/29に公開

Fast APIアプリに対して、New Relicで監視する方法を紹介します。

FastAPI

FastAPI は、Pythonの標準である型ヒントに基づいてPython 3.6 以降でAPI を構築するための、モダンで、高速(高パフォーマンス)な、Web フレームワークです。

https://fastapi.tiangolo.com/ja/

導入までの流れ

FastAPIのサンプルアプリケーションを作成し、そのアプリをNew Relicで監視できるようにしていきます。

サンプルアプリケーションの作成

以下のコマンドを実行し、必要な物をインストールしていきます。

pip install fastapi
pip install "uvicorn[standard]"

main.pyファイルを作成し、以下のコードを記載します。

main.py
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}

@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}

アプリを実行して、動作することを確認しておきます。

uvicorn main:app --reload

New Relic

APM エージェントをインストールします。

pip install newrelic

newrelic.iniを追加します。

newrelic.ini
[newrelic]
license_key = {ライセンスキー}
app_name = Python-Test
monitor_mode = true
log_file = stdout
log_level = info
high_security = false
transaction_tracer.enabled = true
transaction_tracer.transaction_threshold = apdex_f
transaction_tracer.record_sql = obfuscated
transaction_tracer.stack_trace_threshold = 0.5
transaction_tracer.explain_enabled = true
transaction_tracer.explain_threshold = 0.5
transaction_tracer.function_trace =
error_collector.enabled = true
error_collector.ignore_classes =
error_collector.expected_classes =
browser_monitoring.auto_instrument = true
thread_profiler.enabled = true
distributed_tracing.enabled = true

[newrelic:development]
monitor_mode = false

[newrelic:test]
monitor_mode = false

[newrelic:staging]
app_name = Python-Test (Staging)
monitor_mode = true

[newrelic:production]
monitor_mode = true

設定ファイルの検証を行います。

newrelic-admin validate-config newrelic.ini

設定ファイルに問題がなければ、以下のコードで実行します。

NEW_RELIC_CONFIG_FILE=newrelic.ini newrelic-admin run-program uvicorn main:app --reload

New Relic側の確認

New Relicにアクセスし、データが集計されていればOKです。

導入自体はかなり楽でしたが、細かな設定についてはまだ試せていないので、少しずつ試していきます。

コラボスタイル Developers

Discussion