def _InitializeMetric(self, metadata): """See base class.""" field_defs = stats_utils.FieldDefinitionTuplesFromProtos( metadata.fields_defs) if metadata.metric_type == rdf_stats.MetricMetadata.MetricType.COUNTER: self._counter_metrics[metadata.varname] = _CounterMetric(field_defs) elif metadata.metric_type == rdf_stats.MetricMetadata.MetricType.EVENT: self._event_metrics[metadata.varname] = _EventMetric( list(metadata.bins), field_defs) elif metadata.metric_type == rdf_stats.MetricMetadata.MetricType.GAUGE: value_type = stats_utils.PythonTypeFromMetricValueType( metadata.value_type) self._gauge_metrics[metadata.varname] = _GaugeMetric( value_type, field_defs) else: raise ValueError("Unknown metric type: %s." % metadata.metric_type)
def __init__(self, metadata, registry): """Instantiates a new _Metric. Args: metadata: An rdf_stats.MetricMetadata instance describing this _Metric. registry: A prometheus_client.Registry instance. Raises: ValueError: metadata contains an unknown metric_type. """ self.metadata = metadata self.fields = stats_utils.FieldDefinitionTuplesFromProtos( metadata.fields_defs) field_names = [name for name, _ in self.fields] if metadata.metric_type == rdf_stats.MetricMetadata.MetricType.COUNTER: self.metric = prometheus_client.Counter( metadata.varname, metadata.docstring, labelnames=field_names, registry=registry) elif metadata.metric_type == rdf_stats.MetricMetadata.MetricType.EVENT: bins = metadata.bins or [ 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.75, 1, 1.5, 2, 2.5, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 50, 100 ] self.metric = prometheus_client.Histogram( metadata.varname, metadata.docstring, labelnames=field_names, buckets=bins, registry=registry) elif metadata.metric_type == rdf_stats.MetricMetadata.MetricType.GAUGE: self.metric = prometheus_client.Gauge( metadata.varname, metadata.docstring, labelnames=field_names, registry=registry) else: raise ValueError("Unknown metric type: {!r}".format(metadata.metric_type))