Пример #1
0
 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)
Пример #2
0
  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))