Release Notes: 2013-07-10
Welcome back from the July 4th long weekend! Our team has been hard at work developing some new features for the platform. The big features are documented below:
In this release, our alert clearing algorithms got a little smarter. Prior to this release, if you made a modification to either a test or an alert rule while an alert was active, those alerts would never reset to an inactive state. We have added clearing logic for the following use cases:
- test which gets disabled or deleted
- test where alerting is disabled
- server removed from DNS Server test
- agent removed from test
We've adjusted the charts shown
Dashboard views have been adjusted to show the last complete round of data in the trending value graphs, as well as the most recent data. This was introduced to avoid showing partially completed round data.

While the change to the dashboard will not be obvious, the values shown in the charts will now reflect the last complete round of data, rather than partially completed rounds.
- 1.Clicking the availability chart will open the HTTP Server view, and show the availability metric, and show the data for the round selected on the timeline.
- 2.Clicking the response time chart will open the HTTP Server view, and show the response time metric, and show the data for the round selected on the timeline.
- 3.Clicking either of the current value entries will open the appropriate view in the context of the selected metric, and show the last full round of collected data.
New users will now see a revised Getting Started page, complete with our inaugural screencast, which runs through agent installation and test deployment in ThousandEyes.

We'll also be updating the Help & Support section on the left to show more ThousandEyes screencasts, as they become available.
Beginning with today's release, we now support configuration of all network tests using ICMP. Previously, ICMP was only supported on instant ping tests.

To create a new network test using the ICMP protocol, use the test type selector, and select the ICMP button. When you choose ICMP as the test type, the TCP Port field will disappear. The key use case for this would be to trace the path to network devices.
- 1.Tests cannot be converted from TCP to ICMP, or vice versa.
- 2.The Enable Network Measurements option included with Page Load, HTTP Server, and DNS Server tests are only available with the TCP protocol.
As with our classic TCP network tests, the Path Visualization and BGP Route Visualization views become available when creating an ICMP network test.
ThousandEyes now accepts configuration of a SAML provider to enable Single-Sign on (SSO). SSO settings apply for an entire organization, and must be configured by an Organization Admin user. To open SSO settings, click click the Settings | Account option in the navigation menu, then click the Single Sign-On tab.

