【问题标题】:Injected traces data into Logs is not showing on Loki-GrafanaLoki-Grafana 上未显示注入日志的跟踪数据
【发布时间】:2023-01-17 04:08:57
【问题描述】:

设置: 我正在使用 python-logging-loki 库手动检测我的日志代码。我有一个正在运行的 Loki 实例(未使用 promtail,我直接推送到 loki)。 在 Grafana 上,我启动并运行了 Jaeger 和 Loki 作为数据源。对于 Traces,我正在使用 opentelemetry python 库(也手动检测代码)。

我正在尝试使用 Opentelemetry Logging Instrumentation 库在将跟踪数据发送到 Loki 之前自动将跟踪数据注入到我的日志中。 我的问题是,当我运行我的测试应用程序时,我可以看到在我的控制台上打印出注入的数据,但在 grafana 上,注入的数据没有显示出来。

我为派生字段配置了 Loki,以使用正则表达式提取 trace_id,并且内部链接指向 jaeger。

    # auto inject trace data into logs (Opentelemetry Logging Instrumentation library)
    LoggingInstrumentor().instrument(set_logging_format=True, log_level=logging.DEBUG)

    # manual instrumentation of traces 
    with tracer.start_as_current_span(name="random-name") as span:

        # using python-logging-loki library to construct the logs
        logger.info(msg="testing loki logger", extra={"tags": {"product_number": "ABCD123"}})

在 Grafana 上,尽管在 Grafana 上的 Loki 中设置了派生字段值,但日志已成功导出但跟踪数据未出现

然而,在我的控制台上,当我运行我的测试应用程序时,我可以看到日志消息的打印输出,其中注入了跟踪数据

2022-04-08 15:17:15,476 DEBUG [urllib3.connectionpool] [connectionpool.py:228] [trace_id=e4fb8555337a28cc639955a36d994ed1 span_id=86425d0bc3cc088c resource.service.name=] - Starting new HTTP connection (1): localhost:3100
2022-04-08 15:17:15,498 DEBUG [urllib3.connectionpool] [connectionpool.py:456] [trace_id=e4fb8555337a28cc639955a36d994ed1 span_id=86425d0bc3cc088c resource.service.name=] - http://localhost:3100 "POST /loki/api/v1/push HTTP/1.1" 204 0
2022-04-08 15:17:15,469 INFO [otlp_handler] [main.py:39] [trace_id=e4fb8555337a28cc639955a36d994ed1 span_id=86425d0bc3cc088c resource.service.name=] - testing loki logger

我不确定我在这里做错了什么! 只有当我明确地将 trace_id 写入日志消息时,grafana 才会导出这些值。所以如果我这样写日志:

logger.info(msg="[ trace_id=d4ea420b4fa4e20e7fbb579c80fa4e88 span_id=856ca68d4b52bbd4 ] - testing loki logger", extra={"tags": {"product_number": "ABCD123"}})

然后在 grafana loki 上,我可以看到记录中的派生字段并且它正确链接到 jaeger 上的跟踪

我究竟做错了什么? .. 这是 otel 使用此日志记录工具的正确方法吗? ..

【问题讨论】:

  • 你有没有想过这个?我有一个类似的问题。

标签: logging open-telemetry grafana-loki distributed-tracing loki


【解决方案1】:

您需要在“[”和“trace_id”之间放置一个空格。解析时,字段以空格分隔,因此在您的日志中,字段名称为“[trace_id”

【讨论】:

    猜你喜欢
    • 2022-01-09
    • 1970-01-01
    • 2021-11-06
    • 2022-06-24
    • 2022-08-17
    • 1970-01-01
    • 1970-01-01
    • 2022-12-02
    • 2021-04-29
    相关资源
    最近更新 更多