public readonly ICountMetric RemoteSerializedMessageCount; //done

        public RemoteMetrics(ProtoMetrics metrics)
        {
            RemoteSerializedMessageCount   = metrics.CreateCount("protoremote_message_serialize_count", "", "id", "address", "messagetype");
            RemoteDeserializedMessageCount = metrics.CreateCount("protoremote_message_deserialize_count", "", "id", "address", "messagetype");
            RemoteKindCount                 = metrics.CreateCount("protoremote_kind_count", "", "id", "address");
            RemoteActorSpawnCount           = metrics.CreateCount("protoremote_spawn_count", "", "id", "address", "kind");
            RemoteEndpointConnectedCount    = metrics.CreateCount("protoremote_endpoint_connected_count", "", "id", "address", "destinationaddress");
            RemoteEndpointDisconnectedCount =
                metrics.CreateCount("protoremote_endpoint_disconnected_count", "", "id", "address", "destinationaddress");
        }
        public readonly IHistogramMetric ThreadPoolLatencyHistogram; //done

        public ActorMetrics(ProtoMetrics metrics)
        {
            ThreadPoolLatencyHistogram = metrics.CreateHistogram("protoactor_threadpool_latency_duration_seconds", "", "id", "address");
            DeadletterCount            = metrics.CreateCount("protoactor_deadletter_count", "", "id", "address", "messagetype");
            ActorSpawnCount            = metrics.CreateCount("protoactor_actor_spawn_count", "", "id", "address", "actortype");
            ActorStoppedCount          = metrics.CreateCount("protoactor_actor_stopped_count", "", "id", "address", "actortype");
            ActorRestartedCount        = metrics.CreateCount("protoactor_actor_restarted_count", "", "id", "address", "actortype");
            ActorFailureCount          = metrics.CreateCount("protoactor_actor_failure_count", "", "id", "address", "actortype");

            ActorMailboxLength = metrics.CreateGauge("protoactor_actor_mailbox_length", "", "id", "address", "actortype");

            ActorMessageReceiveHistogram = metrics.CreateHistogram("protoactor_actor_messagereceive_duration_seconds", "", "id", "address",
                                                                   "actortype", "messagetype"
                                                                   );
            FuturesStartedCount   = metrics.CreateCount("protoactor_future_started_count", "", "id", "address");
            FuturesTimedOutCount  = metrics.CreateCount("protoactor_future_timedout_count", "", "id", "address");
            FuturesCompletedCount = metrics.CreateCount("protoactor_future_completed_count", "", "id", "address");
        }
        public ClusterMetrics(ProtoMetrics metrics)
        {
            ClusterActorGauge = metrics.CreateGauge("protocluster_virtualactors", "", "id", "address", "clusterkind");

            ClusterActorSpawnHistogram =
                metrics.CreateHistogram("protocluster_virtualactor_spawn_duration_seconds", "", "id", "address", "clusterkind");

            ClusterRequestHistogram = metrics.CreateHistogram("protocluster_virtualactor_requestasync_duration_seconds", "", "id", "address",
                                                              "clusterkind", "messagetype", "pidsource"
                                                              );

            ClusterRequestRetryCount = metrics.CreateCount("protocluster_virtualactor_requestasync_retry_count", "", "id", "address", "clusterkind",
                                                           "messagetype"
                                                           );

            ClusterTopologyEventGauge = metrics.CreateGauge("protocluster_topology_events", "", "id", "address", "membershiphashcode");

            ClusterResolvePidHistogram =
                metrics.CreateHistogram("protocluster_resolve_pid_duration_seconds", "", "id", "address", "clusterkind");
        }