Exemple #1
0
 /**
  * Process the metric.
  *
  * @param Metric $metric
  * @return bool|string
  */
 protected function process(Metric &$metric)
 {
     // By the InfluxDb rules we have to have at least one value
     $value = $metric->getValue();
     if (empty($value)) {
         return false;
     }
     // Sampling
     if ($metric instanceof SamplingMetricInterface && $metric->getSampleRate() < 1) {
         foreach ($value as $k => $v) {
             if (!is_string($v)) {
                 $value[$k] = $v * $metric->getSampleRate();
             }
         }
     }
     // Metric name
     $name = $this->quoteKey($metric->getName());
     // Metric tags
     if ($metric->hasTags()) {
         $name .= ',' . $this->prepareTags($metric->getTags());
     }
     // Metric values
     $name .= ' ' . $this->prepareValues($value);
     // Metric time (from milliseconds to nanoseconds)
     if ($metric->getTime()) {
         $name .= ' ' . $metric->getTime() * 1000000;
     }
     return $name;
 }
 /**
  * Test create function
  *
  * @dataProvider createProvider
  * @param Metric $metric
  * @param array  $expected
  */
 public function testCreate(Metric $metric, array $expected)
 {
     list($name, $value, $tags, $time) = $expected;
     $this->assertEquals($name, $metric->getName());
     $this->assertEquals($value, $metric->getValue());
     $this->assertEquals($tags, $metric->getTags());
     $this->assertEquals($time, $metric->getTime());
 }
 /**
  * Formats metric to stats daemon format
  * @see https://github.com/etsy/statsd/blob/master/docs/metric_types.md
  *
  * @param Metric $metric
  * @param string $daemonType
  * @return bool|string
  */
 protected function process(Metric &$metric, $daemonType)
 {
     // If no value, nothing to add
     $value = $metric->getValue();
     if (!isset($value['value'])) {
         return false;
     }
     $value = $value['value'];
     $name = $metric->getName();
     // Add tags to the beginning of the name
     if ($metric->hasTags()) {
         $name = Helper::mapAsString($metric->getTags()) . '.' . $name;
     }
     // Name with value and type
     $result = $name . ':' . $value . '|' . $daemonType;
     // Add sampling rate
     if ($metric instanceof SamplingMetricInterface) {
         if ($metric->getSampleRate() < 1.0) {
             $result .= '|@' . $metric->getSampleRate();
         }
     }
     return $result;
 }