metrics.py (5605B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\carbon\common\script\net\metrics.py 2 from __future__ import absolute_import 3 import monolithmetrics 4 import cluster 5 from . import machobase 6 from . import machoNetPacket 7 MESSAGE_TYPE_BY_CLASS = {machoNetPacket.MachoPacket: 'N/A', 8 machoNetPacket.ErrorResponse: 'Error Response', 9 machoNetPacket.IdentificationRsp: 'Identification Response', 10 machoNetPacket.IdentificationReq: 'Identification Request', 11 machoNetPacket.CallRsp: 'Call Response', 12 machoNetPacket.CallReq: 'Call Request', 13 machoNetPacket.TransportClosed: 'Transport Closed', 14 machoNetPacket.Notification: 'Notification', 15 machoNetPacket.SessionChangeNotification: 'Session Change', 16 machoNetPacket.SessionInitialStateNotification: 'Session Initial State', 17 machoNetPacket.PingRsp: 'Ping Response', 18 machoNetPacket.PingReq: 'Ping Request'} 19 MESSAGE_TYPE_LABEL = 'message_type:{}' 20 TRANSPORT_SRC_LABEL = 'transport_src_role:{}' 21 TRANSPORT_DST_LABEL = 'transport_dst_role:{}' 22 RX_PICKLE_SIZE_BYTES_METRIC = 'machonet.rx.pickle_size_bytes' 23 TX_PICKLE_SIZE_BYTES_METRIC = 'machonet.tx.pickle_size_bytes' 24 DROPPED_PICKLE_SIZE_BYTES_METRIC = 'machonet.dropped.pickle_size_bytes' 25 RX_OBJECTS_REGISTERED_METRIC = 'machonet.rx.registered_objects.adds' 26 TX_OBJECTS_REGISTERED_METRIC = 'machonet.tx.registered_objects.adds' 27 DROPPED_OBJECTS_REGISTERED_METRIC = 'machonet.dropped.registered_objects.adds' 28 RX_OBJECTS_DEREGISTERED_METRIC = 'machonet.rx.registered_objects.removes' 29 TX_OBJECTS_DEREGISTERED_METRIC = 'machonet.tx.registered_objects.removes' 30 DROPPED_OBJECTS_DEREGISTERED_METRIC = 'machonet.dropped.registered_objects.removes' 31 RX_BYTES_METRIC = 'machonet.rx.bytes' 32 TX_BYTES_METRIC = 'machonet.tx.bytes' 33 DROPPED_BYTES_METRIC = 'machonet.dropped.bytes' 34 RX_COUNT_METRIC = 'machonet.rx.count' 35 TX_COUNT_METRIC = 'machonet.tx.count' 36 DROPPED_COUNT_METRIC = 'machonet.dropped.count' 37 PROMETHEUS_ONLY_METRICS = True 38 PICKLE_SIZE_BUCKET = [128, 39 256, 40 512, 41 1024, 42 2048, 43 8192, 44 65536] 45 OBJECT_COUNT_BUCKET = [1, 46 2, 47 4, 48 8, 49 16, 50 32] 51 52 def resolve_transport_dst_role(node_id, transport_name): 53 src = machobase.mode 54 if src == 'client': 55 return 'proxy' 56 if ':client' in transport_name: 57 return 'client' 58 if node_id is None: 59 return 'unknown' 60 if node_id >= cluster.PROXY_MIN_NODE_ID: 61 return 'proxy' 62 if node_id < cluster.PROXY_MIN_NODE_ID: 63 return 'server' 64 return 'unknown' 65 66 67 def get_labels_list(source_type, destination_type, message_type): 68 return [TRANSPORT_SRC_LABEL.format(source_type), TRANSPORT_DST_LABEL.format(destination_type), MESSAGE_TYPE_LABEL.format(message_type)] 69 70 71 def get_destination_type_labels(node_id, transport_name): 72 dst = resolve_transport_dst_role(node_id, transport_name) 73 return NODE_TYPE_LABELS[dst] 74 75 76 def buffer_write_message_metrics(message, pickle, tags): 77 monolithmetrics.histogram(metric=TX_PICKLE_SIZE_BYTES_METRIC, value=len(pickle), tags=tags, buckets=PICKLE_SIZE_BUCKET, prometheus_only=PROMETHEUS_ONLY_METRICS) 78 monolithmetrics.histogram(metric=TX_OBJECTS_REGISTERED_METRIC, value=len(message.oob.get('OID+', {})), tags=tags, buckets=OBJECT_COUNT_BUCKET, prometheus_only=PROMETHEUS_ONLY_METRICS) 79 monolithmetrics.histogram(metric=TX_OBJECTS_DEREGISTERED_METRIC, value=len(message.oob.get('OID-', {})), tags=tags, buckets=OBJECT_COUNT_BUCKET, prometheus_only=PROMETHEUS_ONLY_METRICS) 80 monolithmetrics.increment(metric=TX_COUNT_METRIC, tags=tags, prometheus_only=PROMETHEUS_ONLY_METRICS) 81 monolithmetrics.increment(metric=TX_BYTES_METRIC, value=len(pickle), tags=tags, prometheus_only=PROMETHEUS_ONLY_METRICS) 82 83 84 def buffer_drop_message_metrics(message, pickle, tags): 85 monolithmetrics.histogram(metric=DROPPED_PICKLE_SIZE_BYTES_METRIC, value=len(pickle), tags=tags, buckets=PICKLE_SIZE_BUCKET, prometheus_only=PROMETHEUS_ONLY_METRICS) 86 monolithmetrics.histogram(metric=DROPPED_OBJECTS_REGISTERED_METRIC, value=len(message.oob.get('OID+', {})), tags=tags, buckets=OBJECT_COUNT_BUCKET, prometheus_only=PROMETHEUS_ONLY_METRICS) 87 monolithmetrics.histogram(metric=DROPPED_OBJECTS_DEREGISTERED_METRIC, value=len(message.oob.get('OID-', {})), tags=tags, buckets=OBJECT_COUNT_BUCKET, prometheus_only=PROMETHEUS_ONLY_METRICS) 88 monolithmetrics.increment(metric=DROPPED_COUNT_METRIC, tags=tags, prometheus_only=PROMETHEUS_ONLY_METRICS) 89 monolithmetrics.increment(metric=DROPPED_BYTES_METRIC, value=len(pickle), tags=tags, prometheus_only=PROMETHEUS_ONLY_METRICS) 90 91 92 def buffer_read_message_metrics(message, pickle, tags): 93 monolithmetrics.histogram(metric=RX_PICKLE_SIZE_BYTES_METRIC, value=len(pickle), tags=tags, buckets=PICKLE_SIZE_BUCKET, prometheus_only=PROMETHEUS_ONLY_METRICS) 94 monolithmetrics.histogram(metric=RX_OBJECTS_REGISTERED_METRIC, value=len(message.oob.get('OID+', {})), tags=tags, buckets=OBJECT_COUNT_BUCKET, prometheus_only=PROMETHEUS_ONLY_METRICS) 95 monolithmetrics.histogram(metric=RX_OBJECTS_DEREGISTERED_METRIC, value=len(message.oob.get('OID-', {})), tags=tags, buckets=OBJECT_COUNT_BUCKET, prometheus_only=PROMETHEUS_ONLY_METRICS) 96 monolithmetrics.increment(metric=RX_COUNT_METRIC, tags=tags, prometheus_only=PROMETHEUS_ONLY_METRICS) 97 monolithmetrics.increment(metric=RX_BYTES_METRIC, value=len(pickle), tags=tags, prometheus_only=PROMETHEUS_ONLY_METRICS) 98 99 100 NODE_TYPE_LABELS = {} 101 for destinationType in ['unknown', 102 'client', 103 'proxy', 104 'server']: 105 labels = {} 106 for k, v in MESSAGE_TYPE_BY_CLASS.iteritems(): 107 labels[k] = get_labels_list(machobase.mode, destinationType, v) 108 109 NODE_TYPE_LABELS[destinationType] = labels