add metric for recording the status of registry connections
zk: record true only if the zk.Conn.State == zk.StateHasSession
nacos: not recorded at this time
eureka: not recorded at this time
meshregistry metrics example:
# HELP meshregistry_enabled_source Number of enabled sources.
# TYPE meshregistry_enabled_source gauge
meshregistry_enabled_source{otel_scope_name="slime",otel_scope_version=""} 1
# HELP meshregistry_mcp_push_count Number of mcp push.
# TYPE meshregistry_mcp_push_count gauge
meshregistry_mcp_push_count{otel_scope_name="slime",otel_scope_version=""} 1
# HELP meshregistry_ready_time Time spent on ready in seconds
# TYPE meshregistry_ready_time histogram
meshregistry_ready_time_bucket{otel_scope_name="slime",otel_scope_version="",source="sources",le="0"} 0
meshregistry_ready_time_bucket{otel_scope_name="slime",otel_scope_version="",source="sources",le="5"} 1
meshregistry_ready_time_bucket{otel_scope_name="slime",otel_scope_version="",source="sources",le="10"} 1
meshregistry_ready_time_bucket{otel_scope_name="slime",otel_scope_version="",source="sources",le="25"} 1
meshregistry_ready_time_bucket{otel_scope_name="slime",otel_scope_version="",source="sources",le="50"} 1
meshregistry_ready_time_bucket{otel_scope_name="slime",otel_scope_version="",source="sources",le="75"} 1
meshregistry_ready_time_bucket{otel_scope_name="slime",otel_scope_version="",source="sources",le="100"} 1
meshregistry_ready_time_bucket{otel_scope_name="slime",otel_scope_version="",source="sources",le="250"} 1
meshregistry_ready_time_bucket{otel_scope_name="slime",otel_scope_version="",source="sources",le="500"} 1
meshregistry_ready_time_bucket{otel_scope_name="slime",otel_scope_version="",source="sources",le="750"} 1
meshregistry_ready_time_bucket{otel_scope_name="slime",otel_scope_version="",source="sources",le="1000"} 1
meshregistry_ready_time_bucket{otel_scope_name="slime",otel_scope_version="",source="sources",le="2500"} 1
meshregistry_ready_time_bucket{otel_scope_name="slime",otel_scope_version="",source="sources",le="5000"} 1
meshregistry_ready_time_bucket{otel_scope_name="slime",otel_scope_version="",source="sources",le="7500"} 1
meshregistry_ready_time_bucket{otel_scope_name="slime",otel_scope_version="",source="sources",le="10000"} 1
meshregistry_ready_time_bucket{otel_scope_name="slime",otel_scope_version="",source="sources",le="+Inf"} 1
meshregistry_ready_time_sum{otel_scope_name="slime",otel_scope_version="",source="sources"} 2.001612161
meshregistry_ready_time_count{otel_scope_name="slime",otel_scope_version="",source="sources"} 1
meshregistry_ready_time_bucket{otel_scope_name="slime",otel_scope_version="",source="zookeeper",le="0"} 0
meshregistry_ready_time_bucket{otel_scope_name="slime",otel_scope_version="",source="zookeeper",le="5"} 1
meshregistry_ready_time_bucket{otel_scope_name="slime",otel_scope_version="",source="zookeeper",le="10"} 1
meshregistry_ready_time_bucket{otel_scope_name="slime",otel_scope_version="",source="zookeeper",le="25"} 1
meshregistry_ready_time_bucket{otel_scope_name="slime",otel_scope_version="",source="zookeeper",le="50"} 1
meshregistry_ready_time_bucket{otel_scope_name="slime",otel_scope_version="",source="zookeeper",le="75"} 1
meshregistry_ready_time_bucket{otel_scope_name="slime",otel_scope_version="",source="zookeeper",le="100"} 1
meshregistry_ready_time_bucket{otel_scope_name="slime",otel_scope_version="",source="zookeeper",le="250"} 1
meshregistry_ready_time_bucket{otel_scope_name="slime",otel_scope_version="",source="zookeeper",le="500"} 1
meshregistry_ready_time_bucket{otel_scope_name="slime",otel_scope_version="",source="zookeeper",le="750"} 1
meshregistry_ready_time_bucket{otel_scope_name="slime",otel_scope_version="",source="zookeeper",le="1000"} 1
meshregistry_ready_time_bucket{otel_scope_name="slime",otel_scope_version="",source="zookeeper",le="2500"} 1
meshregistry_ready_time_bucket{otel_scope_name="slime",otel_scope_version="",source="zookeeper",le="5000"} 1
meshregistry_ready_time_bucket{otel_scope_name="slime",otel_scope_version="",source="zookeeper",le="7500"} 1
meshregistry_ready_time_bucket{otel_scope_name="slime",otel_scope_version="",source="zookeeper",le="10000"} 1
meshregistry_ready_time_bucket{otel_scope_name="slime",otel_scope_version="",source="zookeeper",le="+Inf"} 1
meshregistry_ready_time_sum{otel_scope_name="slime",otel_scope_version="",source="zookeeper"} 1.5053640160000001
meshregistry_ready_time_count{otel_scope_name="slime",otel_scope_version="",source="zookeeper"} 1
# HELP meshregistry_service_entry_creation Number of service entries created by source.
# TYPE meshregistry_service_entry_creation gauge
meshregistry_service_entry_creation{otel_scope_name="slime",otel_scope_version="",source="zookeeper"} 10
# HELP meshregistry_service_entry_total Number of service entries in the mesh registry by source.
# TYPE meshregistry_service_entry_total gauge
meshregistry_service_entry_total{otel_scope_name="slime",otel_scope_version="",source="zookeeper"} 10
# HELP meshregistry_sidecar_creation Number of sidecars created by source.
# TYPE meshregistry_sidecar_creation gauge
meshregistry_sidecar_creation{otel_scope_name="slime",otel_scope_version="",source="zookeeper"} 3
# HELP meshregistry_sidecar_total Number of sidecars in the mesh registry by source.
# TYPE meshregistry_sidecar_total gauge
meshregistry_sidecar_total{otel_scope_name="slime",otel_scope_version="",source="zookeeper"} 3
# HELP meshregistry_source_client_request_count client request count by source, with status.
# TYPE meshregistry_source_client_request_count gauge
meshregistry_source_client_request_count{otel_scope_name="slime",otel_scope_version="",source="zookeeper",status="false"} 1.0098211e+07
meshregistry_source_client_request_count{otel_scope_name="slime",otel_scope_version="",source="zookeeper",status="true"} 84
# HELP meshregistry_source_connection_status the connection status of the source. 1 for connected, 0 for disconnected.
# TYPE meshregistry_source_connection_status gauge
meshregistry_source_connection_status{otel_scope_name="slime",otel_scope_version="",source="zookeeper"} 1
# HELP meshregistry_source_event_count config event count by source, with event type and config type, and status.
# TYPE meshregistry_source_event_count gauge
meshregistry_source_event_count{config_type="networking.istio.io/v1alpha3/ServiceEntry",event_type="Added",otel_scope_name="slime",otel_scope_version="",source="zookeeper",status="true"} 10
meshregistry_source_event_count{config_type="networking.istio.io/v1alpha3/Sidecar",event_type="Added",otel_scope_name="slime",otel_scope_version="",source="zookeeper",status="true"} 3
true
only if thezk.Conn.State == zk.StateHasSession
meshregistry metrics example: