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 訊息數目。 類別 direction 為 incoming 或 outgoing 。 |
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 | 此計量會報告已移除多少個用戶端。 |