class_docstr: Tracks the size and number of events in buckets.
  
  Histograms allow you to calculate aggregate quantiles
  such as 25, 50, 95, 99 percentile latency for an RPC.
  
  This corresponds to Prometheus' histogram metric:
  https://prometheus.io/docs/concepts/metric_types/#histogram
  
  Serve-related tags ("deployment", "replica", "application", "route")
  are added automatically if not provided.
  
  .. code-block:: python
  
          @serve.deployment
          class MyDeployment:
              def __init__(self):
                  self.my_histogram = Histogram(
                      "my_histogram",
                      description=("Histogram of the __call__ method running time."),
                      boundaries=[1,2,4,8,16,32,64],
                      tag_keys=("model",),
                  )
                  self.my_histogram.set_default_tags({"model": "123"})
  
              def __call__(self):
                  start = time.time()
                  self.my_histogram.observe(time.time() - start)
  
  Args:
      name: Name of the metric.
      description: Description of the metric.
      boundaries: Boundaries of histogram buckets.
      tag_keys: Tag keys of the metric.
docstr: Observe the given value, add serve context
  tag values to the tags
docstr_tok: ["Observe","the","given","value",",","add","serve","context","tag","values","to","the","tags"]
code: def observe(
      self, value: Union[int, float], tags: Dict[str, str] = None
  ):
      """Observe the given value, add serve context
      tag values to the tags
      """
      _add_serve_context_tag_values(self._tag_keys, tags)
      super().observe(value, tags)
  
imports: from typing import Dict, List, Optional, Tuple, Union
  import ray
  from ray.serve import context
  from ray.util import metrics
  from ray.util.annotations import PublicAPI
label_desc: Use image node_id 3 for calling the Histogram obj's underlying member method code with example usage: obj.observe(value, tags) without return types