Skip to content

Flask Instrumentation

Snippets related to Flask python package

Configuring environment

Development Environment

You can run otel-tui as OpenTelemetry Collector, which acts as a terminal OpenTelemetry viewer

docker run -p 4317:4317 -p 4318:4318 --rm -it --name otel-tui ymtdzzz/otel-tui:latest

Install packages

Create the virtual environment and install the dependencies:

uv venv && source .venv/bin/activate

requirements.txt
opentelemetry-distro
opentelemetry-exporter-otlp
flask

Quick install with uv

uv pip install -r https://emdneto.github.io/opentelemetry-by-example/python/flask/requirements.txt
opentelemetry-bootstrap -a requirements | uv pip install -r -

Zero-code Instrumentation

snippet_zero.py
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import logging
from random import randint

from flask import Flask, request

app = Flask(__name__)
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)


@app.route("/rolldice")
def roll_dice():
    player = request.args.get("player", default=None, type=str)
    result = str(roll())
    if player:
        logger.warning("%s is rolling the dice: %s", player, result)
    else:
        logger.warning("Anonymous player is rolling the dice: %s", result)
    return result


def roll():
    return randint(1, 6)

Run this snippet

opentelemetry-instrument --service_name=flask-zero-code flask --app snippet_zero.py run -p 5001