FROM python:3.9
COPY ./requirements.txt /app/requirements.txt
WORKDIR /app
RUN pip install -r requirements.txt
RUN pip install honeycomb-opentelemetry --pre
RUN opentelemetry-bootstrap --action=install
COPY . /app
ENTRYPOINT ["opentelemetry-instrument", "python","/app/app.py"]
EXPOSE 5000
from flask import Flask, jsonify, request
from opentelemetry import trace
from opentelemetry.sdk.resources import Resource
from opentelemetry.sdk.trace import TracerProvider
# Set up tracer
resource = Resource.create({"service.name": "my-service"})
trace.set_tracer_provider(TracerProvider(resource=resource))
# Define routes for the Flask app
app = Flask(__name__)
@app.route("/")
def index():
return "Welcome to my Flask app!"
@app.route("/hello")
def hello():
return jsonify({"message": "Hello, world!"})
@app.route("/user/<username>")
def user_profile(username):
user_agent = request.headers.get("User-Agent")
with trace.get_tracer(__name__).start_as_current_span("user_profile"):
# Do some work here...
return jsonify({"username": username, "user_agent": user_agent})
if __name__ == "__main__":
app.run(host='0.0.0.0')
Distribution distro configuration failed
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/opentelemetry/instrumentation/auto_instrumentation/sitecustomize.py", line 37, in _load_distros
distro = entry_point.load()()
File "/usr/local/lib/python3.9/site-packages/pkg_resources/__init__.py", line 2449, in load
self.require(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/pkg_resources/__init__.py", line 2472, in require
items = working_set.resolve(reqs, env, installer, extras=self.extras)
File "/usr/local/lib/python3.9/site-packages/pkg_resources/__init__.py", line 777, in resolve
raise VersionConflict(dist, req).with_context(dependent_req)
pkg_resources.ContextualVersionConflict: (opentelemetry-sdk 1.16.0 (/usr/local/lib/python3.9/site-packages), Requirement.parse('opentelemetry-sdk~=1.17.0'), {'opentelemetry-exporter-otlp-proto-grpc', 'opentelemetry-exporter-otlp-proto-
http'})
Failed to auto initialize opentelemetry
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/opentelemetry/instrumentation/auto_instrumentation/sitecustomize.py", line 119, in initialize
distro = _load_distros()
File "/usr/local/lib/python3.9/site-packages/opentelemetry/instrumentation/auto_instrumentation/sitecustomize.py", line 52, in _load_distros
raise exc
File "/usr/local/lib/python3.9/site-packages/opentelemetry/instrumentation/auto_instrumentation/sitecustomize.py", line 37, in _load_distros
distro = entry_point.load()()
File "/usr/local/lib/python3.9/site-packages/pkg_resources/__init__.py", line 2449, in load
self.require(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/pkg_resources/__init__.py", line 2472, in require
items = working_set.resolve(reqs, env, installer, extras=self.extras)
File "/usr/local/lib/python3.9/site-packages/pkg_resources/__init__.py", line 777, in resolve
raise VersionConflict(dist, req).with_context(dependent_req)
pkg_resources.ContextualVersionConflict: (opentelemetry-sdk 1.16.0 (/usr/local/lib/python3.9/site-packages), Requirement.parse('opentelemetry-sdk~=1.17.0'), {'opentelemetry-exporter-otlp-proto-grpc', 'opentelemetry-exporter-otlp-proto-
http'})