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 の Azure Monitor ログを有効にする手順は、すべての HDInsight クラスターで同じです。 必要なサービスを作成して構成する方法を理解するために、次のリンクを使用してください。

  1. Log Analytics ワークスペースを作成します。 詳細については、「Azure Monitor のログ」ドキュメントをご覧ください。

  2. HDInsight クラスターに Kafka を作成します。 詳細については、「HDInsight での Apache Kafka の開始」をご覧ください。

  3. Azure Monitor ログを使用するように Kafka クラスターを構成します。 詳細については、Azure Monitor ログを使用して HDInsight を監視する方法のドキュメントを参照してください。

重要

データを Azure Monitor ログに使用できるようになるまで、20 分程度かかる場合があります。

ログを照会する

  1. Azure Portal から、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)
    
  • 1 秒あたりの受信メッセージ数: (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)
    
  • 1 秒あたりの受信バイト数: (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)
    
  • 1 秒あたりの送信バイト数: (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 ブローカーの server.log
    log_kafkacontroller_CL Kafka ブローカーの controller.log
    metrics_kafka_CL Kafka JMX メトリック

    Apache kafka log analytics cpu usage.

次のステップ

Azure Monitor の詳細については、「Azure Monitor の概要」および「Azure Monitor ログでクエリを実行して HDInsight クラスターを監視する」をご覧ください。

Apache Kafka の操作について詳しくは、次のドキュメントをご覧ください。