ThousandEyes for OpenTelemetry Data Model v2 - Metrics

Network & App Synthetics Tests

Test Type

Metrics

Specific Attributes

Common Attributes

HTTP server

  • http.server.request.availability

  • http.server.throughput

  • http.client.request.duration

  • server.address

  • server.port

  • url.scheme

  • http.request.method

  • http.route

  • error.type

  • http.response.status_code

  • thousandeyes.stream.id

  • thousandeyes.account.id

  • thousandeyes.test.domain

  • thousandeyes.test.id

  • thousandeyes.test.name

  • thousandeyes.test.type

  • thousandeyes.source.agent.id

  • thousandeyes.source.agent.name

  • thousandeyes.source.agent.location

  • thousandeyes.source.agent.geoname.id

  • thousandeyes.source.agent.geo.region.iso_code

  • thousandeyes.source.agent.geo.country.iso_code

  • thousandeyes.data.version

  • thousandeyes.permalink

Agent-to-server

  • network.latency

  • network.loss

  • network.jitter

  • server.address

  • server.port

  • network.transport

  • error.type

Agent-to-agent (unidirectional or bidirectional)

  • network.latency

  • network.loss

  • network.jitter

  • network.transport

  • server.port

  • thousandeyes.target.agent.id

  • thousandeyes.target.agent.name

  • thousandeyes.target.agent.location

  • thousandeyes.target.agent.geoname.id

  • thousandeyes.target.agent.geo.region.iso_code

  • thousandeyes.target.agent.geo.country.iso_code

  • network.io.direction

  • error.type

BGP

  • bgp.path_changes.count

  • bgp.reachability

  • bgp.updates.count

  • network.prefix

  • network.as.path

  • thousandeyes.monitor.id

  • thousandeyes.monitor.name

  • thousandeyes.monitor.location

Transaction

  • web.transaction.duration

  • web.transaction.errors.count

  • web.transaction.completion

  • error.type

DNS server

  • dns.lookup.availability

  • dns.lookup.duration

  • dns.question.name

  • error.type

DNSSEC

  • dns.lookup.validity

  • dns.question.name

  • error.type

DNS trace

  • dns.lookup.availability

  • dns.lookup.duration

  • dns.question.name

  • error.type

Page load

  • web.page_load.duration

  • web.page_load.completion

  • server.address

  • server.port

  • error.type

FTP server

  • ftp.server.request.availability

  • ftp.client.request.duration

  • ftp.server.throughput

  • server.address

  • ftp.request.command

  • url.scheme

  • server.port

  • error.type

  • ftp.response.status_code

SIP server

  • sip.server.request.availability

  • sip.client.request.duration

  • sip.client.request.total_time

  • server.address

  • server.port

  • error.type

  • sip.response.status_code

RTP stream

  • rtp.client.request.mos

  • rtp.client.request.loss

  • rtp.client.request.discards

  • rtp.client.request.duration

  • rtp.client.request.pdv

  • thousandeyes.target.agent.id

  • thousandeyes.target.agent.name

  • thousandeyes.target.agent.location

  • thousandeyes.target.agent.geoname.id

  • thousandeyes.target.agent.geo.region.iso_code

  • thousandeyes.target.agent.geo.country.iso_code

  • error.type

API test

  • api.duration

  • api.completion

API test per step

  • api.step.duration

  • api.step.completion

  • server.address

  • server.port

  • url.scheme

  • http.request.method

  • thousandeyes.test.step

  • error.type

Network & App Synthetics BGP Tests

Metrics

Attributes

  • bgp.path_changes.count

  • bgp.reachability

  • bgp.updates.count

  • network.prefix

  • network.as.path

  • thousandeyes.monitor.id

  • thousandeyes.monitor.name

  • thousandeyes.monitor.location

  • thousandeyes.stream.id

  • thousandeyes.account.id

  • thousandeyes.test.domain

  • thousandeyes.test.id

  • thousandeyes.test.name

  • thousandeyes.test.type

  • thousandeyes.data.version

  • thousandeyes.permalink

Endpoint Experience Tests

Test Type

Metrics

Specific Attributes

Common Attributes

HTTP server

  • http.server.request.availability

  • http.server.throughput

  • http.client.request.duration

  • server.address

  • server.port

  • url.scheme

  • http.request.method

  • error.type

  • http.response.status_code

  • thousandeyes.stream.id

  • thousandeyes.account.id

  • thousandeyes.test.domain

  • thousandeyes.test.id

  • thousandeyes.test.name

  • thousandeyes.test.type

  • thousandeyes.source.agent.id

  • thousandeyes.source.agent.name

  • thousandeyes.source.agent.location

  • thousandeyes.source.agent.geoname.id

  • thousandeyes.source.agent.geo.region.iso_code

  • thousandeyes.source.agent.geo.country.iso_code

  • thousandeyes.data.version

  • thousandeyes.permalink