We've extended the ThousandEyes API to include the ability to execute instant tests via the API.
For this release, the feature is restricted to Enterprise Agents only; attempts to run an instant test against a ThousandEyes Cloud Agent will result in an "Only Enterprise Agents are allowed for instant tests" error message, responding with a 400 BAD REQUEST response code. As with the methods introduced in our June 11, 2013 release (see release notification here), data for each request type must be POSTed to the target endpoint.
The endpoints are documented below, along with some code samples, using cURL:
Property | Description | Example |
agentId | ID of Enterprise Agent to run instant test from | 35 |
server | server name or IP address of target test. If a webserver, do not include the protocol (ie, http://) | www.google.com |
port | port number to use for the ping test, if using TCP for the test type | 80 |
pingType | can be one of the following values: ICMP, TCP. If using ICMP, the port number parameter is not required | ICMP | TCP |
curl https://api.thousandeyes.com/instant/net/ping.json?authToken={authToken} \
-d '{"agentId":35, "server":"www.google.com", "port":80, "pingType":"TCP"}' -H "Content-Type: application/json"
Single "net" object, with a "ping" property, showing 50 sequential pings, similar to what would come out of a command-line ping.
{
"net": {
"ping":"44 bytes from 74.125.128.147: tcp_req=1 ttl=46 time=165 ms\n44 bytes from 74.125.128.147: tcp_req=2 ttl=46 time=156 ms\n44 bytes from 74.125.128.147: tcp_req=3 ttl=46 time=159 ms\n44 bytes from 74.125.128.147: tcp_req=4 ttl=46 time=156 ms\n44 bytes from 74.125.128.147: tcp_req=5 ttl=46 time=156 ms\n44 bytes from 74.125.128.147: tcp_req=6 ttl=46 time=163 ms\n44 bytes from 74.125.128.147: tcp_req=7 ttl=46 time=162 ms\n44 bytes from 74.125.128.147: tcp_req=8 ttl=46 time=162 ms\n44 bytes from 74.125.128.147: tcp_req=9 ttl=46 time=159 ms\n44 bytes from 74.125.128.147: tcp_req=10 ttl=46 time=162 ms\n44 bytes from 74.125.128.147: tcp_req=11 ttl=46 time=161 ms\n44 bytes from 74.125.128.147: tcp_req=12 ttl=46 time=159 ms\n44 bytes from 74.125.128.147: tcp_req=13 ttl=46 time=162 ms\n44 bytes from 74.125.128.147: tcp_req=14 ttl=46 time=162 ms\n44 bytes from 74.125.128.147: tcp_req=15 ttl=46 time=156 ms\n44 bytes from 74.125.128.147: tcp_req=16 ttl=46 time=162 ms\n44 bytes from 74.125.128.147: tcp_req=17 ttl=46 time=162 ms\n44 bytes from 74.125.128.147: tcp_req=18 ttl=46 time=156 ms\n44 bytes from 74.125.128.147: tcp_req=19 ttl=46 time=160 ms\n44 bytes from 74.125.128.147: tcp_req=20 ttl=46 time=159 ms\n44 bytes from 74.125.128.147: tcp_req=21 ttl=46 time=162 ms\n44 bytes from 74.125.128.147: tcp_req=22 ttl=46 time=156 ms\n44 bytes from 74.125.128.147: tcp_req=23 ttl=46 time=156 ms\n44 bytes from 74.125.128.147: tcp_req=24 ttl=46 time=159 ms\n44 bytes from 74.125.128.147: tcp_req=25 ttl=46 time=162 ms\n44 bytes from 74.125.128.147: tcp_req=26 ttl=46 time=159 ms\n44 bytes from 74.125.128.147: tcp_req=27 ttl=46 time=160 ms\n44 bytes from 74.125.128.147: tcp_req=28 ttl=46 time=156 ms\n44 bytes from 74.125.128.147: tcp_req=29 ttl=46 time=156 ms\n44 bytes from 74.125.128.147: tcp_req=30 ttl=46 time=163 ms\n44 bytes from 74.125.128.147: tcp_req=31 ttl=46 time=159 ms\n44 bytes from 74.125.128.147: tcp_req=32 ttl=46 time=162 ms\n44 bytes from 74.125.128.147: tcp_req=33 ttl=46 time=161 ms\n44 bytes from 74.125.128.147: tcp_req=34 ttl=46 time=159 ms\n44 bytes from 74.125.128.147: tcp_req=35 ttl=46 time=159 ms\n44 bytes from 74.125.128.147: tcp_req=36 ttl=46 time=162 ms\n44 bytes from 74.125.128.147: tcp_req=37 ttl=46 time=163 ms\n44 bytes from 74.125.128.147: tcp_req=38 ttl=46 time=163 ms\n44 bytes from 74.125.128.147: tcp_req=39 ttl=46 time=156 ms\n44 bytes from 74.125.128.147: tcp_req=40 ttl=46 time=160 ms\n44 bytes from 74.125.128.147: tcp_req=41 ttl=46 time=159 ms\n44 bytes from 74.125.128.147: tcp_req=42 ttl=46 time=160 ms\n44 bytes from 74.125.128.147: tcp_req=43 ttl=46 time=156 ms\n44 bytes from 74.125.128.147: tcp_req=44 ttl=46 time=156 ms\n44 bytes from 74.125.128.147: tcp_req=45 ttl=46 time=159 ms\n44 bytes from 74.125.128.147: tcp_req=46 ttl=46 time=156 ms\n44 bytes from 74.125.128.147: tcp_req=47 ttl=46 time=162 ms\n44 bytes from 74.125.128.147: tcp_req=48 ttl=46 time=156 ms\n44 bytes from 74.125.128.147: tcp_req=49 ttl=46 time=160 ms\n44 bytes from 74.125.128.147: tcp_req=50 ttl=46 time=159 ms\n\n--- 74.125.128.147 ping statistics ---\n50 packets transmitted, 50 received, 0.0% packet loss\nrtt min/avg/max/mdev = 156.00/159.50/165.00/2.20 ms\n"}
}
Property | Description | Example |
agentId | ID of Enterprise Agent to run instant test from | 35 |
server | server name or IP address of target test. If a webserver, do not include the protocol (ie, http://) | www.google.com |
port | port number to use for the ping test, if using TCP for the test type | 80 |
pingType | can be one of the following values: ICMP, TCP. If using ICMP, the port number parameter is not required | ICMP | TCP |
curl https://api.thousandeyes.com/instant/net/path-vis.json?authToken={authToken} -d '{"agentId":35, "server":"www.google.com", "port":80}' -H "Content-Type: application/json"
10 attempts at path visualization to the target, shown as an array of 10 routes to the target, with each hop indexed from 1.
{
"net": {
"pathVis": [
{
"agentName": "Bucharest, Romania",
"countryId": "RO",
"date": "2013-06-06 12:46:01",
"server": "app.thousandeyes.com:443",
"serverIp": "208.185.7.120",
"routes": [
{
"hops": [
{
"hop": 1,
"ipAddress": "83.246.0.1",
"prefix": "83.246.0.0/20",
"rdns": "vl150-20GbE.VSS-CR.hostway.ro",
"network": "HOSTWAY ROMANIA SRL (AS 39756)",
"responseTime": 0,
"location": "Bucuresti, Romania"
},
...
]
}
]
}
]
}
Property | Description | Example |
agentId | ID of Enterprise Agent to run instant test from | 35 |
server | server name or IP address of target test. If a webserver, do not include the protocol (ie, http://) | www.google.com |
port | port number to use for the tcp-connect test | 80 |
curl https://api.thousandeyes.com/instant/net/tcp-connect.json?authToken={authToken} -d '{"agentId":35, "server":"www.google.com", "port":80}' -H "Content-Type: application/json"
Time required to establish a TCP connection to the target server.
{
"net": {
"tcpConnect":160.0
}
}
Property | Description | Example |
agentId | ID of Enterprise Agent to run instant test from | 35 |
domain | domain to retrieve | www.google.com |
type | record type to retrieve - typically is used for A, CNAME or NS records. | A | CNAME |
curl https://api.thousandeyes.com/instant/dns/trace.json?authToken={authToken} -d '{"agentId":35, "domain":"www.google.com", "type":"A"}' -H "Content-Type: application/json"
Output of dig +trace to the target.
{
"dns": {
"trace": [
{
"agentName":"My Enterprise Agent",
"countryId":"US",
"output":"com.\t172800\tIN\tNS\ta.gtld-servers.net.\ncom.\t172800\tIN\tNS\tb.gtld-servers.net.\ncom.\t172800\tIN\tNS\tc.gtld-servers.net.\ncom.\t172800\tIN\tNS\td.gtld-servers.net.\ncom.\t172800\tIN\tNS\te.gtld-servers.net.\ncom.\t172800\tIN\tNS\tf.gtld-servers.net.\ncom.\t172800\tIN\tNS\tg.gtld-servers.net.\ncom.\t172800\tIN\tNS\th.gtld-servers.net.\ncom.\t172800\tIN\tNS\ti.gtld-servers.net.\ncom.\t172800\tIN\tNS\tj.gtld-servers.net.\ncom.\t172800\tIN\tNS\tk.gtld-servers.net.\ncom.\t172800\tIN\tNS\tl.gtld-servers.net.\ncom.\t172800\tIN\tNS\tm.gtld-servers.net.\n;; Received 492 bytes from 199.7.83.42(l.root-servers.net.) in 9 ms\n\ngoogle.com.\t172800\tIN\tNS\tns2.google.com.\ngoogle.com.\t172800\tIN\tNS\tns1.google.com.\ngoogle.com.\t172800\tIN\tNS\tns3.google.com.\ngoogle.com.\t172800\tIN\tNS\tns4.google.com.\n;; Received 168 bytes from 192.5.6.30(a.gtld-servers.net.) in 85 ms\n\nwww.google.com.\t300\tIN\tA\t74.125.129.99\nwww.google.com.\t300\tIN\tA\t74.125.129.104\nwww.google.com.\t300\tIN\tA\t74.125.129.106\nwww.google.com.\t300\tIN\tA\t74.125.129.147\nwww.google.com.\t300\tIN\tA\t74.125.129.103\nwww.google.com.\t300\tIN\tA\t74.125.129.105\n;; Received 128 bytes from 216.239.34.10(ns2.google.com.) in 78 ms\n\n",
"agentId":35,
"queries":3,
"finalQueryTime":78
}
]
}
}
Property | Description | Example |
agentId | ID of Enterprise Agent to run instant test from | 35 |
domain | domain to retrieve | www.google.com |
type | record type to retrieve - typically is used for A, CNAME or NS records. | A |
server | nameserver to query | ns1.google.com |
queryClass | IN or CH | IN |
curl https://api.thousandeyes.com/instant/dns/server.json?authToken={authToken} -d '{"agentId":35, "server":"ns1.google.com","domain":"www.google.com", "type":"A"}' -H "Content-Type: application/json"
{
"dns": {
"server": [
{
"agentName":"My Enterprise Agent",
"countryId":"US",
"agentId":35,
"server":"ns1.google.com",
"resolutionTime":52,
"mappings":"74.125.129.104\n74.125.129.106\n74.125.129.105\n74.125.129.103\n74.125.129.99\n74.125.129.147"
}
]
}
}
Property | Description | Example |
agentId | ID of Enterprise Agent to run instant test from | 35 |
url | URL to retrieve |
curl https://api.thousandeyes.com/instant/web/http-server.json?authToken={authToken} -d '{"agentId":35, "url":"http://www.google.com"}' -H "Content-Type: application/json"
{
"web": {
"httpServer": [
{
"agentName":"My Enterprise Agent",
"countryId":"US",
"responseCode":200,
"numRedirects":0,
"errorType":"None",
"dnsTime":17,
"connectTime":159,
"sslTime":365,
"waitTime":175,
"receiveTime":318,
"wireSize":44163,
"agentId":35,
"responseTime":717,
"fetchTime":1036
}
]
}
}
Property | Description | Example |
agentId | ID of Enterprise Agent to run instant test from | 35 |
url | URL to retrieve |
curl https://api.thousandeyes.com/instant/web/http-server.json?authToken={authToken} -d '{"agentId":35, "url":"http://www.google.com"}' -H "Content-Type: application/json"
{
"web": {
"pageLoad": [
{
"agentName":"My Enterprise Agent",
"countryId":"US",
"connectTime":503,
"sslTime":254,
"waitTime":1469,
"receiveTime":763,
"agentId":97,
"responseTime":384,
"fetchTime":2739,
"totalSize":365004,
"numObjects":9,
"numErrors":0,
"domLoadTime":517,
"pageLoadTime":1370
}
]
}
}
As with existing instant tests, transaction tests require a transaction to exist prior to executing it in an instant test:
Property | Description | Example |
agentId | ID of Enterprise Agent to run instant test from | 35 |
testId | ID of the transaction test to run | 1234 |
curl https://api.thousandeyes.com/instant/web/transactions.json?authToken={authToken} -d '{"agentId":35, "testId":255}' -H "Content-Type: application/json"
{
"web": {
"transaction": [
{
"agentName":"My Enterprise Agent",
"countryId":"US",
"stepsCompleted":1,
"totalSteps":1,
"componentErrors":0,
"agentId":35,
"transactionTime":3074,
"errorDetails":""
}
]
}
}
Last modified 1yr ago