共用方式為


MQTT 訊息代理程式計量

MQTT 訊息代理程式提供一組可觀察性計量,可用來監視和分析解決方案的健康情況。 本文說明 MQTT 訊息代理程式可用的計量。

若要設定這些計量的選項,請參閱 設定 MQTT 訊息代理程式診斷設定

MQTT Connect metriccategory 用戶屬性

當用戶端連線到訊息代理程式時,它可以在連線封包中包含名為 metriccategory 的用戶屬性。 然後,訊息代理程式會將所有工作階段驅動計量(例如發布和訂閱)標記為 metriccategory category

例如,如果自我檢查探查與連線 metriccategory=broker_selftest,訊息代理程式會使用 category=broker_selftest標記來自這些會話的所有計量。

這項功能可協助儀錶板顯示流量來源,而沒有主題標記計量的高基數問題。

沒有 metriccategory 的工作階段會標記為 category=uncategorized

傳訊計量

所有計量都包含標記 hostname ,以識別產生計量的 Pod。 個別計量描述中所列的標記會新增至此標記。

計量 描述 標籤
aio_broker_publishes_received 在前端上,此計量代表從用戶端接收多少傳入發佈封包。 對於後端,此計量代表從前端節點傳送多少內部訊息。 category
aio_broker_publishes_sent 在前端上,此計量代表傳送給用戶端的傳出發佈封包數目。 如果多個用戶端訂閱相同的主題,此計量會計算傳送的每個訊息,即使它們具有相同的承載也一樣。 此計數不會計算 ack 封包。 對於後端,此計量代表將多少內部訊息傳送至前端節點。 category
aio_broker_payload_bytes_received 接收之所有發行的承載總和。 此總和不包含屬性的大小或發佈封包本身。 category
aio_broker_payload_bytes_sent 所有已傳送之發行的承載總和。 此總和不包含屬性的大小或發佈封包本身。 category
aio_broker_authentication_successes 此計量會計算成功的驗證要求數目。 category
aio_broker_authentication_failures 此計量會計算失敗的驗證要求數目。 針對無錯誤的驗證伺服器, aio_broker_authentication_successes + aio_broker_authentication_failures = aio_broker_publishes_received = publishes_sent category
aio_broker_authentication_deny 此計量會計算拒絕的驗證要求數目。 category
aio_broker_authorization_allow 此計量會計算成功授權要求。 此計量應一律小於或等於 aio_broker_authentication_successes category
aio_broker_authorization_deny 此計量會計算拒絕的授權要求。 此計量應一律小於或等於 aio_broker_authentication_successes category
aio_broker_qos0_messages_dropped 此計量會計算因任何原因而捨棄的 QoS0 訊息數目。 類別 directionincomingoutgoing category, direction
aio_broker_backpressure_packets_rejected 此計量會計算因反壓而遭到拒絕的封包數目。 如果系統容量為 97%, 封包就會遭到拒絕。
aio_broker_store_retained_messages 此計量會計算訊息在訊息代理程式上儲存多少個保留訊息。
aio_broker_store_retained_bytes 此計量會計算透過訊息代理程式上保留的訊息儲存多少個字節。
aio_broker_store_will_messages 此計量會計算訊息儲存在訊息代理程式上的數目。
aio_broker_store_will_bytes 此計量會計算訊息在訊息代理程式上儲存多少個字節。
aio_broker_number_of_routes 計算路由數目。
aio_broker_connect_route_replication_correctness 描述是否沿著特定路由正確複寫來自自我測試客戶端的連線要求。
aio_broker_connect_latency_route_ms 描述自我測試客戶端傳送 CONNECT 封包和接收 CONNACK 封包之間的時間間隔。 每個路由都會產生此計量。 只有在 CONNECT 成功時,才會產生計量。
aio_broker_connect_latency_last_value_ms 的估計 p99 connect_latency_route_ms
aio_broker_connect_latency_mu_ms connect_latency_route_ms平均值。
aio_broker_connect_latency_sigma_ms 的標準偏差 connect_latency_route_ms
aio_broker_subscribe_route_replication_correctness 描述是否沿著特定路由正確複寫來自自我測試客戶端的訂閱要求。
aio_broker_subscribe_latency_route_ms 描述自我測試用戶端傳送 SUBSCRIBE 封包和接收 SUBACK 封包之間的時間間隔。 每個路由都會產生此計量。 只有在 SUBSCRIBE 成功時,才會產生計量。
aio_broker_subscribe_latency_last_value_ms 的估計 p99 subscribe_latency_route_ms
aio_broker_subscribe_latency_mu_ms subscribe_latency_route_ms平均值。
aio_broker_subscribe_latency_sigma_ms 的標準偏差 subscribe_latency_route_ms
aio_broker_unsubscribe_route_replication_correctness 描述是否在特定路由上正確複寫來自自我測試用戶端的取消訂閱要求。
aio_broker_unsubscribe_latency_route_ms 描述自我測試用戶端傳送 UNSUBSCRIBE 封包和接收 UNSUBACK 封包之間的時間間隔。 每個路由都會產生此計量。 只有在 UNSUBSCRIBE 成功時,才會產生計量。
aio_broker_unsubscribe_latency_last_value_ms 的估計 p99 unsubscribe_latency_route_ms
aio_broker_unsubscribe_latency_mu_ms unsubscribe_latency_route_ms平均值。
aio_broker_unsubscribe_latency_sigma_ms 的標準偏差 subscribe_latency_route_ms
aio_broker_publish_route_replication_correctness 描述是否在特定路由上正確複寫來自自我測試用戶端的取消訂閱要求。
aio_broker_publish_latency_route_ms 描述自我測試客戶端傳送 PUBLISH 封包和接收 PUBACK 封包之間的時間間隔。 每個路由都會產生此計量。 只有在 PUBLISH 成功時,才會產生計量。
aio_broker_publish_latency_last_value_ms 的估計 p99 publish_latency_route_ms
aio_broker_publish_latency_mu_ms publish_latency_route_ms平均值。
aio_broker_publish_latency_sigma_ms 的標準偏差 publish_latency_route_ms
aio_broker_payload_check_latency_last_value_ms 最後一個值的延遲檢查估計 p99。
aio_broker_payload_check_latency_mu_ms 延遲檢查的平均值。
aio_broker_payload_check_latency_sigma_ms 承載延遲的標準偏差。
aio_broker_payload_check_total_messages_lost 遺失的承載總數訊息計數。
aio_broker_payload_check_total_messages_received 已接收之訊息總數的計數。
aio_broker_payload_check_total_messages_sent 已傳送之訊息總數的計數。
aio_broker_ping_correctness 描述自我測試用戶端的 Ping 是否正常運作。
aio_broker_ping_latency_last_value_ms 最後一個值的 Ping 作業估計 p99。
aio_broker_ping_latency_mu_ms Ping 檢查的平均值。
aio_broker_ping_latency_route_ms 特定路由的 Ping 延遲以毫秒為單位。
aio_broker_ping_latency_sigma_ms Ping 作業延遲的標準偏差。
aio_broker_publishes_processed_count 描述已處理的已發行訊息計數。
aio_broker_publishes_received_per_second 計算每秒接收的已發行訊息數目。
aio_broker_publishes_sent_per_second 計算每秒接收的已傳送訊息數目。

