Skip to content

統計情報とメトリクス

EMQXはメトリクス監視機能を提供しており、これにより運用・保守担当者は現在のサービス状況を監視し、システムの不具合をトラブルシュートできます。

EMQXは監視状態を統計情報とメトリクスに分類しています。

  • 統計情報は整数型のゲージで、メトリクスが要求された時点の単一の値を返します。
  • メトリクスは整数型のカウンターで、送受信されたバイト数やメッセージ数などの単純な増減を計測します。

EMQXはユーザーに統計情報とメトリクスを閲覧する複数の方法を提供しています。最も直接的にはEMQXダッシュボードでこれらのデータを確認できます。ダッシュボードへのアクセスが不便な場合は、REST APIシステムトピックのメッセージからもデータを取得可能です。さらに、監視機能を独自の監視システムと簡単に統合することもできます。詳細はPrometheusとの統合をご覧ください。

ダッシュボードで統計情報を閲覧する

EMQXダッシュボードの左ナビゲーションメニューから Monitoring -> Cluster Overview をクリックします。Cluster Overview ページで Nodes タブをクリックし、ノード名をクリックすると右側に統計情報の詳細が表示されます。

ノード統計情報

統計情報は現在値と過去の最大値の2つの値を含みます。例えば、現在のサブスクリプション数と過去の最大サブスクリプション数です。以下はEMQXの統計情報一覧です。

統計情報説明
connections.count現在の接続数
connections.max過去の最大接続数
live_connections.count現在のライブ接続数
live_connections.max過去の最大ライブ接続数
channels.countsessions.count と同じ
channels.maxsessions.max と同じ
sessions.count現在のセッション数
sessions.max過去の最大セッション数
topics.count現在のトピック数
topics.max過去の最大トピック数
suboptions.countsubscriptions.count と同じ
suboptions.maxsubscriptions.max と同じ
subscribers.count現在のサブスクライバー数
subscribers.max過去の最大サブスクライバー数
subscriptions.count現在のサブスクリプション数(共有サブスクリプションを含む)
subscriptions.max過去の最大サブスクリプション数
subscriptions.shared.count現在の共有サブスクリプション数
subscriptions.shared.max過去の最大共有サブスクリプション数
retained.count現在保持されているメッセージ数
retained.max過去の最大保持メッセージ数
delayed.count現在遅延しているメッセージ数
delayed.max過去の最大遅延メッセージ数

ダッシュボードでメトリクスを閲覧する

EMQXダッシュボードの左ナビゲーションメニューから Monitoring -> Cluster Overview をクリックします。Cluster Overview ページで Metrics タブをクリックすると、クラスターまたは特定ノードのランタイムメトリクスを閲覧できます。

EMQXのメトリクスはカウンターとして実装されており、ノード起動以来の特定イベントの累積発生回数を記録します。これらのメトリクスは、システムの挙動観察、負荷パターンの評価、トラブルシューティングに役立ちます。

ダッシュボード上のメトリクスは以下のカテゴリに分類されています:

  • 接続およびセッションメトリクス:クライアント接続、セッション、アクセス制御イベント
  • ルールおよびアクション(シンク)メトリクス:ルールマッチングとアクション実行(データ統合)
  • メッセージングメトリクス:バイト数、パケット数、メッセージ数、配信統計

接続およびセッションメトリクス

このセクションではクラスターまたはノードのイベント関連メトリクスを表示します。対象はクライアント接続接続セッションクライアントアクセスです。

ダッシュボードイベントメトリクス

Connections

メトリクス説明
client.connackクライアントが受信した接続確認(CONNACK)メッセージ数
client.connectクライアントからの接続要求数(成功・失敗を含む)
client.connected成功したクライアント接続数
client.disconnectedクライアント切断数(正常・異常切断を含む)
client.subscribe成功したサブスクライブ数
client.unsubscribe成功したサブスクライブ解除数

Sessions

メトリクス説明
session.created作成されたセッション数
session.discarded廃棄されたセッション数
session.resumed再開されたセッション数
session.takenover乗っ取られたセッション数
session.terminated終了されたセッション数

Access

