NewRelic 在 Python 中发布到 kafka 时出错

问题描述 投票:0回答:1

我正在使用 kafka-python 发布到 kafka,并将 newrelic 集成到我的应用程序中。 kafka-python 的发布方法因错误Error 'MessageTransaction' object has no attribute 'destination_name' in newrelic

而失败
File "/Users/mishika/supply-metrics/app/kafka_manager/base_consumer_v2.py", line 55, in produce
    self.producer.send(topic, value=event_data, key=key).get()
  File "/Users/mishika/miniconda3/envs/myenv/lib/python3.10/site-packages/newrelic/hooks/messagebroker_kafkapython.py", line 68, in wrap_KafkaProducer_send
    return wrapped(
  File "/Users/mishika/miniconda3/envs/myenv/lib/python3.10/site-packages/kafka/producer/kafka.py", line 581, in send
    value_bytes = self._serialize(
  File "/Users/mishika/miniconda3/envs/myenv/lib/python3.10/site-packages/kafka/producer/kafka.py", line 714, in _serialize
    return f(data)
  File "/Users/mishika/miniconda3/envs/myenv/lib/python3.10/site-packages/newrelic/hooks/messagebroker_kafkapython.py", line 203, in _wrap_serializer
    topic = transaction.destination_name
AttributeError: 'MessageTransaction' object has no attribute 'destination_name'

我的 newrelic 在 main.py 中像这样初始化

import newrelic.agent
newrelic.agent.initialize()

[newrelic]
license_key = 
app_name = 
monitor_mode = true
log_level = debug
high_security = false
transaction_tracer.enabled = true
transaction_tracer.transaction_threshold = apdex_f
transaction_tracer.record_sql = obfuscated
transaction_tracer.stack_trace_threshold = 0.5
transaction_tracer.explain_enabled = true
transaction_tracer.explain_threshold = 0.5
transaction_tracer.function_trace =
error_collector.enabled = true
error_collector.ignore_errors = pycommon.exceptions.common_exceptions:DuplicateError rest_framework.exceptions:ValidationError rest_framework.exceptions:NotFound rest_framework.exceptions:ParseError
browser_monitoring.auto_instrument = true
thread_profiler.enabled = true
distributed_tracing.enabled = false

我的指标正在与我的 newrelic.ini 文件中定义的 transaction_tracer 一起发布到有关日志记录操作的 newrelic

我已经从 main.py 中删除了初始化部分,并删除了日志记录操作产生的指标,只保留了 newrelic.ini 文件中定义的内容,但仍然面临同样的问题

python apache-kafka newrelic
1个回答
0
投票

通过在 newrelic.ini 文件中保留以下内容来禁用 newrelic 上的 kafka 生产者事务,您将能够将消息发送到 kafka

[import-hook:kafka.producer.kafka]
enabled = false
© www.soinside.com 2019 - 2024. All rights reserved.