[ZBX-20993] Agent2 plugin MQTT: invalid client identifier Created: 2022 May 05  Updated: 2024 Jul 01  Resolved: 2024 Jul 01

Status: Closed
Project: ZABBIX BUGS AND ISSUES
Component/s: Agent2 plugin (G)
Affects Version/s: None
Fix Version/s: 6.0.32rc1, 6.4.17rc1, 7.0.1rc1, 7.2.0alpha1

Type: Problem report Priority: Trivial
Reporter: Benedikt Patt Assignee: Eriks Sneiders
Resolution: Fixed Votes: 1
Labels: agent2, mqtt, plugin
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Team: Team INT
Sprint: S24-W24/25
Story Points: 1

 Description   

The client identifier of the build in MQTT client looks like this: "Zabbix agent 2 5.4.12 ab-12-cd-34-ef".

This does not meet the MQTT specification (see MQTT Version 5.0). It says:

The Server MUST allow ClientID's which are between 1 and 23 UTF-8 encoded bytes in length, and that contain only the characters "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".

 

If I try to connect to CCU-Jack (mdzio/ccu-jack), the connection is refused with the error "identifier rejected".



 Comments   
Comment by Benedikt Patt [ 2024 Mar 01 ]

Is there any progress here?

Comment by pascal de jessey [ 2024 Apr 04 ]

Hello,

 

I've the same problem, been able to correct it manually in the source as I'm needing it.

Really quick and dirty correction, in src/go/plugins/mqtt/mqtt.go :

diff --git a/src/go/plugins/mqtt/mqtt.go b/src/go/plugins/mqtt/mqtt.go
index a4aadaced20..3afd7322a12 100644
--- a/src/go/plugins/mqtt/mqtt.go
+++ b/src/go/plugins/mqtt/mqtt.go
@@ -350,7 +350,7 @@ func getClientID() string {
                impl.Errf("failed to generate a uuid for mqtt Client ID: %s", err.Error)
                return "Zabbix agent 2 " + version.Long()
        }
-       return fmt.Sprintf("Zabbix agent 2 %s %x-%x-%x-%x-%x", version.Long(), b[0:4], b[4:6], b[6:8], b[8:10], b[10:])
+       return fmt.Sprintf("%x", b[0:10])
 }
 
 func hasWildCards(topic string) bool {

 

Basically just change the ClientId to be an random hexadecimal string of 20 chars length.

 

Without the modification, I have this error :

 

2024/04/04 15:58:19.648231 [MQTT] creating client for [tls://mydomain.com:8883]
2024/04/04 15:58:19.648280 [MQTT] creating new subscriber on topic 'mytopic' for [tls://mydomain.com:8883]
2024/04/04 15:58:19.648294 [MQTT] establishing connection to [tls://mydomain.com:8883]
2024/04/04 15:58:20.057157 [MQTT] cannot establish connection to [tls://mydomain.com:8883]: identifier rejected

 

with the modification :

 

2024/04/04 16:00:11.278907 [MQTT] creating client for [tls://mydomain.com:8883]
2024/04/04 16:00:11.278978 [MQTT] creating new subscriber on topic 'mytopic' for [tls://mydomain.com:8883]
2024/04/04 16:00:11.278992 [MQTT] establishing connection to [tls://mydomain.com:8883]
2024/04/04 16:00:11.469973 [MQTT] established connection to [tls://mydomain.com:8883]
2024/04/04 16:00:11.470083 [MQTT] connected to [tls://mydomain.com:8883]
2024/04/04 16:00:11.470140 [MQTT] subscribing 'topic' to [tls://mydomain.com:8883]
2024/04/04 16:00:11.500560 [MQTT] subscribed 'topicc' to [tls://mydomain.com:8883]
 

 

would be great to have this change in the code for next versions.

 

Comment by Eriks Sneiders [ 2024 Jun 20 ]

FIXED in

Generated at Fri May 16 08:37:59 EEST 2025 using Jira 9.12.4#9120004-sha1:625303b708afdb767e17cb2838290c41888e9ff0.