Agent-to-server

  • network.latency

  • network.loss

  • network.jitter

  • server.address

  • server.port

  • network.transport

  • error.type

Metrics

Key

Data Type

Description

http.server.request.availability

Double (Percentage)

Calculated based on the errors reported during the test. If any errors occur, the availability is 0%; otherwise, it's 100%.

http.server.throughput

Double (Bytes-per-second)

Throughput of test in bytes per second.

http.client.request.duration

Double (Seconds)

Time to first byte (TTFB) as measured on the client.

network.latency

Double (Seconds)

The maximum round-trip time for packets sent to the target.

networks.loss

Double (Percentage)

Packet loss.

network.jitter

Double (Milliseconds)

Standard deviation of the round-trip times.

web.transaction.duration

Double (Seconds)

The time it took the transaction to complete successfully. This metric is not reported if there are errors.

web.transaction.completion

Double (Percentage)

Percentage of transaction completion. It is 100% if the transaction completes successfully and 0% if there are errors.

web.transaction.errors.count

Integer (count)

Indicates whether an error occurred during the transaction. Returns 1 if an error occurs, and 0 if not.

dns.lookup.availability

Double (Percentage)

Calculated depending on the errors reported during the test. If any error occurs, the availability is 0; otherwise, it is 100%.

dns.lookup.duration

Double (Seconds)

DNS resolve time.

dns.lookup.validity

Double (Percentage)

Calculated depending on the errors reported during the test. If any error occurs, the validity is 0; otherwise, it is 100%.

web.page_load.completion

Double (Percentage)

Calculated depending on the errors reported during the test. If any error occurs, the validity is 0; otherwise, it is 100%./td>

web.page_load.duration

Double (Seconds)

Time to completely load the page.

ftp.server.request.availability

Double (Percentage)

Calculated depending on the errors reported during the test. If any error occurs, the availability is 0; otherwise, it is 100%.

ftp.server.throughput

Integer (Bytes-per-second)

Throughput of test in bytes per second.

ftp.client.request.duration

Double (Seconds)

Total time it took to receive the first byte while executing the request.

sip.server.request.availability

Double (Percentage)

Calculated depending on the errors reported during the test. If any error occurs, the availability is 0; otherwise, it is 100%.

sip.client.request.duration

Double (Seconds)

Total time it took to receive the first byte while executing the request.

sip.client.request.total_time

Double (Seconds)

Total time it took until the last response was received.

rtp.client.request.mos

Double (score)

Mean opinion score (MOS). A measurement of perceived voice quality, ranging from 1 to 5. A MOS of 5 indicates excellent voice call quality, while a MOS of 1 indicates poor voice call quality.

rtp.client.request.loss

Double (Percentage)

Percentage of frames lost, calculated from the number of lost frames and the total number of frames.

rtp.client.request.discards

Double (Percentage)

Percentage of frames discarded, calculated from the number of discarded frames and the total number of frames.

rtp.client.request.duration

Double (Seconds)

Total time it took for the test round execution.

rtp.client.request.duration

Long (Seconds)

Packet delay variation.

bgp.path_changes.count

Integer (count)

Number of BGP route changes.

bgp.reachability

Double (Percentage)

Indicates if BGP route target is reachable.

bgp.updates.count

Integer (count)

Number of BGP updates.

api.duration

Double (Seconds)

The total time the API test took to run, including all steps.

api.completion

Double (Percentage)

Percentage of completion of all the steps of the API test.

api.step.duration

Double (Seconds)

The time it took the API test to complete the step.

api.step.completion

Double (Percentage)

Percentage of API test step completion. 100% if the step is completed successfully, 0% if there are errors.

Attributes

The OpenTelemetry pipeline supports the following OTel attributes:

Resource Attributes

Key

Data Type

Description

thousandeyes.stream.id

String

UUID of the integration used to route the data point to the external service.

thousandeyes.account.id

String

The ID of the account that the telemetry data is associated with.

thousandeyes.test.domain

String

Identifies the origin of the test data. Possible values: cea (Network & App Synthetics), endpoint (Endpoint Experience).

thousandeyes.test.id

String

Identifies the ThousandEyes test by ID number.

thousandeyes.test.name

String

The name of the ThousandEyes test.

thousandeyes.test.type

String

Identifies the type of test. Possible values: "agent-to-agent", "agent-to-server", "dns-dnssec", "dns-server", "dns-trace", "ftp-server", "http-server", "page-load", "voice" , "sip-server, "web-transactions", "rtp", "bgp", "api"

thousandeyes.source.agent.id

String

Identifies the ThousandEyes agent that ran the test.

thousandeyes.source.agent.location

String

Agent location.

thousandeyes.source.agent.name

