はじめに
こんにちは、安齋@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 については以下をご覧ください
- Kafka Consumer は Log Service Logstore です
- Log Service Logstore については以下をご覧ください
- https://www.alibabacloud.com/help/doc-detail/48874.htm
- Log Service Logstore については以下をご覧ください
- 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/
- Log Service のプロジェクトについては以下をご覧ください
- ThingsBoard には
AliyunLogFullAccess
の権限を持つ Resource Access Management ユーザーを割り当てています- Resource Access Management については以下をご覧ください
- https://www.alibabacloud.com/product/ram
- Resource Access Management については以下をご覧ください
- ThingsBoard は Alibaba Cloud Kubernetes 上で起動しています
- Kubernetes については以下をご覧ください
- https://www.alibabacloud.com/product/kubernetes
- Kubernetes については以下をご覧ください
方法
-
ルールチェーンから Root Rule Chain を選択し、Kafka Node をセットアップします
- ルールチェーンについては以下をご覧ください
- https://thingsboard.io/docs/user-guide/rule-engine-2-0/re-getting-started/
- https://thingsboard.io/docs/user-guide/rule-engine-2-0/re-getting-started/
- ルールチェーンについては以下をご覧ください
-
Kakfa トピックと Kafka Broker を入力します
- Kafka トピックには顧客名を取得できる変数
customer_additionalInfo
を使用して、Logstore 名をセットします - Kafka Broker には Log Service のエンドポイント
プロジェクト名.リージョン.log.aliyuncs.com:10011
を入力します
- Kafka トピックには顧客名を取得できる変数
-
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
-
Log Service のプロジェクトと Logstore を選択すると、Logstore にテレメトリデータが送られていることが確認できました
まとめ
ThingsBoard から簡単に Log Service にログを送ることができました。