ThousandEyes for OpenTelemetry Data Model v2 - Metrics
Network & App Synthetics Tests
Test Type
Metrics
Specific Attributes
Common Attributes
HTTP server
http.server.request.availabilityhttp.server.throughputhttp.client.request.duration
server.addressserver.porturl.schemehttp.request.methodhttp.routeerror.typehttp.response.status_code
thousandeyes.stream.idthousandeyes.account.idthousandeyes.test.domainthousandeyes.test.idthousandeyes.test.namethousandeyes.test.typethousandeyes.source.agent.idthousandeyes.source.agent.namethousandeyes.source.agent.locationthousandeyes.source.agent.geoname.idthousandeyes.source.agent.geo.region.iso_codethousandeyes.source.agent.geo.country.iso_codethousandeyes.data.versionthousandeyes.permalink
Agent-to-server
network.latencynetwork.lossnetwork.jitter
server.addressserver.portnetwork.transporterror.type
Agent-to-agent (unidirectional or bidirectional)
network.latencynetwork.lossnetwork.jitter
network.transportserver.portthousandeyes.target.agent.idthousandeyes.target.agent.namethousandeyes.target.agent.locationthousandeyes.target.agent.geoname.idthousandeyes.target.agent.geo.region.iso_codethousandeyes.target.agent.geo.country.iso_codenetwork.io.directionerror.type
BGP
bgp.path_changes.countbgp.reachabilitybgp.updates.count
network.prefixnetwork.as.paththousandeyes.monitor.idthousandeyes.monitor.namethousandeyes.monitor.location
Transaction
web.transaction.durationweb.transaction.errors.countweb.transaction.completionerror.type
DNS server
dns.lookup.availabilitydns.lookup.duration
dns.question.nameerror.type
DNSSEC
dns.lookup.validity
dns.question.nameerror.type
DNS trace
dns.lookup.availabilitydns.lookup.duration
dns.question.nameerror.type
Page load
web.page_load.durationweb.page_load.completion
server.addressserver.porterror.type
FTP server
ftp.server.request.availabilityftp.client.request.durationftp.server.throughput
server.addressftp.request.commandurl.schemeserver.porterror.typeftp.response.status_code
SIP server
sip.server.request.availabilitysip.client.request.durationsip.client.request.total_time
server.addressserver.porterror.typesip.response.status_code
RTP stream
rtp.client.request.mosrtp.client.request.lossrtp.client.request.discardsrtp.client.request.durationrtp.client.request.pdv
thousandeyes.target.agent.idthousandeyes.target.agent.namethousandeyes.target.agent.locationthousandeyes.target.agent.geoname.idthousandeyes.target.agent.geo.region.iso_codethousandeyes.target.agent.geo.country.iso_codeerror.type
API test
api.durationapi.completion
API test per step
api.step.durationapi.step.completion
server.addressserver.porturl.schemehttp.request.methodthousandeyes.test.steperror.type
Network & App Synthetics BGP Tests
Metrics
Attributes
bgp.path_changes.countbgp.reachabilitybgp.updates.count
network.prefixnetwork.as.paththousandeyes.monitor.idthousandeyes.monitor.namethousandeyes.monitor.locationthousandeyes.stream.idthousandeyes.account.idthousandeyes.test.domainthousandeyes.test.idthousandeyes.test.namethousandeyes.test.typethousandeyes.data.versionthousandeyes.permalink
Endpoint Experience Tests
Test Type
Metrics
Specific Attributes
Common Attributes
HTTP server
http.server.request.availabilityhttp.server.throughputhttp.client.request.duration
server.addressserver.porturl.schemehttp.request.methoderror.typehttp.response.status_code
thousandeyes.stream.idthousandeyes.account.idthousandeyes.test.domainthousandeyes.test.idthousandeyes.test.namethousandeyes.test.typethousandeyes.source.agent.idthousandeyes.source.agent.namethousandeyes.source.agent.locationthousandeyes.source.agent.geoname.idthousandeyes.source.agent.geo.region.iso_codethousandeyes.source.agent.geo.country.iso_codethousandeyes.data.versionthousandeyes.permalink
Agent-to-server
network.latencynetwork.lossnetwork.jitter
server.addressserver.portnetwork.transporterror.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:
v1v2
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:
httphttps
http.request.method
String
HTTP request method. Enum:
GETPOSTHEADPUTDELETEOPTIONSPATCHCONNECT
http.route
String
The matched route.
network.transport
String
OSI transport layer or inter-process communication method. Enum:
tcpudpicmp
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:
transmitreceiveround-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:
GETPUTLS
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
stringelements that are the values associated with the tag'skey.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.
Attributes generated from ThousandEyes tags are dropped if the tags include characters that are not allowed by the OpenTelemetry naming recommendations for attributes.
Consider the following scenario:
A stream is configured with test
1234and the following tags:branch:sfobranch:nycteam:netops
The following tags are associated with test
1234:branch:sfobranch:nycteam:netopscluster:analytics
The following tags are associated with the source agent used by test
1234:branch:sfolocation: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:analyticstag 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:sfotag is not added twice to theResourcebecause the key-value pair already exists in the attributes.
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