python-logging-loki icon indicating copy to clipboard operation
python-logging-loki copied to clipboard

Tracing not showing in grafana

Open titogarrido opened this issue 3 years ago • 4 comments

Hi Folks,

I am trying to use Loki + Tempo but when I check my logs in Loki the trace_id and span_id are missing.

Code related to logging:

[...]
from opentelemetry.instrumentation.logging import LoggingInstrumentor
from logging_loki import LokiHandler, emitter

emitter.LokiEmitter.level_tag = "level"

LoggingInstrumentor().instrument(set_logging_format=True)
handler = LokiHandler(
    url="http://ipadpi.local:3100/loki/api/v1/push",
    tags={"application": "backend"},
    version="1",
)
logger = logging.getLogger(__name__)
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)

[...]

@app.get("/test")
async def test():
    logger.info(
        "Info em test2",
        extra={"tags": {"service": "backend"}},
    )

    return Status(message='test!')

The result in loki is:

image

and I am running my uvicorn using: opentelemetry-instrument uvicorn main:app

What am I missing here?

titogarrido avatar Oct 26 '22 21:10 titogarrido

Hey @titogarrido, have you configured the grafana datasource? as explained tempo and loki

fullonic avatar Nov 04 '22 12:11 fullonic

Hi @fullonic ! Yes, it should be connect... Is there a way to debug what python-logging-loki is sending to Loki?

titogarrido avatar Nov 04 '22 18:11 titogarrido

@app.on_event("startup")
async def startup():
    Instrumentator().instrument(app).expose(app)
    LoggingInstrumentor().instrument(set_logging_format=True)

emitter.LokiEmitter.level_tag = "level"


lokiHandler = LokiHandler(
    url="http://ipadpi.local:3100/loki/api/v1/push",
    tags={"application": "backend"},
    version="1",
)

FILE_FORMAT = logging.Formatter('%(asctime)s %(levelname)s [%(name)s] [%(filename)s:%(lineno)d] [trace_id=%(otelTraceID)s span_id=%(otelSpanID)s resource.service.name=%(otelServiceName)s] - %(message)s')
LOKI_FORMAT = logging.Formatter('%(asctime)s %(levelname)s %(name)s %(filename)s:%(lineno)d trace_id=%(otelTraceID)s span_id=%(otelSpanID)s resource.service.name=%(otelServiceName)s %(message)s')


fileHandler = logging.FileHandler("backend.log")

fileHandler.setFormatter(FILE_FORMAT)
lokiHandler.setFormatter(LOKI_FORMAT)
logger = logging.getLogger(__name__)
logger.addHandler(lokiHandler)
logger.setLevel(logging.DEBUG)
logger.addHandler(fileHandler)

Ok, that works, I have to add the format to loki handler.

titogarrido avatar Nov 06 '22 16:11 titogarrido