Broker 操作員健康情況計量

這組計量會追蹤 訊息代理程式基數狀態。 每個所需的計量都會與回報的計量配對,以顯示目前的狀態。 這些計量會從訊息代理程序的觀點指出狀況良好的 Pod 數目,這可能與 Kubernetes 的報告不同。

例如,如果後端節點重新啟動但未重新連線到其鏈結,則健康情況報告可能會有差異。 Kubernetes 可能會將 Pod 回報為狀況良好,而訊息代理程式會將其回報為關閉,因為它無法正常運作。

所需的計量 報告計量
aio_broker_backend_replicas aio_broker_backend_replicas_current
aio_broker_backend_vertical_chain aio_broker_backend_vertical_chain_current
aio_broker_frontend_replicas aio_broker_frontend_replicas_current

注意

backend_vertical_chain_current 會報告狀況不良鏈結中狀況不良的節點數目。 例如,如果預期的鏈結長度為 4,而三個鏈結有 4 個狀況良好的節點,而一個鏈結只有 2 個狀況良好的節點, backend_vertical_chain_current 則會報告 2。

線上和訂用帳戶計量

這些計量可為訊息代理程式上的連線和訂用帳戶提供可觀察性。

計量 描述 標籤
aio_broker_total_sessions 在前端和單一節點代理程式上,此計量代表有多少用戶端會話存在。 此計數不包含已中斷連線的持續性會話,因為用戶端可能會重新連線到不同的前端節點。 針對後端,此計量代表其鏈結中其他節點的連線。 在操作員上,此計量代表連接前端和後端節點數目。 對於驗證伺服器,此計量代表有多少前端背景工作角色已連線(每個線程每個前端 1 個)。 mqtt_version:[v3/v5]
只限後端節點標籤:
is_tail:[true/false]
chain_id: [n]
aio_broker_store_total_sessions 此計量代表後端鏈結中的會話數目。 相同鏈結中的後端節點應該報告相同數目的會話,而每個鏈結的總和應等於前端total_sessions的總和。 is_persistent:[true/false]
is_tail:[true/false]
chain_id: [n]
aio_broker_connected_sessions aio_broker_total_sessions相同,但只有具有作用中聯機的會話除外。
aio_broker_store_connected_sessions aio_broker_store_total_sessions相同,但只有具有作用中聯機的會話除外。 如果 is_persistent 為 false,則此計數應該等於會話總數。
aio_broker_total_subscriptions 在前端,此計量代表目前聯機會話擁有的訂用帳戶數目。 此計數不包含已中斷連線的持續性會話,因為用戶端可能會重新連線到不同的前端節點。 在運算子上,此計量代表前端和後端節點。 對於驗證伺服器,此計量代表有多少前端背景工作角色已連線(每個線程每個前端 1 個)。
aio_broker_store_total_subscriptions 此計量代表後端鏈結中的訂用帳戶數目。 相同鏈結中的後端節點應該報告相同數目的訂用帳戶。 此計數不一定符合前端 的 total_subscriptions,因為此計量也會追蹤已中斷聯機的持續性會話。

