ThousandEyes for OpenTelemetry Data Model v2 - Metrics

This document describes the metrics and attributes emitted by ThousandEyes using the OpenTelemetry Data Model v2 for 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

Note: The following attributes apply to all test types in this table.

  • 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

Note: The following attributes apply to all test types in this table.

  • 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

Endpoint Experience Local Network

Category

Metrics

Specific Attributes

Common Attributes

DNS

  • network.latency

  • network.loss

  • dns.lookup.duration

  • target.type: dns

  • server.address

Note: The following attributes apply to all categories in this table.

  • 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.source.agent.network.address

  • thousandeyes.source.agent.local.network.address

  • thousandeyes.source.agent.os.type

  • thousandeyes.source.agent.mac.address

  • thousandeyes.source.agent.connection.type

  • thousandeyes.source.agent.network.org

  • thousandeyes.source.agent.network.as.number

  • thousandeyes.source.agent.network.as.name

  • thousandeyes.data.version

  • thousandeyes.permalink

Proxy

  • network.latency

  • network.loss

  • network.score

  • target.type: proxy

  • server.address

  • server.port

Gateway

  • network.latency

  • network.loss

  • network.score

  • target.type: gateway

  • server.address

  • server.port

VPN

  • network.latency

  • network.loss

  • network.score

  • target.type: vpn

  • server.address

  • server.port

  • vpn.vendor

  • client.address

System

  • system.cpu.utilization

  • system.memory.utilization

  • thousandeyes.endpoint.agent.score

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.

network.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 fully 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 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)

Time to complete the API test step.

api.step.completion

Double (Percentage)

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

network.score

Double (score)

Score aggregated from latency, jitter, and loss scores.

system.cpu.utilization

Double (Percentage)

Percentage of CPU utilization.

system.memory.utilization

Double (Percentage)

Percentage of memory utilization.

thousandeyes.endpoint.agent.score

Double (score)

Score aggregated from CPU and memory scores.

Attributes

The OpenTelemetry pipeline supports the following OTel attributes:

Resource Attributes

Key

Data Type

Description

Example

thousandeyes.stream.id

String

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

123e4567-e89b-12d3-a456-426614174000

thousandeyes.account.id

String

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

987654

thousandeyes.test.domain

String

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

cea

thousandeyes.test.id

String

Identifies the ThousandEyes test by ID number.

246810

thousandeyes.test.name

String

The name of the ThousandEyes test.

Login page check

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

  • sip-server

  • web-transactions

  • rtp

  • bgp

  • api

http-server

thousandeyes.source.agent.id

String

Identifies the ThousandEyes agent that ran the test.

12345

thousandeyes.source.agent.location

String

Agent location.

San Jose, CA, US

thousandeyes.source.agent.name

String

Agent name.

us-west-1a

thousandeyes.source.agent.geoname.id

String

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

5392171

thousandeyes.source.agent.geo.region.iso_code

String

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

US-CA

thousandeyes.source.agent.geo.country.iso_code

String

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

US

thousandeyes.data.version

String

Specifies the version of the data model. Possible values:

  • v1

  • v2

v2

thousandeyes.permalink

String

URL for the network test instance that generated the data.

https://app.thousandeyes.com/tests/12345

server.address

String

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

example.com

server.port

Integer

Server port number.

443

url.scheme

String

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

  • http

  • https

https

http.request.method

String

HTTP request method. Enum:

  • GET

  • POST

  • HEAD

  • PUT

  • DELETE

  • OPTIONS

  • PATCH

  • CONNECT

GET

http.route

String

The matched route.

/api/v1/users

network.transport

String

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

  • tcp

  • udp

  • icmp

tcp

thousandeyes.target.agent.id

String

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

98765

thousandeyes.target.agent.location

String

Target agent location.

New York, NY, US

thousandeyes.target.agent.name

String

Target agent name.

nyc-edge-1

network.io.direction

String

The network IO operation direction. Enum:

  • transmit

  • receive

  • round-trip

round-trip

dns.question.name

String

The name being queried.

www.example.com

network.prefix

String

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

203.0.113.0/24

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).

15169 3356 64512

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.

34567

thousandeyes.monitor.name

String

The name of the BGP monitor.

Chicago, US (AS7018)

thousandeyes.monitor.location

String

The location of the BGP monitor.

Chicago, US

ftp.request.command

String

FTP request method. Enum:

  • GET

  • PUT

  • LS

GET

thousandeyes.test.step

Integer

The API step ID.

3

thousandeyes.source.agent.network.address

String

The public IP address of the source agent.

198.51.100.23

thousandeyes.source.agent.local.network.address

String

The local network address of the source agent.

10.0.1.25

thousandeyes.source.agent.os.type

String

The operating system type of the source agent.

Windows

thousandeyes.source.agent.mac.address

String

The MAC address of the source agent.

00:1C:42:2E:60:4A

thousandeyes.source.agent.connection.type

String

The source agent's connection type. Enum:

  • Wireless

  • Ethernet

  • Modem

Wireless

thousandeyes.source.agent.network.org

String

The name of the network to which the source agent belongs.

Example ISP

thousandeyes.source.agent.network.as.number

String

The AS number of the source agent’s network.

15169

thousandeyes.source.agent.network.as.name

String

The AS name of the source agent’s network.

GOOGLE

vpn.vendor

String

The vendor of the VPN.

Cisco AnyConnect

client.address

String

The IP address of the client.

192.0.2.14

Datapoint Attributes

Key

Data Type

Description

Example

error.type

String

Describes the class of error the operation ended with.

timeout

http.response.status_code

Integer

HTTP response status code.

200

ftp.response.status_code

Integer

FTP response status code.

226

sip.response.status_code

Integer

SIP response status code.

200

target.type

String

The category of the local network, which can be one of the following:

  • DNS

  • Proxy

  • Gateway

  • VPN

DNS

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 do 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