Kafka Broker 将分区标记为失败

Sum*_*rai 11 apache-kafka

我注意到 kafka 代理日志中的消息

Partition <topic name> marked as failed (kafka.server.ReplicaFetcherThread)

我的问题是 Kafka 如何以及何时将分区标记为失败。
我需要监视日志并对消息采取行动。

此消息是可操作的还是可以忽略的?

Von*_*onC 2

Partition <topic name> marked as failed (kafka.server.ReplicaFetcherThread)

您可以在以下位置查看此类错误消息的示例:


您可以尝试通过kafka-python( pip install kafka-python) 使用 Python 对 Kafka 进行基本监控来解决您的情况。
该程序将持续检查并打印可用的经纪人以及每个经纪人所主导的主题

from kafka import KafkaConsumer, KafkaClient
import time

def kafka_monitor(kafka_server):
    client = KafkaClient(bootstrap_servers=kafka_server)

    while True:
        metadata = client.cluster
        for broker in metadata.brokers():
            print(f"Broker: {broker.nodeId} - {broker.host}:{broker.port}")
            for topic, partition_info in metadata.partitions_for_topic(topic).items():
                if broker.nodeId == partition_info.leader:
                    print(f"    Leading topic: {topic}")

        time.sleep(10)  # Check every 10 seconds

if __name__ == "__main__":
    kafka_monitor('localhost:9092')
Run Code Online (Sandbox Code Playgroud)

该脚本将每 10 秒打印一次经纪人及其主导的主题。
(替换'localhost:9092'为您的Kafka服务器的地址)

然而,在生产环境中,您通常会使用全面的监控解决方案(例如带有 Grafana 的 Prometheus)来可视化指标,甚至使用 Kafka 的内置 JMX 指标以及 JConsole 等工具。
此外,Apache Kafka 发行版还包含一组 shell 脚本,可以帮助执行某些操作,例如检查主题和分区。

这样的基本脚本应该允许您:

  • 识别问题:定期打印代理及其主导的主题将为您提供 Kafka 集群状态的基本快照。如果代理反复从某些分区的领导者角色中消失,则它可能遇到问题。

  • 检查代理健康状况:它确实提供了基本形式的活性检查。如果经纪商倒闭,它就不会引领任何话题。

  • 验证配置:观察代理和领导者分布可能会间接揭示一些配置问题。例如,如果您发现某些代理引导大量主题,则可能表明分区分配或代理配置存在问题。

  • 排除网络故障:经纪人定期消失和重新出现可能是网络不稳定的指标。

  • 考虑重新启动或更换代理:如果代理不断从列表中消失,这可能表明代理不稳定并且需要重新启动或更换。