Log Service に Kafka でログを送る

Pocket

はじめに

こんにちは、安齋@anzooです。

Alibaba Cloud Log Service にログを送る方法をまとめ、その中で Kafka をピックアップして紹介します。

ログを送る方法一覧

※表内のリンクは Alibaba Cloud Log Service の公式ドキュメントページです

方法 概要 使用方法 サポート対象
Logtail Alibaba Cloud 純正のエージェント型ログ収集ミドルウェア 実行環境へのセットアップ Linux, Windows, Docker
SDK Log Service API をラップした SDK プログラム中で SDK を呼ぶ Java, C, Python, PHP, .NET, C++, Go, Node.js, JavaScript, iOS, Android
API Log Service API HTTPS経由で呼び出す
Kafka Apache Kafkaのストリーム処理ミドルウェア 実行環境へのセットアップ ミドルウェアに準ずる
Logstash Elastic Stackのログ収集ミドルウェア 実行環境へのセットアップ ミドルウェアに準ずる
Flume Apache Flumeのログ収集ミドルウェア 実行環境へのセットアップ ミドルウェアに準ずる
Flink Apache Flinkのストリーム処理ミドルウェア 実行環境へのセットアップ ミドルウェアに準ずる
Syslog Unix系OSのログ収集ライブラリ 実行環境へのセットアップ Unix
Alibaba Cloud サービス サービス連携がサポートされている サービスに準ずる ECS, ACK, Function Compute, OSS, NAS, Anti-DDos Pro & Premium, Security Center, WAF, Cloud Firewall, SLB, VPC, EIP, APIGateway, ApsaraDB for RDS, ApsaraDB for Redis, ApsaraDB for MongoDB, ActionTrail, Message Service, IoT Platform, MaxCompute

Kafka によるログ送信方法

前提条件

  • 送るログはセンサーが記録した気温のテレメトリデータです
  • Kafka Producer は IoT ダッシュボード ThingsBoard の Kafka Node です
    • Kafka については以下をご覧ください
      • https://kafka.apache.org/23/documentation/streams/architecture
    • ThingsBoard については以下をご覧ください
      • https://thingsboard.io/
    • Kafka Node については以下をご覧ください
      • https://thingsboard.io/docs/user-guide/rule-engine-2-0/external-nodes/#kafka-node
  • Kafka Consumer は Log Service Logstore です
    • Log Service Logstore については以下をご覧ください
      • https://www.alibabacloud.com/help/doc-detail/48874.htm
  • Kafka のトピックには Log Service の Logstore 名を使用し、Logstore 名には ThingsBoard の概念である顧客名を使用します
    • 顧客については以下をご覧ください
      • https://thingsboard.io/docs/user-guide/ui/customers/
  • Log Service のプロジェクト名には ThingsBoard の概念であるテナント名を使用します
    • Log Service のプロジェクトについては以下をご覧ください
      • https://www.alibabacloud.com/help/doc-detail/48873.htm
    • テナントについては以下をご覧ください
      • https://thingsboard.io/docs/user-guide/ui/tenants/
  • ThingsBoard には AliyunLogFullAccess の権限を持つ Resource Access Management ユーザーを割り当てています
    • Resource Access Management については以下をご覧ください
      • https://www.alibabacloud.com/product/ram
  • ThingsBoard は Alibaba Cloud Kubernetes 上で起動しています
    • Kubernetes については以下をご覧ください
      • https://www.alibabacloud.com/product/kubernetes

方法

  1. ルールチェーンから Root Rule Chain を選択し、Kafka Node をセットアップします

    • ルールチェーンについては以下をご覧ください
      • https://thingsboard.io/docs/user-guide/rule-engine-2-0/re-getting-started/
        tb01
  2. Kakfa トピックと Kafka Broker を入力します

    • Kafka トピックには顧客名を取得できる変数 customer_additionalInfo を使用して、Logstore 名をセットします
    • Kafka Broker には Log Service のエンドポイント プロジェクト名.リージョン.log.aliyuncs.com:10011 を入力します
      tb02
  3. Log Service 固有のプロパティを入力します

    • security.protocol : SASL_SSL
    • sasl.mechanism : PLAIN
    • sasl.jaas.config : org.apache.kafka.common.security.scram.ScramLoginModule required username="プロジェクト名" password="RAMユーザーのアクセスキーID#RAMユーザーのアクセスキー";
    • ssl.endpoint.identification.algorithm : https
      tb03
  4. Log Service のプロジェクトと Logstore を選択すると、Logstore にテレメトリデータが送られていることが確認できました
    tb04

まとめ

ThingsBoard から簡単に Log Service にログを送ることができました。

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です