-
-
Save proffalken/e8a777a1f622701d9c59164f6d47cbf5 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
export OTEL_PYTHON_LOG_CORRELATION="true" | |
export OTEL_RESOURCE_ATTRIBUTES="service.name=otlptest, environment=test" | |
export OTEL_TRACES_EXPORTER="otlphttp" | |
export OTEL_EXPORTER_OTLP_ENDPOINT="https://otlphttp" | |
export OTEL_PYTHON_DJANGO_INSTRUMENT="True" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import os | |
import socket | |
from flask import Flask | |
from opentelemetry.instrumentation.flask import FlaskInstrumentor | |
from opentelemetry import trace | |
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter | |
from opentelemetry.sdk.resources import Resource | |
from opentelemetry.sdk.trace import TracerProvider | |
from opentelemetry.sdk.trace.export import BatchSpanProcessor | |
from opentelemetry.instrumentation.logging import LoggingInstrumentor | |
# Resource can be required for some backends, e.g. Jaeger | |
# If resource wouldn't be set - traces wouldn't appears in Jaeger | |
resource = Resource(attributes={ | |
"service.name": "otlptest" | |
}) | |
trace.set_tracer_provider(TracerProvider(resource=resource)) | |
tracer = trace.get_tracer(__name__) | |
otlp_exporter = OTLPSpanExporter(endpoint="https://otlphttp/v1/traces") | |
span_processor = BatchSpanProcessor(otlp_exporter) | |
trace.get_tracer_provider().add_span_processor(span_processor) | |
from logging.config import dictConfig | |
LOGGING = { | |
'version': 1, | |
'disable_existing_loggers': True, | |
'formatters': { | |
'json': {'()': 'pythonjsonlogger.jsonlogger.JsonFormatter'}, | |
'standard': { | |
'format': '%(asctime)s %(levelname)s [%(name)s] [%(filename)s:%(lineno)d] [traceID=%(otelTraceID)s spanID=%(otelSpanID)s resource.service.name=%(otelServiceName)s] - %(message)s', | |
'datefmt': '%d-%m-%Y %H:%M:%S' | |
}, | |
}, | |
'handlers': { | |
'console': { | |
'level': 'INFO', | |
'class': 'logging.StreamHandler', | |
'formatter': 'standard', | |
}, | |
'loki': { | |
'level': 'DEBUG', | |
'class': 'logging_loki.LokiHandler', | |
'url': f"{os.getenv('MVENTORY_LOKI_HOST')}/loki/api/v1/push", | |
'tags': {"app": "otlptest", "env": "dev"}, | |
'version': "1", | |
'formatter': 'json', | |
}, | |
}, | |
'loggers': { | |
'root': { | |
'handlers': ['loki', 'console'], | |
'level': 'DEBUG', | |
'propagate': True, | |
}, | |
} | |
} | |
dictConfig(LOGGING) | |
LoggingInstrumentor().instrument(set_logging_format=True) | |
app = Flask(__name__) | |
FlaskInstrumentor().instrument_app(app) | |
@app.route("/") | |
def hello(): | |
return "Hello!" | |
if __name__ == "__main__": | |
app.run(debug=True) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
backoff==1.10.0 | |
certifi==2021.10.8 | |
charset-normalizer==2.0.9 | |
click==8.0.3 | |
Deprecated==1.2.13 | |
Flask==2.0.2 | |
googleapis-common-protos==1.53.0 | |
grpcio==1.42.0 | |
idna==3.3 | |
itsdangerous==2.0.1 | |
Jinja2==3.0.3 | |
MarkupSafe==2.0.1 | |
opentelemetry-api==1.7.1 | |
opentelemetry-exporter-otlp==1.7.1 | |
opentelemetry-exporter-otlp-proto-grpc==1.7.1 | |
opentelemetry-exporter-otlp-proto-http==1.7.1 | |
opentelemetry-instrumentation==0.26b1 | |
opentelemetry-instrumentation-flask==0.26b1 | |
opentelemetry-instrumentation-logging==0.26b1 | |
opentelemetry-instrumentation-wsgi==0.26b1 | |
opentelemetry-proto==1.7.1 | |
opentelemetry-sdk==1.7.1 | |
opentelemetry-semantic-conventions==0.26b1 | |
opentelemetry-util-http==0.26b1 | |
protobuf==3.19.1 | |
python-json-logger==2.0.2 | |
python-logging-loki==0.3.1 | |
requests==2.26.0 | |
rfc3339==6.2 | |
six==1.16.0 | |
urllib3==1.26.7 | |
uWSGI==2.0.20 | |
Werkzeug==2.0.2 | |
wrapt==1.13.3 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment