opentelemetry logginginstrumentor不将日志发送到signoz

问题描述 投票:0回答:1
i我期望使用logginginstrumentor()。启用OpenTelemetry的LoggingInstrumentor()。我期望在Signoz仪表板上看到两个迹线和日志,从而可以在日志和痕迹之间更好地观察性和相关性。

我尝试了什么: 配置了用于记录的OpenTelemetry:

使用logginginstrumentor()。仪器(set_logging_format = true)启用自动日志仪器。 确保正确设置OpenTelemetry SDK和OTLP GRPC出口商。 验证的跟踪数据:

检查了在Signoz中成功发送和显示的痕迹,以确认OTLP出口商正在运行。 在本地检查日志记录输出:

确保正在生成日志并写入本地日志文件或控制台

Code: from opentelemetry import trace from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.trace.export import BatchSpanProcessor from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter from opentelemetry.sdk.resources import Resource from opentelemetry.instrumentation.logging import LoggingInstrumentor import logging # Configure the tracer to use OTLP exporter resource = Resource(attributes={ "service.name": "your_service_name" }) provider = TracerProvider(resource=resource) trace.set_tracer_provider(provider) otlp_exporter = OTLPSpanExporter( endpoint="***********:4317", insecure=True ) span_processor = BatchSpanProcessor(otlp_exporter) provider.add_span_processor(span_processor) # Initialize automatic logging instrumentation LoggingInstrumentor().instrument(set_logging_format=True) # Example of logging logging.getLogger().setLevel(logging.INFO) def my_function(): logging.info("This is an info log from my_function")

您将必须创建一个提供商和Hanlder,并将其附加到Logger

import logging from opentelemetry import trace from opentelemetry._logs import set_logger_provider from opentelemetry.exporter.otlp.proto.grpc._log_exporter import ( OTLPLogExporter, ) from opentelemetry.sdk._logs import LoggerProvider, LoggingHandler from opentelemetry.sdk._logs.export import BatchLogRecordProcessor from opentelemetry.sdk.resources import Resource import json import os exporter = OTLPLogExporter(endpoint=os.getenv("OTLP_ENDPOINT", "localhost:4317"), insecure=json.loads(os.getenv("INSECURE", "true").lower())) logger_provider = LoggerProvider( resource=Resource.create( { "service.name": "hello" }, ), ) set_logger_provider(logger_provider) logger_provider.add_log_record_processor(BatchLogRecordProcessor(exporter)) handler = LoggingHandler(level=logging.INFO, logger_provider=logger_provider) logging.getLogger().addHandler(handler) logging.getLogger().setLevel(logging.INFO) logging.info("hello info") logging.warning("Jackdaws love my big sphinx of quartz.")

也设置为配置这些,您还可以使用自动启动,它将捕获痕迹和日志,

Https://signoz.io/docs/userguide/userguide/python-logs-auto-intomentation/

    
python
1个回答
0
投票

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.