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のメトリクスは現在、バイト数、パケット数、メッセージ数、イベントの4つの次元をカバーしています。

接続とセッションのメトリクス

クラスターまたはノードのイベント関連メトリクスを確認できます。例えば、クライアント接続接続セッションクライアントアクセスなどです。

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

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認可がトリガーされた回数

メッセージング

Metrics ページをスクロールすると、メッセージ関連のメトリクスが表示されます。バイト数(bytes)、パケット数(packets)、メッセージ(message-publish-packet)、配信(delivery)が含まれます。

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

Bytes(バイト数)

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

Packets(パケット数)

メトリクス説明
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パケット数

Message (PUBLISHパケット)

メトリクス説明
messages.ackedアックされたメッセージ数
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(配信)

メトリクス説明
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:デフォルトで無効。有効にするとクライアントのトピックサブスクリプション解除イベントメッセージがパブリッシュされます。