メトリクス説明
authorization.allowクライアント認可成功の合計数(キャッシュヒットとルールにマッチした認可要求の合計)
authorization.denyクライアント認可失敗の合計数(キャッシュヒットとルールにマッチしなかった認可要求の合計)
authorization.matched.allowルールにより認可成功したクライアント数
authorization.matched.denyルールにより認可失敗(拒否)されたクライアント数
authorization.nomatchいずれのルールにもマッチしなかった認可要求数
authorization.cache_hitキャッシュから認可結果(許可または拒否)を取得したクライアント数
authorization.superuserスーパーユーザーとして認可されたクライアント数
client.auth.anonymous匿名ログインしたクライアント数
client.authenticate認証がトリガーされた回数
client.authorize認可がトリガーされた回数

ルールおよびアクション(シンク)

このセクションはデータ統合に関連するメトリクスを提供し、ルールのマッチ回数やアクション(シンク)の実行回数を把握できます。

これらのメトリクスはルールの有効性評価、下流データフローの監視、全体的なデータ統合利用状況の評価に役立ちます。

dashboard-integration-metrics

ルール

メトリクス説明
rules.matchedメッセージやイベントがルールエンジンを通過した際にルールが正常にマッチした回数

アクション(シンク)

メトリクス説明
actions.executedルールマッチにより実行されたアクション(シンク)の回数
actions.messagesアクション実行で処理されたメッセージ数。単一のアクション実行で複数メッセージを処理するため、この値は actions.executed 以上となる。

メッセージング

Metrics ページをスクロールして、バイト数パケット数メッセージ配信に関するメトリクスを確認できます。

ダッシュボードメッセージングメトリクス

バイト数

メトリクス説明
bytes.received受信したバイト数
bytes.sent送信したバイト数

パケット数

メトリクス説明
packets.received受信したパケット数
packets.sent送信したパケット数
packets.connect.received受信したCONNECTパケット数
packets.connack.auth_error理由コード0x86および0x87のCONNACKメッセージ送信数
packets.connack.error0x00以外の理由コードを持つCONNACKパケット送信数。この値は packets.connack.auth_error 以上。
packets.connack.sent送信したCONNACKパケット数
packets.publish.received受信したPUBLISHパケット数
packets.publish.sent送信したPUBLISHパケット数
packets.publish.inuseパケット識別子が占有された受信PUBLISHパケット数
packets.publish.auth_errorACLチェックに失敗した受信PUBLISHパケット数
packets.publish.errorパブリッシュできなかった受信PUBLISHパケット数
packets.puback.received受信したPUBACKパケット数
packets.puback.sent送信したPUBACKパケット数
packets.puback.inuse識別子が占有された受信PUBACKメッセージ数
packets.puback.missed不明な識別子を持つ受信PUBACKパケット数
packets.pubrec.received受信したPUBRECパケット数
packets.pubrec.sent送信したPUBRECパケット数
packets.pubrec.inuse識別子が占有された受信PUBRECメッセージ数
packets.pubrec.missed不明な識別子を持つ受信PUBRECパケット数
packets.pubrel.received受信したPUBRELパケット数
packets.pubrel.sent送信したPUBRELパケット数
packets.pubrel.missed不明な識別子を持つ受信PUBRELパケット数
packets.pubcomp.received受信したPUBCOMPパケット数
packets.pubcomp.sent送信したPUBCOMPパケット数
packets.pubcomp.inuse識別子が占有された受信PUBCOMPメッセージ数
packets.pubcomp.missed失われたPUBCOMPパケット数
packets.subscribe.received受信したSUBSCRIBEパケット数
packets.subscribe.error失敗したサブスクリプションを含む受信SUBSCRIBEパケット数
packets.subscribe.auth_errorACLチェックに失敗した受信SUBACKパケット数
packets.suback.sent送信したSUBACKパケット数
packets.unsubscribe.received受信したUNSUBSCRIBEパケット数
packets.unsubscribe.error失敗したサブスクリプション解除を含む受信UNSUBSCRIBEパケット数
packets.unsuback.sent送信したUNSUBACKパケット数
packets.pingreq.received受信したPINGREQパケット数
packets.pingresp.sent送信したPINGRESPパケット数
packets.disconnect.received受信したDISCONNECTパケット数
packets.disconnect.sent送信したDISCONNECTパケット数
packets.auth.received受信したAUTHパケット数
packets.auth.sent送信したAUTHパケット数

