---
title: "Telemetry"
weight: 3
---

# Telemetry

OpenMetrics specifies the de-facto standard for transmitting cloud-native
metrics at scale, with support for both text representation and Protocol
Buffers.

## RFC

- RFC2119
- RFC5234
- RFC8174
- draft-richih-opsawg-openmetrics-00

## Reference

[OpenMetrics](https://github.com/OpenObservability/OpenMetrics/blob/master/specification/OpenMetrics.md)

## Metric Types

- Gauge
- Counter
- StateSet
- Info
- Histogram
- GaugeHistogram
- Summary
- Unknown

Telemetry module in CSIT currently support only Gauge, Counter and Info.

## Anatomy of CSIT telemetry implementation

Existing implementation consists of several measurment building blocks:
the main measuring block running search algorithms (MLR, PLR, SOAK, MRR, ...),
the latency measuring block and the several telemetry blocks with or without
traffic running on a background.

The main measuring block must not be interrupted by any read operation that can
impact data plane traffic processing during throughput search algorithm. Thus
operational reads are done before (pre-stat) and after (post-stat) that block.

Some operational reads must be done while traffic is running and usually
consists of two reads (pre-run-stat, post-run-stat) with defined delay between
them.

## MRR measurement

    traffic_start(r=mrr)             traffic_stop  |<   measure   >|
    |                                |             |    (r=mrr)    |
    |   pre_run_stat   post_run_stat |   pre_stat  |               |  post_stat
    |        |               |       |      |      |               |      |
    o--------o---------------o-------o------o------+---------------+------o------>
                                                                                t
    Legend:
    - pre_run_stat
      - vpp-clear-runtime
    - post_run_stat
      - vpp-show-runtime
      - bash-perf-stat            // if extended_debug == True
    - pre_stat
      - vpp-clear-stats
      - vpp-enable-packettrace    // if extended_debug == True
      - vpp-enable-elog
    - post_stat
      - vpp-show-stats
      - vpp-show-packettrace      // if extended_debug == True
      - vpp-show-elog

    |<                               measure                                 >|
    |                                (r=mrr)                                  |
    |                                                                         |
    |<   traffic_trial0    >|<    traffic_trial1    >|<    traffic_trialN    >|
    |   (i=0,t=duration)    |    (i=1,t=duration)    |    (i=N,t=duration)    |
    |                       |                        |                        |
    o-----------------------o------------------------o------------------------o--->
                                                                                 t


## MLR measurement

    |<  measure  >|   traffic_start(r=pdr)             traffic_stop  traffic_start(r=ndr)             traffic_stop |< [   latency   ] >|
    |   (r=mlr)   |   |                                |             |                                |            |    .9/.5/.1/.0    |
    |             |   |  pre_run_stat   post_run_stat  |             |  pre_run_stat   post_run_stat  |            |                   |
    |             |   |       |               |        |             |       |               |        |            |                   |
    +-------------+---o-------o---------------o--------o-------------o-------o---------------o--------o------------[-------------------]--->
                                                                                                                                          t
    Legend:
    - pre_run_stat
      - vpp-clear-runtime
    - post_run_stat
      - vpp-show-runtime
      - bash-perf-stat          // if extended_debug == True
    - pre_stat
      - vpp-clear-stats
      - vpp-enable-packettrace  // if extended_debug == True
      - vpp-enable-elog
    - post_stat
      - vpp-show-stats
      - vpp-show-packettrace    // if extended_debug == True
      - vpp-show-elog

## MRR measurement

    traffic_start(r=mrr)       traffic_stop        |<  measure  >|
    |                          |                   |   (r=mrr)   |
    |   |<  stat_runtime  >|   |   stat_pre_trial  |             |  stat_post_trial
    |   |                  |   |      |            |             |    |
    o---+------------------+---o------o------------+-------------+----o------------>
                                                                                  t
    Legend:
    - stat_runtime
      - vpp-runtime
    - stat_pre_trial
      - vpp-clear-stats
      - vpp-enable-packettrace  // if extended_debug == True
    - stat_post_trial
      - vpp-show-stats
      - vpp-show-packettrace    // if extended_debug == True

    |<                                measure                                 >|
    |                                 (r=mrr)                                  |
    |                                                                          |
    |<    traffic_trial0    >|<    traffic_trial1    >|<    traffic_trialN    >|
    |    (i=0,t=duration)    |    (i=1,t=duration)    |    (i=N,t=duration)    |
    |                        |                        |                        |
    o------------------------o------------------------o------------------------o--->
                                                                                  t

    |<                              stat_runtime                              >|
    |                                                                          |
    |<       program0       >|<       program1       >|<       programN       >|
    |       (@=params)       |       (@=params)       |       (@=params)       |
    |                        |                        |                        |
    o------------------------o------------------------o------------------------o--->
                                                                                  t

## MLR measurement

    |<  measure  >|   traffic_start(r=pdr)       traffic_stop   traffic_start(r=ndr)     traffic_stop  |< [  latency  ] >|
    |   (r=mlr)   |   |                          |              |                          |           |   .9/.5/.1/.0   |
    |             |   |   |<  stat_runtime  >|   |              |   |<  stat_runtime  >|   |           |                 |
    |             |   |   |                  |   |              |   |                  |   |           |                 |
    +-------------+---o---+------------------+---o--------------o---+------------------+---o-----------[-----------------]--->
                                                                                                                            t
    Legend:
    - stat_runtime
      - vpp-runtime
    - stat_pre_trial
      - vpp-clear-stats
      - vpp-enable-packettrace  // if extended_debug == True
    - stat_post_trial
      - vpp-show-stats
      - vpp-show-packettrace    // if extended_debug == True