HiveMQとOpenTelemetryを使ってDatadogでIoTアプリケーションを監視する

みなさん、こんにちは。DatadogテクニカルエバンジェリストのTaijiです。

こちらは2022年アドベントカレンダー10日目の記事です🎄
前の記事は [@ks0714](https://qiita.com/ks0714) さんの [OpenshiftへのDatadog Agent導入について](https://qiita.com/ks0714/items/f16cf6da28e861942ae8) になります。

この記事では、HiveMQとOpenTelemetryを使い、DatadogでIoTアプリの監視をしちゃおうという英語記事の翻訳になります！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81226/c2231f86-12d9-6660-61b8-e49919008c47.png)

### Intro
大規模なIoT環境は非常に複雑で、信頼性の低い接続で相互にデータを移動させなければならない異種デバイスの複数の層で構成されています。IoT環境の各レイヤーを可視化することは、ユーザーエクスペリエンスに悪影響を及ぼす可能性のある導入時の問題を迅速に特定するために重要となります。

[HiveMQ](https://www.hivemq.com/?utm_source=web&utm_medium=Opentelemetry+blog&utm_campaign=Datadog) は、企業規模のIoTフリート向けのオープンソースのMQ Telemetry Transport（MQTT）ブローカーで、接続デバイスと下流のアプリケーションやサービス間で安全かつ信頼性の高いデータ転送を実現します。

[DatadogのHiveMQ Integration](https://www.datadoghq.com/blog/monitor-hivemq-with-datadog/) は、HiveMQからメトリクスとイベントログを収集し、接続、切断、メッセージスループットなどの主要データの可視化とアラートを支援する、すぐに使えるダッシュボードを提供します。これにより、IoTインフラの健全性を可視化するベースラインが提供されますが、環境で実際に実行されているアプリケーションとワークロードのパフォーマンスに対する洞察を得ることも重要です。

IoTアプリケーションを可視化するために、HiveMQの [Distributed Tracing Extension](https://www.hivemq.com/extension/distributed-tracing-extension/?utm_source=web&utm_medium=Opentelemetry+blog&utm_campaign=Datadog) を使用すると、ユーザーはワークロードを計測してOpenTelemetry形式の [分散トレース](https://www.datadoghq.com/knowledge-center/distributed-tracing/) を生成し、環境全体でアプリケーションプロセスをエンドツーエンドで追跡することができます。これらのトレースをDatadogに送信することで [Datadog Application Performance Monitoring（APM）](https://www.datadoghq.com/product/apm/) を使用して、接続デバイス上で実行されているアプリケーションのパフォーマンスをより深く理解し、より効果的なトラブルシューティングと根本原因の分析を行うことができます。

この記事では、HiveMQの拡張機能とOTelのサポートによって環境全体のIoT観測性がどのように強化され、Datadogを使用して分散IoTアプリケーションの健全性とパフォーマンスを完全に可視化できるかを見ていきます。

### HiveMQとOpenTelemetryのIntegration方法について
HiveMQは [公式のOTel API](https://opentelemetry.io/docs/instrumentation/go/getting-started/#trace-instrumentation) を使用して、そのブローカーがスパンとトレースを作成できるようにしました。これにより、ユーザーはHiveMQブローカー（V. 4.9x）と [HiveMQ Enterprise Extension for Kafka](https://www.hivemq.com/extension/hivemq-kafka-extension/?utm_source=web&utm_medium=Opentelemetry+blog&utm_campaign=Datadog) をOTelの仕様にしたがって計測することができるようになりました。さらに、Distributed Tracing Extensionは、HiveMQ MQTTブローカーとその統合にトレーシング機能を追加します。

この拡張機能は、HiveMQブローカーで送受信されるすべてのMQTT PUBLISHメッセージと、Kafka Extensionで送受信されるKafkaレコードをトレースします。ブローカーでは ``PublishInboundIntercepors``、``PublishOutboundInterceptors``、``PublishAuthorizers`` などのアクションに対するトレースサポートが含まれています。Kafka拡張では、マッピングやトランスフォーマーのKafkaレコードが送信および/または受信されると、トレースが生成されます。また、レイテンシーや例外発生数などのメトリクスを収集することができます。

これらの機能により、DatadogのようなAPMソリューションにMQTTの可視性をもたらすことができます。例えば、この拡張機能を使用すると、HiveMQ MQTTブローカーがリクエストの処理にかかる時間を正確に把握することができますし、得られた洞察は、根本原因の分析を迅速化し、平均解決時間（MTTR）を改善し、分散アーキテクチャ全体の平均故障間隔（MTBF）を増加させることができます。

### DatadogでHiveMQからのOpenTelemetryトレースの監視を開始する
DatadogはOTelのメトリクス、ログ、トレースをサポートしているため、HiveMQとDatadogのカスタマーは、Datadog APMを使用して、HiveMQブローカーに接続したIoTアプリケーションからのOTelインストルメントによる分散トレースを監視できるようになりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81226/f9695bf0-e558-06c5-abc9-b1e53469ed32.png)
``HiveMQのOTel互換ブローカーとKafka拡張により、IoTアプリケーションからOTelコレクターに分散トレースを送信し、Datadogに送信してモニタリングすることができます。``

Datadogでこれらのトレースの監視を開始するには、まずHiveMQ Distributed Tracing Extensionを有効にします。これにより、トレースが [OTel Collector](https://opentelemetry.io/docs/collector/) に送信されます。そこから [Datadog Exporterを使用して、OTel SDKのトレースをDatadogに転送](https://docs.datadoghq.com/tracing/other_telemetry/connect_logs_and_traces/opentelemetry/?tab=python&_gl=1*njgvqw*_ga*MTY0Njk1MTc5OC4xNjY1NTYzMjk3*_ga_KN80RDFSQK*MTY3MjEwNjA2OS44Ni4xLjE2NzIxMDYxNDQuNDUuMC4w&_ga=2.232533023.148705732.1672106071-1646951798.1665563297) してください。分散トレースがDatadog APMに送信され始めると [トレースエクスプローラ](https://docs.datadoghq.com/tracing/trace_explorer/?tab=listview&_gl=1*1hr9twc*_ga*MTY0Njk1MTc5OC4xNjY1NTYzMjk3*_ga_KN80RDFSQK*MTY3MjEwNjA2OS44Ni4xLjE2NzIxMDYxNDQuNDUuMC4w&_ga=2.22562747.148705732.1672106071-1646951798.1665563297) から可視化およびクエリを実行し、IoTアプリケーションのパフォーマンス問題を可視化することができます。

HiveMQのOTel計装トレースとDatadogのOpenTelemetryのサポート、これらの機能を組み合わせることで、次のようなことが可能になります。

- IoTアプリケーションのパフォーマンスに関する問題を迅速に発見する
- 根本原因を特定し、解決までの時間を短縮
- ユーザーエクスペリエンスの問題を修正し、顧客満足度を向上させる
- 広範なインフラストラクチャの中で、IoTアプリケーションがどのように相互作用しているかを理解できる

### さいごに
IoT observabilityについては [HiveMQブログ](https://www.hivemq.com/blog/iot-observability/?utm_source=web&utm_medium=Opentelemetry+blog&utm_campaign=Datadog) で詳細をご覧ください。また [Datadog HiveMQ Integration](https://app.datadoghq.com/integrations/hivemq?_gl=1*2psa3s*_ga*MTY0Njk1MTc5OC4xNjY1NTYzMjk3*_ga_KN80RDFSQK*MTY3MjEwNjA2OS44Ni4xLjE2NzIxMDYxNDQuNDUuMC4w&_ga=2.32237118.148705732.1672106071-1646951798.1665563297) を有効にして、HiveMQのメトリクスとイベントログをDatadogに送信したり [DatadogのOpenTelemetryのサポート](https://docs.datadoghq.com/opentelemetry/?_gl=1*2psa3s*_ga*MTY0Njk1MTc5OC4xNjY1NTYzMjk3*_ga_KN80RDFSQK*MTY3MjEwNjA2OS44Ni4xLjE2NzIxMDYxNDQuNDUuMC4w&_ga=2.32237118.148705732.1672106071-1646951798.1665563297) について詳しく知ることができます。Datadogをまだご利用でない方は、14日間の [無料トライアル](https://www.datadoghq.com/blog/hivemq-opentelemetry-monitor-iot-applications/#) にご登録の上、ぜひご利用ください。

### オリジナルBlog
https://www.datadoghq.com/blog/hivemq-opentelemetry-monitor-iot-applications/