メッセージ(PUBLISHパケット)

メトリクス説明
messages.ackedアック(ACK)されたメッセージ数
messages.delayedEMQXにより遅延パブリッシュとして保存されているメッセージ数
messages.deliveredEMQX内部でサブスクリプション処理に転送されたメッセージ数
messages.droppedサブスクリプション処理に転送される前にEMQXで破棄されたメッセージ数合計
messages.dropped.no_subscribersサブスクライバー不在により破棄されたメッセージ数
messages.dropped.await_pubrel_timeoutPUBREL待機タイムアウトにより破棄されたメッセージ数
messages.dropped.quota_exceededクォータ超過(通常は接続数)により破棄されたメッセージ数
messages.dropped.receive_maximumReceive Maximum到達により破棄されたメッセージ数
messages.forward他ノードに転送されたメッセージ数
messages.publishシステムメッセージを除くパブリッシュされたメッセージ数
messages.qos0.receivedクライアントから受信したQoS 0メッセージ数
messages.qos1.receivedクライアントから受信したQoS 1メッセージ数
messages.qos2.receivedクライアントから受信したQoS 2メッセージ数
messages.qos0.sentクライアントに送信したQoS 0メッセージ数
messages.qos1.sentクライアントに送信したQoS 1メッセージ数
messages.qos2.sentクライアントに送信したQoS 2メッセージ数
messages.receivedクライアントから受信したメッセージ数(messages.qos0.receivedmessages.qos1.receivedmessages.qos2.receivedの合計)
messages.sentクライアントに送信したメッセージ数(messages.qos0.sentmessages.qos1.sentmessages.qos2.sentの合計)

配信

メトリクス説明
delivery.dropped配信中に破棄されたメッセージ数合計
delivery.dropped.expiredメッセージの有効期限切れにより配信中に破棄されたメッセージ数
delivery.dropped.no_localNo Localサブスクリプションオプションにより配信中に破棄されたメッセージ数
delivery.dropped.qos0_msgメッセージキューが満杯のため配信中に破棄されたQoS 0メッセージ数
delivery.dropped.queue_fullメッセージキューが満杯のため配信中に破棄されたQoS 0以外のメッセージ数
delivery.dropped.too_large長さ制限超過により配信中に破棄されたメッセージ数

REST APIによる監視状態の取得

APIを通じてメトリクスと統計情報を取得することも可能です。UIの左ナビゲーションメニューで Metrics をクリックすると、このAPIリクエストを実行できます。EMQX APIの利用方法についてはREST APIをご参照ください。

メトリクスAPIドキュメント

システムトピックによる監視状態の取得

EMQXは実行状況、メッセージ統計、クライアントのオンライン・オフラインイベントに関するメッセージをシステムトピックを通じて定期的にパブリッシュします。クライアントはトピック名の前に $SYS/ プレフィックスを付けてシステムトピックをサブスクライブできます。システムトピックの種類についてはシステムトピックをご覧ください。

システムトピックの設定はダッシュボードで行えます。左ナビゲーションメニューから Management -> MQTT Settings をクリックし、System Topic タブを選択してください。

システムトピック設定
  • Messages publish interval$SYS トピック送信の間隔を設定します。
  • Heartbeat interval:ハートビートメッセージ送信の間隔を設定します。
  • Client connected notification:デフォルトで有効。クライアント接続イベントメッセージをパブリッシュします。
  • Client disconnected notification:デフォルトで有効。クライアント切断イベントメッセージをパブリッシュします。
  • Client subscribed notification:デフォルトで無効。有効にするとクライアントのトピックサブスクライブイベントメッセージをパブリッシュします。
  • Client unsubscribed notification:デフォルトで無効。有効にするとクライアントのトピックサブスクライブ解除イベントメッセージをパブリッシュします。