refactor: gen metric schema with desc from macros

This commit is contained in:
JimMoen 2024-06-12 18:10:45 +08:00
parent 263d2dbae2
commit 756797b258
No known key found for this signature in database
1 changed files with 204 additions and 347 deletions

View File

@ -112,354 +112,211 @@ fields(node_metrics) ->
[{node, mk(binary(), #{desc => <<"Node name">>})}] ++ properties(). [{node, mk(binary(), #{desc => <<"Node name">>})}] ++ properties().
properties() -> properties() ->
[ Metrics = lists:append([
m( ?BYTES_METRICS,
'actions.failure', ?PACKET_METRICS,
<<"Number of failure executions of the rule engine action">> ?MESSAGE_METRICS,
), ?DELIVERY_METRICS,
m( ?CLIENT_METRICS,
'actions.success', ?SESSION_METRICS,
<<"Number of successful executions of the rule engine action">> ?STASTS_ACL_METRICS,
), ?STASTS_AUTHN_METRICS,
m( ?OLP_METRICS
'bytes.received', ]),
<<"Number of bytes received ">> lists:reverse(
), lists:foldl(
m( fun({_Type, MetricName}, Acc) ->
'bytes.sent', [m(MetricName) | Acc]
<<"Number of bytes sent on this connection">> end,
), [],
m( Metrics
'client.auth.anonymous', )
<<"Number of clients who log in anonymously">> ).
),
m( m('actions.failure' = K) ->
'client.authenticate', m(K, <<"Number of failure executions of the rule engine action">>);
<<"Number of client authentications">> m('actions.success' = K) ->
), m(K, <<"Number of successful executions of the rule engine action">>);
m( m('bytes.received' = K) ->
'client.check_authz', m(K, <<"Number of bytes received ">>);
<<"Number of Authorization rule checks">> m('bytes.sent' = K) ->
), m(K, <<"Number of bytes sent on this connection">>);
m( m('client.auth.anonymous' = K) ->
'client.connack', m(K, <<"Number of clients who log in anonymously">>);
<<"Number of CONNACK packet sent">> m('client.authenticate' = K) ->
), m(K, <<"Number of client authentications">>);
m( m('client.check_authz' = K) ->
'client.connect', m(K, <<"Number of Authorization rule checks">>);
<<"Number of client connections">> m('client.connack' = K) ->
), m(K, <<"Number of CONNACK packet sent">>);
m( m('client.connect' = K) ->
'client.connected', m(K, <<"Number of client connections">>);
<<"Number of successful client connections">> m('client.connected' = K) ->
), m(K, <<"Number of successful client connections">>);
m( m('client.disconnected' = K) ->
'client.disconnected', m(K, <<"Number of client disconnects">>);
<<"Number of client disconnects">> m('client.subscribe' = K) ->
), m(K, <<"Number of client subscriptions">>);
m( m('client.unsubscribe' = K) ->
'client.subscribe', m(K, <<"Number of client unsubscriptions">>);
<<"Number of client subscriptions">> m('delivery.dropped' = K) ->
), m(K, <<"Total number of discarded messages when sending">>);
m( m('delivery.dropped.expired' = K) ->
'client.unsubscribe', m(K, <<"Number of messages dropped due to message expiration on sending">>);
<<"Number of client unsubscriptions">> m('delivery.dropped.no_local' = K) ->
), m(K, <<
m(
'delivery.dropped',
<<"Total number of discarded messages when sending">>
),
m(
'delivery.dropped.expired',
<<"Number of messages dropped due to message expiration on sending">>
),
m(
'delivery.dropped.no_local',
<<
"Number of messages that were dropped due to the No Local subscription " "Number of messages that were dropped due to the No Local subscription "
"option when sending" "option when sending"
>> >>);
), m('delivery.dropped.qos0_msg' = K) ->
m( m(K, <<
'delivery.dropped.qos0_msg',
<<
"Number of messages with QoS 0 that were dropped because the message " "Number of messages with QoS 0 that were dropped because the message "
"queue was full when sending" "queue was full when sending"
>> >>);
), m('delivery.dropped.queue_full' = K) ->
m( m(K, <<
'delivery.dropped.queue_full',
<<
"Number of messages with a non-zero QoS that were dropped because the " "Number of messages with a non-zero QoS that were dropped because the "
"message queue was full when sending" "message queue was full when sending"
>> >>);
), m('delivery.dropped.too_large' = K) ->
m( m(K, <<
'delivery.dropped.too_large',
<<
"The number of messages that were dropped because the length exceeded " "The number of messages that were dropped because the length exceeded "
"the limit when sending" "the limit when sending"
>> >>);
), m('messages.acked' = K) ->
m( m(K, <<"Number of received PUBACK and PUBREC packet">>);
'messages.acked', m('messages.delayed' = K) ->
<<"Number of received PUBACK and PUBREC packet">> m(K, <<"Number of delay-published messages">>);
), m('messages.delivered' = K) ->
m( m(K, <<"Number of messages forwarded to the subscription process internally">>);
'messages.delayed', m('messages.dropped' = K) ->
<<"Number of delay-published messages">> m(K, <<"Total number of messages dropped before forwarding to the subscription process">>);
), m('messages.dropped.await_pubrel_timeout' = K) ->
m( m(K, <<"Number of messages dropped due to waiting PUBREL timeout">>);
'messages.delivered', m('messages.dropped.no_subscribers' = K) ->
<<"Number of messages forwarded to the subscription process internally">> m(K, <<"Number of messages dropped due to no subscribers">>);
), m('messages.forward' = K) ->
m( m(K, <<"Number of messages forwarded to other nodes">>);
'messages.dropped', m('messages.publish' = K) ->
<<"Total number of messages dropped before forwarding to the subscription process">> m(K, <<"Number of messages published in addition to system messages">>);
), m('messages.qos0.received' = K) ->
m( m(K, <<"Number of QoS 0 messages received from clients">>);
'messages.dropped.await_pubrel_timeout', m('messages.qos0.sent' = K) ->
<<"Number of messages dropped due to waiting PUBREL timeout">> m(K, <<"Number of QoS 0 messages sent to clients">>);
), m('messages.qos1.received' = K) ->
m( m(K, <<"Number of QoS 1 messages received from clients">>);
'messages.dropped.no_subscribers', m('messages.qos1.sent' = K) ->
<<"Number of messages dropped due to no subscribers">> m(K, <<"Number of QoS 1 messages sent to clients">>);
), m('messages.qos2.received' = K) ->
m( m(K, <<"Number of QoS 2 messages received from clients">>);
'messages.forward', m('messages.qos2.sent' = K) ->
<<"Number of messages forwarded to other nodes">> m(K, <<"Number of QoS 2 messages sent to clients">>);
), m('messages.received' = K) ->
m( m(K, <<
'messages.publish',
<<"Number of messages published in addition to system messages">>
),
m(
'messages.qos0.received',
<<"Number of QoS 0 messages received from clients">>
),
m(
'messages.qos0.sent',
<<"Number of QoS 0 messages sent to clients">>
),
m(
'messages.qos1.received',
<<"Number of QoS 1 messages received from clients">>
),
m(
'messages.qos1.sent',
<<"Number of QoS 1 messages sent to clients">>
),
m(
'messages.qos2.received',
<<"Number of QoS 2 messages received from clients">>
),
m(
'messages.qos2.sent',
<<"Number of QoS 2 messages sent to clients">>
),
m(
'messages.received',
<<
"Number of messages received from the client, equal to the sum of " "Number of messages received from the client, equal to the sum of "
"messages.qos0.received\fmessages.qos1.received and messages.qos2.received" "messages.qos0.received\fmessages.qos1.received and messages.qos2.received"
>> >>);
), %% m(
%% m( %% 'messages.retained',
%% 'messages.retained', %% <<"Number of retained messages">>
%% <<"Number of retained messages">> %% ),
%% ), m('messages.sent' = K) ->
m( m(K, <<
'messages.sent',
<<
"Number of messages sent to the client, equal to the sum of " "Number of messages sent to the client, equal to the sum of "
"messages.qos0.sent\fmessages.qos1.sent and messages.qos2.sent" "messages.qos0.sent\fmessages.qos1.sent and messages.qos2.sent"
>> >>);
), m('packets.auth.received' = K) ->
m( m(K, <<"Number of received AUTH packet">>);
'packets.auth.received', m('packets.auth.sent' = K) ->
<<"Number of received AUTH packet">> m(K, <<"Number of sent AUTH packet">>);
), m('packets.connack.auth_error' = K) ->
m( m(K, <<"Number of received CONNECT packet with failed authentication">>);
'packets.auth.sent', m('packets.connack.error' = K) ->
<<"Number of sent AUTH packet">> m(K, <<"Number of received CONNECT packet with unsuccessful connections">>);
), m('packets.connack.sent' = K) ->
m( m(K, <<"Number of sent CONNACK packet">>);
'packets.connack.auth_error', m('packets.connect.received' = K) ->
<<"Number of received CONNECT packet with failed authentication">> m(K, <<"Number of received CONNECT packet">>);
), m('packets.disconnect.received' = K) ->
m( m(K, <<"Number of received DISCONNECT packet">>);
'packets.connack.error', m('packets.disconnect.sent' = K) ->
<<"Number of received CONNECT packet with unsuccessful connections">> m(K, <<"Number of sent DISCONNECT packet">>);
), m('packets.pingreq.received' = K) ->
m( m(K, <<"Number of received PINGREQ packet">>);
'packets.connack.sent', m('packets.pingresp.sent' = K) ->
<<"Number of sent CONNACK packet">> m(K, <<"Number of sent PUBRESP packet">>);
), m('packets.puback.inuse' = K) ->
m( m(K, <<"Number of received PUBACK packet with occupied identifiers">>);
'packets.connect.received', m('packets.puback.missed' = K) ->
<<"Number of received CONNECT packet">> m(K, <<"Number of received packet with identifiers.">>);
), m('packets.puback.received' = K) ->
m( m(K, <<"Number of received PUBACK packet">>);
'packets.disconnect.received', m('packets.puback.sent' = K) ->
<<"Number of received DISCONNECT packet">> m(K, <<"Number of sent PUBACK packet">>);
), m('packets.pubcomp.inuse' = K) ->
m( m(K, <<"Number of received PUBCOMP packet with occupied identifiers">>);
'packets.disconnect.sent', m('packets.pubcomp.missed' = K) ->
<<"Number of sent DISCONNECT packet">> m(K, <<"Number of missed PUBCOMP packet">>);
), m('packets.pubcomp.received' = K) ->
m( m(K, <<"Number of received PUBCOMP packet">>);
'packets.pingreq.received', m('packets.pubcomp.sent' = K) ->
<<"Number of received PINGREQ packet">> m(K, <<"Number of sent PUBCOMP packet">>);
), m('packets.publish.auth_error' = K) ->
m( m(K, <<"Number of received PUBLISH packets with failed the Authorization check">>);
'packets.pingresp.sent', m('packets.publish.dropped' = K) ->
<<"Number of sent PUBRESP packet">> m(K, <<"Number of messages discarded due to the receiving limit">>);
), m('packets.publish.error' = K) ->
m( m(K, <<"Number of received PUBLISH packet that cannot be published">>);
'packets.puback.inuse', m('packets.publish.inuse' = K) ->
<<"Number of received PUBACK packet with occupied identifiers">> m(K, <<"Number of received PUBLISH packet with occupied identifiers">>);
), m('packets.publish.received' = K) ->
m( m(K, <<"Number of received PUBLISH packet">>);
'packets.puback.missed', m('packets.publish.sent' = K) ->
<<"Number of received packet with identifiers.">> m(K, <<"Number of sent PUBLISH packet">>);
), m('packets.pubrec.inuse' = K) ->
m( m(K, <<"Number of received PUBREC packet with occupied identifiers">>);
'packets.puback.received', m('packets.pubrec.missed' = K) ->
<<"Number of received PUBACK packet">> m(K, <<"Number of received PUBREC packet with unknown identifiers">>);
), m('packets.pubrec.received' = K) ->
m( m(K, <<"Number of received PUBREC packet">>);
'packets.puback.sent', m('packets.pubrec.sent' = K) ->
<<"Number of sent PUBACK packet">> m(K, <<"Number of sent PUBREC packet">>);
), m('packets.pubrel.missed' = K) ->
m( m(K, <<"Number of received PUBREC packet with unknown identifiers">>);
'packets.pubcomp.inuse', m('packets.pubrel.received' = K) ->
<<"Number of received PUBCOMP packet with occupied identifiers">> m(K, <<"Number of received PUBREL packet">>);
), m('packets.pubrel.sent' = K) ->
m( m(K, <<"Number of sent PUBREL packet">>);
'packets.pubcomp.missed', m('packets.received' = K) ->
<<"Number of missed PUBCOMP packet">> m(K, <<"Number of received packet">>);
), m('packets.sent' = K) ->
m( m(K, <<"Number of sent packet">>);
'packets.pubcomp.received', m('packets.suback.sent' = K) ->
<<"Number of received PUBCOMP packet">> m(K, <<"Number of sent SUBACK packet">>);
), m('packets.subscribe.auth_error' = K) ->
m( m(K, <<"Number of received SUBACK packet with failed Authorization check">>);
'packets.pubcomp.sent', m('packets.subscribe.error' = K) ->
<<"Number of sent PUBCOMP packet">> m(K, <<"Number of received SUBSCRIBE packet with failed subscriptions">>);
), m('packets.subscribe.received' = K) ->
m( m(K, <<"Number of received SUBSCRIBE packet">>);
'packets.publish.auth_error', m('packets.unsuback.sent' = K) ->
<<"Number of received PUBLISH packets with failed the Authorization check">> m(K, <<"Number of sent UNSUBACK packet">>);
), m('packets.unsubscribe.error' = K) ->
m( m(K, <<"Number of received UNSUBSCRIBE packet with failed unsubscriptions">>);
'packets.publish.dropped', m('packets.unsubscribe.received' = K) ->
<<"Number of messages discarded due to the receiving limit">> m(K, <<"Number of received UNSUBSCRIBE packet">>);
), m('rules.matched' = K) ->
m( m(K, <<"Number of rule matched">>);
'packets.publish.error', m('session.created' = K) ->
<<"Number of received PUBLISH packet that cannot be published">> m(K, <<"Number of sessions created">>);
), m('session.discarded' = K) ->
m( m(K, <<"Number of sessions dropped because Clean Session or Clean Start is true">>);
'packets.publish.inuse', m('session.resumed' = K) ->
<<"Number of received PUBLISH packet with occupied identifiers">> m(K, <<"Number of sessions resumed because Clean Session or Clean Start is false">>);
), m('session.takenover' = K) ->
m( m(K, <<"Number of sessions takenover because Clean Session or Clean Start is false">>);
'packets.publish.received', m('session.terminated' = K) ->
<<"Number of received PUBLISH packet">> m(K, <<"Number of terminated sessions">>).
),
m(
'packets.publish.sent',
<<"Number of sent PUBLISH packet">>
),
m(
'packets.pubrec.inuse',
<<"Number of received PUBREC packet with occupied identifiers">>
),
m(
'packets.pubrec.missed',
<<"Number of received PUBREC packet with unknown identifiers">>
),
m(
'packets.pubrec.received',
<<"Number of received PUBREC packet">>
),
m(
'packets.pubrec.sent',
<<"Number of sent PUBREC packet">>
),
m(
'packets.pubrel.missed',
<<"Number of received PUBREC packet with unknown identifiers">>
),
m(
'packets.pubrel.received',
<<"Number of received PUBREL packet">>
),
m(
'packets.pubrel.sent',
<<"Number of sent PUBREL packet">>
),
m(
'packets.received',
<<"Number of received packet">>
),
m(
'packets.sent',
<<"Number of sent packet">>
),
m(
'packets.suback.sent',
<<"Number of sent SUBACK packet">>
),
m(
'packets.subscribe.auth_error',
<<"Number of received SUBACK packet with failed Authorization check">>
),
m(
'packets.subscribe.error',
<<"Number of received SUBSCRIBE packet with failed subscriptions">>
),
m(
'packets.subscribe.received',
<<"Number of received SUBSCRIBE packet">>
),
m(
'packets.unsuback.sent',
<<"Number of sent UNSUBACK packet">>
),
m(
'packets.unsubscribe.error',
<<"Number of received UNSUBSCRIBE packet with failed unsubscriptions">>
),
m(
'packets.unsubscribe.received',
<<"Number of received UNSUBSCRIBE packet">>
),
m(
'rules.matched',
<<"Number of rule matched">>
),
m(
'session.created',
<<"Number of sessions created">>
),
m(
'session.discarded',
<<"Number of sessions dropped because Clean Session or Clean Start is true">>
),
m(
'session.resumed',
<<"Number of sessions resumed because Clean Session or Clean Start is false">>
),
m(
'session.takenover',
<<"Number of sessions takenover because Clean Session or Clean Start is false">>
),
m(
'session.terminated',
<<"Number of terminated sessions">>
)
].
m(K, Desc) -> m(K, Desc) ->
{K, mk(non_neg_integer(), #{desc => Desc})}. {K, mk(non_neg_integer(), #{desc => Desc})}.