As part the AMKO full sync with the K8s cluster and Avi controller, all the federated health monitors are ingested regardless if they are health monitors not created by AMKO. During this AMKO full sync there will be error log messages stating "hm description does not contain gsname" for all system default or user created federated health monitors.
Example AMKO pod error log messages:
User created federated health monitor.
2026-03-20T18:21:22.029Z ^[[33mWARN^[[0m cache/controller_obj_cache.go: hmName: example-tcp-hm, msg: hm description does not contain gsname, checking if hm name has gsname in it(according to old naming convention)
2026-03-20T18:21:22.029Z ^[[34mINFO^[[0m ingestion/fullsync.go: key: {admin example-tcp-hm}, msg: can't get gs name from hm, err : hmName: tcp-443, hmDescription: , msg: hm is malformed, error in parsing gs name, unexpected formatSystem default federated health monitors:
2026-03-20T18:21:22.057Z ^[[33mWARN^[[0m cache/controller_obj_cache.go: hmName: System-GSLB-Ping, msg: hm description does not contain gsname, checking if hm name has gsname in it(according to old naming convention)
2026-03-20T18:21:22.057Z ^[[34mINFO^[[0m ingestion/fullsync.go: key: {admin System-GSLB-Ping}, msg: can't get gs name from hm, err : hmName: System-GSLB-Ping, hmDescription: , msg: hm is malformed, error in parsing gs name, unexpected format
2026-03-20T18:21:22.083Z ^[[33mWARN^[[0m cache/controller_obj_cache.go: hmName: System-GSLB-TCP, msg: hm description does not contain gsname, checking if hm name has gsname in it(according to old naming convention)
2026-03-20T18:21:22.083Z ^[[34mINFO^[[0m ingestion/fullsync.go: key: {admin System-GSLB-TCP}, msg: can't get gs name from hm, err : hmName: System-GSLB-TCP, hmDescription: , msg: hm is malformed, error in parsing gs name, unexpected format
2026-03-20T18:21:22.112Z ^[[33mWARN^[[0m cache/controller_obj_cache.go: hmName: System-GSLB-HTTP, msg: hm description does not contain gsname, checking if hm name has gsname in it(according to old naming convention)
2026-03-20T18:21:22.112Z ^[[34mINFO^[[0m ingestion/fullsync.go: key: {admin System-GSLB-HTTP}, msg: can't get gs name from hm, err : hmName: System-GSLB-HTTP, hmDescription: , msg: hm is malformed, error in parsing gs name, unexpected format
2026-03-20T18:21:22.148Z ^[[33mWARN^[[0m cache/controller_obj_cache.go: hmName: System-GSLB-HTTPS, msg: hm description does not contain gsname, checking if hm name has gsname in it(according to old naming convention)
2026-03-20T18:21:22.148Z ^[[34mINFO^[[0m ingestion/fullsync.go: key: {admin System-GSLB-HTTPS}, msg: can't get gs name from hm, err : hmName: System-GSLB-HTTPS, hmDescription: , msg: hm is malformed, error in parsing gs name, unexpected format
2026-03-20T18:21:22.175Z ^[[33mWARN^[[0m cache/controller_obj_cache.go: hmName: System-GSLB-UDP, msg: hm description does not contain gsname, checking if hm name has gsname in it(according to old naming convention)
2026-03-20T18:21:22.175Z ^[[34mINFO^[[0m ingestion/fullsync.go: key: {admin System-GSLB-UDP}, msg: can't get gs name from hm, err : hmName: System-GSLB-UDP, hmDescription: , msg: hm is malformed, error in parsing gs name, unexpected format
AMKO 2.1.1 and previous versions.
When AMKO creates a federated health monitor it adds a description field containing the gsname information and other markers to the health monitor object. System default and user created federated health monitors do not contain the description field therefore AMKO logs an error message for these health monitors.
AMKO created HM example: -- In the description field AMKO will add the "gsname" which it expects during the full sync.
{
"allow_duplicate_monitors": true,
"description": "created by: amko, gsname: example.gslb.local, path: /, protocol: https",
"failed_checks": 3,
"https_monitor": {
"exact_http_request": false,
"http_request": "HEAD / HTTP/1.0",
"http_response_code": [
"HTTP_2XX",
"HTTP_3XX"
]
},
"is_federated": true,
"markers": [
{
"key": "created-by",
"values": [
"amko-uuid"
]
}
],
"monitor_port": 443,
"name": "amko--uuid",
"receive_timeout": 4,
"send_interval": 10,
"successful_checks": 3,
"tenant_ref": "/api/tenant/?name=admin",
"type": "HEALTH_MONITOR_HTTPS",
"url": "/api/healthmonitor/healthmonitor-uuid",
"uuid": "healthmonitor-uuid"
}System Default HM: - the description field does not exist.
{
"failed_checks": 3,
"http_monitor": {
"exact_http_request": false,
"http_request": "HEAD / HTTP/1.0",
"http_response_code": [
"HTTP_2XX",
"HTTP_3XX"
]
},
"is_federated": true,
"monitor_port": 80,
"name": "System-GSLB-HTTP",
"receive_timeout": 4,
"send_interval": 10,
"successful_checks": 3,
"tenant_ref": "/api/tenant/?name=admin",
"type": "HEALTH_MONITOR_HTTP",
"url": "/api/healthmonitor/healthmonitor-uuid",
"uuid": "healthmonitor-uuid"
}User created HM: - the description field does not exist.
{
"failed_checks": 2,
"is_federated": true,
"monitor_port": 443,
"name": "example-tcp-hm",
"receive_timeout": 4,
"send_interval": 10,
"successful_checks": 2,
"tcp_monitor": {
"tcp_half_open": false
},
"tenant_ref": "/api/tenant/?name=admin",
"type": "HEALTH_MONITOR_TCP",
"url": "/api/healthmonitor/healthmonitor-uuid",
"uuid": "healthmonitor-uuid"
}
An enhancement will be implemented to AMKO in future releases to improve the logging for user and system default federated health monitors. At this time there are no options from AMKO to suppress these error log messages. These log error messages can be safely ignored as it does not pose any functional issues with AMKO.