狀態存放區計量

這組計量會追蹤狀態存放區的整體狀態

計量 描述 標籤
aio_broker_state_store_deletions 此計量會計算收到的刪除金鑰要求數目,包括成功的刪除和錯誤。
aio_broker_state_store_insertions 此計量會計算收到的新金鑰插入要求數目,包括成功插入和錯誤。
aio_broker_state_store_keynotify_requests 此計量會計算要監視密鑰變更的要求數目(KEYNOTIFY),包括成功的修改和錯誤。
aio_broker_state_store_modifications 此計量會計算收到的修改金鑰要求數目,包括成功的修改和錯誤。
aio_broker_state_store_notifications_sent 此計量會計算狀態存放區在密鑰值變更和用戶端透過 KEYNOTIFY 註冊時所傳送的通知訊息數目。
aio_broker_state_store_retrievals 此計量會計算收到的密鑰值擷取要求數目,包括成功擷取和錯誤。

磁碟支援的訊息緩衝區計量

這些計量可為磁碟支援的訊息緩衝區提供可觀察性

計量 描述 標籤
aio_broker_buffer_pool_used_percent 報告單一前端或後端緩衝池所使用的緩衝區百分比。 name
aio_broker_disk_transfers_completed 報告指定後端 Pod 上已完成的磁碟傳輸數目。 追蹤從緩衝池傳輸到磁碟的發行總數。
aio_broker_disk_transfers_failed 報告指定後端 Pod 上失敗的磁碟傳輸數目。

注意

只有某些後端緩衝池,特別是名為「讀取器」的動態集區,使用磁碟支援的訊息緩衝區功能。 這些集區會在使用量超過 75% 時儲存訂閱者消息佇列,並將元素傳輸至磁碟。

失敗復原計量

計量 描述
aio_broker_store_transfer_batch_receiver_message_count 此計量會報告存放區傳輸接收者所接收的訊息數目。 此計數應等於存放區傳送傳送者所傳送的訊息數目。
aio_broker_store_transfer_batch_sender_transfer_bytes 此計量會報告存放區傳送傳送者所傳送的位元組數目。
aio_broker_store_transfer_batch_sender_message_count 此計量會報告存放區傳送傳送者所傳送的訊息數目。
aio_broker_store_transfer_ack_event_receiver_message_count 此計量會報告存放區傳輸接收者所接收的 ack 事件訊息數目。 此計數應該等於存放區傳送傳送者所傳送的 ack 事件訊息數目。
aio_broker_store_transfer_ack_event_sender_message_count 此計量會報告存放區傳送傳送者所傳送的 ack 事件訊息數目。
aio_broker_store_transfer_ack_event_sender_transfer_bytes 此計量會報告存放區傳輸傳送者針對 ack 事件所傳送的位元元組數目。
aio_broker_store_transfer_patch_tracker_receiver_message_count 此計量會報告存放區傳輸接收者所接收的修補程式追蹤器訊息數目。 此計數應等於存放區傳輸傳送者所傳送的修補程式追蹤程式訊息數目。
aio_broker_store_transfer_patch_tracker_sender_message_count 此計量會報告存放區傳輸傳送者所傳送的修補程序追蹤程式訊息數目。

開發人員計量

這些計量適用於開發人員偵錯。

計量 描述
aio_broker_patch_tracker_held_patches 此計量會報告鏈結中節點目前保留多少個修補程式。
aio_broker_ack_handler_pending_transactions 此計量會報告 ack 處理程式中目前擱置的交易數。
aio_broker_client_connected 此計量會報告有多少用戶端已連線。
aio_broker_client_disconnected 此計量會報告有多少用戶端已中斷連線。
aio_broker_client_removed 此計量會報告已移除多少個用戶端。