ThousandEyes for OpenTelemetry Data Model v2 - Metrics
Supported Test Types
Network & App Synthetics Tests
Test Type
Metrics
Specific Resource Attributes
Specific Metric Attributes
HTTP server
http.server.request.availability(Percentage)http.server.throughput(Bytes-per-second)http.client.request.duration(Seconds)
server.addressserver.porturl.schemehttp.request.methodhttp.route
error.typehttp.response.status_code
Agent-to-server
network.latency(Seconds)network.loss(Percentage)network.jitter(Milliseconds)
server.addressserver.portnetwork.transport
error.type
Agent-to-agent
Agent-to-agent (unidirectional or bidirectional)
network.latency(Seconds)network.loss(Percentage)network.jitter(Milliseconds)
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.direction
error.type
BGP
bgp.path_changes.count(Count)bgp.reachability(Percentage)bgp.updates.count(Count)
network.prefixnetwork.as.paththousandeyes.monitor.idthousandeyes.monitor.namethousandeyes.monitor.location
Transaction
web.transaction.duration(Seconds)web.transaction.errors.count(Count)web.transaction.completion(Percentage)
error.type
DNS server
dns.lookup.availability(Percentage)dns.lookup.duration(Seconds)
dns.question.name
error.type
DNSSEC
dns.lookup.validity(Percentage)
dns.question.name
error.type
DNS trace
dns.lookup.availability(Percentage)dns.lookup.duration(Seconds)
dns.question.name
error.type
Page load
web.page_load.duration(Seconds)web.page_load.completion(Percentage)
server.addressserver.port
error.type
FTP server
ftp.server.request.availability(Percentage)ftp.client.request.duration(Seconds)ftp.server.throughput(Bytes-per-second)
server.addressftp.request.commandurl.schemeserver.port
error.typeftp.response.status_code
SIP server
sip.server.request.availability(Percentage)sip.client.request.duration(Seconds)sip.client.request.total_time(Seconds)
server.addressserver.port
error.typesip.response.status_code
RTP stream
rtp.client.request.mos(Score)rtp.client.request.loss(Percentage)rtp.client.request.discards(Percentage)rtp.client.request.duration(Seconds)rtp.client.request.pdv(Milliseconds)
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_code
error.type
API test
api.duration(Seconds)api.completion(Percentage)
API test per step
api.step.duration(Seconds)api.step.completion(Percentage)
server.addressserver.porturl.schemehttp.request.methodthousandeyes.test.step
error.type
Endpoint Experience Tests
Test Type
Metrics
Specific Resource Attributes
Specific Metric Attributes
HTTP server
http.server.request.availability(Percentage)http.server.throughput(Bytes-per-second)http.client.request.duration(Seconds)
server.addressserver.porturl.schemehttp.request.method
error.typehttp.response.status_code
Agent-to-server
network.latency(Seconds)network.loss(Percentage)network.jitter(Milliseconds)
server.addressserver.portnetwork.transport
error.type
Metrics
Key
Data Type
Description
http.server.request.availability
Double (Percentage)
Calculated depending on the errors reported during the test. In case there is any error, the availability is 0, otherwise 100%.
http.server.throughput
Double (Bytes-per-second)
Throughput of test in bytes/second.
http.client.request.duration
Double (Seconds)
Time-to-first-byte as measured in the client.
network.latency
Double (Seconds)
The maximum round trip time for the packets sent to the target.
networks.loss
Double (Percentage)
Packet loss.
network.jitter
Double (Milliseconds)
Standard deviation for the round trip times.
web.transaction.duration
Double (Seconds)
The time it took the transaction to complete successfully. This metric is not exposed if there are errors.
web.transaction.completion
Double (Percentage)
Percentage of completion of the transaction. 100% if the transaction completes successfully, 0% if there are errors.
web.transaction.errors.count
Integer (count)
Determines whether there were errors or not. 1 if there’s an error processing the transaction, 0 if not.
dns.lookup.availability
Double (Percentage)
Calculated depending on the errors reported during the test. If there is any error, the availability is 0, otherwise 100%.
dns.lookup.duration
Double (Seconds)
DNS resolve time.
dns.lookup.validity
Double (Percentage)
Calculated depending on the errors reported during the test. If there is any error, the validity is 0, otherwise 100%.
web.page_load.completion
Double (Percentage)
Calculated depending on the errors reported during the test. If there is any error, the validity is 0, otherwise 100%.
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 there is any error, the availability is 0, otherwise 100%.
ftp.server.throughput
Integer (Bytes-per-second)
Throughput of test in bytes/second.
ftp.client.request.duration
Double (Seconds)
Total time it took to get the first byte while executing the request.
sip.server.request.availability
Double (Percentage)
Calculated depending on the errors reported during the test. If there is any error, the availability is 0, otherwise 100%.
sip.client.request.duration
Double (Seconds)
Total time it took to get 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 computed from lost frames count and total frames.
rtp.client.request.discards
Double (Percentage)
Percentage of frames discarded computed from discarded frames count and total 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)
Whether BGP route target is reachable.
bgp.updates.count
Integer (count)
Number of BGP updates.
api.duration
Double (Seconds)
The time the entire 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 completion of the step of the API test. 100% if the step is completed successfully, 0% if there are errors.
Attributes
The OpenTelemetry pipeline supports the following OTel attributes:
Common 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.
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.
Note: This attribute is not part of BGP metrics.
thousandeyes.source.agent.location
String
Agent location.
Note: This attribute is not part of BGP metrics.
thousandeyes.source.agent.name
String
Agent name.
Note: This attribute is not part of BGP metrics.
thousandeyes.source.agent.geoname.id
String
The GeoNames ID of the ThousandEyes source agent that ran the test. For more information, see [GeoNames](https://www.geonames.org/about.html).
Note: This attribute is not part of BGP metrics.
thousandeyes.source.agent.geo.region.iso_code
String
ISO code for the region where the source agent is located.
Note: This attribute is not part of BGP metrics.
thousandeyes.source.agent.geo.country.iso_code
String
ISO code for the country where the source agent is located.
Note: This attribute is not part of BGP metrics.
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.
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.
Specific Resource Attributes
Key
Data Type
Description
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 identifies the used protocol. 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
A BGP prefix includes the IP address and the subnet mask. It is assigned to a particular 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.
Specific Metric Attributes
Key
Data Type
Description
error.type
String
Describes a 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
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