nikkie-ftnextの日記

イベントレポートや読書メモを発信

Python の Flask を例にした OpenTelemetry ドキュメントの「自動計装の例」を読んだメモ

はじめに

七尾百合子さん、お誕生日 131日目 おめでとうございます! nikkieです。

アイマス20周年、おめでとうございます!!

OpenTelemetryに興味を持ち、ドキュメントを少しだけ読みました

目次

自動計装の例

opentelemetry.io

日本語訳ありがとう〜!

Flaskアプリケーションを例に、OpenTelemetryで自動計装を行う方法が3つ示されています。
なお、instrumentationの訳語が「計装」と理解しています

手動計装

https://github.com/open-telemetry/opentelemetry-python/blob/v1.35.0/docs/examples/auto-instrumentation/server_manual.py

Flaskのrouteの関数の中で、opentelemetry-sdkを使って計装するように実装しています.

@app.route("/server_request")
def server_request():
    with tracer.start_as_current_span(
        "server_request",
        context=extract(request.headers),
        kind=SpanKind.SERVER,
        attributes=collect_request_attributes(request.environ),
    ):
        print(request.args.get("param"))
        return "served"

自動計装

https://github.com/open-telemetry/opentelemetry-python/blob/v1.35.0/docs/examples/auto-instrumentation/server_automatic.py

opentelemetry-instrumentコマンドを使ってFlaskアプリケーションをサーブすることで計装されます。
実装不要で計装できるの、便利!

コマンドはopentelemetry-instrumentationにより提供されます。
opentelemetry-distroをインストールすると入ります

プログラムによる計装

https://github.com/open-telemetry/opentelemetry-python/blob/v1.35.0/docs/examples/auto-instrumentation/server_programmatic.py

opentelemetry-instrumentation-flaskをインストールして、少しだけ実装します。

instrumentor = FlaskInstrumentor()

app = Flask(__name__)

instrumentor.instrument_app(app)

終わりに

Flaskの単純なアプリでOpenTelemetryの計装を追加する方法を知りました。
実装なしだったり、少しだけ実装したりで後から追加できるのは便利ですね。

FastAPIでどうやるのか気になるので、手を動かしてみる予定です。
OpenTelemetry自体も理解が非常に曖昧なので、理解を深めていきたい〜