Skip to content

統計とメトリクス

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

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

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

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

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

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

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(ルール)

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

Actions (Sink)(アクション(シンク))

メトリクス説明
actions.executedルールマッチにより実行されたアクション(シンク)の回数

メッセージング

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

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

バイト数

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

パケット数

メトリクス説明
packets.received受信したパケット数
packets.sent送信したパケット数
packets.connect.received受信したCONNECTパケット数
packets.connack.auth_error理由コード0x86および0x87のCONNACKメッセージ送信数
packets.connack.error理由コード0x00以外の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:デフォルトで無効。有効にするとクライアントのトピックサブスクリプション解除時のイベントメッセージがパブリッシュされます。