🔍
FastAPIにNew Relicを導入する方法
Fast APIアプリに対して、New Relicで監視する方法を紹介します。
FastAPI
FastAPI は、Pythonの標準である型ヒントに基づいてPython 3.6 以降でAPI を構築するための、モダンで、高速(高パフォーマンス)な、Web フレームワークです。
導入までの流れ
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です。
導入自体はかなり楽でしたが、細かな設定についてはまだ試せていないので、少しずつ試していきます。
Discussion