String

Agent name.

thousandeyes.source.agent.geoname.id

String

The GeoNames ID of the ThousandEyes source agent that ran the test. For more information, see GeoNames.

thousandeyes.source.agent.geo.region.iso_code

String

ISO code for the region where the source agent is located.

thousandeyes.source.agent.geo.country.iso_code

String

ISO code for the country where the source agent is located.

thousandeyes.data.version

String

Specifies the version of the data model. Possible values:

  • v1

  • v2

thousandeyes.permalink

String

URL for the network test instance that generated the data.

server.address

String

Server domain name, if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.

server.port

Integer

Server port number.

url.scheme

String

The URI scheme component that identifies the protocol used. Enum:

  • http

  • https

http.request.method

String

HTTP request method. Enum:

  • GET

  • POST

  • HEAD

  • PUT

  • DELETE

  • OPTIONS

  • PATCH

  • CONNECT

http.route

String

The matched route.

network.transport

String

OSI transport layer or inter-process communication method. Enum:

  • tcp

  • udp

  • icmp

thousandeyes.target.id

String

Identifies the ThousandEyes agent that was the target of the test.

thousandeyes.target.agent.location

String

Target agent location.

thousandeyes.target.agent.name

String

Target agent name.

network.io.direction

String

The network IO operation direction. Enum:

  • transmit

  • receive

  • round-trip

dns.question.name

String

The name being queried.

network.prefix

String

Specifies the BGP prefix, an IP address and subnet mask, used to identify the monitored network.

network.as.path

String

The AS path of the network route: a space-separated list of autonomous system numbers (ASNs) that represents the network route. The path starts with the BGP monitor (leftmost) and ends with the origin network of the prefix (rightmost).

thousandeyes.monitor.id

String

The ID of the BGP monitor. The monitor collects BGP data from different Autonomous Systems (AS) around the world to understand how routes are being propagated.

thousandeyes.monitor.name

String

The name of the BGP monitor.

thousandeyes.monitor.location

String

The location of the BGP monitor.

ftp.request.command

String

FTP request method. Enum:

  • GET

  • PUT

  • LS

thousandeyes.test.step

Integer

The API step ID.

Datapoint Attributes

Key

Data Type

Description

error.type

String

Describes the class of error the operation ended with.

http.response.status_code

Integer

HTTP response status code.

ftp.response.status_code

Integer

FTP response status code.

sip.response.status_code

Integer

SIP response status code.

Tags as Attributes

Any tag associated with streamed tests is converted into an attribute of the Resource.

Additionally, any tag associated with Cloud and Enterprise Agents used by tests associated with streams is converted into a Resource attribute.

Each tag is defined by a key and a value.

When a tag is converted to an attribute:

  • If there are several values for the same key, the attribute value will be represented as an array containing the string elements that are the values associated with the tag's key.

  • If there is only one value for the key, the attribute value will be represented as string.

If tests and Cloud and Enterprise Agents are assigned to the same tag, the unique set of values are provided as attribute values.

Consider the following scenario:

  • A stream is configured with test 1234 and the following tags:

    • branch:sfo

    • branch:nyc

    • team:netops

  • The following tags are associated with test 1234:

    • branch:sfo

    • branch:nyc

    • team:netops

    • cluster:analytics

  • The following tags are associated with the source agent used by test 1234:

    • branch:sfo

    • location:us

The resulting attributes would be structured as follows:

{
  resource_metrics {
    resource {
      attributes {
        key: "branch"
        value {
          array_value: {
            values: [
                {
                  string_value: "sfo"
                },
                {
                  string_value: "nyc"
                }
            ]
          }
        }
      }
      attributes {
        key: "team"
        value {
          string_value: "netops"
        }
      }
      attributes {
        key: "cluster"
        value {
          string_value: "analytics"
        }
      }
      attributes {
        key: "location"
        value {
          array_value: {
            values: [
              {
                string_value: "us"
              }
            ]
          }
        }
    }  
  }
} 

Notes:

  • The cluster:analytics tag is not converted into an attribute because it is not configured in the stream, even though it is associated with the streamed test.

  • The branch:sfo tag is not added twice to the Resource because the key-value pair already exists in the attributes.

Note that not all observability platforms accommodate the use of string arrays for attribute values. For instance, New Relic and Splunk Observability Cloud does not support this format. If your backend does not support string arrays for attributes, the tag attribute is excluded from the metric or the whole datapoint is excluded.

Metric Unit

Name

Value

Type

Count

1

Integer

Error Count

1{error}

Integer

(BGP) Path Changes Count

1{PC}

Integer

(BGP) Updates Count

1{update}

Integer

Score

1{score}

Double

Milliseconds

ms

Double

Seconds

s

Double

Percentage

%

Double

Bytes-per-second

B/s

Integer

Last updated