OpenTelemrationを使用したFastAPIアプリケーションの監視📊🚀


FastAPIは簡単にAPIを構築する標準的なPythonの種類のヒントに基づいて近代的なPythonのWebフレームワークです.それは比較的新しいフレームワークで、2018年にリリースされましたが、現在Uber、Netflix、およびマイクロソフトのような大企業によって採用されました.
FastAPIは現在入手可能な最速のPython Webフレームワークの一つであり、コードを書くときには本当に効率的です.これはASSGI仕様に基づいており、WSGI仕様に基づくフラスコのような他のPythonフレームワークとは異なります.
計装は、彼らのアプリケーション性能をモニターすることから始めるとき、最大の挑戦エンジニアリングチームが直面しています.OpenTelemetry 計装の問題を解決している主要なオープンソース標準です.それは現在、下のインキュベートプロジェクトですCloud Native Computing Foundation .
これは、ツール、API、およびSDKの作成ツールを作成するために使用されるテレメトリデータ(ログ、メトリック、およびトレース)のセットです.それは、クラウドネイティブのソフトウェアアプリケーションの組み込み機能を遠隔測定データ(ログ、メトリック、およびトレース)を作成することを目指しています.
OpenTelemrationを使用する最大の利点の一つは、それがベンダー不可知論者です.それはあなたの選択のバックエンドに送信することができます複数の形式でデータをエクスポートすることができます.
この記事ではSigNoz バックエンドとして.Signozは、メトリックと分散トレースの両方に使用できるオープンソースのAPMツールです.
始めましょう、そして、FastAPIアプリケーションのためにOpenTelemrationを使用する方法を見ましょう.

OpenTelemstryを使用したFastAPIアプリケーションの実行
OpenTelemrationは楽器ASGIフレームワークに最適な選択です.それがオープンソースとベンダー不可知論者であるので、データはあなたの選択のどんなバックエンドにでも送られることができます.

インストール
Dockerがインストールされているなら、ターミナルで3つのコマンドを使ってSIGNOZを使い始めることができます.からDockerをインストールすることができますofficial website .
git clone https://github.com/SigNoz/signoz.git
cd signoz/deploy/
./install.sh
The install.sh スクリプトはSIGNOZをインストールします.ClickHouseデータベースを使ったSignozを試してみると1.5 GB以下のメモリが必要です.

SIGNOZをインストールしたら、UIにアクセスできます.http://localhost:3000
ダッシュボードに表示されるアプリケーション一覧は、Signozインストールパッケージに付属しているホットR . O . Dと呼ばれるサンプルアプリケーションからです.
Signozダッシュボードの例として表示されるアプリケーションの一覧

OpenTelemrationを用いたサンプルFastAPIアプリケーションの計測
必要条件
Python 3.6以降
ダウンロードlatest version Pythonの
サンプルFastAPIアプリケーションの実行
我々はこれでFastAPIアプリを使用されますGithub repo . すべての必須のOpenTelemrationパッケージはrequirements.txt ファイル下app このサンプルアプリのフォルダ.
git clone https://github.com/sureshdsk/sample-fastapi-app.git
cd sample-fastapi-app/
Dockerで動く
ビルドのイメージ
docker build -t sample-fastapi-app .
OpentElementerを使用してアプリケーションを実行し、Signozに収集データを送信しながら、いくつかの環境変数を設定する必要があります.端末で次のコマンドを実行できます.
# If you have your SigNoz IP Address, replace <IP of SigNoz> with your IP Address. 

docker run -d --name fastapi-container \
-e OTEL_METRICS_EXPORTER='none' \
-e OTEL_RESOURCE_ATTRIBUTES='service.name=fastapiApp' \
-e OTEL_EXPORTER_OTLP_ENDPOINT='http://<IP of SigNoz>:4317' \
-p 5000:5000 sample-fastapi-app
Dockerの設定を使用しているなら:
# If you are running signoz through official docker-compose setup, run `docker network ls` and find clickhouse network id. It will be something like this clickhouse-setup_default 
# and pass network id by using --net <network ID>

docker run -d --name fastapi-container \ 
--net clickhouse-setup_default  \ 
--link clickhouse-setup_otel-collector_1 \
-e OTEL_METRICS_EXPORTER='none' \
-e OTEL_RESOURCE_ATTRIBUTES='service.name=fastapiApp' \
-e OTEL_EXPORTER_OTLP_ENDPOINT='http://clickhouse-setup_otel-collector_1:4317' \
-p 5000:5000 sample-fastapi-app
ローカルホストにSIGnozを実行しているなら、<IP of SigNoz> with localhost 最後のコマンドは以下のようになります.
docker run -d --name fastapi-container \
-e OTEL_METRICS_EXPORTER='none' \
-e OTEL_RESOURCE_ATTRIBUTES='service.name=fastapiApp' \
-e OTEL_EXPORTER_OTLP_ENDPOINT='http://localhost:4317' \
-p 5000:5000 sample-fastapi-app
あなたがデータをOpenTelemrationによってキャプチャされるようにあなたのアプリケーションにいくつかの負荷を生成する必要があります.このテストのためにLocustを使用できます.
pip install locust
locust -f locust.py --headless --users 10 --spawn-rate 1 -H http://localhost:5000
見つけるでしょうfastapiAPP SIGNOZによってモニターされているサンプルアプリケーションのリストで.
SIGNOZによって監視されているアプリケーションのリストのFastAPI

遠隔測定データを可視化するオープンソースツール
Signozは、簡単にOpenTelemration計器を介してキャプチャメトリックとトレースを可視化することができます.
Signozはボックスの赤メトリックチャートと可視化の付属しています.赤メトリックは次のようになります.
  • 要求の割合
  • リクエストのエラー率
  • 要求による期間
  • アプリケーションのレイテンシー、リクエストごとのエラー、エラーパーセンテージのようなものを測定し、トップエンドポイントをSignozで参照してください.
    その後、そのタイムスタンプの周りのトレースにドリルダウンするようにレイテンシが高い特定のタイムスタンプを選択することができます.
    特定のタイムスタンプでの痕跡の表示
    あなたは、遅延を引き起こしている問題を正確に特定するために、Flamamegraphを使うことができます.
    特定のタイムスタンプでの痕跡の表示
    また、カスタムメトリックのダッシュボードを構築することができますインフラストラクチャ.
    また、カスタムメトリックのダッシュボードを構築することができますインフラ

    結論
    OpentElementは非常にあなたのFastAPIアプリケーションを楽器に便利になります.次に、SignozのようなオープンソースのAPMツールを使用して、アプリケーションのパフォーマンスを分析することができます.Signozは完全なスタックの可観測性ツールを提供するので、あなたの監視ニーズのために複数のツールを使用する必要はありません.
    あなたはGigthubレポを訪問してSignozを試してみることができます👇

    あなたが質問をするか、何かをセットアップする際にどんな援助も必要とするならば、我々のスラックコミュニティに加わって、我々#help チャンネル.

    OpenTelemstryの詳細を読む👇
    Things you need to know about OpenTelemetry tracing
    OpenTelemetry collector - architecture and configuration guide