Я пытался протестировать автоматическое инструментирование OTEL для Python, и у меня возникли проблемы с обеспечением правильного и последовательного экспорта метрик, трассировок и журналов. Я пытался это сделать, используя команду opentelemetry-instrument в моем файле Dockerfile, и у меня есть простое приложение Flask Python.
Dockerfile:
Код: Выделить всё
WORKDIR /app
COPY . ./
RUN pip install -r requirements.txt
RUN pip install opentelemetry-distro \
opentelemetry-exporter-otlp
RUN opentelemetry-bootstrap -a install
ENV APP_HOME=/app
RUN chown -R appuser:appuser /app
FROM development as production
WORKDIR /app
USER appuser
EXPOSE 8443
CMD ["opentelemetry-instrument", "python", "src/index.py"]
index.py:
Код: Выделить всё
app = flask.Flask(__name__)
@app.route('/debug', methods=['GET'])
def do_GET():
i = 0
for x in range(16):
print("(PRINT) do_GET logs " + str(x))
logger.info("(DEFAULT INFO) do_GET logs " + str(x))
logger.warning("(DEFAULT WARNING) do_GET logs " + str(x))
logger.error("(DEFAULT ERROR) do_GET logs " + str(x))
i = i + 1
return {"status": "Success"}
if __name__ == "__main__":
logger.info('start')
app.run(debug=True, port=8443, host='0.0.0.0')
В этой настройке я вижу, что метрики последовательно экспортируются в сборщик OTEL, и вижу, в частности, «стартовый» журнал, экспортируемый в сборщик OTEL, но с «0» в качестве идентификатора трассировки и диапазона. Все остальные журналы в конечной точке «отладки» вообще не экспортируются, и я не вижу никаких экспортируемых следов. Я все еще относительно новичок в том, чтобы возиться с OTEL и инструментированием, но реалистично пытаюсь изучить методы автоматического инструментирования приложений Python с небольшими изменениями кода. Мне любопытно, нахожусь ли я на правильном пути и у меня просто проблемы с реализацией, или есть другой способ лучше добиться этого. Единственный успех, которого я действительно добился при оснащении своего приложения, — это добавление OTEL Python SDK для добавления регистратора в мой файл Python. Любая помощь будет принята с благодарностью!
Подробнее здесь:
https://stackoverflow.com/questions/798 ... on-logging