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