分析 HDInsight 上 Apache Kafka 的日志

了解如何使用 Azure Monitor 日志分析 HDInsight 上由 Apache Kafka 生成的日志。

注意

本文最近已更新,从使用术语“Log Analytics”改为使用术语“Azure Monitor 日志”。 日志数据仍然存储在 Log Analytics 工作区中,并仍然由同一 Log Analytics 服务收集并分析。 我们正在更新术语,以便更好地反映 Azure Monitor 中的日志的角色。 有关详细信息,请参阅 Azure Monitor 术语更改

日志位置

群集中的 Apache Kafka 日志位于 /var/log/kafka。 不管是否使用托管磁盘,都不会在整个群集生命周期内保存或保留 Kafka 日志。 下表显示可用的日志。

日志 说明
kafka.out Kafka 进程的 stdout 和 stderr。 你将在此文件中找到 Kafka 的启动日志和关闭日志。
server.log 主 Kafka 服务器日志。 所有 Kafka 代理日志均在此处结束。
controller.log 控制器日志(如果代理充当控制器)。
statechange.log 代理的所有状态更改事件都记录在此文件中。
kafka-gc.log Kafka 垃圾回收统计信息。

为 Apache Kafka 启用 Azure Monitor 日志

对于所有 HDInsight 群集,启用适用于 HDInsight 的 Azure Monitor 日志的步骤都是相同的。 通过访问以下链接来了解如何创建和配置所需的服务:

  1. 创建 Log Analytics 工作区。 有关详细信息,请参阅 Azure Monitor 中的日志文档。

  2. 创建 Kafka on HDInsight 群集。 有关详细信息,请参阅 Apache Kafka on HDInsight 入门文档。

  3. 配置 Kafka 群集以使用 Azure Monitor 日志。

重要

在数据可用于 Azure Monitor 日志之前可能需要等待约 20 分钟。

查询日志

  1. Azure 门户中,选择 Log Analytics 工作区。

  2. 从左侧菜单的“常规”下,选择“日志”。 从此处可搜索从 Kafka 所收集的数据。 在查询窗口中输入查询,然后选择“运行”。 一下是一些示例搜索:

  • 磁盘使用率:

    Perf
    | where ObjectName == "Logical Disk" and CounterName == "Free Megabytes" and InstanceName == "_Total" and ((Computer startswith_cs "hn" and Computer contains_cs "-") or (Computer startswith_cs "wn" and Computer contains_cs "-")) 
    | summarize AggregatedValue = avg(CounterValue) by Computer, bin(TimeGenerated, 1h)
    
  • CPU 使用率:

    Perf 
    | where CounterName == "% Processor Time" and InstanceName == "_Total" and ((Computer startswith_cs "hn" and Computer contains_cs "-") or (Computer startswith_cs "wn" and Computer contains_cs "-")) 
    | summarize AggregatedValue = avg(CounterValue) by Computer, bin(TimeGenerated, 1h)
    
  • 每秒传入消息数:(将 your_kafka_cluster_name 替换为群集名称。)

    metrics_kafka_CL 
    | where ClusterName_s == "your_kafka_cluster_name" and InstanceName_s == "kafka-BrokerTopicMetrics-MessagesInPerSec-Count" 
    | summarize AggregatedValue = avg(kafka_BrokerTopicMetrics_MessagesInPerSec_Count_value_d) by HostName_s, bin(TimeGenerated, 1h)
    
  • 每秒传入字节数:(将 wn0-kafka 替换为工作器节点主机名。)

    metrics_kafka_CL 
    | where HostName_s == "wn0-kafka" and InstanceName_s == "kafka-BrokerTopicMetrics-BytesInPerSec-Count" 
    | summarize AggregatedValue = avg(kafka_BrokerTopicMetrics_BytesInPerSec_Count_value_d) by bin(TimeGenerated, 1h)
    
  • 每秒传出字节数:(将 your_kafka_cluster_name 替换为群集名称。)

    metrics_kafka_CL 
    | where ClusterName_s == "your_kafka_cluster_name" and InstanceName_s == "kafka-BrokerTopicMetrics-BytesOutPerSec-Count" 
    | summarize AggregatedValue = avg(kafka_BrokerTopicMetrics_BytesOutPerSec_Count_value_d) by bin(TimeGenerated, 1h)
    

    也可输入 * 来搜索全部已记录的类型。 当前有以下日志可用于查询:

    日志类型 说明
    log_kafkaserver_CL Kafka broker server.log
    log_kafkacontroller_CL Kafka broker controller.log
    metrics_kafka_CL Kafka JMX metrics

    Apache kafka 日志分析 CPU 使用率。

后续步骤

有关 Azure Monitor 的详细信息,请参阅 Azure Monitor 概述

有关使用 Apache Kafka 的详细信息,请参阅以下文档: