在 HDInsight 上分析 Apache Kafka 的記錄

了解如何在 HDInsight 上使用 Azure 監視器記錄分析 Apache Kafka 產生的記錄。

注意

本文最近有所更新,改為使用「Azure 監視器記錄」一詞,而非 Log Analytics。 記錄資料仍儲存在 Log Analytics 工作區中,並仍由相同的 Log Analytics 服務收集和分析。 我們會持續更新術語,以更精確地反映 Azure 監視器記錄的角色。 如需詳細資料,請參閱 Azure 監視器遙測變更

記錄位置

叢集中的 Apache Kafka 記錄位於 /var/log/kafka。 無論是否使用受控磁碟,Kafka 記錄都不會儲存或保存在叢集生命週期中。 下表顯示可用的記錄。

Log 描述
kafka.out Kafka 程序的 stdout 與 stderr。 您可以在本檔案中找到 Kafka 啟動和關閉的記錄。
server.log 主要的 Kafka 伺服器記錄檔, 所有 Kafka 訊息代理程式記錄最後都會存放在這裡。
controller.log 如果訊息代理程式的作用為控制器,則控制器會進行記錄。
statechange.log 所有訊息代理程式的狀態變更事件都會記錄於這個檔案中。
kafka-gc.log Kafka 記憶體回收統計資料。

啟用適用於 Apache Kafka 的 Azure 監視器記錄

對所有 HDInsight 叢集而言,為 HDInsight 啟用 Azure 監視器記錄的步驟都相同。 若要了解如何建立和設定所需的服務,請使用下列連結:

  1. 建立 Log Analytics 工作區。 如需詳細資訊,請參閱 Azure 監視器中的記錄文件。

  2. 在 HDInsight 叢集上建立 Kafka。 如需詳細資訊,請參閱開始使用 HDInsight 上的 Apache Kafka 文件。

  3. 將 Kafka 叢集設定為使用 Azure 監視器記錄。 如需詳細資訊,請參閱使用 Azure 監視器記錄監視 HDInsight 文件。

重要

準備供 Azure 監視器記錄使用的資料可能需要約 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)
    
  • CUP 使用率:

    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 log analytics cpu usage.

下一步

如需 Azure 監視器的詳細資訊,請參閱 Azure 監視器概觀查詢 Azure 監視器記錄以監視 HDInsight 叢集

如需使用 Apache Kafka 的詳細資訊,請參閱下列文件: