Legacy Documentation for Statseeker API v2.1 r13
Index
- Version
- Overview
- Code Samples
- Request Headers
- Authentication
- Manage API Users’ access to Data
- Response Codes
- Pagination
- Linked Resources
- Named Fields
- Field Formulas
- API Endpoints
Data Dictionary
- Resource-Level Endpoints Reference
- Timeseries Data: Stats, Formats, Aggregation Formats and Options
- Event Formats
Version
This guide is specific to the latest version of the Statseeker RESTful API, version 2.1 r13, which was made available with Statseeker version 5.5.5.
Overview
The Statseeker API (Application Programming Interface) provides access to view and edit Statseeker configuration settings, as well to retrieve and manipulate timeseries data via an interface other than that provided by the Statseeker’s web GUI (Graphical User Interface). Most of the processes and objects that you are used to interacting with in Statseeker (network discovery, users, groups, devices, interfaces, device events, thresholds, reporting data, etc.) are exposed as resources from the API.
The API adheres to basic RESTful API principles:
- Implementing resource-oriented URLs
- Uses HTTP response codes to indicate API errors
- Uses HTTP authentication
- Accepts HTTP verbs (GET, PUT, POST, and DELETE)
Code Samples
Code samples have been provided throughout this guide in a range of languages. Regardless of your implementation, in the end your request is submitted to the Statseeker API via an HTTP request, and consequently, in many instances some method of character encoding will be required. While some implementations will incorporate libraries that will handle any required encoding, others may not. In response, we have provided sample code demonstrating the use of both Unicode and URL (percent) encoding throughout this guide, so you may need to modify this aspect of the samples to suit the requirements specific to your environment.
The simplest implementation is using cURL to query the API. This allows you to begin investigating the Statseeker API with little to no requisite environmental configuration. All cURL examples provided in this guide are suited to use on a Unix based cURL implementation, which allows the use of both single quotes (‘) and double quotes(“) for nested data objects. A Windows-based cURL implementation may not allow the use of single quotes, in this instance use double quotes and escape any inner pairs with backslash (\).
Example:
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
-X POST \
"https://your.statseeker.server/api/v2.1/group/?indent=3" \
-d '{"data":[{"name":"Group1"}]}'
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
-X POST \
"https://your.statseeker.server/api/v2.1/group/?indent=3" \
-d "{\"data\":[{\"name\":\"Group1\"}]}"
Many instances of code samples in this document use nested quotes and, depending on your development environment, you may need to encode inner quote pairs so that they are interpreted correctly. In some examples we have URL encoded inner single-quotes and they are presented as %27. In other examples we have used the Unicode \u0027 for the same purpose. Presenting the samples in this way simply serves to highlight that there may be specific encoding requirements depending on your environment.
Request Headers
All requests should include the following HTTP headers:
Header | Mandatory | Value | Notes |
Accept | no | application/json | This specifies the media type accepted in the response |
Content-Type | no | application/json | This specifies the media type of the content being sent to the API |
Authorization | yes | Basic [base-64 encoded username:password] | The Basic keyword indicates the authentication method being used and the base-64 encoded username:password pair provides the credentials needed to access the API. See Authentication for further details. |
Bearer {authentication_token} | The authentication token returned from a POST request to the Statseeker authentication end-point (/ss-auth) |
Authentication
- v5.5.4 introduced token-based authentication, see User Authentication for details
- New Installations: default to token-based authentication
- Updated Servers: default to basic access authentication – this authentication method has been deprecated and will be removed in a future release
Statseeker v5.5.3 and earlier servers will only accept basic authentication.
Statseeker uses token-based authentication for user access to the server, by default, this includes API access. The Statseeker server has a resource which handles authentication requests, successful authentication returns an access token and this token must then be included with any subsequent API request. The API can also be set to use Basic Access Authentication instead of token authentication. This setting only applies to authentication with the API and does not impact user authentication via the web interface (GUI).
Set the API Authentication Method
To specify the API authentication method used:
- Select Admin Tool > Statseeker Administration > Web Server Configuration
- Click Edit (top-right)
- Set RESTful API Authentication Mode as needed and click Save
See Web Server Configuration for more information.
Token-Based Authentication
- The Statseeker server has a resource, located at https://your.statseeker.server/ss-auth, which handles authentication requests
- To authenticate you must submit a POST request to the authentication endpoint, containing the username and password in the body of the request
- Successful authentication will return an access token and this token must then be included with any subsequent request
The following sample code demonstrates this process:
curl \
-D -X POST \
-H "Content-type: application/x-www-form-urlencoded" \
-d "user=user_name&password=user_password" \
"https://your.statseeker.server/ss-auth"
Subsequent request to access the API.
curl \
-X GET
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
"https://your.statseeker.server/api/v2.1"
# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
# request auth token
headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
url = f'https://{server}/ss-auth'
authData = {'user': user, 'password': pword}
resp = requests.post(url, headers=headers, data=authData, verify=False)
headers['Content-Type'] = 'application/json'
url = f'https://{server}/{query}'
# If auth was successful, include my token and make my API request
if resp.status_code == 200:
myToken = resp.json()
headers['Authorization'] = f'Bearer {myToken["access_token"]}'
resp = requests.get(url, headers=headers, verify=False)
return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'your_api_user'
pword = 'your_user_password'
# API root endpoint
query = 'api/v2.1'
# optional response formatting
query += '/?indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
# output the response to my API request
if resp.status_code == 200:
print(resp.status_code)
print(resp.json())
else:
print(f'Error: {resp.status_code} {resp.reason}')
# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"
def do_request(server, query, user, pword)
# Run auth request
headers = {
:content_type => "application/x-www-form-urlencoded"
}
url = "https://" + server + "/ss-auth"
authData = {
:user => user,
:password => pword
}
begin
resp = RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => authData
)
# Include my token and make my API request
headers["content_type"] = :json
url = "https://" + server + "/" + query
rdata = JSON.parse(resp)
headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false,
)
end
end
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'your_api_user'
pword = 'your_user_password'
# api root endpoint
$query = 'api/v2.1'
# optional formatting of the response
$query += '/?links=none&indent=3'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"
Example: Token-based Auth with a fall back to Basic Auth
In this example we attempt token authentication and if this process fails, we fallback to basic authentication.
# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
# Run auth request
headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
url = f'https://{server}/ss-auth'
authData = {'user': user, 'password': pword}
resp = requests.post(url, headers=headers, data=authData, verify=False)
headers['Content-Type'] = 'application/json'
url = f'https://{server}/{query}'
print(f'Get Auth Token: {resp.status_code}')
if resp.status_code == 200:
# Authentication successful, Statseeker >= v5.5.4
myToken = resp.json()
headers['Authorization'] = f'Bearer {myToken["access_token"]}'
resp = requests.get(url, headers=headers, verify=False)
if resp.status_code == 401:
print(f'Token auth failed: {resp.status_code}, trying basic auth')
# Either Authentication was unsuccessful (Statseeker < v5.5.4), or API set to use basic auth
# Try basic auth
resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# optional response formatting
query += '/?indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
print(resp.status_code)
print(resp.json())
else:
print(f'Error: {resp.status_code} {resp.reason}')
# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"
def try_basic(server, query, user, pword)
headers = {
:content_type => "json"
}
url = "https://" + server + "/" + query
headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false
)
end
def do_request(server, query, user, pword)
# Run auth request
headers = {
:content_type => "application/x-www-form-urlencoded"
}
url = "https://" + server + "/ss-auth"
authData = {
:user => user,
:password => pword
}
begin
resp = RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => authData
)
rescue RestClient::Unauthorized
# bad credentials or Statseeker not v5.5.4 or higher
try_basic(server, query, user, pword)
else
# Authentication successful. Statseeker at least v5.5.4
headers["content_type"] = :json
url = "https://" + server + "/" + query
rdata = JSON.parse(resp)
headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false,
)
end
rescue RestClient::Unauthorized
# Statseeker = v5.5.4 but configured for basic auth
try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# optional formatting of the response
$query += '/?links=none&indent=3'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"
Basic Authentication (Deprecated – only available on servers that have been upgraded from earlier versions)
The Statseeker API uses the same HTTP Basic Access (BA) authentication used by the Statseeker web interface (i.e.username:password).
This basic authentication must be included in the HTTP Authorization header for every request sent to the API, see below for examples of supplying this authorization.
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-u user:pword \
"https://your.statseeker.server/api/v2.1"
# import requests for handling connection and encoding
import requests, json
# specify the api endpoint to be used
url = "https://your.statseeker.server/api/v2.1/"
# credentials
user = "username"
pword = "password"
# headers
headers = {"Accept":"application/json", "Content-Type":"application/json"}
# send request
r = requests.get(url, headers=headers, auth=(user, pword))
print(r.status_code)
print(r.json())
# install with: $ gem install rest-client
require 'rest_client'
# api root endpoint
$uri = 'https:/your.statseeker.server/api/v2.1/'
# api user credentials
$user = 'username'
$pword = 'password'
# optional formatting of the response for onscreen readability
$rspFormat = '?&indent=3'
# send request
response = RestClient::Request.new({
method: :get,
url: $uri + $rspFormat,
user: $user,
password: $pword,
}).execute
# output response to screen
puts "#{response.to_str}"
Manage API User’s access to Data
API access also requires that the user account initiating the communication has been assigned permission to interact with the API. The default admin user account (created during the Statseeker installation process) is configured with API read/write access by default and, when creating additional Statseeker users API access can be assigned:
- Via the web interface, by setting the API Access field, see User Accounts for details
- Via the API, by setting api_access = rw, for read-write access (alternatively, r, or w, for read-only and write-only respectively)
Independent of a user accounts’ ability to access the API is the user accounts’ data access permissions. These permissions can be used to restrict the user from viewing data from specific elements of your network infrastructure. These permissions are managed through user-group associations that will have been configured when the user account was created. If you are not familiar with this process, see Users & Grouping.
You may want to consider creating a dedicated API user account:
- Assign the account API read/write access
- To enable access to all data, assign the account ‘All Groups’ permission (see Users & Grouping for details)
- Reference this account in all API scripts
Response Codes
Statseeker uses RESTful HTTP response codes to indicate success or failure of API requests
Code | Message | Notes |
200 | Success | Successful API request
Note: when referencing deprecated objects/endpoints the response will return a Status: 200 OK, but the response header will contain a Warning 299 – Deprecated API. In this instance, refer to the Resource Reference for the resource being requested.
|
400 | Bad Request | Malformed request, check request syntax and supplied parameters |
401 | Unauthorized | Authorization error, check the supplied username and password |
404 | Not Found | The specified endpoint cannot be located |
500 | Server Error | Something has gone wrong on Statseeker’s end |
Example Request:We are requesting a user with an ID of not_a_valid_user_id.
https://your.statseeker.server/api/v2.1/user/not_a_valid_user_id/?links=none
Example Response:The response will return a data object containing all the data retrieved for the specified user, in this case an empty array and the corresponding data_total is 0.
{
"version": "2.1",
"revision": "13",
"info": "The Statseeker RESTful API",
"data": {
"success": true,
"errmsg": "ok",
"time": 1575850381,
"objects": [
{
"type": "user",
"sequence": 0,
"status": {
"success": true,
"errcode": 0
},
"data_total": 0,
"data": []
}
]
}
}
Limits on Size of Response Object
The API has configurable limits on the size of the data being returned from any single API query. The default value of these limits are:
- Event based data (syslog, threshold events) is limited to 1 million rows per request
- Timeseries data is limited to 1GB of data returned per request
These default values are intentionally set very high, and should not impact typical use of the API. They will however prevent a single API query from consuming enough system resources to severely impact the performance of your Statseeker server. The limit values can be modified to suit your Statseeker server resources, please contact Statseeker Technical Support for assistance.
Pagination
The API automatically paginates the response when large data sets are returned. By default, the API will return 50 results per response.
The number of results returned in a single response can be modified from the default value of 50 by setting the limit parameter on the request.
The following example HTTP request will return 200 results per response
https://your.statseeker.server/api/v2.1/cdt_port/?&limit=200
When moving through paginated data with the pagination links (Next, Previous, etc) the request URL is altered to append an offset request parameter. Following on from the example above, with limit=200 and setting offset=100, the request will return the 101st to 300th result:
https://your.statseeker.server/api/v2.1/cdt_port/?&limit=200&offset=100
Linked Resources
There are two types of resource links available:
- Standard Links – default links defined by Statseeker
- Referencing standard links when resources have Multiple Links to the same resource
- Custom Links – user-defined links
Standard Links
Most resources are linked to at least one other resource in a parent-child relationship. You can use this linking to access any of the parent-resource fields from the child resource (e.g. a query to the interface object {cdt_port} can access any of the fields contained in the device resource {cdt_device} for the device that the interface resides on) This linking is one-way, from child to parent/ancestor. The format for specifying a field from a linked resource is:
{linked_resource_name}.{field}E.g.cdt_device.name
To see which parent-resources can be linked to from a given resource, run a GET command against the describe endpoint (api/v2.1/{resource}/describe) for that resource and review content of objects.links.
Example:
api/v2.1/cdt_cpu/describe, will return something like:
{
"version": "2.1",
"revision": "13",
"info": "The Statseeker RESTful API",
"data": {
"success": true,
"errmsg": "ok",
"time": 1596514086,
"objects": [
{
"type": "cdt_cpu",
"title": "CPU",
"description": "The custom data entities for the cpu table",
"fields": {...},
"commands": {...},
"info": {...},
"allow_formula_fields": true,
"links": {
"deviceLink": {
"title": "Link to Device",
"object": "cdt_device",
"default": 1
}
},
"global_field_options": {...}
}
]
},
"links": [...]
}
We can see, in the response object above, that objects.links specifies a link (deviceLink) to the device resource cdt_device.
Example:
You can request data about interfaces showing a high rate of discarded packets from the cdt_port resource, and in the same call request ping-related data from the cdt_device resource of the parent device for each port.
api/v2.1/cdt_port/?fields=name,InOutDiscards,RxDiscardsPercent,TxDiscardsPercent,InOutOctets,cdt_device.name,cdt_device.ping_rtt&formats=avg&InOutDiscards_formats=total,avg&InOutOctets_formats=total&timefilter=range=now -45m to now&InOutDiscards_sort=1,desc,avg&limit=5&links=none
- fields=name,InOutDiscards,RxDiscardsPercent,TxDiscardsPercent,InOutOctets,cdt_device.name,cdt_device.ping_rtt – the fields we want to retrieve, including name and ping from the parent object cdt_device.name,cdt_device.ping_rtt
- formats=avg – a global formats parameter for all timeseries data
- InOutDiscards_formats=total,avg&InOutOctets_formats=total – metric specific overrides for the formats to retrieve additional formats for some metrics
- timefilter=range=now -45m to now – a global timefilter parameter for all timeseries data
- InOutDiscards_sort=1,desc,avg – sort the interfaces presenting the highest discard rate to the top
- limit=5&links=none – limit the initial response to 5 ports and don’t show the links reference object
Once a field from a linked resource has been retrieved, it can be treated like any other field. You can specify formats, and timefilters for the field and you can sort and filter the response object by that field. In the example above we requested cdt_device.name, we can reference that to apply a filter to the request to only return data on the interfaces from a single device (or selection of devices).
Example:
api/v2.1/cdt_port/?fields=name,InOutDiscards,RxDiscardsPercent,TxDiscardsPercent,InOutOctets,cdt_device.name,cdt_device.ping_rtt&formats=avg&InOutDiscards_formats=total,avg&InOutOctets_formats=total&timefilter=range=now -45m to now&InOutDiscards_sort=1,desc,avg&limit=5&links=none&cdt_device.name_filter=LIKE(“NewYork%25”)
- cdt_device.name_filter=LIKE(“NewYork%25”) – filter the response to only show ports on devices with a name starting with NewYork
Response:
{
"info": "The Statseeker RESTful API",
"version": "2.1",
"data": {
"objects": [
{
"status": {
"errcode": 0,
"success": true
},
"data": [
{
"name": "Gi6/20",
"cdt_device.ping_rtt": {
"avg": 35.5126
},
"InOutDiscards": {
"total": 5900.34,
"avg": 655.593
},
"InOutOctets": {
"total": 13768100000
},
"cdt_device.name": "NewYork-swt4",
"TxDiscardsPercent": {
"avg": 0.023552
},
"RxDiscardsPercent": {
"avg": 0
},
"id": 811
},
{
"name": "Gi2/28",
"cdt_device.ping_rtt": {
"avg": 47.5407
},
"InOutDiscards": {
"total": 5774.36,
"avg": 641.596
},
"InOutOctets": {
"total": 13159300000
},
"cdt_device.name": "NewYork-swt3",
"TxDiscardsPercent": {
"avg": 0.0231991
},
"RxDiscardsPercent": {
"avg": 0
},
"id": 1032
},
{
"name": "Gi6/18",
"cdt_device.ping_rtt": {
"avg": 35.5126
},
"InOutDiscards": {
"total": 5673.6,
"avg": 630.4
},
"InOutOctets": {
"total": 6980780000
},
"cdt_device.name": "NewYork-swt4",
"TxDiscardsPercent": {
"avg": 0.00432219
},
"RxDiscardsPercent": {
"avg": 0
},
"id": 808
},
{
"name": "Gi2/4",
"cdt_device.ping_rtt": {
"avg": 35.5126
},
"InOutDiscards": {
"total": 5418.93,
"avg": 602.103
},
"InOutOctets": {
"total": 1743290000
},
"cdt_device.name": "NewYork-swt4",
"TxDiscardsPercent": {
"avg": 0.0754798
},
"RxDiscardsPercent": {
"avg": 0
},
"id": 709
},
{
"name": "Gi7/22",
"cdt_device.ping_rtt": {
"avg": 25.2689
},
"InOutDiscards": {
"total": 5256.75,
"avg": 584.083
},
"InOutOctets": {
"total": 8214830000
},
"cdt_device.name": "NewYork-swt1",
"TxDiscardsPercent": {
"avg": 0
},
"RxDiscardsPercent": {
"avg": 0.013608
},
"id": 1491
}
],
"type": "cdt_port",
"data_total": 787,
"sequence": 0
}
],
"errmsg": "ok",
"success": true,
"time": 1534217902
},
"revision": "13"
}
Resources with Multiple Links
Some resources have multiple linked resources, and some have multiple links to instances of the same resource. Take the cdt_mis (MAC/IP/Switch Port) resource for example. If we send a describe request to the cdt_mis resource, the links section of the response contains:
"links": {
"arp_dev": {
"title": "Link to ARP Device",
"object": "cdt_device",
"default": 0
},
"connecteddevice": {
"title": "Link to Connected Device",
"object": "cdt_device",
"default": 0
},
"connectedport": {
"title": "Link to Connected Interface",
"object": "cdt_port",
"default": 1
},
"deviceLink": {
"title": "Link to Device",
"object": "cdt_device",
"default": 1
},
"port": {
"title": "Link to Interface",
"object": "cdt_port",
"default": 0
}
},
This endpoint has multiple links out to instances of the cdt_device (parent device, connected device and ARP device) and cdt_port (associated port and connected port).
When referencing cdt_device.{field} or cdt_port.{field) in queries to the cdt_mis resource, the API will return the parent device and port associated with the MAC address. To reference any of the other cdt_device (connected device / ARP device) links, or the connected interface link, the link needs to be defined. This requires the following parameters:
- {foo} – a custom named field
- {foo}_link={name_of_link} – specify which linked resource to use
- {foo}_object={resource_type_linked_object} – specify the resource type being linked to
- {foo}_field={field_name} – specifying fields to be retrieved from the linked resource
Example: Requesting some fields for a specified MAC
/api/v2.1/cdt_mis/?fields=name,mac,ip,vlan_name,cdt_device.name&mac_filter=is(%2200:00:74:db:3b:f6%22)
To also return the ipaddress of the ARP Router we need to add a custom named field (see Named Fields for details), and to define a link to access that ARP device to return that field. I will call my named field arpRouter so my new request will be:
/api/v2.1/cdt_mis/?fields=name,mac,ip,vlan_name,cdt_device.name,arpRouter&mac_filter=is(%2200:00:74:db:3b:f6%22)&arpRouter_link=arp_dev&arpRouter_object=cdt_device&arpRouter_field=ipaddress
- arpRouter – my named field, included in the fields parameter
- arpRouter_link=arp_dev – my {foo}_link parameter, identifying which link on the cdt_mis record I want to retrieve data from
- arpRouter_object=cdt_device – my {foo}_object parameter, identifying the resource type I am linking to
- arpRouter_field=ipaddress – my {foo}_field parameter, identifying which field I want retrieved
Custom Links
Custom links, like their standard counter-part, allow you to query a resource and, via the defined link, request data from another resource in the same query. To achieve this the custom link is first created by linking the field from one resource to the corresponding field in another. Once the link has been created, when querying the resource defined as the ‘link source’ you can also query the resource defined as the ‘link destination’. The syntax for specifying a field from a linked resource is the same as when using standard links:
{linked_resource_name}.{field}E.g.cdt_device.name
Example:
We have a threshold set for an average 5-minute memory usage of over 90%. With the API we can query threshold event records for details on breaches of this threshold, but we cannot request recent memory usage data leading up to the breach because there is no link between the threshold event resource and the memory resource.
We first create a link between the threshold event and the memory resources by specifying a field that exists in both:
- The threshold_record resource contains an entityid field which contains the ID of the entity that triggered the breach, in this instance the memory entity
- The cdt_memory resource contains an id field which contains the ID of the memory entity
The link is created by:
- Sending a POST command to the resource endpoint
- Specifying the source resource and field
- Specifying the destination resource and corresponding field
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
-X POST \
"https://my.statseeker.server/api/v2.1/link/?indent=3" \
-d '{
"data": [{
"name": "memoryLink",
"title": "Link to Memory",
"default": 1,
"src": "threshold_record",
"src_fields": {"entityid": {}},
"src_query": "{entityid}",
"dst": "cdt_memory",
"dst_fields": {"id": {}},
"dst_query": "{id}"
}]
}'
After the link has been created, any query to the source resource can also query data from the linked destination resource. In the example above, we can request memory data while querying threshold records.
With the link created, we can now send our query containing the following URL:
https://my.statseeker.server/api/v2.1/threshold_record/?fields=time,device,entityTypeName,event,cdt_memory.memoryUsedPercent,Usage5m&Usage5m_field=memoryUsedPercent&Usage5m_object=memory&Usage5m_formats=vals&Usage5m_timefilter=range%20=%20now%20-5m%20to%20now&formats=avg,min,max&timefilter=range=start_of_today%20to%20now&entityTypeName_filter==’memory’&entityTypeName_hide=1&lastx=5&timefmt=%c
Breakdown:
- https://your.statseeker.server/api/v2.1/threshold_record/ – the resource endpoint, specifying the threshold_record resource
- ?fields=time,device,entityTypeName,event,cdt_memory.memoryUsedPercent,Usage5m – the fields to return, including the memoryUsedPercent field from our linked cdt_memory resource. We want to return 2 different sets of memoryUsedPercent data, so we include a custom named field, Usage5m for the second set.
- &Usage5m_field=memoryUsedPercent&Usage5m_object=memory – define the custom named field as another instance of cdt_memory.memoryUsedPercent
- &Usage5m_formats=vals&Usage5m_timefilter=range = now -5m to now – specify the format and timefilter for the custom field
- &formats=avg,min,max&timefilter=range=start_of_today%20to%20now – specify the format and timefilter for all other timeseries metrics, in this case it is only cdt_memory.memoryUsedPercent
- &entityTypeName_filter==’memory’ – filter the returned threshold event records to just those concerning breaches of memory thresholds
- &entityTypeName_hide=1 – we need to retrieve the entityTypeName in order to filter on it, but we don’t need to see the value in my returned data, so we hide it
- &lastx=5 – return the 5 most recent records
- &timefmt=%c – we are specifying the format to use when displaying the time that the threshold breach occurred
Here is the response we receive from the API request:
{
"version": "2.1",
"revision": "13",
"info": "The Statseeker RESTful API",
"data": {
"success": true,
"errmsg": "ok",
"time": 1596598309,
"objects": [
{
"type": "threshold_record",
"sequence": 0,
"status": {
"success": true,
"errcode": 0
},
"data_total": 5,
"data": [
{
"time": "Wed Aug 5 13:24:00 2020",
"device": "NewYork-srv4",
"event": "Mem905m (memory.memoryUsedPercent avg, threshold: 90%)",
"cdt_memory.memoryUsedPercent": {
"min": 5,
"max": 94.8153,
"avg": 49.3997
},
"Usage5m": {
"vals": [
89.5952,
92.3465,
93.1448,
94.4017,
94.7985
]
},
"id": "5F2A2650-1B-2"
},
{
"time": "Wed Aug 5 13:19:00 2020",
"device": "Budapest-srv2",
"event": "Mem905m (memory.memoryUsedPercent avg, threshold: 90%)",
"cdt_memory.memoryUsedPercent": {
"min": 4.99998,
"max": 96.9951,
"avg": 50.3273
},
"Usage5m": {
"vals": [
91.668,
94.1118,
95.4288,
96.9171,
95.5872
]
},
"id": "5F2A2524-16-2"
},
{
"time": "Wed Aug 5 13:19:00 2020",
"device": "NewYork-srv4",
"event": "Mem905m (memory.memoryUsedPercent avg, threshold: 90%)",
"cdt_memory.memoryUsedPercent": {
"min": 5,
"max": 94.8153,
"avg": 49.3997
},
"Usage5m": {
"vals": [
91.5952,
92.3465,
93.1448,
94.4017,
94.7985
]
},
"id": "5F2A2524-15-2"
},
{
"time": "Wed Aug 5 13:14:00 2020",
"device": "Budapest-srv2",
"event": "Mem905m (memory.memoryUsedPercent avg, threshold: 90%)",
"cdt_memory.memoryUsedPercent": {
"min": 4.99998,
"max": 97.9951,
"avg": 50.3273
},
"Usage5m": {
"vals": [
91.668,
94.1118,
95.4288,
96.9171,
96.5872
]
},
"id": "5F2A23F8-E-2"
},
{
"time": "Wed Aug 5 12:44:00 2020",
"device": "Pretoria-srv",
"event": "Mem905m (memory.memoryUsedPercent avg, threshold: 90%)",
"cdt_memory.memoryUsedPercent": {
"min": 20.1107,
"max": 96.9795,
"avg": 51.634
},
"Usage5m": {
"vals": [
91.2561,
91.4009,
91.587,
91.8134,
92.0167
]
},
"id": "5F2A1CF0-6C-2"
}
]
}
]
},
}
Named Fields
The API doesn’t allow you to explicitly request the same field twice in the same call. When you want to request multiple sets of data for the same field, but with different options, you can use named fields; simply add a custom field to the fields parameter.
Example:
I want to request TxUtil data on all ports on a device but I want the data broken into today and yesterday. To do this I am going to:
- Specify two named fields, yesterdayTx and todayTxfields=cdt_device.name,name,yesterdayTx,todayTx
- Define what those fields refer toyesterdayTx_field=TxUtil&todayTx_field=TxUtil
- Set specific timefilters for each named fieldyesterdayTx_timefilter=range=start_of_today -1d to start_of_today&todayTx_timefilter=range=start_of_today to now
- Use a global formats parameter to apply to bothformats=min,max,avg,95th
- Filter the response to just the device in questioncdt_device.name_filter=IS(“<DEVICE NAME>”)
My full request string will be:
api/v2.1/cdt_port/?fields=cdt_device.name,name,yesterdayTx,todayTx&todayTx_field=TxUtil&formats=max,min,avg,95th&todayTx_timefilter=range=start_of_today to now&yesterdayTx_field=TxUtil&yesterdayTx_timefilter=range=start_of_today -1d to start_of_today&cdt_device.name_filter=IS(“<DEVICE NAME>”)&links=none
The response is:
{
"info": "The Statseeker RESTful API",
"version": "2.1",
"data": {
"objects": [
{
"status": {
"errcode": 0,
"success": true
},
"data": [
{
"cdt_device.name": "<DEVICE NAME>",
"yesterdayTx": {
"max": 9.85221,
"avg": 9.78883,
"95th": 9.84576,
"min": 8.00007
},
"name": "Gi0/1",
"todayTx": {
"max": 9.8516,
"avg": 9.80882,
"95th": 9.84672,
"min": 9.34127
},
"id": 1975
},
{
"cdt_device.name": "<DEVICE NAME>",
"yesterdayTx": {
"max": 786.667,
"avg": 294.361,
"95th": 766.18,
"min": 83.6935
},
"name": "Gi0/2",
"todayTx": {
"max": 543.072,
"avg": 182.109,
"95th": 497.423,
"min": 95.8462
},
"id": 1976
},
{
"cdt_device.name": "<DEVICE NAME>",
"yesterdayTx": {
"max": 783.816,
"avg": 256.446,
"95th": 714.649,
"min": 94.7673
},
"name": "Gi0/3",
"todayTx": {
"max": 786.667,
"avg": 495.852,
"95th": 781.882,
"min": 96.1355
},
"id": 1977
},
{
"cdt_device.name": "<DEVICE NAME>",
"yesterdayTx": {
"max": 7.48404,
"avg": 3.68874,
"95th": 4.88369,
"min": 0.995533
},
"name": "Gi0/4",
"todayTx": {
"max": 7.70181,
"avg": 4.54324,
"95th": 5.55599,
"min": 2.71828
},
"id": 1978
},
{
"cdt_device.name": "<DEVICE NAME>",
"yesterdayTx": {
"max": 8.37714,
"avg": 2.99202,
"95th": 6.29977,
"min": 0.96669
},
"name": "Gi0/5",
"todayTx": {
"max": 8.24358,
"avg": 6.07991,
"95th": 7.4297,
"min": 3.94083
},
"id": 1979
}
],
"type": "cdt_port",
"data_total": 5,
"sequence": 0
}
],
"errmsg": "ok",
"success": true,
"time": 1533779107
},
"revision": "13"
}
Named fields are also required when:
- A resource has multiple links to the same resource type – one of these will be the default link and the others not
- You want to refence a non-default linked resource
A named field is defined for each field you want returned from a non-default linked resource, see Multiple Links to the same resource for details.
Field Formulas
Field formulas allow you to request a user defined field from the API and populate that field via a formula based on other fields returned in the request. The formula accepts SQL operators and conventions, and can reference the values of other fields, returned by the query, with the following syntax:
- Configuration field: {field}, e.g. {ping_poll}
- Timeseries/Event fields must also define a data format: {field:format}, e.g. {ping_rtt:current}
Formula Example: Convert InOctets to Mebibytes
Request: /api/v2.1/cdt_port/?fields=cdt_device.name,name,InOctets,InMB&timefilter=range = now -30m to now&formats=vals&InMB_formula={InOctets:vals}/1024/1024&cdt_device.name_filter=IS(“<DEVICE NAME>”)
The request:
- Defines a named field, InMB
- Specifies the formula to use to populate that field: InMB_formula={InOctets:vals} / 1024 / 1024
- Must include any field referenced within the formula as well as any required data format, in this case {InOctets:vals}
Response:
{
"version": "2.1",
"revision": "13",
"info": "The Statseeker RESTful API",
"data": {
"success": true,
"errmsg": "ok",
"time": 1597795111,
"objects": [
{
"type": "cdt_port",
"sequence": 0,
"status": {
"success": true,
"errcode": 0
},
"data_total": 2,
"data": [
{
"cdt_device.name": "<DEVICE NAME>",
"name": "int.2",
"InOctets": {
"vals": [
72506880,
72525312,
72607744,
72499968,
...
73761536,
72515328
]
},
"InMB": [
69.1479,
69.1655,
69.2441,
69.1414,
...
70.3445,
69.156
],
"id": 591
},
{
"cdt_device.name": "<DEVICE NAME>",
"name": "int.3",
"InOctets": {
"vals": [
1204222976,
1162312704,
1141559296,
1186676992,
...
1385965824,
1365224192
]
},
"InMB": [
1148.44,
1108.47,
1088.68,
1131.7,
...
1321.76,
1301.98
],
"id": 592
}
]
}
]
},
"links": []
}
Formula Example: Ping Latency Gauge using a Case Statement
Request: /api/v2.1/cdt_device/?fields=name,ping_rtt,status&timefilter=range = now -30m to now&formats=avg&status_formula=CASE WHEN {ping_rtt:avg} < 10 THEN 'Green' WHEN {ping_rtt:avg} < 50 THEN 'Amber' WHEN {ping_rtt:avg} IS NULL THEN 'Unknown' ELSE 'Red' END
The request:
- Defines a named field, status
- Provides a case statement to populate that field: status_formula=CASE WHEN {ping_rtt:avg} < 10 THEN 'Green' WHEN {ping_rtt:avg} < 50 THEN 'Amber' WHEN {ping_rtt:avg} IS NULL THEN 'Unknown' ELSE 'Red' END
- Must include any field referenced within the formula as well as any required data format, in this case {ping_rtt:avg}
Response:
{
"version": "2.1",
"revision": "13",
"info": "The Statseeker RESTful API",
"data": {
"success": true,
"errmsg": "ok",
"time": 1597793987,
"objects": [
{
"type": "cdt_device",
"sequence": 360,
"status": {
"success": true,
"errcode": 0
},
"data_total": 226,
"data": [
{
"name": "NewYork-ups1",
"ping_rtt": {
"avg": 35.4
},
"status": "Amber",
"id": 338
},
{
"name": "NewYork-ups2",
"ping_rtt": {
"avg": 41.7333
},
"status": "Amber",
"id": 339
},
{
"name": "NewYork-swt2",
"ping_rtt": {
"avg": 52.6
},
"status": "Red",
"id": 347
},
...
...
{
"name": "Phoenix-swt1",
"ping_rtt": {
"avg": 41.6667
},
"status": "Amber",
"id": 387
}
]
}
]
},
"links": []
}
Formula Example: Nested Formulas
Request: /api/v2.1/cdt_device/?fields=name,sysLocation,ping_rtt,status,prettyPing,prettyStatus&timefilter=range = now -30m to now&formats=avg&status_formula=CASE WHEN {ping_rtt:avg} < 10 THEN 'Green' WHEN {ping_rtt:avg} < 50 THEN 'Amber' WHEN {ping_rtt:avg} IS NULL THEN 'Unknown' ELSE 'Red' END&prettyPing_formula={ping_rtt:avg} || ' ms'&prettyStatus_formula={status} || ' (' || {prettyPing} || ')'&sysLocation_filter=IS("LosAngeles")
The request:
- Defines a multiple named fields: status, prettyPing, prettyStatus
- Defines formula to populate each:
- status_formula=CASE WHEN {ping_rtt:avg} < 10 THEN 'Green' WHEN {ping_rtt:avg} < 50 THEN 'Amber' WHEN {ping_rtt:avg} IS NULL THEN 'Unknown' ELSE 'Red' END
- prettyPing_formula={ping_rtt:avg} || ‘ ms’
- prettyStatus_formula={status} || ‘ (‘ || {prettyPing} || ‘)’ – requires output from other formula fields
- Must include any field referenced within the formula as well as any required data format, in this case {ping_rtt:avg}, {status} and {prettyPing}
Response:
{
"version": "2.1",
"revision": "13",
"info": "The Statseeker RESTful API",
"data": {
"success": true,
"errmsg": "ok",
"time": 1597796468,
"objects": [
{
"type": "cdt_device",
"sequence": 360,
"status": {
"success": true,
"errcode": 0
},
"data_total": 12,
"data": [
{
"name": "LosAngeles-ups1",
"sysLocation": "LosAngeles",
"ping_rtt": {
"avg": 38.1333
},
"status": "Amber",
"prettyPing": "38.1333 ms",
"prettyStatus": "Amber (38.1333 ms)",
"id": 350
},
{
"name": "LosAngeles-ups2",
"sysLocation": "LosAngeles",
"ping_rtt": {
"avg": 32.4
},
"status": "Amber",
"prettyPing": "32.4 ms",
"prettyStatus": "Amber (32.4 ms)",
"id": 351
},
...
...
{
"name": "LosAngeles-rtr",
"sysLocation": "LosAngeles",
"ping_rtt": {
"avg": 43.8
},
"status": "Amber",
"prettyPing": "43.8 ms",
"prettyStatus": "Amber (43.8 ms)",
"id": 361
}
]
}
]
},
"links": []
}
API Endpoints
The API allows you to add, retrieve and modify data relating to a large number of data-object/resource types. These resources are related to either the network hardware that your Statseeker server is monitoring, or various configuration settings (user accounts, thresholds and alerts, automated processes, network configuration details, etc.) applied to your Statseeker server.
Most API’s feature a static selection of object-focused endpoints, which are available to everyone. The Statseeker API is a little different, while many resources are available through the default installation, some are available as modular Custom Data Type (CDT) packages which can be added and removed as needed. This feature, combined with the fact that Statseeker doesn’t force users to upgrade their installation, means that the resource-level endpoints available on one Statseeker deployment may be quite different to those available on another.
- For information on installing CDT packages, see Custom Data Types
The remainder of this section provides a basic overview of the types of endpoints available through the API, and the types of requests that can be made against those endpoint types. These endpoint types, and their available actions, are universal across deployments, but the data objects available at the resource level may differ between Statseeker installations.
Endpoint | URL | Description |
Statseeker Endpoints | ||
Authentication | /ss-auth
https://your.statseeker.server/ss-auth |
The authentication endpoint authenticates users and generates authentication tokens |
API Endpoints | ||
API Root | /api/{api_version}/
https://your.statseeker.server/api/v2.1/ |
The root endpoint for the API |
Resource | /api/{api_version}/{resource}
https://your.statseeker.server/api/v2.1/user |
The resource endpoint, for running get, add, update, and delete queries on specific resources. This is the endpoint type used to retrieve your timeseries and configuration data from your Statseeker server, see:
|
Describe | /api/{api_version}/{resource}/describe
https://your.statseeker.server/api/v2.1/user/describe |
The describe endpoint, for running describe queries on specific resources |
Execute | /api/{api_version}/{resource}/execute
https://your.statseeker.server/api/v2.1/discover/execute |
The execute endpoint, for running execute queries on specific resources |
ID | /api/{api_version}/{resource}/{id}
https://your.statseeker.server/api/v2.1/user/1234 |
The ID endpoint, for running get, update, and delete queries on a specific entry within a resource |
Field | /api/{api_version}/{resource}/{id}/{field}
https://your.statseeker.server/api/v2.1/user/1234/name |
The field endpoint, for running update queries on a field of a specific entry within a resource |
Authentication Endpoint (/ss-auth))
This endpoint is used to authenticate users and generate authentication tokens for use in API requests. For details on this endpoint and examples of authenticating users see Authentication.
Root Endpoint (/api/v2.1)
The base (root) endpoint for the API is:
- https://your.statseeker.server/api/[api_version]
, where:
- https://your.statseeker.server is the URL of your Statseeker server
- [api_version] is one the accepted version references, see below
Version References | Message |
v1 | Version 1 of the API, this is a legacy, read-only api, and is not covered in this document |
v2, v2.0 | Version 2 of the API, the initial implementation of the Statseeker RESTful Read-Write API |
v2.1 | Version 2.1 of the API, added access to all timeseries data (device\interface metrics) collected by Statseeker |
latest | Currently, Version 2.1 of the API |
Versioning
The base endpoint of /api/latest will return the latest version of the API installed on your Statseeker server. This version is identified in every response from the API in the version key.
{
"info": "The Statseeker RESTful API",
"version": "2.1",
"data": {response_data},
"revision": "13"
}
You can access an API version, other than the latest, by altering your base URL to specify the version you want to use.
E.g./api/v1 will return API v1, or /api/v2 will return API v2.0.
There may be multiple revisions released for a given API version, these revisions address issues relating to bugs within the API itself, and issues relating to Custom Data Type (CDT) packages that the API can interact with.
For more information on the relationship between the API and CDT packages, see API Endpoints.
GET
A GET request to the root endpoint will return all resource types available to your Statseeker installation.
The parameters that may be passed when sending a GET request.
Parameters | Type/Valid Values | Description |
links |
|
Modifies how the links contained within the response object are presented |
indent | positive integer | Number of characters to indent when formatting code blocks for display |
Resource Endpoint (/api/v2.1/{resource})
The resource level endpoints are where you will spend the vast majority if your time when interacting with the Statseeker API. In order to retrieve reporting data on your network infrastructure you will be routinely sending GET requests to resource level endpoints. These requests will contain:
- The resource level endpoint to specify what type of data objects you are reporting on (device, interface, CPU, memory, etc.)
- filters to specify which of these data objects to return
- fields and formats parameters to specify what data is to be returned (average outbound traffic, maximum aggregated CPU load, etc.)
- timefilters to specify the reporting period
The Statseeker RESTful API contains many resources allowing you to access and interact with both the data that Statseeker has collected on your network, and the configuration options used by Statseeker to collect and manage that data. Some of the object types available at the resource level endpoint include:
- Users (/api/v2.1/user)
- Groups (/api/v2.1/group)
- Devices (/api/v2.1/cdt_device)
- Interfaces (/api/v2.1/cdt_port)
As of Statseeker v5.5.4, the API contained over 240 resource level endpoints, all aspects of these endpoints are detailed in the Resource Reference. This list can be expanded upon by adding CDT packages and modules for new device types. For a complete list of all resources available, from *your* Statseeker installation:
- Send a GET request to the root endpoint
- Refer to the Resource Reference for details on each of those resources
Get
Send a GET request to a resource endpoint to return details on instances of the specified resource.
The parameters that may be passed when sending a GET request.
Parameters | Type/Valid Values | Description |
fields | A comma separated list of field namesE.g.fields=id,name,location | The list of fields that will be returned in the response. This parameter will be ignored if fields_adv is also specified. |
fields_adv | A JSON string detailing the fields to be returnedE.g.fields_adv={“Device Name”:{“field”:”name”}, “IP”:{“field”:”ipaddress”},”Location”:{“field”:”sysLocation”},”SNMP Polling”:{“field”:”snmp_poll”,”filter”:{“query”:”=%27off%27″}}} | The list of fields that will be returned in the response |
filter | An SQL filter stringE.g.“SNMP Polling”:{“field”:”snmp_poll”,”filter”:{“query”:”=%27off%27″}} | A filter to be applied to the response data inside of fields_adv |
groups | A comma separated list of group names or group IDs | A list of groups to be used to filter the response data, only data associated with members of the specified groups will be returned |
grouping_mode |
|
The mode to use when processing multiple group parameters |
group_by | A comma separated array of fields names, or a formula that will be applied to field values
Example Arrays:
Example Formula: group_by={TxUtil:avg}+{RxUtil:max} |
Use when you want to aggregate data across multiple entities, such as total traffic across multiple interfaces.
Requires that:
|
interval | positive integerE.g.interval=300 | The polling interval to be applied to all timeseries metrics specified in the fields parameter. When not specified, the default polling interval of 60 seconds is used. |
limit | positive integerE.g.limit=100 | The number of items to return per ‘page’ of the response, see Pagination for details. The API will automatically paginate response data with a default limit=50. |
offset | positive integerE.g.offset=100 | The number of result items to skip, see Pagination for details. The API will automatically paginate response data with a default offset={limit}. |
sortmode | string
|
Specify how the response should handle null values.Default =novals_small, this setting is used in all instances where sortmode is not set. |
timefmt | stringThe syntax for specifying the time format matches that used by STRFTIME. E.g. timefmt=%A %H:%M:%S (%y-%m-%d) will return a timestamp in the formatWednesday 15:44:48 (19-07-17) |
The format in which to return timestamps when value_time is set |
value_time | One of:
E.g.value_time=all |
Optionally return a timestamp for returned timeseries data points. Timestamps are return in epoch time unless timefmt is also specified. |
When the fields parameter has been specified, the following additional parameters may be used.
Parameters | Type/Valid Values | Description | ||||||||||||||||||||||||||||||
{field}_field | string | A user defined variable name followed by a valid field name for the resource. E.g.yesterday_RxUtil See Named Fields for more information and examples. |
||||||||||||||||||||||||||||||
{field}_formats | Comma separated list, see Timeseries Data: Stats, Formats & Options | The formats to request from the API for the given field, required for timeseries data fields
Note: a global formats key (formats=) may also be used to apply the same values to all timeseries metrics specified in fields
|
||||||||||||||||||||||||||||||
{field}_formula | string | Specify and SQL-style formula to be used to populate the field, see Field Formulas for details.
Syntax for referencing other fields within the formula:
|
||||||||||||||||||||||||||||||
{field}_filter | string | The filter to apply to the given field. These filters can be either SQL-style filters or extended RegEx filters, for details and examples of applying filters see: | ||||||||||||||||||||||||||||||
{field}_filter_format | string | The format to use for the filter, required for timeseries data fields | ||||||||||||||||||||||||||||||
{field}_interval | integer | The polling interval (in seconds) to use for the specified field. When used, a field-specific timefilter for the specified field must also also be used.
Note: when not specified, the default interval of 60 seconds is used. A global interval key (interval=) may also be used to apply the same values to all timeseries metrics specified in fields
|
||||||||||||||||||||||||||||||
{field}_link | string | Required when:
See Multiple Links to the same resource for details. |
||||||||||||||||||||||||||||||
{field}_object | string | Required when:
See Multiple Links to the same resource for details. |
||||||||||||||||||||||||||||||
{field}_timefilter | string | The timefilter to use for the given field, required for timeseries data fields.
Note: a global timefilter key (timefilter=) may also be used to apply the same values to all timeseries metrics specified in fields
|
||||||||||||||||||||||||||||||
{field}_tz | string | An alternate timezone to use for the {field}_timefilter. All timefilters use the Statseeker server’s timezone unless an override is specified by supplying {field}_tz. Note: a global timezone key (tz=) may also be used to apply the same values to all timeseries metrics specified in fields
|
||||||||||||||||||||||||||||||
{field}_sort | Comma separated list | List specifying the sort hierarchy and direction, in the following format:{field}_sort={rank}{direction} and for Timeseries data:{field}_sort={rank}{direction}{format}E.g.name_sort=1,ascRxUtil_sort=1,desc,avg | ||||||||||||||||||||||||||||||
{field}_stats | Comma separated list, see Timeseries Data: Stats, Formats & Options | The stats to use for the given field | ||||||||||||||||||||||||||||||
{field}_aggregation_format | One of:
|
The aggregation format to use for the specified field
Note: using aggregation, the following rules apply:
|
GET Example: Retrieving Details on Multiple Devices
Return specified details on all devices in a specified group, the fields I am returning are:
- name
- id
- community
- ipaddress
- snmp_version
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
-X GET \
"https://your.statseeker.server/api/v2.1/cdt_device/?fields=name,id,community,ipaddress,snmp_version&groups=<GROUP NAME>&indent=3"
# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
# Run auth request
headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
url = f'https://{server}/ss-auth'
authData = {'user': user, 'password': pword}
resp = requests.post(url, headers=headers, data=authData, verify=False)
headers['Content-Type'] = 'application/json'
url = f'https://{server}/{query}'
print(f'Get Auth Token: {resp.status_code}')
if resp.status_code == 200:
# Authentication successful, Statseeker >= v5.5.4
myToken = resp.json()
headers['Authorization'] = f'Bearer {myToken["access_token"]}'
resp = requests.get(url, headers=headers, verify=False)
if resp.status_code == 401:
print(f'Token auth failed: {resp.status_code}, trying basic auth')
# Either Authentication was unsuccessful (Statseeker < v5.5.4), or API set to use basic auth
# Try basic auth
resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/cdt_device'
# specify fields to be returned
query += '/?fields=name,id,community,ipaddress,snmp_version'
# Filters
query += '&groups=<GROUP NAME>'
# optional response formatting
query += '&indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
print(resp.status_code)
print(resp.json())
else:
print(f'Error: {resp.status_code} {resp.reason}')
# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"
def try_basic(server, query, user, pword)
headers = {
:content_type => "json"
}
url = "https://" + server + "/" + query
headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false
)
end
def do_request(server, query, user, pword)
# Run auth request
headers = {
:content_type => "application/x-www-form-urlencoded"
}
url = "https://" + server + "/ss-auth"
authData = {
:user => user,
:password => pword
}
begin
resp = RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => authData
)
rescue RestClient::Unauthorized
# bad credentials or Statseeker not v5.5.4 or higher
try_basic(server, query, user, pword)
else
# Authentication successful. Statseeker at least v5.5.4
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
rdata = JSON.parse(resp)
headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false,
)
end
rescue RestClient::Unauthorized
# Statseeker = v5.5.4 but configured for basic auth
try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += "/cdt_device"
# specify fields to be returned
$query += '?fields=name,id,community,ipaddress,snmp_version'
# Filters
$query += '&groups=<GROUP NAME>'
# optional response formatting
$query += '&indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"
{
"info": "The Statseeker RESTful API",
"data": {
"objects": [
{
"status": {
"errcode": 0,
"success": true
},
"data": [
{
"snmp_version": 2,
"ipaddress": "10.116.4.172",
"name": "Brisbane-Server1",
"community": "public",
"id": 551
},
{
"snmp_version": 2,
"ipaddress": "10.116.4.180",
"name": "Brisbane-Server2",
"community": "public",
"id": 552
},
{
"snmp_version": 2,
"ipaddress": "10.116.4.186",
"name": "Sydney-Server1",
"community": "public",
"id": 555
},
{
"snmp_version": 2,
"ipaddress": "10.116.4.187",
"name": "Sydney-Server2",
"community": "public",
"id": 556
},
{
"snmp_version": 2,
"ipaddress": "10.116.4.194",
"name": "Melbourne-Server1",
"community": "public",
"id": 557
}
],
"type": "cdt_device",
"data_total": 5
}
],
"errmsg": "ok",
"success": true,
"time": 1496188135
},
"links": [],
"api_version": "2.1"
}
POST
Use the POST request to create new instances of the specified resource. The data object included in a POST request must be a json string with a single data key. Some resource types will require additional keys within the data object, use the /describe endpoint to view the requirements for a given resource.
Example: Creating Multiple Groups
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
-X POST \
"https://your.statseeker.server/api/v2.1/group/?indent=3" \
-d '{"data":[{"name":"<GROUP NAME 1>"},{"name":"<GROUP NAME 2>"}]}'
# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword, reqData):
# Run auth request
headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
url = f'https://{server}/ss-auth'
authData = {'user': user, 'password': pword}
resp = requests.post(url, headers=headers, data=authData, verify=False)
headers['Content-Type'] = 'application/json'
url = f'https://{server}/{query}'
print(f'Get Auth Token: {resp.status_code}')
if resp.status_code == 200:
# Authentication successful, Statseeker >= v5.5.4
myToken = resp.json()
headers['Authorization'] = f'Bearer {myToken["access_token"]}'
resp = requests.post(url, headers=headers, data=reqData, verify=False)
if resp.status_code == 401:
print(f'Token auth failed: {resp.status_code}, trying basic auth')
# Either Authentication was unsuccessful (Statseeker < v5.5.4), or API set to use basic auth
# Try basic auth
resp = requests.post(url, headers=headers, auth=(user, pword), data=reqData, verify=False)
return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/group'
# optional response formatting
query += '/?indent=3&links=none'
# data
reqData = json.dumps({"data":[{"name":"<GROUP NAME 1>"},{"name":"<GROUP NAME 2>"}]})
# Run the request
resp = do_request(server, query, user, pword, reqData)
if resp.status_code == 200:
print(resp.status_code)
print(resp.json())
else:
print(f'Error: {resp.status_code} {resp.reason}')
# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"
def try_basic(server, query, user, pword, reqData)
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
return RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => reqData
)
end
def do_request(server, query, user, pword, reqData)
# Run auth request
headers = {
:content_type => "application/x-www-form-urlencoded"
}
url = "https://" + server + "/ss-auth"
authData = {
:user => user,
:password => pword
}
begin
resp = RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => authData
)
rescue RestClient::Unauthorized
# bad credentials or Statseeker not v5.5.4 or higher
try_basic(server, query, user, pword, reqData)
else
# Authentication successful. Statseeker at least v5.5.4
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
rdata = JSON.parse(resp)
headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
return RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => reqData
)
end
rescue RestClient::Unauthorized
# Statseeker = v5.5.4 but configured for basic auth
try_basic(server, query, user, pword, reqData)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/group'
# optional response formatting
$query += '/?indent=3&links=none'
# configure payload
$reqData = '{"data":[{"name":"<GROUP NAME 1>"},{"name":"<GROUP NAME 2>"}]}'
# Run the request
resp = do_request($server, $query, $user, $pword, $reqData)
puts "#{resp.to_str}"
{
"info": "The Statseeker RESTful API",
"data": {
"objects": [
{
"status": {
"errcode": 0,
"success": true
},
"data": [
{
"name": "<GROUP NAME 1>",
"id": 46458
},
{
"name": "<GROUP NAME 2>",
"id": 46459
}
],
"type": "group",
"data_total": 2
}
],
"errmsg": "ok",
"success": true,
"time": 1496190459
},
"api_version": "2.1"
}
PUT Requests
Use the PUT request to update an existing instance of the specified resource. The data object included must be a json string with both a fields key (to identify the resource/s to be updated) and a data key (to specify the data to be updated). Some resource types will require additional keys within the data object, use the /describe endpoint to view the requirements for a given resource.
When sending a PUT request, the data object (request payload) requires both a data key and a fields key.
Example: Updating a Group Name
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
-X PUT \
"https://your.statseeker.server/api/v2.1/group/?indent=3" \
-d '{"fields":{"name":{"field":"name","filter":{"query":"=\u0027<OLD GROUP NAME>\u0027"}}},"data":[{"name":"<NEW GROUP NAME>"}]}'
# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword, reqData):
# Run auth request
headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
url = f'https://{server}/ss-auth'
authData = {'user': user, 'password': pword}
resp = requests.post(url, headers=headers, data=authData, verify=False)
headers['Content-Type'] = 'application/json'
url = f'https://{server}/{query}'
print(f'Get Auth Token: {resp.status_code}')
if resp.status_code == 200:
# Authentication successful, Statseeker >= v5.5.4
myToken = resp.json()
headers['Authorization'] = f'Bearer {myToken["access_token"]}'
resp = requests.put(url, headers=headers, data=reqData, verify=False)
if resp.status_code == 401:
print(f'Token auth failed: {resp.status_code}, trying basic auth')
# Either Authentication was unsuccessful (Statseeker < v5.5.4), or API set to use basic auth
# Try basic auth
resp = requests.put(url, headers=headers, auth=(user, pword), data=reqData, verify=False)
return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += ''
# optional response formatting
query += '/?indent=3&links=none'
# data
reqData = json.dumps({"fields":{"name":{"field":"name","filter":{"query":"='<OLD GROUP NAME>'"}}},"data":[{"name":"<NEW GROUP NAME>"}]})
# Run the request
resp = do_request(server, query, user, pword, reqData)
if resp.status_code == 200:
print(resp.status_code)
print(resp.json())
else:
print(f'Error: {resp.status_code} {resp.reason}')
# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"
def try_basic(server, query, user, pword, reqData)
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
return RestClient::Request.execute(
:method => :put,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => reqData
)
end
def do_request(server, query, user, pword, reqData)
# Run auth request
headers = {
:content_type => "application/x-www-form-urlencoded"
}
url = "https://" + server + "/ss-auth"
authData = {
:user => user,
:password => pword
}
begin
resp = RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => authData
)
rescue RestClient::Unauthorized
# bad credentials or Statseeker not v5.5.4 or higher
try_basic(server, query, user, pword, reqData)
else
# Authentication successful. Statseeker at least v5.5.4
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
rdata = JSON.parse(resp)
headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
return RestClient::Request.execute(
:method => :put,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => reqData
)
end
rescue RestClient::Unauthorized
# Statseeker = v5.5.4 but configured for basic auth
try_basic(server, query, user, pword, reqData)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/group'
# optional response formatting
$query += '/?indent=3&links=none'
# configure payload
$reqData = '{"fields":{"name":{"field":"name","filter":{"query":"=\'<OLD GROUP NAME>\'"}}},"data":[{"name":"<NEW GROUP NAME>"}]}'
# Run the request
resp = do_request($server, $query, $user, $pword, $reqData)
puts "#{resp.to_str}"
{
"info": "The Statseeker RESTful API",
"data": {
"errmsg": "ok",
"success": true,
"time": 1496190511
},
"api_version": "2.1"
}
DELETE
Use the DELETE request to delete an existing instance of the specified resource. The data object included must be a json string with a single fields key. Some resource types will require additional keys within the data object, use the /describe endpoint to view the requirements for a given resource.
Example: Deleting Multiple Groups
We will be deleting all groups with a name matching a specified filter string.
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
-X DELETE \
"https://your.statseeker.server/api/v2.1/group/?indent=3" \
-d '{"fields":{"name":{"field":"name","filter":{"query":"LIKE \u0027<FILTER STRING>\u0027"}}}}'
# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword, reqData):
# Run auth request
headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
url = f'https://{server}/ss-auth'
authData = {'user': user, 'password': pword}
resp = requests.post(url, headers=headers, data=authData, verify=False)
headers['Content-Type'] = 'application/json'
url = f'https://{server}/{query}'
print(f'Get Auth Token: {resp.status_code}')
if resp.status_code == 200:
# Authentication successful, Statseeker >= v5.5.4
myToken = resp.json()
headers['Authorization'] = f'Bearer {myToken["access_token"]}'
resp = requests.delete(url, headers=headers, data=reqData, verify=False)
if resp.status_code == 401:
print(f'Token auth failed: {resp.status_code}, trying basic auth')
# Either Authentication was unsuccessful (Statseeker < v5.5.4), or API set to use basic auth
# Try basic auth
resp = requests.delete(url, headers=headers, auth=(user, pword), data=reqData, verify=False)
return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/group'
# optional response formatting
query += '/?indent=3&links=none'
# data
reqData = json.dumps({"fields":{"name":{"field":"name","filter":{"query":"LIKE '<FILTER STRING>'"}}}})
# Run the request
resp = do_request(server, query, user, pword, reqData)
if resp.status_code == 200:
print(resp.status_code)
print(resp.json())
else:
print(f'Error: {resp.status_code} {resp.reason}')
# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"
def try_basic(server, query, user, pword, reqData)
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
return RestClient::Request.execute(
:method => :delete,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => reqData
)
end
def do_request(server, query, user, pword, reqData)
# Run auth request
headers = {
:content_type => "application/x-www-form-urlencoded"
}
url = "https://" + server + "/ss-auth"
authData = {
:user => user,
:password => pword
}
begin
resp = RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => authData
)
rescue RestClient::Unauthorized
# bad credentials or Statseeker not v5.5.4 or higher
try_basic(server, query, user, pword, reqData)
else
# Authentication successful. Statseeker at least v5.5.4
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
rdata = JSON.parse(resp)
headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
return RestClient::Request.execute(
:method => :delete,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => reqData
)
end
rescue RestClient::Unauthorized
# Statseeker = v5.5.4 but configured for basic auth
try_basic(server, query, user, pword, reqData)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/group'
# optional response formatting
$query += '/?indent=3&links=none'
# configure payload
$reqData = '{"fields":{"name":{"field":"name","filter":{"query":"LIKE \'<FILTER STRING>\'"}}}}'
# Run the request
resp = do_request($server, $query, $user, $pword, $reqData)
puts "#{resp.to_str}"
{
"version":"2.1",
"revision":"11",
"info":"The Statseeker RESTful API",
"data":{
"success":true,
"errmsg":"ok",
"time":1623638287
}
}
The Describe Endpoint (/api/v2.1/{resource}/describe)
The /describe endpoint is particularly useful as it allows you to query a specified resource to return details on the resource.
The response from a GET request targeting the {resource}/describe endpoint will contain:
- Resource name, title and description
- All fields pertaining to the resource
- All data formats that can be applied to each field
- All request methods that can be applied to the resource
- All fields and data that can be used with each request method
- Details on all links between the selected resource and any other resources
- Whether or not the resource allows the use of custom defined formula fields
- An info block presenting data structure details such as resource inheritance relationships and data functionality options such as whether or not the resource can be grouped or reported on
The various HTTP request types are mapped to commands within the API.
HTTP Request Method | API Command |
GET | get |
POST | add |
PUT | update |
DELETE | delete |
The /describe endpoint can be applied to any resources returned from a GET request applied to the root endpoint.I.e.https://your.statseeker.server/api/v2.1/ will return all resources available to the Statseeker installation, and any of these can have /describe applied to return details on the resource.
GET
The parameters that may be passed when sending a GET request.
Parameters | Type/Valid Values | Description |
links |
|
Modifies how the links contained within the response object are presented |
indent | positive integer | Number of characters to indent when formatting code blocks for display |
Example: Requesting a /describe on the User Resource
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
-X GET \
"https://your.statseeker.server1/api/v2.1/user/describe/?indent=3"
# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
# Run auth request
headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
url = f'https://{server}/ss-auth'
authData = {'user': user, 'password': pword}
resp = requests.post(url, headers=headers, data=authData, verify=False)
headers['Content-Type'] = 'application/json'
url = f'https://{server}/{query}'
print(f'Get Auth Token: {resp.status_code}')
if resp.status_code == 200:
# Authentication successful, Statseeker >= v5.5.4
myToken = resp.json()
headers['Authorization'] = f'Bearer {myToken["access_token"]}'
resp = requests.get(url, headers=headers, verify=False)
if resp.status_code == 401:
print(f'Token auth failed: {resp.status_code}, trying basic auth')
# Either Authentication was unsuccessful (Statseeker < v5.5.4), or API set to use basic auth
# Try basic auth
resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += 'user/describe'
# optional response formatting
query += '/?indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
print(resp.status_code)
print(resp.json())
else:
print(f'Error: {resp.status_code} {resp.reason}')
# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"
def try_basic(server, query, user, pword)
headers = {
:content_type => "json"
}
url = "https://" + server + "/" + query
headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false
)
end
def do_request(server, query, user, pword)
# Run auth request
headers = {
:content_type => "application/x-www-form-urlencoded"
}
url = "https://" + server + "/ss-auth"
authData = {
:user => user,
:password => pword
}
begin
resp = RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => authData
)
rescue RestClient::Unauthorized
# bad credentials or Statseeker not v5.5.4 or higher
try_basic(server, query, user, pword)
else
# Authentication successful. Statseeker at least v5.5.4
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
rdata = JSON.parse(resp)
headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false,
)
end
rescue RestClient::Unauthorized
# Statseeker = v5.5.4 but configured for basic auth
try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += 'user/describe'
# optional response formatting
$query += '/?indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"
{
{
"version": "2.1",
"revision": "13",
"info": "The Statseeker RESTful API",
"data": {
"success": true,
"errmsg": "ok",
"time": 1646798321,
"objects": [
{
"title": "User",
"type": "user",
"description": "Statseeker Users",
"commands": {
"describe": {
"valid_fields": null,
"valid_data": null
},
"add": {
"valid_data": {
"name": {
"required": true
},
"tz": {
"required": false
},
"top_n": {
"required": false
},
"email": {
"required": false
},
"reportRowSpacing": {
"required": false
},
"exportDateFormat": {
"required": false
},
"auth_ttl": {
"required": false
},
"api": {
"required": false
},
"auth": {
"required": false
},
"auth_refresh": {
"required": false
},
"password": {
"required": false
},
"is_admin": {
"required": false
}
},
"valid_fields": null
},
"update": {
"valid_fields": {
"auth": {
"required": false
},
"auth_refresh": {
"required": false
},
"id": {
"required": false
},
"is_admin": {
"required": false
},
"password": {
"required": false
},
"name": {
"required": false
},
"tz": {
"required": false
},
"top_n": {
"required": false
},
"email": {
"required": false
},
"reportRowSpacing": {
"required": false
},
"api": {
"required": false
},
"auth_ttl": {
"required": false
},
"exportDateFormat": {
"required": false
}
},
"valid_data": {
"reportRowSpacing": {
"required": false
},
"api": {
"required": false
},
"exportDateFormat": {
"required": false
},
"auth_ttl": {
"required": false
},
"tz": {
"required": false
},
"top_n": {
"required": false
},
"email": {
"required": false
},
"is_admin": {
"required": false
},
"password": {
"required": false
},
"auth_refresh": {
"required": false
},
"auth": {
"required": false
}
}
},
"get": {
"valid_fields": {
"email": {
"required": false
},
"tz": {
"required": false
},
"top_n": {
"required": false
},
"name": {
"required": false
},
"api": {
"required": false
},
"auth_ttl": {
"required": false
},
"exportDateFormat": {
"required": false
},
"reportRowSpacing": {
"required": false
},
"auth_refresh": {
"required": false
},
"auth": {
"required": false
},
"is_admin": {
"required": false
},
"password": {
"required": false
},
"id": {
"required": false
}
},
"valid_data": null
},
"delete": {
"valid_fields": {
"email": {
"required": false
},
"name": {
"required": false
},
"tz": {
"required": false
},
"top_n": {
"required": false
},
"exportDateFormat": {
"required": false
},
"auth_ttl": {
"required": false
},
"api": {
"required": false
},
"reportRowSpacing": {
"required": false
},
"auth": {
"required": false
},
"auth_refresh": {
"required": false
},
"id": {
"required": false
},
"password": {
"required": false
},
"is_admin": {
"required": false
}
},
"valid_data": null
}
},
"fields": {
"email": {
"title": "Email",
"description": "User email address",
"datatype": "string"
},
"name": {
"description": "User name",
"datatype": "string",
"title": "Name"
},
"tz": {
"description": "User time zone",
"datatype": "string",
"title": "Time Zone"
},
"top_n": {
"description": "The default Top N number for the user",
"datatype": "integer",
"title": "Top N"
},
"exportDateFormat": {
"description": "User specified Date Format",
"datatype": "string",
"title": "Date Format"
},
"auth_ttl": {
"description": "The TTL for authentication tokens (in seconds)",
"datatype": "integer",
"title": "Authentication TTL"
},
"api": {
"description": "User API access permission",
"datatype": "string",
"title": "API Access"
},
"reportRowSpacing": {
"datatype": "string",
"description": "The report row spacing preference for the user",
"title": "Report Row Spacing"
},
"auth": {
"datatype": "string",
"description": "User authentication method",
"title": "Authentication method"
},
"auth_refresh": {
"description": "The time allowed after a token has expired that it will be refreshed (in seconds)",
"datatype": "integer",
"title": "Authentication Refresh"
},
"id": {
"title": "ID",
"description": "User Identifier",
"datatype": "integer"
},
"password": {
"title": "Password",
"description": "User password",
"datatype": "string"
},
"is_admin": {
"title": "Is Admin",
"datatype": "integer",
"description": "Whether the user has admin access"
}
},
"info": {
"allow_grouping": 1
},
"allow_formula_fields": true,
"links": {},
"global_field_options": {
"aggregation_format": {
"description": "Aggregation formats to apply when group_by option is provided",
"values": {
"first": {
"title": "First",
"description": "First value in the group (default)"
},
"last": {
"title": "Last",
"description": "Last value in the group"
},
"avg": {
"title": "Average",
"description": "Average of the values in the group"
},
"count": {
"title": "Count",
"description": "Number on non-null values in the group"
},
"count_all": {
"title": "Count (include NULL)",
"description": "Number of values in the group (including null values)"
},
"count_unique": {
"title": "Unique count",
"description": "Number of unique non-null values in the group"
},
"count_unique_all": {
"title": "Unique count (include NULL)",
"description": "Number of unique values in the group (including null values)"
},
"cat": {
"title": "Concatenate",
"description": "Concatenation of the values in the group"
},
"list": {
"title": "List",
"description": "Comma separated concatenation of the values in the group"
},
"list_unique": {
"title": "Unique List",
"description": "Comma separated concatenation of the unique values in the group"
},
"min": {
"title": "Minimum",
"description": "Minimum of the values in the group"
},
"max": {
"title": "Maximum",
"description": "Maximum of the values in the group"
},
"sum": {
"title": "Sum",
"description": "Sum of all values in the group (null if no valid values)"
},
"total": {
"title": "Total",
"description": "Sum of all values in the group (0 if no valid values)"
},
"median": {
"title": "Median",
"description": "Median of the values in the group"
},
"95th": {
"title": "95th percentile",
"description": "95th percentile of the values in the group"
},
"stddev": {
"title": "Standard deviation",
"description": "Standard deviation of the values in the group"
}
}
}
}
}
]
},
"links": [
{
"link": "/api/v2.1/user/describe",
"rel": "self"
},
{
"link": "/api/v2.1",
"rel": "base"
},
{
"link": "/api/v2.1/user",
"rel": "collection"
}
]
}
Example: Requesting a /describe on the Device Resource (cdt_device)
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
-X GET \
"https://your.statseeker.server1/api/v2.1/cdt_device/describe/?indent=3"
# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
# Run auth request
headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
url = f'https://{server}/ss-auth'
authData = {'user': user, 'password': pword}
resp = requests.post(url, headers=headers, data=authData, verify=False)
headers['Content-Type'] = 'application/json'
url = f'https://{server}/{query}'
print(f'Get Auth Token: {resp.status_code}')
if resp.status_code == 200:
# Authentication successful, Statseeker >= v5.5.4
myToken = resp.json()
headers['Authorization'] = f'Bearer {myToken["access_token"]}'
resp = requests.get(url, headers=headers, verify=False)
if resp.status_code == 401:
print(f'Token auth failed: {resp.status_code}, trying basic auth')
# Either Authentication was unsuccessful (Statseeker < v5.5.4), or API set to use basic auth
# Try basic auth
resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += 'cdt_device/describe'
# optional response formatting
query += '/?indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
print(resp.status_code)
print(resp.json())
else:
print(f'Error: {resp.status_code} {resp.reason}')
# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"
def try_basic(server, query, user, pword)
headers = {
:content_type => "json"
}
url = "https://" + server + "/" + query
headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false
)
end
def do_request(server, query, user, pword)
# Run auth request
headers = {
:content_type => "application/x-www-form-urlencoded"
}
url = "https://" + server + "/ss-auth"
authData = {
:user => user,
:password => pword
}
begin
resp = RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => authData
)
rescue RestClient::Unauthorized
# bad credentials or Statseeker not v5.5.4 or higher
try_basic(server, query, user, pword)
else
# Authentication successful. Statseeker at least v5.5.4
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
rdata = JSON.parse(resp)
headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false,
)
end
rescue RestClient::Unauthorized
# Statseeker = v5.5.4 but configured for basic auth
try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += 'cdt_device/describe'
# optional response formatting
$query += '/?indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"
{
{
"version": "2.1",
"revision": "13",
"info": "The Statseeker RESTful API",
"data": {
"success": true,
"errmsg": "ok",
"time": 1646798484,
"objects": [
{
"type": "cdt_device",
"title": "Device",
"description": "The custom data entities for the device table",
"fields": {
"id": {
"title": "ID",
"description": "The entity identifier",
"datatype": "integer"
},
"name": {
"title": "Name",
"description": "The entity name",
"datatype": "string"
},
"deviceid": {
"title": "Device ID",
"description": "The ID of the parent device",
"datatype": "integer"
},
"idx": {
"title": "Index",
"description": "The base SNMP index for this entity",
"datatype": "string"
},
"table": {
"title": "Table",
"description": "The table to which the entity belongs",
"datatype": "string"
},
"poll": {
"title": "Poll State",
"description": "The poll state of the entity",
"datatype": "string"
},
"auth_method": {
"title": "SNMPv3 Authentication Method",
"description": "Authentication method for SNMPv3 devices",
"polltype": "cfg",
"datatype": "string"
},
"auth_pass": {
"title": "SNMPv3 Authentication Password",
"description": "Authentication password for SNMPv3 devices",
"polltype": "cfg",
"datatype": "string"
},
"auth_user": {
"title": "SNMPv3 Authentication Username",
"description": "Authentication user for SNMPv3 devices",
"polltype": "cfg",
"datatype": "string"
},
"community": {
"title": "Community",
"description": "The community string status of the device",
"polltype": "cfg",
"datatype": "string"
},
"context": {
"title": "SNMPv3 Context",
"description": "Context for SNMPv3 devices",
"polltype": "cfg",
"datatype": "string"
},
"custom_data_details": {
"title": "Custom Data Details",
"description": "A JSON string object indicating which custom entities have been found during a discovery",
"polltype": "cfg",
"datatype": "string"
},
"discover_getNext": {
"title": "Use GetNext",
"description": "Walk this device using SNMP getNext instead of getBulk",
"polltype": "cfg",
"datatype": "string"
},
"discover_minimal": {
"title": "Use Minimal Walk",
"description": "Walk this device using a minimal set of oids",
"polltype": "cfg",
"datatype": "string"
},
"discover_snmpv1": {
"title": "Use SNMPv1",
"description": "Walk this device using SNMPv1",
"polltype": "cfg",
"datatype": "string"
},
"hostname": {
"title": "Hostname",
"description": "The hostname of the device",
"polltype": "cfg",
"datatype": "string"
},
"ipaddress": {
"title": "IP Address",
"description": "The IP address of the device",
"polltype": "cfg",
"datatype": "string"
},
"latitude": {
"title": "Latitude",
"description": "The user defined latitude of the device's location",
"polltype": "cfg",
"datatype": "float"
},
"longitude": {
"title": "Longitude",
"description": "The user defined longitude of the device's location",
"polltype": "cfg",
"datatype": "float"
},
"manual_name": {
"title": "User Defined Name",
"description": "The user defined name of the device",
"polltype": "cfg",
"datatype": "string"
},
"memorySize": {
"title": "Memory Size",
"description": "The amount of physical read-write memory contained by the entity",
"polltype": "cfg",
"units": "bytes",
"symbol": "B",
"datatype": "integer"
},
"mis": {
"title": "MAC/IP/Switch Collection State",
"description": "Include this device in the MIS report calculations",
"polltype": "cfg",
"datatype": "string"
},
"ping_dup": {
"title": "Ping Duplicate",
"description": "Number of duplicate ping responses received",
"polltype": "tsc",
"interval": 3600,
"datatype": "integer",
"options": {
"value_time": {
"description": "The timestamp for a timeseries event",
"values": {
"none": "Do not return a timestamp",
"mid": "The midpoint of the start and end timestamps",
"end": "The timestamp at which the event finished",
"start": "The timestamp at which the event began",
"all": "An array of start, mid and end"
}
},
"formats": {
"description": "The valid data formats",
"values": {
"median": {
"description": "Median of the data",
"title": "Median"
},
"trendline_daily_change": {
"title": "Trendline daily change",
"description": "Slope of the trendline (units/day)"
},
"anomaly_metric": {
"description": "Metric from -100 to 100 indicating whether requested timeseries values are unusually large or small",
"title": "Anomaly metric"
},
"trendline_upr": {
"datatype": "array",
"description": "Trendline confidence interval values (upper)",
"title": "Trendline upper confidence interval"
},
"count": {
"description": "Number of non-null data points",
"title": "Count"
},
"baseline": {
"title": "Baseline",
"description": "List of expected baseline values calculated from historical data. Corresponds to 0% anomaly metric.",
"datatype": "array"
},
"forecast_min": {
"title": "Forecast minimum",
"description": "Lower boundary of feasible forecast value range"
},
"trendline_strength": {
"title": "Trendline strength",
"description": "Coefficient of determination (R-squared) of the trendline"
},
"forecast_boundary_time": {
"datatype": "time",
"description": "Time forecast exceeds feasible value range if before end of timefilter range",
"title": "Forecast boundary time"
},
"95th": {
"description": "95th percentile of the data",
"title": "95th percentile"
},
"forecast_daily_change": {
"description": "The average daily change of forecast values",
"title": "Forecast daily change"
},
"min": {
"description": "Minimum data value",
"title": "Minimum"
},
"forecast_max": {
"title": "Forecast maximum",
"description": "Upper boundary of feasible forecast value range"
},
"current": {
"title": "Current",
"description": "The current value"
},
"baseline_percent_compare": {
"description": "Percentage difference between data average and expected baseline calculated from historical data",
"title": "Baseline Percent Comparison"
},
"start_tz_offset": {
"datatype": "integer",
"title": "Start TZ offset",
"description": "The timezone offset of the first data point"
},
"forecast_vals": {
"datatype": "array",
"title": "Forecast values",
"description": "An array of forecast values with periodic deviations at peak and offpeak times"
},
"max": {
"title": "Maximum",
"description": "Maximum data value"
},
"trendline_lwr": {
"datatype": "array",
"description": "Trendline confidence interval values (lower)",
"title": "Trendline lower confidence interval"
},
"anomaly_strength": {
"description": "Metric from 0 to 100 indicating whether requested timeseries values are extreme or unusual",
"title": "Anomaly strength"
},
"forecast_predict_offpeak": {
"description": "Long term prediction value calculated from historical data at offpeak times",
"title": "Forecast prediction offpeak"
},
"start_time": {
"datatype": "time",
"title": "Start time",
"description": "Time of the first data point"
},
"stddev": {
"title": "Standard deviation",
"description": "Standard deviation of the data"
},
"baseline_lwr": {
"description": "List of baseline lower confidence interval values. Corresponds to -95% anomaly metric.",
"title": "Baseline Lower Bound",
"datatype": "array"
},
"trendline_percent_change": {
"description": "Trendline change scaled by the average of data over requested time filter",
"title": "Trendline percent change"
},
"vals": {
"description": "Timeseries data values",
"title": "Values",
"datatype": "array"
},
"cvals": {
"datatype": "array",
"description": "Cumulative data values",
"title": "Cumulative Values"
},
"last": {
"title": "Last",
"description": "The last value in the data"
},
"trendline_start": {
"title": "Trendline Start",
"description": "Value of the first trendline data point"
},
"forecast_fit": {
"datatype": "array",
"title": "Forecast fit",
"description": "An array of forecast values without periodic deviations at peak and offpeak times"
},
"baseline_compare": {
"description": "Difference between data average and expected baseline calculated from historical data",
"title": "Baseline Comparison"
},
"first": {
"title": "First",
"description": "The first value in the data"
},
"percentile": {
"title": "Percentile",
"description": "Custom percentile of the data"
},
"trendline_predict": {
"title": "Trendline Predict",
"description": "Prediction value from the trendline"
},
"trendline_change": {
"description": "Trendline change over the requested timefilter range",
"title": "Trendline change"
},
"baseline_upr": {
"title": "Baseline Upper Bound",
"description": "List of baseline upper confidence interval values. Corresponds to 95% anomaly metric.",
"datatype": "array"
},
"avg": {
"title": "Average",
"description": "Average of the data"
},
"baseline_avg": {
"description": "Average of expected baseline values calculated from historical data. Corresponds to 0% anomaly metric.",
"title": "Baseline Average"
},
"trendline_finish": {
"title": "Trendline Finish",
"description": "Value of the last trendline data point"
},
"total": {
"description": "Sum of the data",
"title": "Total"
},
"forecast_predict": {
"description": "Long term prediction value calculated from historical data",
"title": "Forecast prediction"
},
"forecast_predict_peak": {
"description": "Long term prediction value calculated from historical data at peak times",
"title": "Forecast prediction peak"
},
"trendline_fit": {
"description": "Trendline data values",
"title": "Trendline fit",
"datatype": "array"
}
}
},
"stats": {
"values": {
"forecast": {
"values": {
"min": {
"description": "Manually set lower boundary of feasible forecast value range",
"valid_formats": [
"forecast_predict",
"forecast_predict_peak",
"forecast_predict_offpeak",
"forecast_min",
"forecast_max",
"forecast_boundary_time",
"forecast_daily_slope",
"forecast_fit",
"forecast_vals"
],
"values": null,
"title": "Minimum"
},
"data_range": {
"title": "Baseline History",
"default": "range = now - 180d to now",
"valid_formats": [
"forecast_predict",
"forecast_predict_peak",
"forecast_predict_offpeak",
"forecast_min",
"forecast_max",
"forecast_boundary_time",
"forecast_daily_slope",
"forecast_fit",
"forecast_vals"
],
"description": "Timefilter for the historical data range used to calculate forecasts. Default is last 180 days.",
"values": null
},
"predict_time": {
"values": null,
"valid_formats": [
"forecast_predict",
"forecast_predict_peak",
"forecast_predict_offpeak"
],
"description": "Time to use for the forecast_predict, forecast_predict_peak or forecast_predict_offpeak values (e.g. now + 10d)",
"title": "Predict Time"
},
"max": {
"valid_formats": [
"forecast_predict",
"forecast_predict_peak",
"forecast_predict_offpeak",
"forecast_min",
"forecast_max",
"forecast_boundary_time",
"forecast_daily_slope",
"forecast_fit",
"forecast_vals"
],
"values": null,
"description": "Manually set upper boundary of feasible forecast value range",
"title": "Maximum"
},
"is_cumulative": {
"valid_formats": [
"forecast_predict",
"forecast_predict_peak",
"forecast_predict_offpeak",
"forecast_min",
"forecast_max",
"forecast_boundary_time",
"forecast_daily_change",
"forecast_fit",
"forecast_vals"
],
"values": [
true,
false
],
"title": "Is Cumulative",
"description": "whether to use cumulative forecasts",
"default": false
}
},
"description": "Forecast related input options"
},
"percentile": {
"title": "Percentile",
"values": null,
"valid_formats": [
"percentile"
],
"description": "The value to use for the percentile format (between 0 and 100)"
},
"baseline": {
"description": "Baseline and anomaly metric related input options",
"values": {
"percentile": {
"description": "Baseline percentile to output",
"valid_formats": [
"baseline_avg",
"baseline_compare",
"baseline_percent_compare",
"baseline"
],
"default": 50,
"values": null,
"title": "Percentile"
},
"data_range": {
"title": "Baseline History",
"description": "Timefilter for the historical data range used to calculate baseline and anomaly metric. Default is last 180 days.",
"valid_formats": [
"baseline_avg",
"baseline_compare",
"baseline_percent_compare",
"baseline",
"baseline_lwr",
"baseline_upr",
"anomaly_metric",
"anomaly_strength"
],
"default": "range = now - 180d to now",
"values": null
},
"lwr_percentile": {
"title": "Lower Percentile",
"description": "Baseline percentile to output for baseline lower bound",
"valid_formats": [
"baseline_lwr"
],
"default": 2.5,
"values": null
},
"upr_percentile": {
"valid_formats": [
"baseline_upr"
],
"default": 97.5,
"values": null,
"description": "Baseline percentile to output for baseline upper bound",
"title": "Upper Percentile"
}
}
},
"trendline": {
"description": "Trendline related input options",
"values": {
"lwr_stddev": {
"valid_formats": [
"trendline_lwr"
],
"description": "The number of standard deviations to use for the trendline_lwr format",
"values": null,
"title": "Lower Standard Deviation"
},
"upr_stddev": {
"title": "Upper Standard Deviation",
"valid_formats": [
"trendline_upr"
],
"description": "The number of standard deviations to use for the trendline_upr format",
"values": null
},
"is_cumulative": {
"title": "Is Cumulative",
"values": [
true,
false
],
"valid_formats": [
"trendline_fit",
"trendline_predict"
],
"description": "whether to use cumulative trendline"
},
"predict_time": {
"title": "Predict Time",
"valid_formats": [
"trendline_predict"
],
"values": null,
"description": "The time to use for the trendline_predict value"
},
"constrained": {
"valid_formats": [
"trendline_start",
"trendline_finish",
"trendline_daily_change",
"trendline_change",
"trendline_percent_change",
"trendline_predict"
],
"values": [
true,
false
],
"default": true,
"description": "Whether to use a constrained trendline",
"title": "Constrained"
}
},
"title": "Trendline"
}
},
"description": "Additional input options for certain formats"
},
"timefmt": {
"description": "Format a timestamp into a human readable string. Format specifier is identical to strftime(3)",
"values": null
}
}
},
"ping_lost1": {
"title": "Ping Lost 1",
"description": "Number of times that a single ping request is lost",
"polltype": "tsc",
"interval": 3600,
"datatype": "integer",
"options": {
"value_time": {
"description": "The timestamp for a timeseries event",
"values": {
"none": "Do not return a timestamp",
"mid": "The midpoint of the start and end timestamps",
"end": "The timestamp at which the event finished",
"start": "The timestamp at which the event began",
"all": "An array of start, mid and end"
}
},
"formats": {
"description": "The valid data formats",
"values": {
"median": {
"description": "Median of the data",
"title": "Median"
},
"trendline_daily_change": {
"title": "Trendline daily change",
"description": "Slope of the trendline (units/day)"
},
"anomaly_metric": {
"description": "Metric from -100 to 100 indicating whether requested timeseries values are unusually large or small",
"title": "Anomaly metric"
},
"trendline_upr": {
"datatype": "array",
"description": "Trendline confidence interval values (upper)",
"title": "Trendline upper confidence interval"
},
"count": {
"description": "Number of non-null data points",
"title": "Count"
},
"baseline": {
"title": "Baseline",
"description": "List of expected baseline values calculated from historical data. Corresponds to 0% anomaly metric.",
"datatype": "array"
},
"forecast_min": {
"title": "Forecast minimum",
"description": "Lower boundary of feasible forecast value range"
},
"trendline_strength": {
"title": "Trendline strength",
"description": "Coefficient of determination (R-squared) of the trendline"
},
"forecast_boundary_time": {
"datatype": "time",
"description": "Time forecast exceeds feasible value range if before end of timefilter range",
"title": "Forecast boundary time"
},
"95th": {
"description": "95th percentile of the data",
"title": "95th percentile"
},
"forecast_daily_change": {
"description": "The average daily change of forecast values",
"title": "Forecast daily change"
},
"min": {
"description": "Minimum data value",
"title": "Minimum"
},
"forecast_max": {
"title": "Forecast maximum",
"description": "Upper boundary of feasible forecast value range"
},
"current": {
"title": "Current",
"description": "The current value"
},
"baseline_percent_compare": {
"description": "Percentage difference between data average and expected baseline calculated from historical data",
"title": "Baseline Percent Comparison"
},
"start_tz_offset": {
"datatype": "integer",
"title": "Start TZ offset",
"description": "The timezone offset of the first data point"
},
"forecast_vals": {
"datatype": "array",
"title": "Forecast values",
"description": "An array of forecast values with periodic deviations at peak and offpeak times"
},
"max": {
"title": "Maximum",
"description": "Maximum data value"
},
"trendline_lwr": {
"datatype": "array",
"description": "Trendline confidence interval values (lower)",
"title": "Trendline lower confidence interval"
},
"anomaly_strength": {
"description": "Metric from 0 to 100 indicating whether requested timeseries values are extreme or unusual",
"title": "Anomaly strength"
},
"forecast_predict_offpeak": {
"description": "Long term prediction value calculated from historical data at offpeak times",
"title": "Forecast prediction offpeak"
},
"start_time": {
"datatype": "time",
"title": "Start time",
"description": "Time of the first data point"
},
"stddev": {
"title": "Standard deviation",
"description": "Standard deviation of the data"
},
"baseline_lwr": {
"description": "List of baseline lower confidence interval values. Corresponds to -95% anomaly metric.",
"title": "Baseline Lower Bound",
"datatype": "array"
},
"trendline_percent_change": {
"description": "Trendline change scaled by the average of data over requested time filter",
"title": "Trendline percent change"
},
"vals": {
"description": "Timeseries data values",
"title": "Values",
"datatype": "array"
},
"cvals": {
"datatype": "array",
"description": "Cumulative data values",
"title": "Cumulative Values"
},
"last": {
"title": "Last",
"description": "The last value in the data"
},
"trendline_start": {
"title": "Trendline Start",
"description": "Value of the first trendline data point"
},
"forecast_fit": {
"datatype": "array",
"title": "Forecast fit",
"description": "An array of forecast values without periodic deviations at peak and offpeak times"
},
"baseline_compare": {
"description": "Difference between data average and expected baseline calculated from historical data",
"title": "Baseline Comparison"
},
"first": {
"title": "First",
"description": "The first value in the data"
},
"percentile": {
"title": "Percentile",
"description": "Custom percentile of the data"
},
"trendline_predict": {
"title": "Trendline Predict",
"description": "Prediction value from the trendline"
},
"trendline_change": {
"description": "Trendline change over the requested timefilter range",
"title": "Trendline change"
},
"baseline_upr": {
"title": "Baseline Upper Bound",
"description": "List of baseline upper confidence interval values. Corresponds to 95% anomaly metric.",
"datatype": "array"
},
"avg": {
"title": "Average",
"description": "Average of the data"
},
"baseline_avg": {
"description": "Average of expected baseline values calculated from historical data. Corresponds to 0% anomaly metric.",
"title": "Baseline Average"
},
"trendline_finish": {
"title": "Trendline Finish",
"description": "Value of the last trendline data point"
},
"total": {
"description": "Sum of the data",
"title": "Total"
},
"forecast_predict": {
"description": "Long term prediction value calculated from historical data",
"title": "Forecast prediction"
},
"forecast_predict_peak": {
"description": "Long term prediction value calculated from historical data at peak times",
"title": "Forecast prediction peak"
},
"trendline_fit": {
"description": "Trendline data values",
"title": "Trendline fit",
"datatype": "array"
}
}
},
"stats": {
"values": {
"forecast": {
"values": {
"min": {
"description": "Manually set lower boundary of feasible forecast value range",
"valid_formats": [
"forecast_predict",
"forecast_predict_peak",
"forecast_predict_offpeak",
"forecast_min",
"forecast_max",
"forecast_boundary_time",
"forecast_daily_slope",
"forecast_fit",
"forecast_vals"
],
"values": null,
"title": "Minimum"
},
"data_range": {
"title": "Baseline History",
"default": "range = now - 180d to now",
"valid_formats": [
"forecast_predict",
"forecast_predict_peak",
"forecast_predict_offpeak",
"forecast_min",
"forecast_max",
"forecast_boundary_time",
"forecast_daily_slope",
"forecast_fit",
"forecast_vals"
],
"description": "Timefilter for the historical data range used to calculate forecasts. Default is last 180 days.",
"values": null
},
"predict_time": {
"values": null,
"valid_formats": [
"forecast_predict",
"forecast_predict_peak",
"forecast_predict_offpeak"
],
"description": "Time to use for the forecast_predict, forecast_predict_peak or forecast_predict_offpeak values (e.g. now + 10d)",
"title": "Predict Time"
},
"max": {
"valid_formats": [
"forecast_predict",
"forecast_predict_peak",
"forecast_predict_offpeak",
"forecast_min",
"forecast_max",
"forecast_boundary_time",
"forecast_daily_slope",
"forecast_fit",
"forecast_vals"
],
"values": null,
"description": "Manually set upper boundary of feasible forecast value range",
"title": "Maximum"
},
"is_cumulative": {
"valid_formats": [
"forecast_predict",
"forecast_predict_peak",
"forecast_predict_offpeak",
"forecast_min",
"forecast_max",
"forecast_boundary_time",
"forecast_daily_change",
"forecast_fit",
"forecast_vals"
],
"values": [
true,
false
],
"title": "Is Cumulative",
"description": "whether to use cumulative forecasts",
"default": false
}
},
"description": "Forecast related input options"
},
"percentile": {
"title": "Percentile",
"values": null,
"valid_formats": [
"percentile"
],
"description": "The value to use for the percentile format (between 0 and 100)"
},
"baseline": {
"description": "Baseline and anomaly metric related input options",
"values": {
"percentile": {
"description": "Baseline percentile to output",
"valid_formats": [
"baseline_avg",
"baseline_compare",
"baseline_percent_compare",
"baseline"
],
"default": 50,
"values": null,
"title": "Percentile"
},
"data_range": {
"title": "Baseline History",
"description": "Timefilter for the historical data range used to calculate baseline and anomaly metric. Default is last 180 days.",
"valid_formats": [
"baseline_avg",
"baseline_compare",
"baseline_percent_compare",
"baseline",
"baseline_lwr",
"baseline_upr",
"anomaly_metric",
"anomaly_strength"
],
"default": "range = now - 180d to now",
"values": null
},
"lwr_percentile": {
"title": "Lower Percentile",
"description": "Baseline percentile to output for baseline lower bound",
"valid_formats": [
"baseline_lwr"
],
"default": 2.5,
"values": null
},
"upr_percentile": {
"valid_formats": [
"baseline_upr"
],
"default": 97.5,
"values": null,
"description": "Baseline percentile to output for baseline upper bound",
"title": "Upper Percentile"
}
}
},
"trendline": {
"description": "Trendline related input options",
"values": {
"lwr_stddev": {
"valid_formats": [
"trendline_lwr"
],
"description": "The number of standard deviations to use for the trendline_lwr format",
"values": null,
"title": "Lower Standard Deviation"
},
"upr_stddev": {
"title": "Upper Standard Deviation",
"valid_formats": [
"trendline_upr"
],
"description": "The number of standard deviations to use for the trendline_upr format",
"values": null
},
"is_cumulative": {
"title": "Is Cumulative",
"values": [
true,
false
],
"valid_formats": [
"trendline_fit",
"trendline_predict"
],
"description": "whether to use cumulative trendline"
},
"predict_time": {
"title": "Predict Time",
"valid_formats": [
"trendline_predict"
],
"values": null,
"description": "The time to use for the trendline_predict value"
},
"constrained": {
"valid_formats": [
"trendline_start",
"trendline_finish",
"trendline_daily_change",
"trendline_change",
"trendline_percent_change",
"trendline_predict"
],
"values": [
true,
false
],
"default": true,
"description": "Whether to use a constrained trendline",
"title": "Constrained"
}
},
"title": "Trendline"
}
},
"description": "Additional input options for certain formats"
},
"timefmt": {
"description": "Format a timestamp into a human readable string. Format specifier is identical to strftime(3)",
"values": null
}
}
},
"ping_lost2": {
"title": "Ping Lost 2",
"description": "Number of times that two ping requests in a row have been lost",
"polltype": "tsc",
"interval": 3600,
"datatype": "integer",
"options": {
"value_time": {
"description": "The timestamp for a timeseries event",
"values": {
"none": "Do not return a timestamp",
"mid": "The midpoint of the start and end timestamps",
"end": "The timestamp at which the event finished",
"start": "The timestamp at which the event began",
"all": "An array of start, mid and end"
}
},
"formats": {
"description": "The valid data formats",
"values": {
"median": {
"description": "Median of the data",
"title": "Median"
},
"trendline_daily_change": {
"title": "Trendline daily change",
"description": "Slope of the trendline (units/day)"
},
"anomaly_metric": {
"description": "Metric from -100 to 100 indicating whether requested timeseries values are unusually large or small",
"title": "Anomaly metric"
},
"trendline_upr": {
"datatype": "array",
"description": "Trendline confidence interval values (upper)",
"title": "Trendline upper confidence interval"
},
"count": {
"description": "Number of non-null data points",
"title": "Count"
},
"baseline": {
"title": "Baseline",
"description": "List of expected baseline values calculated from historical data. Corresponds to 0% anomaly metric.",
"datatype": "array"
},
"forecast_min": {
"title": "Forecast minimum",
"description": "Lower boundary of feasible forecast value range"
},
"trendline_strength": {
"title": "Trendline strength",
"description": "Coefficient of determination (R-squared) of the trendline"
},
"forecast_boundary_time": {
"datatype": "time",
"description": "Time forecast exceeds feasible value range if before end of timefilter range",
"title": "Forecast boundary time"
},
"95th": {
"description": "95th percentile of the data",
"title": "95th percentile"
},
"forecast_daily_change": {
"description": "The average daily change of forecast values",
"title": "Forecast daily change"
},
"min": {
"description": "Minimum data value",
"title": "Minimum"
},
"forecast_max": {
"title": "Forecast maximum",
"description": "Upper boundary of feasible forecast value range"
},
"current": {
"title": "Current",
"description": "The current value"
},
"baseline_percent_compare": {
"description": "Percentage difference between data average and expected baseline calculated from historical data",
"title": "Baseline Percent Comparison"
},
"start_tz_offset": {
"datatype": "integer",
"title": "Start TZ offset",
"description": "The timezone offset of the first data point"
},
"forecast_vals": {
"datatype": "array",
"title": "Forecast values",
"description": "An array of forecast values with periodic deviations at peak and offpeak times"
},
"max": {
"title": "Maximum",
"description": "Maximum data value"
},
"trendline_lwr": {
"datatype": "array",
"description": "Trendline confidence interval values (lower)",
"title": "Trendline lower confidence interval"
},
"anomaly_strength": {
"description": "Metric from 0 to 100 indicating whether requested timeseries values are extreme or unusual",
"title": "Anomaly strength"
},
"forecast_predict_offpeak": {
"description": "Long term prediction value calculated from historical data at offpeak times",
"title": "Forecast prediction offpeak"
},
"start_time": {
"datatype": "time",
"title": "Start time",
"description": "Time of the first data point"
},
"stddev": {
"title": "Standard deviation",
"description": "Standard deviation of the data"
},
"baseline_lwr": {
"description": "List of baseline lower confidence interval values. Corresponds to -95% anomaly metric.",
"title": "Baseline Lower Bound",
"datatype": "array"
},
"trendline_percent_change": {
"description": "Trendline change scaled by the average of data over requested time filter",
"title": "Trendline percent change"
},
"vals": {
"description": "Timeseries data values",
"title": "Values",
"datatype": "array"
},
"cvals": {
"datatype": "array",
"description": "Cumulative data values",
"title": "Cumulative Values"
},
"last": {
"title": "Last",
"description": "The last value in the data"
},
"trendline_start": {
"title": "Trendline Start",
"description": "Value of the first trendline data point"
},
"forecast_fit": {
"datatype": "array",
"title": "Forecast fit",
"description": "An array of forecast values without periodic deviations at peak and offpeak times"
},
"baseline_compare": {
"description": "Difference between data average and expected baseline calculated from historical data",
"title": "Baseline Comparison"
},
"first": {
"title": "First",
"description": "The first value in the data"
},
"percentile": {
"title": "Percentile",
"description": "Custom percentile of the data"
},
"trendline_predict": {
"title": "Trendline Predict",
"description": "Prediction value from the trendline"
},
"trendline_change": {
"description": "Trendline change over the requested timefilter range",
"title": "Trendline change"
},
"baseline_upr": {
"title": "Baseline Upper Bound",
"description": "List of baseline upper confidence interval values. Corresponds to 95% anomaly metric.",
"datatype": "array"
},
"avg": {
"title": "Average",
"description": "Average of the data"
},
"baseline_avg": {
"description": "Average of expected baseline values calculated from historical data. Corresponds to 0% anomaly metric.",
"title": "Baseline Average"
},
"trendline_finish": {
"title": "Trendline Finish",
"description": "Value of the last trendline data point"
},
"total": {
"description": "Sum of the data",
"title": "Total"
},
"forecast_predict": {
"description": "Long term prediction value calculated from historical data",
"title": "Forecast prediction"
},
"forecast_predict_peak": {
"description": "Long term prediction value calculated from historical data at peak times",
"title": "Forecast prediction peak"
},
"trendline_fit": {
"description": "Trendline data values",
"title": "Trendline fit",
"datatype": "array"
}
}
},
"stats": {
"values": {
"forecast": {
"values": {
"min": {
"description": "Manually set lower boundary of feasible forecast value range",
"valid_formats": [
"forecast_predict",
"forecast_predict_peak",
"forecast_predict_offpeak",
"forecast_min",
"forecast_max",
"forecast_boundary_time",
"forecast_daily_slope",
"forecast_fit",
"forecast_vals"
],
"values": null,
"title": "Minimum"
},
"data_range": {
"title": "Baseline History",
"default": "range = now - 180d to now",
"valid_formats": [
"forecast_predict",
"forecast_predict_peak",
"forecast_predict_offpeak",
"forecast_min",
"forecast_max",
"forecast_boundary_time",
"forecast_daily_slope",
"forecast_fit",
"forecast_vals"
],
"description": "Timefilter for the historical data range used to calculate forecasts. Default is last 180 days.",
"values": null
},
"predict_time": {
"values": null,
"valid_formats": [
"forecast_predict",
"forecast_predict_peak",
"forecast_predict_offpeak"
],
"description": "Time to use for the forecast_predict, forecast_predict_peak or forecast_predict_offpeak values (e.g. now + 10d)",
"title": "Predict Time"
},
"max": {
"valid_formats": [
"forecast_predict",
"forecast_predict_peak",
"forecast_predict_offpeak",
"forecast_min",
"forecast_max",
"forecast_boundary_time",
"forecast_daily_slope",
"forecast_fit",
"forecast_vals"
],
"values": null,
"description": "Manually set upper boundary of feasible forecast value range",
"title": "Maximum"
},
"is_cumulative": {
"valid_formats": [
"forecast_predict",
"forecast_predict_peak",
"forecast_predict_offpeak",
"forecast_min",
"forecast_max",
"forecast_boundary_time",
"forecast_daily_change",
"forecast_fit",
"forecast_vals"
],
"values": [
true,
false
],
"title": "Is Cumulative",
"description": "whether to use cumulative forecasts",
"default": false
}
},
"description": "Forecast related input options"
},
"percentile": {
"title": "Percentile",
"values": null,
"valid_formats": [
"percentile"
],
"description": "The value to use for the percentile format (between 0 and 100)"
},
"baseline": {
"description": "Baseline and anomaly metric related input options",
"values": {
"percentile": {
"description": "Baseline percentile to output",
"valid_formats": [
"baseline_avg",
"baseline_compare",
"baseline_percent_compare",
"baseline"
],
"default": 50,
"values": null,
"title": "Percentile"
},
"data_range": {
"title": "Baseline History",
"description": "Timefilter for the historical data range used to calculate baseline and anomaly metric. Default is last 180 days.",
"valid_formats": [
"baseline_avg",
"baseline_compare",
"baseline_percent_compare",
"baseline",
"baseline_lwr",
"baseline_upr",
"anomaly_metric",
"anomaly_strength"
],
"default": "range = now - 180d to now",
"values": null
},
"lwr_percentile": {
"title": "Lower Percentile",
"description": "Baseline percentile to output for baseline lower bound",
"valid_formats": [
"baseline_lwr"
],
"default": 2.5,
"values": null
},
"upr_percentile": {
"valid_formats": [
"baseline_upr"
],
"default": 97.5,
"values": null,
"description": "Baseline percentile to output for baseline upper bound",
"title": "Upper Percentile"
}
}
},
"trendline": {
"description": "Trendline related input options",
"values": {
"lwr_stddev": {
"valid_formats": [
"trendline_lwr"
],
"description": "The number of standard deviations to use for the trendline_lwr format",
"values": null,
"title": "Lower Standard Deviation"
},
"upr_stddev": {
"title": "Upper Standard Deviation",
"valid_formats": [
"trendline_upr"
],
"description": "The number of standard deviations to use for the trendline_upr format",
"values": null
},
"is_cumulative": {
"title": "Is Cumulative",
"values": [
true,
false
],
"valid_formats": [
"trendline_fit",
"trendline_predict"
],
"description": "whether to use cumulative trendline"
},
"predict_time": {
"title": "Predict Time",
"valid_formats": [
"trendline_predict"
],
"values": null,
"description": "The time to use for the trendline_predict value"
},
"constrained": {
"valid_formats": [
"trendline_start",
"trendline_finish",
"trendline_daily_change",
"trendline_change",
"trendline_percent_change",
"trendline_predict"
],
"values": [
true,
false
],
"default": true,
"description": "Whether to use a constrained trendline",
"title": "Constrained"
}
},
"title": "Trendline"
}
},
"description": "Additional input options for certain formats"
},
"timefmt": {
"description": "Format a timestamp into a human readable string. Format specifier is identical to strftime(3)",
"values": null
}
}
},
"ping_lost3": {
"title": "Ping Lost 3",
"description": "Number of times that three ping requests in a row have been lost",
"polltype": "tsc",
"interval": 3600,
"datatype": "integer",
"options": {
"value_time": {
"description": "The timestamp for a timeseries event",
"values": {
"none": "Do not return a timestamp",
"mid": "The midpoint of the start and end timestamps",
"end": "The timestamp at which the event finished",
"start": "The timestamp at which the event began",
"all": "An array of start, mid and end"
}
},
"formats": {
"description": "The valid data formats",
"values": {
"median": {
"description": "Median of the data",
"title": "Median"
},
"trendline_daily_change": {
"title": "Trendline daily change",
"description": "Slope of the trendline (units/day)"
},
"anomaly_metric": {
"description": "Metric from -100 to 100 indicating whether requested timeseries values are unusually large or small",
"title": "Anomaly metric"
},
"trendline_upr": {
"datatype": "array",
"description": "Trendline confidence interval values (upper)",
"title": "Trendline upper confidence interval"
},
"count": {
"description": "Number of non-null data points",
"title": "Count"
},
"baseline": {
"title": "Baseline",
"description": "List of expected baseline values calculated from historical data. Corresponds to 0% anomaly metric.",
"datatype": "array"
},
"forecast_min": {
"title": "Forecast minimum",
"description": "Lower boundary of feasible forecast value range"
},
"trendline_strength": {
"title": "Trendline strength",
"description": "Coefficient of determination (R-squared) of the trendline"
},
"forecast_boundary_time": {
"datatype": "time",
"description": "Time forecast exceeds feasible value range if before end of timefilter range",
"title": "Forecast boundary time"
},
"95th": {
"description": "95th percentile of the data",
"title": "95th percentile"
},
"forecast_daily_change": {
"description": "The average daily change of forecast values",
"title": "Forecast daily change"
},
"min": {
"description": "Minimum data value",
"title": "Minimum"
},
"forecast_max": {
"title": "Forecast maximum",
"description": "Upper boundary of feasible forecast value range"
},
"current": {
"title": "Current",
"description": "The current value"
},
"baseline_percent_compare": {
"description": "Percentage difference between data average and expected baseline calculated from historical data",
"title": "Baseline Percent Comparison"
},
"start_tz_offset": {
"datatype": "integer",
"title": "Start TZ offset",
"description": "The timezone offset of the first data point"
},
"forecast_vals": {
"datatype": "array",
"title": "Forecast values",
"description": "An array of forecast values with periodic deviations at peak and offpeak times"
},
"max": {
"title": "Maximum",
"description": "Maximum data value"
},
"trendline_lwr": {
"datatype": "array",
"description": "Trendline confidence interval values (lower)",
"title": "Trendline lower confidence interval"
},
"anomaly_strength": {
"description": "Metric from 0 to 100 indicating whether requested timeseries values are extreme or unusual",
"title": "Anomaly strength"
},
"forecast_predict_offpeak": {
"description": "Long term prediction value calculated from historical data at offpeak times",
"title": "Forecast prediction offpeak"
},
"start_time": {
"datatype": "time",
"title": "Start time",
"description": "Time of the first data point"
},
"stddev": {
"title": "Standard deviation",
"description": "Standard deviation of the data"
},
"baseline_lwr": {
"description": "List of baseline lower confidence interval values. Corresponds to -95% anomaly metric.",
"title": "Baseline Lower Bound",
"datatype": "array"
},
"trendline_percent_change": {
"description": "Trendline change scaled by the average of data over requested time filter",
"title": "Trendline percent change"
},
"vals": {
"description": "Timeseries data values",
"title": "Values",
"datatype": "array"
},
"cvals": {
"datatype": "array",
"description": "Cumulative data values",
"title": "Cumulative Values"
},
"last": {
"title": "Last",
"description": "The last value in the data"
},
"trendline_start": {
"title": "Trendline Start",
"description": "Value of the first trendline data point"
},
"forecast_fit": {
"datatype": "array",
"title": "Forecast fit",
"description": "An array of forecast values without periodic deviations at peak and offpeak times"
},
"baseline_compare": {
"description": "Difference between data average and expected baseline calculated from historical data",
"title": "Baseline Comparison"
},
"first": {
"title": "First",
"description": "The first value in the data"
},
"percentile": {
"title": "Percentile",
"description": "Custom percentile of the data"
},
"trendline_predict": {
"title": "Trendline Predict",
"description": "Prediction value from the trendline"
},
"trendline_change": {
"description": "Trendline change over the requested timefilter range",
"title": "Trendline change"
},
"baseline_upr": {
"title": "Baseline Upper Bound",
"description": "List of baseline upper confidence interval values. Corresponds to 95% anomaly metric.",
"datatype": "array"
},
"avg": {
"title": "Average",
"description": "Average of the data"
},
"baseline_avg": {
"description": "Average of expected baseline values calculated from historical data. Corresponds to 0% anomaly metric.",
"title": "Baseline Average"
},
"trendline_finish": {
"title": "Trendline Finish",
"description": "Value of the last trendline data point"
},
"total": {
"description": "Sum of the data",
"title": "Total"
},
"forecast_predict": {
"description": "Long term prediction value calculated from historical data",
"title": "Forecast prediction"
},
"forecast_predict_peak": {
"description": "Long term prediction value calculated from historical data at peak times",
"title": "Forecast prediction peak"
},
"trendline_fit": {
"description": "Trendline data values",
"title": "Trendline fit",
"datatype": "array"
}
}
},
"stats": {
"values": {
"forecast": {
"values": {
"min": {
"description": "Manually set lower boundary of feasible forecast value range",
"valid_formats": [
"forecast_predict",
"forecast_predict_peak",
"forecast_predict_offpeak",
"forecast_min",
"forecast_max",
"forecast_boundary_time",
"forecast_daily_slope",
"forecast_fit",
"forecast_vals"
],
"values": null,
"title": "Minimum"
},
"data_range": {
"title": "Baseline History",
"default": "range = now - 180d to now",
"valid_formats": [
"forecast_predict",
"forecast_predict_peak",
"forecast_predict_offpeak",
"forecast_min",
"forecast_max",
"forecast_boundary_time",
"forecast_daily_slope",
"forecast_fit",
"forecast_vals"
],
"description": "Timefilter for the historical data range used to calculate forecasts. Default is last 180 days.",
"values": null
},
"predict_time": {
"values": null,
"valid_formats": [
"forecast_predict",
"forecast_predict_peak",
"forecast_predict_offpeak"
],
"description": "Time to use for the forecast_predict, forecast_predict_peak or forecast_predict_offpeak values (e.g. now + 10d)",
"title": "Predict Time"
},
"max": {
"valid_formats": [
"forecast_predict",
"forecast_predict_peak",
"forecast_predict_offpeak",
"forecast_min",
"forecast_max",
"forecast_boundary_time",
"forecast_daily_slope",
"forecast_fit",
"forecast_vals"
],
"values": null,
"description": "Manually set upper boundary of feasible forecast value range",
"title": "Maximum"
},
"is_cumulative": {
"valid_formats": [
"forecast_predict",
"forecast_predict_peak",
"forecast_predict_offpeak",
"forecast_min",
"forecast_max",
"forecast_boundary_time",
"forecast_daily_change",
"forecast_fit",
"forecast_vals"
],
"values": [
true,
false
],
"title": "Is Cumulative",
"description": "whether to use cumulative forecasts",
"default": false
}
},
"description": "Forecast related input options"
},
"percentile": {
"title": "Percentile",
"values": null,
"valid_formats": [
"percentile"
],
"description": "The value to use for the percentile format (between 0 and 100)"
},
"baseline": {
"description": "Baseline and anomaly metric related input options",
"values": {
"percentile": {
"description": "Baseline percentile to output",
"valid_formats": [
"baseline_avg",
"baseline_compare",
"baseline_percent_compare",
"baseline"
],
"default": 50,
"values": null,
"title": "Percentile"
},
"data_range": {
"title": "Baseline History",
"description": "Timefilter for the historical data range used to calculate baseline and anomaly metric. Default is last 180 days.",
"valid_formats": [
"baseline_avg",
"baseline_compare",
"baseline_percent_compare",
"baseline",
"baseline_lwr",
"baseline_upr",
"anomaly_metric",
"anomaly_strength"
],
"default": "range = now - 180d to now",
"values": null
},
"lwr_percentile": {
"title": "Lower Percentile",
"description": "Baseline percentile to output for baseline lower bound",
"valid_formats": [
"baseline_lwr"
],
"default": 2.5,
"values": null
},
"upr_percentile": {
"valid_formats": [
"baseline_upr"
],
"default": 97.5,
"values": null,
"description": "Baseline percentile to output for baseline upper bound",
"title": "Upper Percentile"
}
}
},
"trendline": {
"description": "Trendline related input options",
"values": {
"lwr_stddev": {
"valid_formats": [
"trendline_lwr"
],
"description": "The number of standard deviations to use for the trendline_lwr format",
"values": null,
"title": "Lower Standard Deviation"
},
"upr_stddev": {
"title": "Upper Standard Deviation",
"valid_formats": [
"trendline_upr"
],
"description": "The number of standard deviations to use for the trendline_upr format",
"values": null
},
"is_cumulative": {
"title": "Is Cumulative",
"values": [
true,
false
],
"valid_formats": [
"trendline_fit",
"trendline_predict"
],
"description": "whether to use cumulative trendline"
},
"predict_time": {
"title": "Predict Time",
"valid_formats": [
"trendline_predict"
],
"values": null,
"description": "The time to use for the trendline_predict value"
},
"constrained": {
"valid_formats": [
"trendline_start",
"trendline_finish",
"trendline_daily_change",
"trendline_change",
"trendline_percent_change",
"trendline_predict"
],
"values": [
true,
false
],
"default": true,
"description": "Whether to use a constrained trendline",
"title": "Constrained"
}
},
"title": "Trendline"
}
},
"description": "Additional input options for certain formats"
},
"timefmt": {
"description": "Format a timestamp into a human readable string. Format specifier is identical to strftime(3)",
"values": null
}
}
},
"ping_lost4": {
"title": "Ping Lost 4",
"description": "Number of times that four ping requests in a row have been lost",
"polltype": "tsc",
"interval": 3600,
"datatype": "integer",
"options": {
"value_time": {
"description": "The timestamp for a timeseries event",
"values": {
"none": "Do not return a timestamp",
"mid": "The midpoint of the start and end timestamps",
"end": "The timestamp at which the event finished",
"start": "The timestamp at which the event began",
"all": "An array of start, mid and end"
}
},
"formats": {
"description": "The valid data formats",
"values": {
"median": {
"description": "Median of the data",
"title": "Median"
},
"trendline_daily_change": {
"title": "Trendline daily change",
"description": "Slope of the trendline (units/day)"
},
"anomaly_metric": {
"description": "Metric from -100 to 100 indicating whether requested timeseries values are unusually large or small",
"title": "Anomaly metric"
},
"trendline_upr": {
"datatype": "array",
"description": "Trendline confidence interval values (upper)",
"title": "Trendline upper confidence interval"
},
"count": {
"description": "Number of non-null data points",
"title": "Count"
},
"baseline": {
"title": "Baseline",
"description": "List of expected baseline values calculated from historical data. Corresponds to 0% anomaly metric.",
"datatype": "array"
},
"forecast_min": {
"title": "Forecast minimum",
"description": "Lower boundary of feasible forecast value range"
},
"trendline_strength": {
"title": "Trendline strength",
"description": "Coefficient of determination (R-squared) of the trendline"
},
"forecast_boundary_time": {
"datatype": "time",
"description": "Time forecast exceeds feasible value range if before end of timefilter range",
"title": "Forecast boundary time"
},
"95th": {
"description": "95th percentile of the data",
"title": "95th percentile"
},
"forecast_daily_change": {
"description": "The average daily change of forecast values",
"title": "Forecast daily change"
},
"min": {
"description": "Minimum data value",
"title": "Minimum"
},
"forecast_max": {
"title": "Forecast maximum",
"description": "Upper boundary of feasible forecast value range"
},
"current": {
"title": "Current",
"description": "The current value"
},
"baseline_percent_compare": {
"description": "Percentage difference between data average and expected baseline calculated from historical data",
"title": "Baseline Percent Comparison"
},
"start_tz_offset": {
"datatype": "integer",
"title": "Start TZ offset",
"description": "The timezone offset of the first data point"
},
"forecast_vals": {
"datatype": "array",
"title": "Forecast values",
"description": "An array of forecast values with periodic deviations at peak and offpeak times"
},
"max": {
"title": "Maximum",
"description": "Maximum data value"
},
"trendline_lwr": {
"datatype": "array",
"description": "Trendline confidence interval values (lower)",
"title": "Trendline lower confidence interval"
},
"anomaly_strength": {
"description": "Metric from 0 to 100 indicating whether requested timeseries values are extreme or unusual",
"title": "Anomaly strength"
},
"forecast_predict_offpeak": {
"description": "Long term prediction value calculated from historical data at offpeak times",
"title": "Forecast prediction offpeak"
},
"start_time": {
"datatype": "time",
"title": "Start time",
"description": "Time of the first data point"
},
"stddev": {
"title": "Standard deviation",
"description": "Standard deviation of the data"
},
"baseline_lwr": {
"description": "List of baseline lower confidence interval values. Corresponds to -95% anomaly metric.",
"title": "Baseline Lower Bound",
"datatype": "array"
},
"trendline_percent_change": {
"description": "Trendline change scaled by the average of data over requested time filter",
"title": "Trendline percent change"
},
"vals": {
"description": "Timeseries data values",
"title": "Values",
"datatype": "array"
},
"cvals": {
"datatype": "array",
"description": "Cumulative data values",
"title": "Cumulative Values"
},
"last": {
"title": "Last",
"description": "The last value in the data"
},
"trendline_start": {
"title": "Trendline Start",
"description": "Value of the first trendline data point"
},
"forecast_fit": {
"datatype": "array",
"title": "Forecast fit",
"description": "An array of forecast values without periodic deviations at peak and offpeak times"
},
"baseline_compare": {
"description": "Difference between data average and expected baseline calculated from historical data",
"title": "Baseline Comparison"
},
"first": {
"title": "First",
"description": "The first value in the data"
},
"percentile": {
"title": "Percentile",
"description": "Custom percentile of the data"
},
"trendline_predict": {
"title": "Trendline Predict",
"description": "Prediction value from the trendline"
},
"trendline_change": {
"description": "Trendline change over the requested timefilter range",
"title": "Trendline change"
},
"baseline_upr": {
"title": "Baseline Upper Bound",
"description": "List of baseline upper confidence interval values. Corresponds to 95% anomaly metric.",
"datatype": "array"
},
"avg": {
"title": "Average",
"description": "Average of the data"
},
"baseline_avg": {
"description": "Average of expected baseline values calculated from historical data. Corresponds to 0% anomaly metric.",
"title": "Baseline Average"
},
"trendline_finish": {
"title": "Trendline Finish",
"description": "Value of the last trendline data point"
},
"total": {
"description": "Sum of the data",
"title": "Total"
},
"forecast_predict": {
"description": "Long term prediction value calculated from historical data",
"title": "Forecast prediction"
},
"forecast_predict_peak": {
"description": "Long term prediction value calculated from historical data at peak times",
"title": "Forecast prediction peak"
},
"trendline_fit": {
"description": "Trendline data values",
"title": "Trendline fit",
"datatype": "array"
}
}
},
"stats": {
"values": {
"forecast": {
"values": {
"min": {
"description": "Manually set lower boundary of feasible forecast value range",
"valid_formats": [
"forecast_predict",
"forecast_predict_peak",
"forecast_predict_offpeak",
"forecast_min",
"forecast_max",
"forecast_boundary_time",
"forecast_daily_slope",
"forecast_fit",
"forecast_vals"
],
"values": null,
"title": "Minimum"
},
"data_range": {
"title": "Baseline History",
"default": "range = now - 180d to now",
"valid_formats": [
"forecast_predict",
"forecast_predict_peak",
"forecast_predict_offpeak",
"forecast_min",
"forecast_max",
"forecast_boundary_time",
"forecast_daily_slope",
"forecast_fit",
"forecast_vals"
],
"description": "Timefilter for the historical data range used to calculate forecasts. Default is last 180 days.",
"values": null
},
"predict_time": {
"values": null,
"valid_formats": [
"forecast_predict",
"forecast_predict_peak",
"forecast_predict_offpeak"
],
"description": "Time to use for the forecast_predict, forecast_predict_peak or forecast_predict_offpeak values (e.g. now + 10d)",
"title": "Predict Time"
},
"max": {
"valid_formats": [
"forecast_predict",
"forecast_predict_peak",
"forecast_predict_offpeak",
"forecast_min",
"forecast_max",
"forecast_boundary_time",
"forecast_daily_slope",
"forecast_fit",
"forecast_vals"
],
"values": null,
"description": "Manually set upper boundary of feasible forecast value range",
"title": "Maximum"
},
"is_cumulative": {
"valid_formats": [
"forecast_predict",
"forecast_predict_peak",
"forecast_predict_offpeak",
"forecast_min",
"forecast_max",
"forecast_boundary_time",
"forecast_daily_change",
"forecast_fit",
"forecast_vals"
],
"values": [
true,
false
],
"title": "Is Cumulative",
"description": "whether to use cumulative forecasts",
"default": false
}
},
"description": "Forecast related input options"
},
"percentile": {
"title": "Percentile",
"values": null,
"valid_formats": [
"percentile"
],
"description": "The value to use for the percentile format (between 0 and 100)"
},
"baseline": {
"description": "Baseline and anomaly metric related input options",
"values": {
"percentile": {
"description": "Baseline percentile to output",
"valid_formats": [
"baseline_avg",
"baseline_compare",
"baseline_percent_compare",
"baseline"
],
"default": 50,
"values": null,
"title": "Percentile"
},
"data_range": {
"title": "Baseline History",
"description": "Timefilter for the historical data range used to calculate baseline and anomaly metric. Default is last 180 days.",
"valid_formats": [
"baseline_avg",
"baseline_compare",
"baseline_percent_compare",
"baseline",
"baseline_lwr",
"baseline_upr",
"anomaly_metric",
"anomaly_strength"
],
"default": "range = now - 180d to now",
"values": null
},
"lwr_percentile": {
"title": "Lower Percentile",
"description": "Baseline percentile to output for baseline lower bound",
"valid_formats": [
"baseline_lwr"
],
"default": 2.5,
"values": null
},
"upr_percentile": {
"valid_formats": [
"baseline_upr"
],
"default": 97.5,
"values": null,
"description": "Baseline percentile to output for baseline upper bound",
"title": "Upper Percentile"
}
}
},
"trendline": {
"description": "Trendline related input options",
"values": {
"lwr_stddev": {
"valid_formats": [
"trendline_lwr"
],
"description": "The number of standard deviations to use for the trendline_lwr format",
"values": null,
"title": "Lower Standard Deviation"
},
"upr_stddev": {
"title": "Upper Standard Deviation",
"valid_formats": [
"trendline_upr"
],
"description": "The number of standard deviations to use for the trendline_upr format",
"values": null
},
"is_cumulative": {
"title": "Is Cumulative",
"values": [
true,
false
],
"valid_formats": [
"trendline_fit",
"trendline_predict"
],
"description": "whether to use cumulative trendline"
},
"predict_time": {
"title": "Predict Time",
"valid_formats": [
"trendline_predict"
],
"values": null,
"description": "The time to use for the trendline_predict value"
},
"constrained": {
"valid_formats": [
"trendline_start",
"trendline_finish",
"trendline_daily_change",
"trendline_change",
"trendline_percent_change",
"trendline_predict"
],
"values": [
true,
false
],
"default": true,
"description": "Whether to use a constrained trendline",
"title": "Constrained"
}
},
"title": "Trendline"
}
},
"description": "Additional input options for certain formats"
},
"timefmt": {
"description": "Format a timestamp into a human readable string. Format specifier is identical to strftime(3)",
"values": null
}
}
},
"ping_outage": {
"title": "Ping Outage",
"description": "Number of seconds to wait before a device is considered to be down",
"polltype": "cfg",
"datatype": "integer"
},
"ping_poll": {
"title": "Ping Poll",
"description": "The ping polling status of the device",
"polltype": "cfg",
"datatype": "string"
},
"ping_rtt": {
"title": "Ping RTT",
"description": "The current ping state of the device",
"polltype": "tsg",
"interval": 60,
"units": "milliseconds",
"symbol": "ms",
"scale": "time",
"datatype": "integer",
"options": {
"value_time": {
"description": "The timestamp for a timeseries event",
"values": {
"none": "Do not return a timestamp",
"mid": "The midpoint of the start and end timestamps",
"end": "The timestamp at which the event finished",
"start": "The timestamp at which the event began",
"all": "An array of start, mid and end"
}
},
"formats": {
"description": "The valid data formats",
"values": {
"median": {
"description": "Median of the data",
"title": "Median"
},
"trendline_daily_change": {
"title": "Trendline daily change",
"description": "Slope of the trendline (units/day)"
},
"anomaly_metric": {
"description": "Metric from -100 to 100 indicating whether requested timeseries values are unusually large or small",
"title": "Anomaly metric"
},
"trendline_upr": {
"datatype": "array",
"description": "Trendline confidence interval values (upper)",
"title": "Trendline upper confidence interval"
},
"count": {
"description": "Number of non-null data points",
"title": "Count"
},
"baseline": {
"title": "Baseline",
"description": "List of expected baseline values calculated from historical data. Corresponds to 0% anomaly metric.",
"datatype": "array"
},
"forecast_min": {
"title": "Forecast minimum",
"description": "Lower boundary of feasible forecast value range"
},
"trendline_strength": {
"title": "Trendline strength",
"description": "Coefficient of determination (R-squared) of the trendline"
},
"forecast_boundary_time": {
"datatype": "time",
"description": "Time forecast exceeds feasible value range if before end of timefilter range",
"title": "Forecast boundary time"
},
"95th": {
"description": "95th percentile of the data",
"title": "95th percentile"
},
"forecast_daily_change": {
"description": "The average daily change of forecast values",
"title": "Forecast daily change"
},
"min": {
"description": "Minimum data value",
"title": "Minimum"
},
"forecast_max": {
"title": "Forecast maximum",
"description": "Upper boundary of feasible forecast value range"
},
"current": {
"title": "Current",
"description": "The current value"
},
"baseline_percent_compare": {
"description": "Percentage difference between data average and expected baseline calculated from historical data",
"title": "Baseline Percent Comparison"
},
"start_tz_offset": {
"datatype": "integer",
"title": "Start TZ offset",
"description": "The timezone offset of the first data point"
},
"forecast_vals": {
"datatype": "array",
"title": "Forecast values",
"description": "An array of forecast values with periodic deviations at peak and offpeak times"
},
"max": {
"title": "Maximum",
"description": "Maximum data value"
},
"trendline_lwr": {
"datatype": "array",
"description": "Trendline confidence interval values (lower)",
"title": "Trendline lower confidence interval"
},
"anomaly_strength": {
"description": "Metric from 0 to 100 indicating whether requested timeseries values are extreme or unusual",
"title": "Anomaly strength"
},
"forecast_predict_offpeak": {
"description": "Long term prediction value calculated from historical data at offpeak times",
"title": "Forecast prediction offpeak"
},
"start_time": {
"datatype": "time",
"title": "Start time",
"description": "Time of the first data point"
},
"stddev": {
"title": "Standard deviation",
"description": "Standard deviation of the data"
},
"baseline_lwr": {
"description": "List of baseline lower confidence interval values. Corresponds to -95% anomaly metric.",
"title": "Baseline Lower Bound",
"datatype": "array"
},
"trendline_percent_change": {
"description": "Trendline change scaled by the average of data over requested time filter",
"title": "Trendline percent change"
},
"vals": {
"description": "Timeseries data values",
"title": "Values",
"datatype": "array"
},
"cvals": {
"datatype": "array",
"description": "Cumulative data values",
"title": "Cumulative Values"
},
"last": {
"title": "Last",
"description": "The last value in the data"
},
"trendline_start": {
"title": "Trendline Start",
"description": "Value of the first trendline data point"
},
"forecast_fit": {
"datatype": "array",
"title": "Forecast fit",
"description": "An array of forecast values without periodic deviations at peak and offpeak times"
},
"baseline_compare": {
"description": "Difference between data average and expected baseline calculated from historical data",
"title": "Baseline Comparison"
},
"first": {
"title": "First",
"description": "The first value in the data"
},
"percentile": {
"title": "Percentile",
"description": "Custom percentile of the data"
},
"trendline_predict": {
"title": "Trendline Predict",
"description": "Prediction value from the trendline"
},
"trendline_change": {
"description": "Trendline change over the requested timefilter range",
"title": "Trendline change"
},
"baseline_upr": {
"title": "Baseline Upper Bound",
"description": "List of baseline upper confidence interval values. Corresponds to 95% anomaly metric.",
"datatype": "array"
},
"avg": {
"title": "Average",
"description": "Average of the data"
},
"baseline_avg": {
"description": "Average of expected baseline values calculated from historical data. Corresponds to 0% anomaly metric.",
"title": "Baseline Average"
},
"trendline_finish": {
"title": "Trendline Finish",
"description": "Value of the last trendline data point"
},
"total": {
"description": "Sum of the data",
"title": "Total"
},
"forecast_predict": {
"description": "Long term prediction value calculated from historical data",
"title": "Forecast prediction"
},
"forecast_predict_peak": {
"description": "Long term prediction value calculated from historical data at peak times",
"title": "Forecast prediction peak"
},
"trendline_fit": {
"description": "Trendline data values",
"title": "Trendline fit",
"datatype": "array"
}
}
},
"stats": {
"values": {
"forecast": {
"values": {
"min": {
"description": "Manually set lower boundary of feasible forecast value range",
"valid_formats": [
"forecast_predict",
"forecast_predict_peak",
"forecast_predict_offpeak",
"forecast_min",
"forecast_max",
"forecast_boundary_time",
"forecast_daily_slope",
"forecast_fit",
"forecast_vals"
],
"values": null,
"title": "Minimum"
},
"data_range": {
"title": "Baseline History",
"default": "range = now - 180d to now",
"valid_formats": [
"forecast_predict",
"forecast_predict_peak",
"forecast_predict_offpeak",
"forecast_min",
"forecast_max",
"forecast_boundary_time",
"forecast_daily_slope",
"forecast_fit",
"forecast_vals"
],
"description": "Timefilter for the historical data range used to calculate forecasts. Default is last 180 days.",
"values": null
},
"predict_time": {
"values": null,
"valid_formats": [
"forecast_predict",
"forecast_predict_peak",
"forecast_predict_offpeak"
],
"description": "Time to use for the forecast_predict, forecast_predict_peak or forecast_predict_offpeak values (e.g. now + 10d)",
"title": "Predict Time"
},
"max": {
"valid_formats": [
"forecast_predict",
"forecast_predict_peak",
"forecast_predict_offpeak",
"forecast_min",
"forecast_max",
"forecast_boundary_time",
"forecast_daily_slope",
"forecast_fit",
"forecast_vals"
],
"values": null,
"description": "Manually set upper boundary of feasible forecast value range",
"title": "Maximum"
},
"is_cumulative": {
"valid_formats": [
"forecast_predict",
"forecast_predict_peak",
"forecast_predict_offpeak",
"forecast_min",
"forecast_max",
"forecast_boundary_time",
"forecast_daily_change",
"forecast_fit",
"forecast_vals"
],
"description": "Whether to return the sum of forecast values",
"values": [
true,
false
],
"title": "Is Cumulative"
}
},
"description": "Forecast related input options"
},
"percentile": {
"title": "Percentile",
"values": null,
"valid_formats": [
"percentile"
],
"description": "The value to use for the percentile format (between 0 and 100)"
},
"baseline": {
"description": "Baseline and anomaly metric related input options",
"values": {
"percentile": {
"description": "Baseline percentile to output",
"valid_formats": [
"baseline_avg",
"baseline_compare",
"baseline_percent_compare",
"baseline"
],
"default": 50,
"values": null,
"title": "Percentile"
},
"data_range": {
"title": "Baseline History",
"description": "Timefilter for the historical data range used to calculate baseline and anomaly metric. Default is last 180 days.",
"valid_formats": [
"baseline_avg",
"baseline_compare",
"baseline_percent_compare",
"baseline",
"baseline_lwr",
"baseline_upr",
"anomaly_metric",
"anomaly_strength"
],
"default": "range = now - 180d to now",
"values": null
},
"lwr_percentile": {
"title": "Lower Percentile",
"description": "Baseline percentile to output for baseline lower bound",
"valid_formats": [
"baseline_lwr"
],
"default": 2.5,
"values": null
},
"upr_percentile": {
"valid_formats": [
"baseline_upr"
],
"default": 97.5,
"values": null,
"description": "Baseline percentile to output for baseline upper bound",
"title": "Upper Percentile"
}
}
},
"trendline": {
"description": "Trendline related input options",
"values": {
"lwr_stddev": {
"valid_formats": [
"trendline_lwr"
],
"description": "The number of standard deviations to use for the trendline_lwr format",
"values": null,
"title": "Lower Standard Deviation"
},
"upr_stddev": {
"title": "Upper Standard Deviation",
"valid_formats": [
"trendline_upr"
],
"description": "The number of standard deviations to use for the trendline_upr format",
"values": null
},
"is_cumulative": {
"description": "Whether to fit a trendline to the sum of the data values",
"valid_formats": [
"trendline_fit",
"trendline_predict"
],
"values": [
true,
false
],
"title": "Is Cumulative"
},
"predict_time": {
"title": "Predict Time",
"valid_formats": [
"trendline_predict"
],
"values": null,
"description": "The time to use for the trendline_predict value"
},
"constrained": {
"valid_formats": [
"trendline_start",
"trendline_finish",
"trendline_daily_change",
"trendline_change",
"trendline_percent_change",
"trendline_predict"
],
"values": [
true,
false
],
"default": true,
"description": "Whether to use a constrained trendline",
"title": "Constrained"
}
},
"title": "Trendline"
}
},
"description": "Additional input options for certain formats"
},
"timefmt": {
"description": "Format a timestamp into a human readable string. Format specifier is identical to strftime(3)",
"values": null
}
}
},
"ping_rtt_ms": {
"title": "Ping RTT(High Precision)",
"description": "The current ping state of the device in ms to 3 decimal places",
"polltype": "tsg",
"interval": 60,
"units": "milliseconds",
"symbol": "ms",
"scale": "time",
"datatype": "float",
"options": {
"value_time": {
"description": "The timestamp for a timeseries event",
"values": {
"none": "Do not return a timestamp",
"mid": "The midpoint of the start and end timestamps",
"end": "The timestamp at which the event finished",
"start": "The timestamp at which the event began",
"all": "An array of start, mid and end"
}
},
"formats": {
"description": "The valid data formats",
"values": {
"median": {
"description": "Median of the data",
"title": "Median"
},
"trendline_daily_change": {
"title": "Trendline daily change",
"description": "Slope of the trendline (units/day)"
},
"anomaly_metric": {
"description": "Metric from -100 to 100 indicating whether requested timeseries values are unusually large or small",
"title": "Anomaly metric"
},
"trendline_upr": {
"datatype": "array",
"description": "Trendline confidence interval values (upper)",
"title": "Trendline upper confidence interval"
},
"count": {
"description": "Number of non-null data points",
"title": "Count"
},
"baseline": {
"title": "Baseline",
"description": "List of expected baseline values calculated from historical data. Corresponds to 0% anomaly metric.",
"datatype": "array"
},
"forecast_min": {
"title": "Forecast minimum",
"description": "Lower boundary of feasible forecast value range"
},
"trendline_strength": {
"title": "Trendline strength",
"description": "Coefficient of determination (R-squared) of the trendline"
},
"forecast_boundary_time": {
"datatype": "time",
"description": "Time forecast exceeds feasible value range if before end of timefilter range",
"title": "Forecast boundary time"
},
"95th": {
"description": "95th percentile of the data",
"title": "95th percentile"
},
"forecast_daily_change": {
"description": "The average daily change of forecast values",
"title": "Forecast daily change"
},
"min": {
"description": "Minimum data value",
"title": "Minimum"
},
"forecast_max": {
"title": "Forecast maximum",
"description": "Upper boundary of feasible forecast value range"
},
"current": {
"title": "Current",
"description": "The current value"
},
"baseline_percent_compare": {
"description": "Percentage difference between data average and expected baseline calculated from historical data",
"title": "Baseline Percent Comparison"
},
"start_tz_offset": {
"datatype": "integer",
"title": "Start TZ offset",
"description": "The timezone offset of the first data point"
},
"forecast_vals": {
"datatype": "array",
"title": "Forecast values",
"description": "An array of forecast values with periodic deviations at peak and offpeak times"
},
"max": {
"title": "Maximum",
"description": "Maximum data value"
},
"trendline_lwr": {
"datatype": "array",
"description": "Trendline confidence interval values (lower)",
"title": "Trendline lower confidence interval"
},
"anomaly_strength": {
"description": "Metric from 0 to 100 indicating whether requested timeseries values are extreme or unusual",
"title": "Anomaly strength"
},
"forecast_predict_offpeak": {
"description": "Long term prediction value calculated from historical data at offpeak times",
"title": "Forecast prediction offpeak"
},
"start_time": {
"datatype": "time",
"title": "Start time",
"description": "Time of the first data point"
},
"stddev": {
"title": "Standard deviation",
"description": "Standard deviation of the data"
},
"baseline_lwr": {
"description": "List of baseline lower confidence interval values. Corresponds to -95% anomaly metric.",
"title": "Baseline Lower Bound",
"datatype": "array"
},
"trendline_percent_change": {
"description": "Trendline change scaled by the average of data over requested time filter",
"title": "Trendline percent change"
},
"vals": {
"description": "Timeseries data values",
"title": "Values",
"datatype": "array"
},
"cvals": {
"datatype": "array",
"description": "Cumulative data values",
"title": "Cumulative Values"
},
"last": {
"title": "Last",
"description": "The last value in the data"
},
"trendline_start": {
"title": "Trendline Start",
"description": "Value of the first trendline data point"
},
"forecast_fit": {
"datatype": "array",
"title": "Forecast fit",
"description": "An array of forecast values without periodic deviations at peak and offpeak times"
},
"baseline_compare": {
"description": "Difference between data average and expected baseline calculated from historical data",
"title": "Baseline Comparison"
},
"first": {
"title": "First",
"description": "The first value in the data"
},
"percentile": {
"title": "Percentile",
"description": "Custom percentile of the data"
},
"trendline_predict": {
"title": "Trendline Predict",
"description": "Prediction value from the trendline"
},
"trendline_change": {
"description": "Trendline change over the requested timefilter range",
"title": "Trendline change"
},
"baseline_upr": {
"title": "Baseline Upper Bound",
"description": "List of baseline upper confidence interval values. Corresponds to 95% anomaly metric.",
"datatype": "array"
},
"avg": {
"title": "Average",
"description": "Average of the data"
},
"baseline_avg": {
"description": "Average of expected baseline values calculated from historical data. Corresponds to 0% anomaly metric.",
"title": "Baseline Average"
},
"trendline_finish": {
"title": "Trendline Finish",
"description": "Value of the last trendline data point"
},
"total": {
"description": "Sum of the data",
"title": "Total"
},
"forecast_predict": {
"description": "Long term prediction value calculated from historical data",
"title": "Forecast prediction"
},
"forecast_predict_peak": {
"description": "Long term prediction value calculated from historical data at peak times",
"title": "Forecast prediction peak"
},
"trendline_fit": {
"description": "Trendline data values",
"title": "Trendline fit",
"datatype": "array"
}
}
},
"stats": {
"values": {
"forecast": {
"values": {
"min": {
"description": "Manually set lower boundary of feasible forecast value range",
"valid_formats": [
"forecast_predict",
"forecast_predict_peak",
"forecast_predict_offpeak",
"forecast_min",
"forecast_max",
"forecast_boundary_time",
"forecast_daily_slope",
"forecast_fit",
"forecast_vals"
],
"values": null,
"title": "Minimum"
},
"data_range": {
"title": "Baseline History",
"default": "range = now - 180d to now",
"valid_formats": [
"forecast_predict",
"forecast_predict_peak",
"forecast_predict_offpeak",
"forecast_min",
"forecast_max",
"forecast_boundary_time",
"forecast_daily_slope",
"forecast_fit",
"forecast_vals"
],
"description": "Timefilter for the historical data range used to calculate forecasts. Default is last 180 days.",
"values": null
},
"predict_time": {
"values": null,
"valid_formats": [
"forecast_predict",
"forecast_predict_peak",
"forecast_predict_offpeak"
],
"description": "Time to use for the forecast_predict, forecast_predict_peak or forecast_predict_offpeak values (e.g. now + 10d)",
"title": "Predict Time"
},
"max": {
"valid_formats": [
"forecast_predict",
"forecast_predict_peak",
"forecast_predict_offpeak",
"forecast_min",
"forecast_max",
"forecast_boundary_time",
"forecast_daily_slope",
"forecast_fit",
"forecast_vals"
],
"values": null,
"description": "Manually set upper boundary of feasible forecast value range",
"title": "Maximum"
},
"is_cumulative": {
"valid_formats": [
"forecast_predict",
"forecast_predict_peak",
"forecast_predict_offpeak",
"forecast_min",
"forecast_max",
"forecast_boundary_time",
"forecast_daily_change",
"forecast_fit",
"forecast_vals"
],
"description": "Whether to return the sum of forecast values",
"values": [
true,
false
],
"title": "Is Cumulative"
}
},
"description": "Forecast related input options"
},
"percentile": {
"title": "Percentile",
"values": null,
"valid_formats": [
"percentile"
],
"description": "The value to use for the percentile format (between 0 and 100)"
},
"baseline": {
"description": "Baseline and anomaly metric related input options",
"values": {
"percentile": {
"description": "Baseline percentile to output",
"valid_formats": [
"baseline_avg",
"baseline_compare",
"baseline_percent_compare",
"baseline"
],
"default": 50,
"values": null,
"title": "Percentile"
},
"data_range": {
"title": "Baseline History",
"description": "Timefilter for the historical data range used to calculate baseline and anomaly metric. Default is last 180 days.",
"valid_formats": [
"baseline_avg",
"baseline_compare",
"baseline_percent_compare",
"baseline",
"baseline_lwr",
"baseline_upr",
"anomaly_metric",
"anomaly_strength"
],
"default": "range = now - 180d to now",
"values": null
},
"lwr_percentile": {
"title": "Lower Percentile",
"description": "Baseline percentile to output for baseline lower bound",
"valid_formats": [
"baseline_lwr"
],
"default": 2.5,
"values": null
},
"upr_percentile": {
"valid_formats": [
"baseline_upr"
],
"default": 97.5,
"values": null,
"description": "Baseline percentile to output for baseline upper bound",
"title": "Upper Percentile"
}
}
},
"trendline": {
"description": "Trendline related input options",
"values": {
"lwr_stddev": {
"valid_formats": [
"trendline_lwr"
],
"description": "The number of standard deviations to use for the trendline_lwr format",
"values": null,
"title": "Lower Standard Deviation"
},
"upr_stddev": {
"title": "Upper Standard Deviation",
"valid_formats": [
"trendline_upr"
],
"description": "The number of standard deviations to use for the trendline_upr format",
"values": null
},
"is_cumulative": {
"description": "Whether to fit a trendline to the sum of the data values",
"valid_formats": [
"trendline_fit",
"trendline_predict"
],
"values": [
true,
false
],
"title": "Is Cumulative"
},
"predict_time": {
"title": "Predict Time",
"valid_formats": [
"trendline_predict"
],
"values": null,
"description": "The time to use for the trendline_predict value"
},
"constrained": {
"valid_formats": [
"trendline_start",
"trendline_finish",
"trendline_daily_change",
"trendline_change",
"trendline_percent_change",
"trendline_predict"
],
"values": [
true,
false
],
"default": true,
"description": "Whether to use a constrained trendline",
"title": "Constrained"
}
},
"title": "Trendline"
}
},
"description": "Additional input options for certain formats"
},
"timefmt": {
"description": "Format a timestamp into a human readable string. Format specifier is identical to strftime(3)",
"values": null
}
}
},
"ping_state": {
"title": "Ping State",
"description": "The current ping state of the device",
"polltype": "evt",
"interval": 60,
"datatype": "string",
"enum": {
"1": {
"label": "up",
"description": "Device is up"
},
"2": {
"label": "down",
"description": "Device is down"
}
},
"options": {
"formats": {
"description": "The valid data formats",
"values": {
"avl_outTransitions": {
"title": "Transitions out of states",
"datatype": "integer",
"description": "The number of transitions from a state that wasn't request to a requested state"
},
"avl_inTransitions": {
"description": "The number of transitions from one of the requested states to a state not requested",
"datatype": "integer",
"title": "Transitions into states"
},
"avl_outTime": {
"title": "Time not in states",
"description": "The time the event has not been in any of the requested states",
"datatype": "integer"
},
"avl_inTime": {
"title": "Time in states",
"datatype": "float",
"description": "The time the event has been in any of the requested states"
},
"state_inTime": {
"description": "The number of seconds that the current state has been active",
"datatype": "integer",
"title": "Time in current state"
},
"avl_outPercent": {
"title": "Percent not in states",
"description": "The percent of time the event has not been in any of the states",
"datatype": "float"
},
"avl_inPercent": {
"datatype": "float",
"description": "The percent of time the event has been in any of the requested states",
"title": "Percent in states"
},
"state_id": {
"description": "The current state identifier of the event",
"datatype": "integer",
"title": "State ID"
},
"state_delta": {
"title": "Time in previous state",
"description": "The number of seconds to the previous record",
"datatype": "integer"
},
"avl_totalTransitions": {
"title": "Total transitions",
"datatype": "integer",
"description": "The total number of transition between all of the states"
},
"state_time": {
"datatype": "time",
"description": "The time of of the last transition",
"title": "Time of last transition"
},
"poll": {
"title": "Poll",
"description": "Whether polling is enabled for the event",
"datatype": "string"
},
"state": {
"datatype": "string",
"description": "The current state of the event",
"title": "State"
}
}
},
"states": {
"values": null,
"description": "Array of state names to use for the calculations"
}
}
},
"priv_method": {
"title": "SNMPv3 Privacy Method",
"description": "Privacy method for SNMPv3 devices",
"polltype": "cfg",
"datatype": "string"
},
"priv_pass": {
"title": "SNMPv3 Privacy Password",
"description": "Privacy password for SNMPv3 devices",
"polltype": "cfg",
"datatype": "string"
},
"retired": {
"title": "Retired",
"description": "The device has been Retired",
"polltype": "cfg",
"datatype": "string"
},
"snmpEngineID": {
"title": "SNMP Engine ID",
"description": "An SNMP engine's administratively-unique identifier",
"polltype": "cfg",
"datatype": "string"
},
"snmp_maxoid": {
"title": "SNMP Max OID",
"description": "Maximum number of oids to poll in a single request",
"polltype": "cfg",
"datatype": "integer"
},
"snmp_poll": {
"title": "SNMP Poll",
"description": "The SNMP polling status of the device",
"polltype": "cfg",
"datatype": "string"
},
"snmp_version": {
"title": "SNMP Version",
"description": "The SNMP version of the device",
"polltype": "cfg",
"datatype": "integer"
},
"sysContact": {
"title": "Contact",
"description": "The textual identification of the contact person for the entity",
"polltype": "cfg",
"datatype": "string"
},
"sysDescr": {
"title": "System Description",
"description": "A textual description of the entity",
"polltype": "cfg",
"datatype": "string"
},
"sysLocation": {
"title": "Location",
"description": "The physical location of the entity",
"polltype": "cfg",
"datatype": "string"
},
"sysName": {
"title": "System Name",
"description": "An administratively-assigned name for the entity",
"polltype": "cfg",
"datatype": "string"
},
"sysObjectID": {
"title": "Object ID",
"description": "The vendor's authoritative identification of the network management subsystem contained in the entity",
"polltype": "cfg",
"datatype": "string"
},
"sysServices": {
"title": "Services",
"description": "A value which indicates the set of services that the entity may potentially offer",
"polltype": "cfg",
"datatype": "integer"
},
"vendor": {
"title": "Vendor",
"description": "The vendor name for the device",
"polltype": "cfg",
"datatype": "string"
}
},
"commands": {
"add": {
"valid_fields": null,
"valid_data": {
"ipaddress": {
"required": true
},
"community": {
"required": false
},
"hostname": {
"required": false
},
"snmp_version": {
"required": false
},
"auth_method": {
"required": false
},
"auth_user": {
"required": false
},
"auth_pass": {
"required": false
},
"priv_method": {
"required": false
},
"priv_pass": {
"required": false
},
"context": {
"required": false
},
"snmp_poll": {
"required": false
},
"ping_poll": {
"required": false
},
"longitude": {
"required": false
},
"latitude": {
"required": false
}
}
},
"update": {
"valid_fields": {
"id": {
"required": false
},
"name": {
"required": false
},
"deviceid": {
"required": false
},
"idx": {
"required": false
},
"table": {
"required": false
},
"poll": {
"required": false
},
"auth_method": {
"required": false
},
"auth_pass": {
"required": false
},
"auth_user": {
"required": false
},
"community": {
"required": false
},
"context": {
"required": false
},
"custom_data_details": {
"required": false
},
"discover_getNext": {
"required": false
},
"discover_minimal": {
"required": false
},
"discover_snmpv1": {
"required": false
},
"hostname": {
"required": false
},
"ipaddress": {
"required": false
},
"latitude": {
"required": false
},
"longitude": {
"required": false
},
"manual_name": {
"required": false
},
"memorySize": {
"required": false
},
"mis": {
"required": false
},
"ping_dup": {
"required": false
},
"ping_lost1": {
"required": false
},
"ping_lost2": {
"required": false
},
"ping_lost3": {
"required": false
},
"ping_lost4": {
"required": false
},
"ping_outage": {
"required": false
},
"ping_poll": {
"required": false
},
"ping_rtt": {
"required": false
},
"ping_rtt_ms": {
"required": false
},
"ping_state": {
"required": false
},
"priv_method": {
"required": false
},
"priv_pass": {
"required": false
},
"retired": {
"required": false
},
"snmpEngineID": {
"required": false
},
"snmp_maxoid": {
"required": false
},
"snmp_poll": {
"required": false
},
"snmp_version": {
"required": false
},
"sysContact": {
"required": false
},
"sysDescr": {
"required": false
},
"sysLocation": {
"required": false
},
"sysName": {
"required": false
},
"sysObjectID": {
"required": false
},
"sysServices": {
"required": false
},
"vendor": {
"required": false
}
},
"valid_data": {
"poll": {
"required": false
},
"auth_method": {
"required": false
},
"auth_pass": {
"required": false
},
"auth_user": {
"required": false
},
"community": {
"required": false
},
"context": {
"required": false
},
"custom_data_details": {
"required": false
},
"discover_getNext": {
"required": false
},
"discover_minimal": {
"required": false
},
"discover_snmpv1": {
"required": false
},
"hostname": {
"required": false
},
"ipaddress": {
"required": false
},
"latitude": {
"required": false
},
"longitude": {
"required": false
},
"manual_name": {
"required": false
},
"mis": {
"required": false
},
"ping_outage": {
"required": false
},
"ping_poll": {
"required": false
},
"ping_state": {
"required": false
},
"priv_method": {
"required": false
},
"priv_pass": {
"required": false
},
"snmpEngineID": {
"required": false
},
"snmp_maxoid": {
"required": false
},
"snmp_poll": {
"required": false
},
"snmp_version": {
"required": false
},
"sysContact": {
"required": false
},
"sysDescr": {
"required": false
},
"sysLocation": {
"required": false
},
"sysName": {
"required": false
},
"sysObjectID": {
"required": false
},
"sysServices": {
"required": false
}
}
},
"delete": {
"valid_fields": {
"id": {
"required": false
},
"name": {
"required": false
},
"deviceid": {
"required": false
},
"idx": {
"required": false
},
"table": {
"required": false
},
"poll": {
"required": false
},
"auth_method": {
"required": false
},
"auth_pass": {
"required": false
},
"auth_user": {
"required": false
},
"community": {
"required": false
},
"context": {
"required": false
},
"custom_data_details": {
"required": false
},
"discover_getNext": {
"required": false
},
"discover_minimal": {
"required": false
},
"discover_snmpv1": {
"required": false
},
"hostname": {
"required": false
},
"ipaddress": {
"required": false
},
"latitude": {
"required": false
},
"longitude": {
"required": false
},
"manual_name": {
"required": false
},
"memorySize": {
"required": false
},
"mis": {
"required": false
},
"ping_dup": {
"required": false
},
"ping_lost1": {
"required": false
},
"ping_lost2": {
"required": false
},
"ping_lost3": {
"required": false
},
"ping_lost4": {
"required": false
},
"ping_outage": {
"required": false
},
"ping_poll": {
"required": false
},
"ping_rtt": {
"required": false
},
"ping_rtt_ms": {
"required": false
},
"ping_state": {
"required": false
},
"priv_method": {
"required": false
},
"priv_pass": {
"required": false
},
"retired": {
"required": false
},
"snmpEngineID": {
"required": false
},
"snmp_maxoid": {
"required": false
},
"snmp_poll": {
"required": false
},
"snmp_version": {
"required": false
},
"sysContact": {
"required": false
},
"sysDescr": {
"required": false
},
"sysLocation": {
"required": false
},
"sysName": {
"required": false
},
"sysObjectID": {
"required": false
},
"sysServices": {
"required": false
},
"vendor": {
"required": false
}
},
"valid_data": null
},
"get": {
"valid_fields": {
"id": {
"required": false
},
"name": {
"required": false
},
"deviceid": {
"required": false
},
"idx": {
"required": false
},
"table": {
"required": false
},
"poll": {
"required": false
},
"auth_method": {
"required": false
},
"auth_pass": {
"required": false
},
"auth_user": {
"required": false
},
"community": {
"required": false
},
"context": {
"required": false
},
"custom_data_details": {
"required": false
},
"discover_getNext": {
"required": false
},
"discover_minimal": {
"required": false
},
"discover_snmpv1": {
"required": false
},
"hostname": {
"required": false
},
"ipaddress": {
"required": false
},
"latitude": {
"required": false
},
"longitude": {
"required": false
},
"manual_name": {
"required": false
},
"memorySize": {
"required": false
},
"mis": {
"required": false
},
"ping_dup": {
"required": false
},
"ping_lost1": {
"required": false
},
"ping_lost2": {
"required": false
},
"ping_lost3": {
"required": false
},
"ping_lost4": {
"required": false
},
"ping_outage": {
"required": false
},
"ping_poll": {
"required": false
},
"ping_rtt": {
"required": false
},
"ping_rtt_ms": {
"required": false
},
"ping_state": {
"required": false
},
"priv_method": {
"required": false
},
"priv_pass": {
"required": false
},
"retired": {
"required": false
},
"snmpEngineID": {
"required": false
},
"snmp_maxoid": {
"required": false
},
"snmp_poll": {
"required": false
},
"snmp_version": {
"required": false
},
"sysContact": {
"required": false
},
"sysDescr": {
"required": false
},
"sysLocation": {
"required": false
},
"sysName": {
"required": false
},
"sysObjectID": {
"required": false
},
"sysServices": {
"required": false
},
"vendor": {
"required": false
}
},
"valid_data": null
},
"describe": {
"valid_fields": null,
"valid_data": null
}
},
"info": {
"tags": [],
"licenced": false,
"vendor": "Standard",
"category": "Device",
"inherited_by": [
"cdt_device_apic",
"cdt_device_freebsd"
],
"inherits": null,
"allow_grouping": 1,
"allow_reporting": 1,
"allow_discovery": 0,
"poller": "snmp"
},
"allow_formula_fields": true,
"links": {
"macLink": {
"title": "Link to MAC",
"object": "mac",
"default": 1
}
},
"global_field_options": {
"aggregation_format": {
"description": "Aggregation formats to apply when group_by option is provided",
"values": {
"first": {
"title": "First",
"description": "First value in the group (default)"
},
"last": {
"title": "Last",
"description": "Last value in the group"
},
"avg": {
"title": "Average",
"description": "Average of the values in the group"
},
"count": {
"title": "Count",
"description": "Number on non-null values in the group"
},
"count_all": {
"title": "Count (include NULL)",
"description": "Number of values in the group (including null values)"
},
"count_unique": {
"title": "Unique count",
"description": "Number of unique non-null values in the group"
},
"count_unique_all": {
"title": "Unique count (include NULL)",
"description": "Number of unique values in the group (including null values)"
},
"cat": {
"title": "Concatenate",
"description": "Concatenation of the values in the group"
},
"list": {
"title": "List",
"description": "Comma separated concatenation of the values in the group"
},
"list_unique": {
"title": "Unique List",
"description": "Comma separated concatenation of the unique values in the group"
},
"min": {
"title": "Minimum",
"description": "Minimum of the values in the group"
},
"max": {
"title": "Maximum",
"description": "Maximum of the values in the group"
},
"sum": {
"title": "Sum",
"description": "Sum of all values in the group (null if no valid values)"
},
"total": {
"title": "Total",
"description": "Sum of all values in the group (0 if no valid values)"
},
"median": {
"title": "Median",
"description": "Median of the values in the group"
},
"95th": {
"title": "95th percentile",
"description": "95th percentile of the values in the group"
},
"stddev": {
"title": "Standard deviation",
"description": "Standard deviation of the values in the group"
}
}
}
}
}
]
},
"links": [
{
"link": "/api/v2.1/cdt_device/describe",
"rel": "self"
},
{
"link": "/api/v2.1",
"rel": "base"
},
{
"link": "/api/v2.1/cdt_device",
"rel": "collection"
}
]
}
The Execute Endpoint (/api/v2.1/{resource}/execute)
The execute endpoint is used to run an execute command on a specific resource, currently this functionality is limited to:
- the discover resource (/api/v2.1/discover/execute)
- the config_build resource (/api/v2.1/config_build/execute)
GET
A GET request to a {resource}/execute endpoint will run the command associated with that resource.
The parameters that may be passed when sending a GET request depend upon the resource the execute is being run against.For example, the valid parameters for running an execute against the discover resource are:
Parameters | Type/Valid Values | Description |
getNext | Boolean, defaults to false | Discover using SNMP getNext. Only for use with mode=single. |
snmpv3config | Path | The path to the configuration file containing details on the SNMPv3 devices to be added. Only for use with mode=snmpv3add |
verbose | Values:
|
Verbosity level to be used when outputting to the log file |
ip | IP address | The IP address of the device to be discovered. Only for use with mode=single. |
minimal | Boolean, defaults to false | Perform a minimal discovery on the specified device. A minimal discovery only walks the following tables:
Only for use with mode=single |
snmperrlog | Boolean, defaults to false | Enable SNMP error logging |
device | string | The name of the device to rewalk. Only for use with mode=rewalk. |
logfile | Path, defaults to defaults to ~/nim/etc/discover.log | The path to the discovery process log file () |
snmpv1 | Boolean, defaults to false | Force SNMPv1 collection. Only for use with mode=single |
block | Boolean, defaults to false | If set to true, then the discovery process will not run if another discovery process is already in progress |
mode | Values:
|
The mode of discovery to be used |
Example: Discovering a Single Device
The device IP is 10.100.89.252.
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
-X GET \
"https://your.statseeker.server/api/v2.1/discover/execute/?mode=single&ip=10.100.89.252&verbose=0&links=none"
# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
# Run auth request
headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
url = f'https://{server}/ss-auth'
authData = {'user': user, 'password': pword}
resp = requests.post(url, headers=headers, data=authData, verify=False)
headers['Content-Type'] = 'application/json'
url = f'https://{server}/{query}'
print(f'Get Auth Token: {resp.status_code}')
if resp.status_code == 200:
# Authentication successful, Statseeker >= v5.5.4
myToken = resp.json()
headers['Authorization'] = f'Bearer {myToken["access_token"]}'
resp = requests.get(url, headers=headers, verify=False)
if resp.status_code == 401:
print(f'Token auth failed: {resp.status_code}, trying basic auth')
# Either Authentication was unsuccessful (Statseeker < v5.5.4), or API set to use basic auth
# Try basic auth
resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/discover/execute/'
# specify options
query += '?mode=single&ip=10.100.89.252&verbose=0'
query += '&indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
print(resp.status_code)
print(resp.json())
else:
print(f'Error: {resp.status_code} {resp.reason}')
# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"
def try_basic(server, query, user, pword)
headers = {
:content_type => "json"
}
url = "https://" + server + "/" + query
headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false
)
end
def do_request(server, query, user, pword)
# Run auth request
headers = {
:content_type => "application/x-www-form-urlencoded"
}
url = "https://" + server + "/ss-auth"
authData = {
:user => user,
:password => pword
}
begin
resp = RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => authData
)
rescue RestClient::Unauthorized
# bad credentials or Statseeker not v5.5.4 or higher
try_basic(server, query, user, pword)
else
# Authentication successful. Statseeker at least v5.5.4
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
rdata = JSON.parse(resp)
headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false,
)
end
rescue RestClient::Unauthorized
# Statseeker = v5.5.4 but configured for basic auth
try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/user/describe'
# specify options
$query += "/?mode=single&ip=10.100.89.252&verbose=0"
# optional response formatting
$query += '&indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"
{
"version": "2.1",
"revision": "13",
"info": "The Statseeker RESTful API",
"data": {
"success": true,
"errmsg": "ok",
"time": 1575867957,
"objects": [
{
"type": "discover",
"sequence": 1,
"status": {
"success": true,
"errcode": 0
}
}
]
}
}
Example: Discovering an SNMPv3 Device
- Requires that the SNMPv3 configuration details for the device\s be provided in a CSV format – the syntax for this is the same as when adding multiple SNMPv3 devices via the Admin Tool, see Adding SNMPv3 Devices – Multiple Device Syntax for details
- This file should be located on the Statseeker server in a location accessible by the statseeker user account
- Depending on your API version, the last row of the file may require a trailing ‘newline’
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
-X GET \
"https://your.statseeker.server/api/v2.1/discover/execute/?mode=snmpv3add&snmpv3config=/path/to/config.csv&verbose=0&links=none"
# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
# Run auth request
headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
url = f'https://{server}/ss-auth'
authData = {'user': user, 'password': pword}
resp = requests.post(url, headers=headers, data=authData, verify=False)
headers['Content-Type'] = 'application/json'
url = f'https://{server}/{query}'
print(f'Get Auth Token: {resp.status_code}')
if resp.status_code == 200:
# Authentication successful, Statseeker >= v5.5.4
myToken = resp.json()
headers['Authorization'] = f'Bearer {myToken["access_token"]}'
resp = requests.get(url, headers=headers, verify=False)
if resp.status_code == 401:
print(f'Token auth failed: {resp.status_code}, trying basic auth')
# Either Authentication was unsuccessful (Statseeker < v5.5.4), or API set to use basic auth
# Try basic auth
resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/discover/execute/'
# specify options
query += '?mode=snmpv3add&snmpv3config=/path/to/config.csv&verbose=0'
query += '&indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
print(resp.status_code)
print(resp.json())
else:
print(f'Error: {resp.status_code} {resp.reason}')
# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"
def try_basic(server, query, user, pword)
headers = {
:content_type => "json"
}
url = "https://" + server + "/" + query
headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false
)
end
def do_request(server, query, user, pword)
# Run auth request
headers = {
:content_type => "application/x-www-form-urlencoded"
}
url = "https://" + server + "/ss-auth"
authData = {
:user => user,
:password => pword
}
begin
resp = RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => authData
)
rescue RestClient::Unauthorized
# bad credentials or Statseeker not v5.5.4 or higher
try_basic(server, query, user, pword)
else
# Authentication successful. Statseeker at least v5.5.4
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
rdata = JSON.parse(resp)
headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false,
)
end
rescue RestClient::Unauthorized
# Statseeker = v5.5.4 but configured for basic auth
try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/user/describe'
# specify options
$query += "?mode=snmpv3add&snmpv3config=/path/to/config.csv&verbose=0"
# optional response formatting
$query += '&indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"
{
"version": "2.1",
"revision": "13",
"info": "The Statseeker RESTful API",
"data": {
"success": true,
"errmsg": "ok",
"time": 1575867957,
"objects": [
{
"type": "discover",
"sequence": 1,
"status": {
"success": true,
"errcode": 0
}
}
]
}
}
ID Endpoint (/api/v2.1/{resource}/{id})
The ID endpoint is used to run queries on a specific resource.
GET
The parameters that may be passed when sending a GET request.
Parameters | Type/Valid Values | Description |
fields | A comma separated list of field namesE.g.fields=id,name,location | The list of fields that will be returned in the response. This parameter will be ignored if fields_adv is also specified. |
fields_adv | A JSON string detailing the fields to be returnedE.g.fields_adv={“Device Name”:{“field”:”name”}, “IP”:{“field”:”ipaddress”},”Location”:{“field”:”sysLocation”},”SNMP Polling”:{“field”:”snmp_poll”,”filter”:{“query”:”=\u0027off\u0027″}}} | The list of fields that will be returned in the response |
interval | positive integerE.g.interval=300 | The polling interval to be applied to all timeseries metrics specified in the fields parameter. When not specified, the default polling interval of 60 seconds is used. |
limit | positive integerE.g.limit=100 | The number of items to return per ‘page’ of the response, see Pagination for details. The API will automatically paginate response data with a default limit=50. |
offset | positive integerE.g.offset=100 | The number of result items to skip, see Pagination for details. The API will automatically paginate response data with a default offset={limit}. |
groups | A comma separated list of group names or group IDs | A list of groups to be used to filter the response data, only data associated with members of the specified groups will be returned |
grouping_mode |
|
The mode to use when processing multiple values in the group parameter |
filter | An SQL filter stringE.g.“SNMP Polling”:{“field”:”snmp_poll”,”filter”:{“query”:”=\u0027off\u0027″}} | A filter to be applied to the response data |
When the fields parameter has been specified, the following additional parameters may be used.
Parameters | Type/Valid Values | Description | ||||||||||||||||||||||||||||||
{field}_field | string | A user defined variable name followed by a valid field name for the resource. E.g.yesterday_RxUtil See Named Fields for more information and examples. |
||||||||||||||||||||||||||||||
{field}_formats | Comma separated list, see Timeseries Data: Stats, Formats & Options | The formats to request from the API for the given field, required for timeseries data fields
Note: a global formats key (formats=) may also be used to apply the same values to all timeseries metrics specified in fields
|
||||||||||||||||||||||||||||||
{field}_filter | string | The filter to apply to the given field | ||||||||||||||||||||||||||||||
{field}_filter_format | string | The format to use for the filter, required for timeseries data fields | ||||||||||||||||||||||||||||||
{field}_interval | integer | The polling interval (in seconds) to use for the specified field. When used, a field-specific timefilter for the specified field must also also be used.
Note: when not specified, the default interval of 60 seconds is used. A global interval key (interval=) may also be used to apply the same values to all timeseries metrics specified in fields
|
||||||||||||||||||||||||||||||
{field}_link | string | A user-defined field (i.e. named field), used in conjunction with {field}_field and {field}_object to define a link to a specific field-level endpoint. | ||||||||||||||||||||||||||||||
{field}_object | string | An API Resource level endpoint (e.g. cdt_device), used in conjunction with {field}_field and {field}_link to define a link to a specific field-level endpoint. | ||||||||||||||||||||||||||||||
{field}_timefilter | string | The timefilter to use for the given field, required for timeseries data fields.
Note: a global timefilter key (timefilter=) may also be used to apply the same values to all timeseries metrics specified in fields
|
||||||||||||||||||||||||||||||
{field}_tz | string | An alternate timezone to use for the {field}_timefilter. All timefilters use the Statseeker server’s timezone unless an override is specified by supplying {field}_tz. Note: a global timezone key (tz=) may also be used to apply the same values to all timeseries metrics specified in fields
|
||||||||||||||||||||||||||||||
{field}_sort | Comma separated list specifying the sort hierarchy and direction, in the following format:{field}_sort={rank}{direction} and for Timeseries data:{field}_sort={rank}{direction}{format}E.g.name_sort=1,ascRxUtil_sort=1,desc,avg | |||||||||||||||||||||||||||||||
{field}_stats | Comma separated list, see Timeseries Data: Stats, Formats & Options | The stats to use for the given field | ||||||||||||||||||||||||||||||
{field}_aggregation_format | One of:
|
The aggregation format to use for the specified field
Note: using aggregation, the following rules apply:
|
Example: Retrieving Details on a Device
Return specified details on a device with a specified ID. The details I am going to retrieve are:
- name
- id
- community
- ipaddress
- snmp_version
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
-X GET \
"https://your.statseeker.server/api/v2.1/cdt_device/<DEVICE ID>/?fields=name,id,community,ipaddress,snmp_version&indent=3"
# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
# Run auth request
headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
url = f'https://{server}/ss-auth'
authData = {'user': user, 'password': pword}
resp = requests.post(url, headers=headers, data=authData, verify=False)
headers['Content-Type'] = 'application/json'
url = f'https://{server}/{query}'
print(f'Get Auth Token: {resp.status_code}')
if resp.status_code == 200:
# Authentication successful, Statseeker >= v5.5.4
myToken = resp.json()
headers['Authorization'] = f'Bearer {myToken["access_token"]}'
resp = requests.get(url, headers=headers, verify=False)
if resp.status_code == 401:
print(f'Token auth failed: {resp.status_code}, trying basic auth')
# Either Authentication was unsuccessful (Statseeker < v5.5.4), or API set to use basic auth
# Try basic auth
resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/cdt_device/<DEVICE ID>'
# specify fields to be returned
query += '/?fields=name,id,community,ipaddress,snmp_version'
# optional response formatting
query += '&indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
print(resp.status_code)
print(resp.json())
else:
print(f'Error: {resp.status_code} {resp.reason}')
# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"
def try_basic(server, query, user, pword)
headers = {
:content_type => "json"
}
url = "https://" + server + "/" + query
headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false
)
end
def do_request(server, query, user, pword)
# Run auth request
headers = {
:content_type => "application/x-www-form-urlencoded"
}
url = "https://" + server + "/ss-auth"
authData = {
:user => user,
:password => pword
}
begin
resp = RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => authData
)
rescue RestClient::Unauthorized
# bad credentials or Statseeker not v5.5.4 or higher
try_basic(server, query, user, pword)
else
# Authentication successful. Statseeker at least v5.5.4
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
rdata = JSON.parse(resp)
headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false,
)
end
rescue RestClient::Unauthorized
# Statseeker = v5.5.4 but configured for basic auth
try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/cdt_device/<DEVICE ID>'
# specify fields to be returned
$query += '/?fields=name,id,community,ipaddress,snmp_version'
# optional response formatting
$query += '&indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"
{
"version": "2.1",
"revision": "13",
"info": "The Statseeker RESTful API",
"data": {
"success": true,
"errmsg": "ok",
"time": 1623636846,
"objects": [
{
"type": "cdt_device",
"sequence": 0,
"status": {
"success": true,
"errcode": 0
},
"data_total": 1,
"data": [
{
"name": "Chicago-srv1",
"id": <DEVICE ID>,
"community": "public",
"ipaddress": "10.100.46.11",
"snmp_version": 2
}
]
}
]
}
}
PUT
The PUT request can be used to update the fields associated with the specified resource. Not all fields contained within a specific resource may be updated, use the /describe endpoint to view the requirements for a given resource.
[top]
Example: Updating a Group Name
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
-X PUT \
"https://your.statseeker.server/api/v2.1/group/<GROUP ID>/?indent=3" \
-d '{"data":[{"name":"<NEW NAME>"}]}'
# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword, reqData):
# Run auth request
headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
url = f'https://{server}/ss-auth'
authData = {'user': user, 'password': pword}
resp = requests.post(url, headers=headers, data=authData, verify=False)
headers['Content-Type'] = 'application/json'
url = f'https://{server}/{query}'
print(f'Get Auth Token: {resp.status_code}')
if resp.status_code == 200:
# Authentication successful, Statseeker >= v5.5.4
myToken = resp.json()
headers['Authorization'] = f'Bearer {myToken["access_token"]}'
resp = requests.put(url, headers=headers, data=reqData, verify=False)
if resp.status_code == 401:
print(f'Token auth failed: {resp.status_code}, trying basic auth')
# Either Authentication was unsuccessful (Statseeker < v5.5.4), or API set to use basic auth
# Try basic auth
resp = requests.put(url, headers=headers, auth=(user, pword), data=reqData, verify=False)
return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/group/<GROUP ID>'
# optional response formatting
query += '/?indent=3&links=none'
# data
reqData = json.dumps({"data":[{"name":"<NEW NAME>"}]})
# Run the request
resp = do_request(server, query, user, pword, reqData)
if resp.status_code == 200:
print(resp.status_code)
print(resp.json())
else:
print(f'Error: {resp.status_code} {resp.reason}')
# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"
def try_basic(server, query, user, pword, reqData)
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
return RestClient::Request.execute(
:method => :put,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => reqData
)
end
def do_request(server, query, user, pword, reqData)
# Run auth request
headers = {
:content_type => "application/x-www-form-urlencoded"
}
url = "https://" + server + "/ss-auth"
authData = {
:user => user,
:password => pword
}
begin
resp = RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => authData
)
rescue RestClient::Unauthorized
# bad credentials or Statseeker not v5.5.4 or higher
try_basic(server, query, user, pword, reqData)
else
# Authentication successful. Statseeker at least v5.5.4
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
rdata = JSON.parse(resp)
headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
return RestClient::Request.execute(
:method => :put,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => reqData
)
end
rescue RestClient::Unauthorized
# Statseeker = v5.5.4 but configured for basic auth
try_basic(server, query, user, pword, reqData)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/group/<GROUP ID>'
# optional response formatting
$query += '/?indent=3&links=none'
# configure payload
$reqData = '{"data":[{"name":"<NEW NAME>"}]}'
# Run the request
resp = do_request($server, $query, $user, $pword, $reqData)
puts "#{resp.to_str}"
{
"version":"2.1",
"revision":"11",
"info":"The Statseeker RESTful API",
"data":{
"success":true,
"errmsg":"ok",
"time":1623637436
}
}
DELETE
The DELETE request can be used to delete the specified resource.
Example: Deleting a Group
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
-X DELETE \
"https://your.statseeker.server/api/v2.1/group/<GROUP ID>/?indent=3"
# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword, reqData):
# Run auth request
headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
url = f'https://{server}/ss-auth'
authData = {'user': user, 'password': pword}
resp = requests.post(url, headers=headers, data=authData, verify=False)
headers['Content-Type'] = 'application/json'
url = f'https://{server}/{query}'
print(f'Get Auth Token: {resp.status_code}')
if resp.status_code == 200:
# Authentication successful, Statseeker >= v5.5.4
myToken = resp.json()
headers['Authorization'] = f'Bearer {myToken["access_token"]}'
resp = requests.delete(url, headers=headers, data=reqData, verify=False)
if resp.status_code == 401:
print(f'Token auth failed: {resp.status_code}, trying basic auth')
# Either Authentication was unsuccessful (Statseeker < v5.5.4), or API set to use basic auth
# Try basic auth
resp = requests.delete(url, headers=headers, auth=(user, pword), data=reqData, verify=False)
return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/group/<GROUP ID>'
# optional response formatting
query += '/?indent=3&links=none'
# data
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
print(resp.status_code)
print(resp.json())
else:
print(f'Error: {resp.status_code} {resp.reason}')
# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"
def try_basic(server, query, user, pword, reqData)
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
return RestClient::Request.execute(
:method => :delete,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => reqData
)
end
def do_request(server, query, user, pword, reqData)
# Run auth request
headers = {
:content_type => "application/x-www-form-urlencoded"
}
url = "https://" + server + "/ss-auth"
authData = {
:user => user,
:password => pword
}
begin
resp = RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => authData
)
rescue RestClient::Unauthorized
# bad credentials or Statseeker not v5.5.4 or higher
try_basic(server, query, user, pword, reqData)
else
# Authentication successful. Statseeker at least v5.5.4
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
rdata = JSON.parse(resp)
headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
return RestClient::Request.execute(
:method => :delete,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => reqData
)
end
rescue RestClient::Unauthorized
# Statseeker = v5.5.4 but configured for basic auth
try_basic(server, query, user, pword, reqData)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/group/<GROUP ID>'
# optional response formatting
$query += '/?indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"
{
"version":"2.1",
"revision":"11",
"info":"The Statseeker RESTful API",
"data":{
"success":true,
"errmsg":"ok",
"time":1623637436
}
}
Field Endpoint (/api/v2.1/{resource}/{id}/{field})
The Field endpoint is used to run queries on a specific field within a specified resource, use the /describe endpoint to view the field restrictions for a given resource.
GET
The parameters that may be passed when sending a GET request behave exactly like the {field}_* parameters for the Resource and ID endpoints. When targeting timeseries metrics, the following parameters may be specified.
Parameters | Type/Valid Values | Description |
formats | Comma separated list, see Timeseries Data: Stats, Formats & Options | The formats to request from the API for the given field, required for timeseries data fields
Note: a global formats key (formats=) may also be used to apply the same values to all timeseries metrics specified in fields
|
filter | string | The filter to apply to the given field |
filter_format | string | The format to use for the filter, required for the timeseries data field |
interval | integer | The polling interval (in seconds) to use for the specified field.
Note: when not specified, the default interval of 60 seconds is used.
|
timefilter | string | The timefilter to use for the field |
tz | string | An alternate timezone to use for the timefilter. All timefilters use the Statseeker server’s timezone unless an override is specified |
stats | Comma separated list, see Timeseries Data: Stats, Formats & Options | The stats to use for the given field |
Example: Returning a User’s Time Zone
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
-X GET \
"https://your.statseeker.server/api/v2.1/user/<USER ID>/tz/?indent=3"
# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
# Run auth request
headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
url = f'https://{server}/ss-auth'
authData = {'user': user, 'password': pword}
resp = requests.post(url, headers=headers, data=authData, verify=False)
headers['Content-Type'] = 'application/json'
url = f'https://{server}/{query}'
print(f'Get Auth Token: {resp.status_code}')
if resp.status_code == 200:
# Authentication successful, Statseeker >= v5.5.4
myToken = resp.json()
headers['Authorization'] = f'Bearer {myToken["access_token"]}'
resp = requests.get(url, headers=headers, verify=False)
if resp.status_code == 401:
print(f'Token auth failed: {resp.status_code}, trying basic auth')
# Either Authentication was unsuccessful (Statseeker < v5.5.4), or API set to use basic auth
# Try basic auth
resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/user/<USER ID>/tz'
# optional response formatting
query += '/?indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
print(resp.status_code)
print(resp.json())
else:
print(f'Error: {resp.status_code} {resp.reason}')
# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"
def try_basic(server, query, user, pword)
headers = {
:content_type => "json"
}
url = "https://" + server + "/" + query
headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false
)
end
def do_request(server, query, user, pword)
# Run auth request
headers = {
:content_type => "application/x-www-form-urlencoded"
}
url = "https://" + server + "/ss-auth"
authData = {
:user => user,
:password => pword
}
begin
resp = RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => authData
)
rescue RestClient::Unauthorized
# bad credentials or Statseeker not v5.5.4 or higher
try_basic(server, query, user, pword)
else
# Authentication successful. Statseeker at least v5.5.4
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
rdata = JSON.parse(resp)
headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false,
)
end
rescue RestClient::Unauthorized
# Statseeker = v5.5.4 but configured for basic auth
try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/user/<USER ID>/tz'
# optional response formatting
$query += '/?indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"
{
"version":"2.1",
"revision":"11",
"info":"The Statseeker RESTful API",
"data":{
"success":true,
"errmsg":"ok",
"time":1623638836,
"objects":[
{
"type":"user",
"sequence":0,
"status":{
"success":true,
"errcode":0
},
"data_total":1,
"data":[
{
"tz":"Australia/Brisbane",
"id":<USER ID>
}
]
}
]
}
}
PUT
The PUT request can be used to update the specified field. Not all fields contained within a specific resource may be updated, use the /describe endpoint to view the restrictions for a given resource. The data object must contain a value key containing the new value/s to be set for the field.
[top]
Example: Updating a User’s Time Zone
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
-X PUT \
"https://your.statseeker.server/api/v2.1/user/<USER ID>/tz/?indent=3" \
-d '{"value":"Europe/Paris"}'
# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword, reqData):
# Run auth request
headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
url = f'https://{server}/ss-auth'
authData = {'user': user, 'password': pword}
resp = requests.post(url, headers=headers, data=authData, verify=False)
headers['Content-Type'] = 'application/json'
url = f'https://{server}/{query}'
print(f'Get Auth Token: {resp.status_code}')
if resp.status_code == 200:
# Authentication successful, Statseeker >= v5.5.4
myToken = resp.json()
headers['Authorization'] = f'Bearer {myToken["access_token"]}'
resp = requests.put(url, headers=headers, data=reqData, verify=False)
if resp.status_code == 401:
print(f'Token auth failed: {resp.status_code}, trying basic auth')
# Either Authentication was unsuccessful (Statseeker < v5.5.4), or API set to use basic auth
# Try basic auth
resp = requests.put(url, headers=headers, auth=(user, pword), data=reqData, verify=False)
return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/user/<USER ID>/tz'
# optional response formatting
query += '/?indent=3&links=none'
# data
reqData = json.dumps({"value":"Europe/Paris"})
# Run the request
resp = do_request(server, query, user, pword, reqData)
if resp.status_code == 200:
print(resp.status_code)
print(resp.json())
else:
print(f'Error: {resp.status_code} {resp.reason}')
# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"
def try_basic(server, query, user, pword, reqData)
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
return RestClient::Request.execute(
:method => :put,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => reqData
)
end
def do_request(server, query, user, pword, reqData)
# Run auth request
headers = {
:content_type => "application/x-www-form-urlencoded"
}
url = "https://" + server + "/ss-auth"
authData = {
:user => user,
:password => pword
}
begin
resp = RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => authData
)
rescue RestClient::Unauthorized
# bad credentials or Statseeker not v5.5.4 or higher
try_basic(server, query, user, pword, reqData)
else
# Authentication successful. Statseeker at least v5.5.4
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
rdata = JSON.parse(resp)
headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
return RestClient::Request.execute(
:method => :put,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => reqData
)
end
rescue RestClient::Unauthorized
# Statseeker = v5.5.4 but configured for basic auth
try_basic(server, query, user, pword, reqData)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/user/<USER ID>/tz'
# optional response formatting
$query += '/?indent=3&links=none'
# configure payload
$reqData = '{"value":"Europe/Paris"}'
# Run the request
resp = do_request($server, $query, $user, $pword, $reqData)
puts "#{resp.to_str}"
{
"info": "The Statseeker RESTful API",
"data": {
"errmsg": "ok",
"success": true,
"time": 1496193864
},
"api_version": "2.1"
}
Common Resources: Examples and Sample Code
Most of the processes and objects that you are used to interacting with in Statseeker (network discovery, users, groups, devices, interfaces, alerts, etc.) are exposed as resources from the API standpoint and through querying the API these resources can be returned as data objects which you can review and modify.
Statseeker exposes many resources via the API but most API users will spend the majority of their time working with just a few. The most commonly used resources are presented below along with examples of interacting with those resources.
- A full reference to all resources is available from the Resource Reference
- For additional detail and examples on applying filters to API queries, see Working with API Filters
Users
The User resource allows you to interact with (create, edit, delete, and report on) Statseeker user records.
The user object
Field ID | Field Title | Type | Get, Add, Update | Description |
api | API Access | string | G, U, A | User API access permission, one of:
|
auth | Authentication method | string | G, U, A | User authentication method, one of:
|
auth_refresh | Authentication Refresh | integer | G, U, A | The time allowed after a token has expired that it will be refreshed (in seconds) |
auth_ttl | Authentication TTL | integer | G, U, A | The TTL for authentication tokens (in seconds) |
string | G, U, A | User email address | ||
exportDateFormat | Date Format | string | G, U, A | User specified Date Format |
id | ID | integer | G | User Identifier |
is_admin | Is Admin | integer | G, U, A | Whether the user has admin access, one of:
|
name | Name | string | G, A (required) | User name |
password | Password | string | G, U, A | User password |
reportRowSpacing | Report Row Spacing | string | G, U, A | The report row spacing preference for the user |
top_n | Top N | integer | G, U, A | The default Top N number for the user |
tz | Time Zone | string | G, U, A | User time zone |
Example: Creating a New User
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-X POST \
-H "Authorization: Bearer myToken" \
"https://your.statseeker.server/api/v2.1/user/?indent=3" \
-d '{"data":[{"name":"<USER NAME>","password":"<PASSWORD>","auth":"<AUTHENTICATION METHOD>","email":"<EMAIL ADDRESS>","api":"<API PERMISSION>","tz":"<TIMEZONE>"}]}'
# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword, reqData):
# Run auth request
headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
url = f'https://{server}/ss-auth'
authData = {'user': user, 'password': pword}
resp = requests.post(url, headers=headers, data=authData, verify=False)
headers['Content-Type'] = 'application/json'
url = f'https://{server}/{query}'
print(f'Get Auth Token: {resp.status_code}')
if resp.status_code == 200:
# Authentication successful, Statseeker >= v5.5.4
myToken = resp.json()
headers['Authorization'] = f'Bearer {myToken["access_token"]}'
resp = requests.post(url, headers=headers, data=reqData, verify=False)
if resp.status_code == 401:
print(f'Token auth failed: {resp.status_code}, trying basic auth')
# Either Authentication was unsuccessful (Statseeker < v5.5.4), or API set to use basic auth
# Try basic auth
resp = requests.post(url, headers=headers, auth=(user, pword), data=reqData, verify=False)
return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/user'
# optional response formatting
query += '/?indent=3&links=none'
# data
reqData = json.dumps({"data":[{"name":"<USER NAME>","password":"<PASSWORD>","auth":"<AUTHENTICATION METHOD>","email":"<EMAIL ADDRESS>","api":"<API PERMISSION>","tz":"<TIMEZONE>"}]})
# Run the request
resp = do_request(server, query, user, pword, reqData)
if resp.status_code == 200:
print(resp.status_code)
print(resp.json())
else:
print(f'Error: {resp.status_code} {resp.reason}')
# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"
def try_basic(server, query, user, pword, reqData)
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
return RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => reqData
)
end
def do_request(server, query, user, pword, reqData)
# Run auth request
headers = {
:content_type => "application/x-www-form-urlencoded"
}
url = "https://" + server + "/ss-auth"
authData = {
:user => user,
:password => pword
}
begin
resp = RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => authData
)
rescue RestClient::Unauthorized
# bad credentials or Statseeker not v5.5.4 or higher
try_basic(server, query, user, pword, reqData)
else
# Authentication successful. Statseeker at least v5.5.4
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
rdata = JSON.parse(resp)
headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
return RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => reqData
)
end
rescue RestClient::Unauthorized
# Statseeker = v5.5.4 but configured for basic auth
try_basic(server, query, user, pword, reqData)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/user'
# optional response formatting
$query += '/?indent=3&links=none'
# configure payload
# define payload in json format
$reqData = '{"data":[{"name":"<USER NAME>","password":"<PASSWORD>","auth":"<AUTHENTICATION METHOD>","email":"<EMAIL ADDRESS>","api":"<API PERMISSION>","tz":"<TIMEZONE>"}]}'
# Run the request
resp = do_request($server, $query, $user, $pword, $reqData)
puts "#{resp.to_str}"
{
"version":"2.1",
"revision":"11",
"info":"The Statseeker RESTful API",
"data":{
"success":true,
"errmsg":"ok",
"time":1623643182,
"objects":[
{
"type":"user",
"sequence":1,
"status":{
"success":true,
"errcode":0
},
"data_total":1,
"data":[
"api":"<API PERMISSION>",
"auth":"<AUTHENTICATION METHOD>",
"email":"<EMAIL ADDRESS>",
"name":"<USER NAME>",
"password":"<PASSWORD>",
"tz":"<TIMEZONE>",
"id":94551,
"is_admin":0
}
]
}
]
}
}
Example: Updating an Existing User
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
-X PUT \
"https://your.statseeker.server/api/v2.1/user/<USER ID>?indent=3" \
-d '{"data":[{"api":"<API PERMISSION>","tz":"<NEW TIMEZONE>"}]}'
# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword, reqData):
# Run auth request
headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
url = f'https://{server}/ss-auth'
authData = {'user': user, 'password': pword}
resp = requests.post(url, headers=headers, data=authData, verify=False)
headers['Content-Type'] = 'application/json'
url = f'https://{server}/{query}'
print(f'Get Auth Token: {resp.status_code}')
if resp.status_code == 200:
# Authentication successful, Statseeker >= v5.5.4
myToken = resp.json()
headers['Authorization'] = f'Bearer {myToken["access_token"]}'
resp = requests.put(url, headers=headers, data=reqData, verify=False)
if resp.status_code == 401:
print(f'Token auth failed: {resp.status_code}, trying basic auth')
# Either Authentication was unsuccessful (Statseeker < v5.5.4), or API set to use basic auth
# Try basic auth
resp = requests.put(url, headers=headers, auth=(user, pword), data=reqData, verify=False)
return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/user/<USER ID>'
# optional response formatting
query += '/?indent=3&links=none'
# data
reqData = json.dumps({"data":[{"api":"<API PERMISSION>","tz":"<NEW TIMEZONE>"}]})
# Run the request
resp = do_request(server, query, user, pword, reqData)
if resp.status_code == 200:
print(resp.status_code)
print(resp.json())
else:
print(f'Error: {resp.status_code} {resp.reason}')
# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"
def try_basic(server, query, user, pword, reqData)
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
return RestClient::Request.execute(
:method => :put,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => reqData
)
end
def do_request(server, query, user, pword, reqData)
# Run auth request
headers = {
:content_type => "application/x-www-form-urlencoded"
}
url = "https://" + server + "/ss-auth"
authData = {
:user => user,
:password => pword
}
begin
resp = RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => authData
)
rescue RestClient::Unauthorized
# bad credentials or Statseeker not v5.5.4 or higher
try_basic(server, query, user, pword, reqData)
else
# Authentication successful. Statseeker at least v5.5.4
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
rdata = JSON.parse(resp)
headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
return RestClient::Request.execute(
:method => :put,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => reqData
)
end
rescue RestClient::Unauthorized
# Statseeker = v5.5.4 but configured for basic auth
try_basic(server, query, user, pword, reqData)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/user/<USER ID>'
# optional response formatting
$query += '/?indent=3&links=none'
# configure payload
$reqData = '{"data":[{"api":"<API PERMISSION>","tz":"<NEW TIMEZONE>"}]}'
# Run the request
resp = do_request($server, $query, $user, $pword, $reqData)
puts "#{resp.to_str}"
{
"version":"2.1",
"revision":"11",
"info":"The Statseeker RESTful API",
"data":{
"success":true,
"errmsg":"ok",
"time":1623644832
}
}
Devices (cdt_device)
The cdt_device resource allows you to interact with your currently discovered network devices.
The cdt_device object
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
auth_method | SNMPv3 Authentication Method | string | G, U, A | Authentication method for SNMPv3 devices, one of:
|
auth_pass | SNMPv3 Authentication Password | string | G, U, A | Authentication password for SNMPv3 devices |
auth_user | SNMPv3 Authentication Username | string | G, U, A | Authentication user for SNMPv3 devices |
community | Community | string | G, U, A | The community string status of the device |
context | SNMPv3 Context | string | G, U, A | Context for SNMPv3 devices |
custom_data_details | Custom Data Details | string | G, U | A JSON string object indicating which custom entities have been found during a discovery |
discover_getNext | Use GetNext | string | G, U | Walk this device using SNMP getNext instead of getBulk, one of:
|
discover_minimal | Use Minimal Walk | string | G, U | Walk this device using a minimal set of oids, one of:
|
discover_snmpv1 | Use SNMPv1 | string | G, U | Walk this device using SNMPv1, one of:
|
hostname | Hostname | string | G, U, A | The hostname of the device |
ipaddress | IP Address | string | G, U, A (required) | The IP address of the device |
latitude | Latitude | float | G, U | The user defined latitude of the device’s location |
longitude | Longitude | float | G, U | The user defined longitude of the device’s location |
manual_name | User Defined Name | string | G, U | The user defined name of the device |
memorySize | Memory Size | integer | G | The amount of physical read-write memory contained by the entity |
mis | MAC/IP/Switch Collection State | string | G, U | Include this device in the MIS report calculations, one of
|
ping_dup | Ping Duplicate | integer | G | Number of duplicate ping responses received Timeseries Data: Stats, Formats & Options |
ping_lost1 | Ping Lost 1 | integer | G | Number of times that a single ping request is lost Timeseries Data: Stats, Formats & Options |
ping_lost2 | Ping Lost 2 | integer | G | Number of times that two ping requests in a row have been lost Timeseries Data: Stats, Formats & Options |
ping_lost3 | Ping Lost 3 | integer | G | Number of times that three ping requests in a row have been lost Timeseries Data: Stats, Formats & Options |
ping_lost4 | Ping Lost 4 | integer | G | Number of times that four ping requests in a row have been lost Timeseries Data: Stats, Formats & Options |
ping_outage | Ping Outage | integer | G, U | Number of seconds to wait before a device is considered to be down |
ping_poll | Ping Poll | string | G, U, A | The ping polling status of the device, one of:
|
ping_rtt | Ping RTT | integer | G | The current ping state of the device Timeseries Data: Stats, Formats & Options |
ping_rtt_ms | Ping RTT(High Precision) | float | G | The current ping state of the device in ms to 3 decimal places Timeseries Data: Stats, Formats & Options |
ping_state | Ping State | string | G, U | The current ping state of the device, one of:
Can be combined with an event format for event-based analytics, see Event Formats. |
priv_method | SNMPv3 Privacy Method | string | G, U, A | Privacy method for SNMPv3 devices, one of:
|
priv_pass | SNMPv3 Privacy Password | string | G, U, A | Privacy password for SNMPv3 devices |
retired | Retired | string | G | The device has been Retired, one of:
|
snmpEngineID | SNMP Engine ID | string | G, U | An SNMP engine’s administratively-unique identifier |
snmp_maxoid | SNMP Max OID | integer | G, U | Maximum number of oids to poll in a single request |
snmp_poll | SNMP Poll | string | G, U, A | The SNMP polling status of the device, one of:
|
snmp_version | SNMP Version | integer | G, U, A | The SNMP version of the device, one of:
|
sysContact | Contact | string | G, U | The textual identification of the contact person for the entity |
sysDescr | System Description | string | G, U | A textual description of the entity |
sysLocation | Location | string | G, U | The physical location of the entity |
sysName | System Name | string | G, U | An administratively-assigned name for the entity |
sysObjectID | Object ID | string | G, U | The vendor’s authoritative identification of the network management subsystem contained in the entity |
sysServices | Services | integer | G, U | A value which indicates the set of services that the entity may potentially offer |
vendor | Vendor | string | G | The vendor name for the device |
Links
This resource has links to the following:
Example: Configuring a Device as Ping-Only
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
-X PUT \
"https://your.statseeker.server/api/v2.1/cdt_device/<DEVICE ID>/?indent=3" \
-d '{"data":[{"ping_poll":"on","snmp_poll":"off"}]}'
# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword, reqData):
# Run auth request
headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
url = f'https://{server}/ss-auth'
authData = {'user': user, 'password': pword}
resp = requests.post(url, headers=headers, data=authData, verify=False)
headers['Content-Type'] = 'application/json'
url = f'https://{server}/{query}'
print(f'Get Auth Token: {resp.status_code}')
if resp.status_code == 200:
# Authentication successful, Statseeker >= v5.5.4
myToken = resp.json()
headers['Authorization'] = f'Bearer {myToken["access_token"]}'
resp = requests.put(url, headers=headers, data=reqData, verify=False)
if resp.status_code == 401:
print(f'Token auth failed: {resp.status_code}, trying basic auth')
# Either Authentication was unsuccessful (Statseeker < v5.5.4), or API set to use basic auth
# Try basic auth
resp = requests.put(url, headers=headers, auth=(user, pword), data=reqData, verify=False)
return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/cdt_device/<DEVICE ID>'
# optional response formatting
query += '/?indent=3&links=none'
# data
reqData = json.dumps({"data":[{"ping_poll":"on","snmp_poll":"off"}]})
# Run the request
resp = do_request(server, query, user, pword, reqData)
if resp.status_code == 200:
print(resp.status_code)
print(resp.json())
else:
print(f'Error: {resp.status_code} {resp.reason}')
# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"
def try_basic(server, query, user, pword, reqData)
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
return RestClient::Request.execute(
:method => :put,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => reqData
)
end
def do_request(server, query, user, pword, reqData)
# Run auth request
headers = {
:content_type => "application/x-www-form-urlencoded"
}
url = "https://" + server + "/ss-auth"
authData = {
:user => user,
:password => pword
}
begin
resp = RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => authData
)
rescue RestClient::Unauthorized
# bad credentials or Statseeker not v5.5.4 or higher
try_basic(server, query, user, pword, reqData)
else
# Authentication successful. Statseeker at least v5.5.4
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
rdata = JSON.parse(resp)
headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
return RestClient::Request.execute(
:method => :put,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => reqData
)
end
rescue RestClient::Unauthorized
# Statseeker = v5.5.4 but configured for basic auth
try_basic(server, query, user, pword, reqData)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/cdt_device/<DEVICE ID>'
# optional response formatting
$query += '/?indent=3&links=none'
# configure payload
$reqData = '{"data":[{"ping_poll":"on","snmp_poll":"off"}]}'
# Run the request
resp = do_request($server, $query, $user, $pword, $reqData)
puts "#{resp.to_str}"
{
"version": "2.1",
"revision": "13",
"info": "The Statseeker RESTful API",
"data": {
"success": true,
"errmsg": "ok",
"time": 1623646976,
"objects": [
{
"type": "cdt_device",
"sequence": 1,
"status": {
"success": true,
"errcode": 0
},
"data_total": 1,
"data": [
{
"name": "Houston-swt1",
"id": <DEVICE ID>,
"community": "public",
"ipaddress": "10.100.47.253",
"snmp_version": 2,
"poll": "off",
"ping_poll": "on"
}
]
}
]
}
}
Example: Returning Details on all Ping-Only Devices
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
-X GET \
"https://your.statseeker.server/api/v2.1/cdt_device/?fields=name,ipaddress,sysLocation,snmp_poll,ping_poll&snmp_poll_filter=IS(%27off%27)&ping_poll_filter=IS(%27on%27)"
# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
# Run auth request
headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
url = f'https://{server}/ss-auth'
authData = {'user': user, 'password': pword}
resp = requests.post(url, headers=headers, data=authData, verify=False)
headers['Content-Type'] = 'application/json'
url = f'https://{server}/{query}'
print(f'Get Auth Token: {resp.status_code}')
if resp.status_code == 200:
# Authentication successful, Statseeker >= v5.5.4
myToken = resp.json()
headers['Authorization'] = f'Bearer {myToken["access_token"]}'
resp = requests.get(url, headers=headers, verify=False)
if resp.status_code == 401:
print(f'Token auth failed: {resp.status_code}, trying basic auth')
# Either Authentication was unsuccessful (Statseeker < v5.5.4), or API set to use basic auth
# Try basic auth
resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/cdt_device'
# specify fields to be returned
query += '/?fields=name,ipaddress,sysLocation,snmp_poll,ping_poll'
# Filters
query += '&snmp_poll_filter=IS("off")&ping_poll_filter=IS("on")'
# optional response formatting
query += '&indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
print(resp.status_code)
print(resp.json())
else:
print(f'Error: {resp.status_code} {resp.reason}')
# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"
def try_basic(server, query, user, pword)
headers = {
:content_type => "json"
}
url = "https://" + server + '/' + query
headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false
)
end
def do_request(server, query, user, pword)
# Run auth request
headers = {
:content_type => "application/x-www-form-urlencoded"
}
url = "https://" + server + "/ss-auth"
authData = {
:user => user,
:password => pword
}
begin
resp = RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => authData
)
rescue RestClient::Unauthorized
# bad credentials or Statseeker < v5.5.4
try_basic(server, query, user, pword)
else
# Authentication successful. Statseeker >= v5.5.4
headers = {
:content_type => "application/json"
}
url = "https://" + server + '/' + query
rdata = JSON.parse(resp)
headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false,
)
end
rescue RestClient::Unauthorized
# Statseeker = v5.5.4 but configured for basic auth
try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/cdt_device'
# specify fields to be returned
$query += '/?fields=name,ipaddress,sysLocation,snmp_poll,ping_poll'
# Filters
$query += '&snmp_poll_filter=IS("off")&ping_poll_filter=IS("on")'
# optional response formatting
$query += '&indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"
{
"version":"2.1",
"revision":"11",
"info":"The Statseeker RESTful API",
"data":{
"success":true,
"errmsg":"ok",
"time":1623647384,
"objects":[
{
"type":"cdt_device",
"sequence":1,
"status":{
"success":true,
"errcode":0
},
"data_total":2,
"data":[
{
"name":"Houston-swt1",
"ipaddress":"10.100.47.253",
"sysLocation":"Houston",
"snmp_poll":"off",
"ping_poll":"on",
"id":425
},
{
"name":"Adelaide-swt1",
"ipaddress":"10.100.89.253",
"sysLocation":"Adelaide",
"snmp_poll":"off",
"ping_poll":"on",
"id":433
}
]
}
]
}
}
Example: Requesting Ping Metrics for a Device
Return ping times for the last 15 minutes as well as the average ping trip time for that period.
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
-X GET \
"https://your.statseeker.server/api/v2.1/cdt_device/cdt_device/<DEVICE ID>?fields=name,ping_rtt&ping_rtt_formats=avg,vals&ping_rtt_timefilter=range%3Dnow%20-%2015m%20TO%20now%20-1m"
# import requests for handling connection and encoding
import requests, json
# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
# Run auth request
headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
url = f'https://{server}/ss-auth'
authData = {'user': user, 'password': pword}
resp = requests.post(url, headers=headers, data=authData, verify=False)
headers['Content-Type'] = 'application/json'
url = f'https://{server}/{query}'
print(f'Get Auth Token: {resp.status_code}')
if resp.status_code == 200:
# Authentication successful, Statseeker >= v5.5.4
myToken = resp.json()
headers['Authorization'] = f'Bearer {myToken["access_token"]}'
resp = requests.get(url, headers=headers, verify=False)
if resp.status_code == 401:
print(f'Token auth failed: {resp.status_code}, trying basic auth')
# Either Authentication was unsuccessful (Statseeker < v5.5.4), or API set to use basic auth
# Try basic auth
resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/cdt_device/<DEVICE ID>'
# specify fields to be returned
query += '/?fields=name,ping_rtt'
# specify data formats
query += '&ping_rtt_formats=avg,vals'
# Filters
query += '&ping_rtt_timefilter=range%3Dnow%20-%2015m%20TO%20now%20-1m'
# optional response formatting
query += '&indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
print(resp.status_code)
print(resp.json())
else:
print(f'Error: {resp.status_code} {resp.reason}')
# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"
def try_basic(server, query, user, pword)
headers = {
:content_type => "json"
}
url = "https://" + server + "/" + query
headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false
)
end
def do_request(server, query, user, pword)
# Run auth request
headers = {
:content_type => "application/x-www-form-urlencoded"
}
url = "https://" + server + "/ss-auth"
authData = {
:user => user,
:password => pword
}
begin
resp = RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => authData
)
rescue RestClient::Unauthorized
# bad credentials or Statseeker not v5.5.4 or higher
try_basic(server, query, user, pword)
else
# Authentication successful. Statseeker at least v5.5.4
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
rdata = JSON.parse(resp)
headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false,
)
end
rescue RestClient::Unauthorized
# Statseeker = v5.5.4 but configured for basic auth
try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/cdt_device/<DEVICE ID>'
# specify fields to be returned
$query += '/?fields=name,ping_rtt'
# specify data formats
$query += '&ping_rtt_formats=avg,vals'
# Filters
$query += '&ping_rtt_timefilter=range%3Dnow%20-%2015m%20TO%20now%20-1m'
# optional response formatting
$query += '&indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"
{
"version":"2.1",
"revision":"11",
"info":"The Statseeker RESTful API",
"data":{
"success":true,
"errmsg":"ok",
"time":1623648677,
"objects":[
{
"type":"cdt_device",
"sequence":1,
"status":{
"success":true,
"errcode":0
},
"data_total":1,
"data":[
{
"name":"Houston-rtr",
"ping_rtt":{
"vals":[
23,
28,
30,
26,
32,
21,
28,
27,
26,
25,
30,
27,
30,
27
],
"avg":27.1429
},
"id":<DEVICE ID>
}
]
}
]
}
}
Example: Return Ping Availability Percentage for a group of devices, during business hours last month
Show the ping availability for each device in a specified group during business hours (6am – 6pm) over the previous month
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
-X GET \
"https://your.statseeker.server/api/v2.1/cdt_device?fields=name,ipaddress,ping_state&ping_state_formats=avl_inPercent&ping_state_filter_format=state&ping_state_timefilter=range=start_of_last_month%20to%20end_of_last_month;%20time%20=%2006:00%20to%2018:00;&ping_state_states=up&groups=<GROUP NAME>&links=none&indent=3"
# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
# Run auth request
headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
url = f'https://{server}/ss-auth'
authData = {'user': user, 'password': pword}
resp = requests.post(url, headers=headers, data=authData, verify=False)
headers['Content-Type'] = 'application/json'
url = f'https://{server}/{query}'
print(f'Get Auth Token: {resp.status_code}')
if resp.status_code == 200:
# Authentication successful, Statseeker >= v5.5.4
myToken = resp.json()
headers['Authorization'] = f'Bearer {myToken["access_token"]}'
resp = requests.get(url, headers=headers, verify=False)
if resp.status_code == 401:
print(f'Token auth failed: {resp.status_code}, trying basic auth')
# Either Authentication was unsuccessful (Statseeker < v5.5.4), or API set to use basic auth
# Try basic auth
resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/cdt_device'
# specify fields to be returned
query += '/?fields=name,ipaddress,ping_state'
# specify data formats
query += '&ping_state_formats=avl_inPercent'
# Filters
query += '&ping_state_filter_format=state&ping_state_states=up&groups=<GROUP NAME>&ping_state_timefilter=range=start_of_last_month to end_of_last_month;time = 06:00 to 18:00;'
# optional response formatting
query += '&indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
print(resp.status_code)
print(resp.json())
else:
print(f'Error: {resp.status_code} {resp.reason}')
# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"
def try_basic(server, query, user, pword)
headers = {
:content_type => "json"
}
url = "https://" + server + "/" + query
headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false
)
end
def do_request(server, query, user, pword)
# Run auth request
headers = {
:content_type => "application/x-www-form-urlencoded"
}
url = "https://" + server + "/ss-auth"
authData = {
:user => user,
:password => pword
}
begin
resp = RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => authData
)
rescue RestClient::Unauthorized
# bad credentials or Statseeker not v5.5.4 or higher
try_basic(server, query, user, pword)
else
# Authentication successful. Statseeker at least v5.5.4
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
rdata = JSON.parse(resp)
headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false,
)
end
rescue RestClient::Unauthorized
# Statseeker = v5.5.4 but configured for basic auth
try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/cdt_device/'
# specify fields to be returned
$query += '/?fields=name,ipaddress,ping_state'
# specify data formats
$query += '&ping_state_formats=avl_inPercent'
# Filters
$query += '&ping_state_filter_format=state&ping_state_states=up&groups=<GROUP NAME>&ping_state_timefilter=range=start_of_last_month to end_of_last_month; time = 06:00 to 18:00;'
# optional response formatting
$query += '&indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"
{
"version": "2.1",
"revision": "13",
"info": "The Statseeker RESTful API",
"data": {
"success": true,
"errmsg": "ok",
"time": 1615862113,
"objects": [
{
"type": "cdt_device",
"sequence": 307,
"status": {
"success": true,
"errcode": 0
},
"data_total": 59,
"data": [
{
"name": "NewYork-rtr",
"ipaddress": "10.100.44.254",
"ping_state": {
"avl_inPercent": 93.4969
},
"id": 175
},
{
"name": "Chicago-rtr",
"ipaddress": "10.100.46.254",
"ping_state": {
"avl_inPercent": 98.1472
},
"id": 195
},
{
"name": "Rome-rtr",
"ipaddress": "10.100.52.254",
"ping_state": {
"avl_inPercent": 96.6486
},
"id": 247
},
{
"name": "Paris-rtr",
"ipaddress": "10.100.53.254",
"ping_state": {
"avl_inPercent": 96.6329
},
"id": 260
},
{
"name": "Barcelona-rtr",
"ipaddress": "10.100.54.254",
"ping_state": {
"avl_inPercent": 97.481
},
"id": 269
},
{
"name": "Hamburg-rtr",
"ipaddress": "10.100.55.254",
"ping_state": {
"avl_inPercent": 97.6203
},
"id": 276
},
{
"name": "Budapest-rtr",
"ipaddress": "10.100.56.254",
"ping_state": {
"avl_inPercent": 91.905
},
"id": 284
},
{
"name": "Warsaw-rtr",
"ipaddress": "10.100.57.254",
"ping_state": {
"avl_inPercent": 97.7061
},
"id": 292
},
{
"name": "Istanbul-rtr",
"ipaddress": "10.100.61.254",
"ping_state": {
"avl_inPercent": 96.1347
},
"id": 313
},
{
"name": "Helsinki-rtr",
"ipaddress": "10.100.62.254",
"ping_state": {
"avl_inPercent": 96.4435
},
"id": 320
},
{
"name": "Lisbon-rtr",
"ipaddress": "10.100.64.254",
"ping_state": {
"avl_inPercent": 98.4008
},
"id": 331
},
{
"name": "Copenhagen-rtr",
"ipaddress": "10.100.66.254",
"ping_state": {
"avl_inPercent": 96.6578
},
"id": 341
},
{
"name": "Zurich-rtr",
"ipaddress": "10.100.67.254",
"ping_state": {
"avl_inPercent": 97.0897
},
"id": 346
},
{
"name": "Auckland-rtr",
"ipaddress": "10.100.68.254",
"ping_state": {
"avl_inPercent": 97.4721
},
"id": 350
},
{
"name": "Wellington-rtr",
"ipaddress": "10.100.69.254",
"ping_state": {
"avl_inPercent": 96.656
},
"id": 353
},
{
"name": "Shanghai-rtr",
"ipaddress": "10.100.71.254",
"ping_state": {
"avl_inPercent": 97.1329
},
"id": 358
},
{
"name": "Taipei-rtr",
"ipaddress": "10.100.72.254",
"ping_state": {
"avl_inPercent": 95.4515
},
"id": 361
},
{
"name": "Tokyo-rtr",
"ipaddress": "10.100.73.254",
"ping_state": {
"avl_inPercent": 96.988
},
"id": 364
},
{
"name": "Singapore-rtr",
"ipaddress": "10.100.75.254",
"ping_state": {
"avl_inPercent": 96.3195
},
"id": 370
},
{
"name": "Jakarta-rtr",
"ipaddress": "10.100.76.254",
"ping_state": {
"avl_inPercent": 96.5654
},
"id": 373
},
{
"name": "Manila-rtr",
"ipaddress": "10.100.77.254",
"ping_state": {
"avl_inPercent": 95.6723
},
"id": 378
},
{
"name": "KualaLumpur-rtr",
"ipaddress": "10.100.78.254",
"ping_state": {
"avl_inPercent": 96.1833
},
"id": 381
},
{
"name": "Delhi-rtr",
"ipaddress": "10.100.80.254",
"ping_state": {
"avl_inPercent": 97.6462
},
"id": 387
},
{
"name": "Mumbai-rtr",
"ipaddress": "10.100.81.254",
"ping_state": {
"avl_inPercent": 96.5621
},
"id": 390
},
{
"name": "Bangalore-rtr",
"ipaddress": "10.100.82.254",
"ping_state": {
"avl_inPercent": 93.9592
},
"id": 393
},
{
"name": "Chennai-rtr",
"ipaddress": "10.100.84.254",
"ping_state": {
"avl_inPercent": 94.9474
},
"id": 399
},
{
"name": "Brisbane-rtr",
"ipaddress": "10.100.86.254",
"ping_state": {
"avl_inPercent": 95.2075
},
"id": 405
},
{
"name": "Melbourne-rtr",
"ipaddress": "10.100.87.254",
"ping_state": {
"avl_inPercent": 96.4931
},
"id": 408
},
{
"name": "Perth-rtr",
"ipaddress": "10.100.88.254",
"ping_state": {
"avl_inPercent": 95.4568
},
"id": 411
},
{
"name": "Cairo-rtr",
"ipaddress": "10.100.90.254",
"ping_state": {
"avl_inPercent": 95.8718
},
"id": 417
},
{
"name": "Johannesburg-rtr",
"ipaddress": "10.100.91.254",
"ping_state": {
"avl_inPercent": 93.7854
},
"id": 420
},
{
"name": "PortElizabeth-rtr",
"ipaddress": "10.100.93.254",
"ping_state": {
"avl_inPercent": 94.4832
},
"id": 426
},
{
"name": "Pretoria-rtr",
"ipaddress": "10.100.94.254",
"ping_state": {
"avl_inPercent": 95.6376
},
"id": 432
},
{
"name": "LosAngeles-rtr",
"ipaddress": "10.100.45.254",
"ping_state": {
"avl_inPercent": 97.3842
},
"id": 21115
},
{
"name": "Athens-rtr",
"ipaddress": "10.100.59.254",
"ping_state": {
"avl_inPercent": 94.7204
},
"id": 21118
},
{
"name": "Dublin-rtr",
"ipaddress": "10.100.65.254",
"ping_state": {
"avl_inPercent": 96.4443
},
"id": 21121
},
{
"name": "Beijing-rtr",
"ipaddress": "10.100.70.254",
"ping_state": {
"avl_inPercent": 96.2173
},
"id": 21122
},
{
"name": "Houston-rtr",
"ipaddress": "10.100.47.254",
"ping_state": {
"avl_inPercent": 97.7115
},
"id": 26477
},
{
"name": "London-rtr",
"ipaddress": "10.100.49.254",
"ping_state": {
"avl_inPercent": 97.5155
},
"id": 26478
},
{
"name": "CapeTown-rtr",
"ipaddress": "10.100.92.254",
"ping_state": {
"avl_inPercent": 95.6713
},
"id": 26480
},
{
"name": "Kolkata-rtr",
"ipaddress": "10.100.83.254",
"ping_state": {
"avl_inPercent": 95.9105
},
"id": 54838
},
{
"name": "Adelaide-rtr",
"ipaddress": "10.100.89.254",
"ping_state": {
"avl_inPercent": 96.9231
},
"id": 55175
},
{
"name": "Berlin-rtr",
"ipaddress": "10.119.50.254",
"ping_state": {
"avl_inPercent": 96.1095
},
"id": 90353
},
{
"name": "Madrid-rtr",
"ipaddress": "10.119.51.254",
"ping_state": {
"avl_inPercent": 94.8712
},
"id": 90357
},
{
"name": "Vienna-rtr",
"ipaddress": "10.119.58.254",
"ping_state": {
"avl_inPercent": 96.621
},
"id": 90419
},
{
"name": "Stockholm-rtr",
"ipaddress": "10.119.63.254",
"ping_state": {
"avl_inPercent": 94.0744
},
"id": 90448
},
{
"name": "Bangkok-rtr",
"ipaddress": "10.119.79.254",
"ping_state": {
"avl_inPercent": 94.4871
},
"id": 90506
},
{
"name": "Phoenix-rtr",
"ipaddress": "10.100.48.254",
"ping_state": {
"avl_inPercent": 93.6085
},
"id": 158201
},
{
"name": "Seoul-rtr",
"ipaddress": "10.100.74.254",
"ping_state": {
"avl_inPercent": 93.8363
},
"id": 209909
},
{
"name": "Sydney-rtr",
"ipaddress": "10.100.85.254",
"ping_state": {
"avl_inPercent": 96.3044
},
"id": 209912
}
]
}
]
}
}
Example: Deleting Multiple Devices via IP Address
Delete multiple devices in a single call by filter the device list by ipaddress.
We will delete devices with ipaddress = 10.100.59.251, 10.100.59.251.
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
-X DELETE \
"https://your.statseeker.server/api/v2.1/cdt_device/cdt_device/"
-d '{"fields":{"ipaddress":{"field":"ipaddress","filter":{"query":"IN(\"<IP ADDRESS 1>",\"<IP ADDRESS 2>\")"}}}}'
# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword, reqData):
# Run auth request
headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
url = f'https://{server}/ss-auth'
authData = {'user': user, 'password': pword}
resp = requests.post(url, headers=headers, data=authData, verify=False)
headers['Content-Type'] = 'application/json'
url = f'https://{server}/{query}'
print(f'Get Auth Token: {resp.status_code}')
if resp.status_code == 200:
# Authentication successful, Statseeker >= v5.5.4
myToken = resp.json()
headers['Authorization'] = f'Bearer {myToken["access_token"]}'
resp = requests.delete(url, headers=headers, data=reqData, verify=False)
if resp.status_code == 401:
print(f'Token auth failed: {resp.status_code}, trying basic auth')
# Either Authentication was unsuccessful (Statseeker < v5.5.4), or API set to use basic auth
# Try basic auth
resp = requests.delete(url, headers=headers, auth=(user, pword), data=reqData, verify=False)
return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/cdt_device'
# optional response formatting
query += '/?indent=3&links=none'
# data
reqData = json.dumps({"fields":{"ipaddress":{"field":"ipaddress","filter":{"query":"IN(\"<IP ADDRESS 1>\",\"<IP ADDRESS 2>\")"}}}})
# Run the request
resp = do_request(server, query, user, pword, reqData)
if resp.status_code == 200:
print(resp.status_code)
print(resp.json())
else:
print(f'Error: {resp.status_code} {resp.reason}')
# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"
def try_basic(server, query, user, pword, reqData)
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
return RestClient::Request.execute(
:method => :delete,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => reqData
)
end
def do_request(server, query, user, pword, reqData)
# Run auth request
headers = {
:content_type => "application/x-www-form-urlencoded"
}
url = "https://" + server + "/ss-auth"
authData = {
:user => user,
:password => pword
}
begin
resp = RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => authData
)
rescue RestClient::Unauthorized
# bad credentials or Statseeker not v5.5.4 or higher
try_basic(server, query, user, pword, reqData)
else
# Authentication successful. Statseeker at least v5.5.4
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
rdata = JSON.parse(resp)
headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
return RestClient::Request.execute(
:method => :delete,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => reqData
)
end
rescue RestClient::Unauthorized
# Statseeker = v5.5.4 but configured for basic auth
try_basic(server, query, user, pword, reqData)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/cdt_device'
# optional response formatting
$query += '/?indent=3&links=none'
# configure payload
$reqData = '{"fields":{"ipaddress":{"field":"ipaddress","filter":{"query":"IN(\'<IP ADDRESS 1>\',\'<IP ADDRESS 2>\')"}}}}'
# Run the request
resp = do_request($server, $query, $user, $pword, $reqData)
puts "#{resp.to_str}"
{
"version":"2.1",
"revision":"11",
"info":"The Statseeker RESTful API",
"data":{
"success":true,
"errmsg":"ok",
"time":1623649404
}
}
Interface (cdt_port)
The cdt_port resource allows you to interact with the network interfaces being monitored by Statseeker.
The cdt_port object
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
InBroadcastPkts | Rx Bcast Pkts | integer | G | Number of received broadcast packets Timeseries Data: Stats, Formats & Options |
InBroadcastPps | Rx Bcast Pps | float | G | Number of received broadcast packets per second Timeseries Data: Stats, Formats & Options |
InDiscards | Rx Discards | integer | G | Number of received discards Timeseries Data: Stats, Formats & Options |
InErrors | Rx Errors | integer | G | Number of received errors Timeseries Data: Stats, Formats & Options |
InMulticastPkts | Rx Mcast Pkts | integer | G | Number of received multicast packets Timeseries Data: Stats, Formats & Options |
InMulticastPps | Rx Mcast Pps | float | G | Number of received multicast packets per second Timeseries Data: Stats, Formats & Options |
InOctets | Rx Bytes | integer | G | Number of received bytes Timeseries Data: Stats, Formats & Options |
InOutBroadcastPkts | Total Bcast Pkts | integer | G | Combined Rx and Tx broadcast packets Timeseries Data: Stats, Formats & Options |
InOutDiscards | Total Discards | integer | G | Combined Rx and Tx Discards Timeseries Data: Stats, Formats & Options |
InOutErrors | Total Errors | integer | G | Combined Rx and Tx Errors Timeseries Data: Stats, Formats & Options |
InOutMulticastPkts | Total Mcast Pkts | integer | G | Combined Rx and Tx multicast packets Timeseries Data: Stats, Formats & Options |
InOutOctets | Total Bytes | integer | G | Combined Rx and Tx Bytes Timeseries Data: Stats, Formats & Options |
InOutSpeed | Total Speed | integer | G | Combined Rx and Tx Speed |
InOutUcastPkts | Total Ucast Pkts | integer | G | Combined Rx and Tx unicast packets Timeseries Data: Stats, Formats & Options |
InUcastPkts | Rx Ucast Pkts | integer | G | Number of received unicast packets Timeseries Data: Stats, Formats & Options |
InUcastPps | Rx Ucast Pps | float | G | Number of received unicast packets per second Timeseries Data: Stats, Formats & Options |
OutBroadcastPkts | Tx Bcast Pkts | integer | G | Number of transmitted broadcast packets Timeseries Data: Stats, Formats & Options |
OutBroadcastPps | Tx Bcast Pps | float | G | Number of transmitted broadcast packets per second Timeseries Data: Stats, Formats & Options |
OutDiscards | Tx Discards | integer | G | Number of transmitted discards Timeseries Data: Stats, Formats & Options |
OutErrors | Tx Errors | integer | G | Number of transmitted errors Timeseries Data: Stats, Formats & Options |
OutMulticastPkts | Tx Mcast Pkts | integer | G | Number of transmitted multicast packets Timeseries Data: Stats, Formats & Options |
OutMulticastPps | Tx Mcast Pps | float | G | Number of transmitted multicast packets per second Timeseries Data: Stats, Formats & Options |
OutOctets | Tx Bytes | integer | G | Number of transmitted bytes Timeseries Data: Stats, Formats & Options |
OutUcastPkts | Tx Ucast Pkts | integer | G | Number of transmitted unicast packets Timeseries Data: Stats, Formats & Options |
OutUcastPps | Tx Ucast Pps | float | G | Number of transmitted unicast packets per second Timeseries Data: Stats, Formats & Options |
RxBps | Rx Bps | float | G | Received bits per second Timeseries Data: Stats, Formats & Options |
RxDiscardsPercent | Rx Discards Percent | float | G | Rx discards percentage Timeseries Data: Stats, Formats & Options |
RxErrorPercent | Rx Errors Percent | float | G | Rx errors percentage Timeseries Data: Stats, Formats & Options |
RxTxDiscardsPercent | Total Discards Percent | float | G | Total discards percentage Timeseries Data: Stats, Formats & Options |
RxTxErrorPercent | Total Errors Percent | float | G | Total errors percentage Timeseries Data: Stats, Formats & Options |
RxUtil | Rx Util | float | G | Rx Utilization Timeseries Data: Stats, Formats & Options |
TxBps | Tx Bps | float | G | Transmitted bits per second Timeseries Data: Stats, Formats & Options |
TxDiscardsPercent | Tx Discards Percent | float | G | Tx discards percentage Timeseries Data: Stats, Formats & Options |
TxErrorPercent | Tx Errors Percent | float | G | Tx errors percentage Timeseries Data: Stats, Formats & Options |
TxUtil | Tx Util | float | G | Tx Utilization Timeseries Data: Stats, Formats & Options |
if90day | if90day | integer | G, U | Status of port usage over 90 days, one of:
|
ifAdminStatus | ifAdminStatus | string | G, U | The desired state of the interface, one of:
Can be combined with an event format for event-based analytics, see Event Formats. |
ifAlias | Alias | string | G, U | Interface Alias (ifAlias) |
ifDescr | Description | string | G, U | Interface Description (ifDescr) |
ifDuplex | ifDuplex | string | G, U | Interface Duplex, one of:
|
ifInSpeed | Rx Speed | integer | G, U | Interface Input Speed (Statseeker custom attribute) |
ifIndex | ifIndex | string | G, U | Interface Index (IF-MIB.ifIndex) |
ifName | ifName | string | G, U | Interface Name (IF-MIB.ifName) |
ifNonUnicast | NUcast Polling | string | G, U | NonUnicast Polling status of the port, one of:
|
ifOperStatus | ifOperStatus | string | G, U | Current operational status of port, one of:
Can be combined with an event format for event-based analytics, see Event Formats. |
ifOutSpeed | Tx Speed | integer | G, U | Interface Output Speed (Statseeker custom attribute) |
ifPhysAddress | PhysAddress | string | G, U | Interface MAC Address (ifPhysAddress) |
ifPoll | ifPoll | string | G, U | Polling status of the port, one of:
|
ifSpeed | Speed | integer | G, U | Interface Speed (based on ifSpeed or ifHighSpeed) |
ifTitle | Title | string | G, U | Interface Title (Statseeker custom attribute – ifTitle) |
ifType | Type | string | G, U | Interface Type, one of:
|
Links
This resource has links to the following:
Links
This resource has links to the following:
Example: Turning Off an Interface
In this example we will use the device and interface name to identify the interface and then update the polling status on the selected interface.
- Start with a device name and an interface name, Use these to get the interface ID
- Use the interface ID to update the polling status of the interface
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
-X GET \
"https://your.statseeker.server/api/v2.1/cdt_port/?fields=name,cdt_device.name&name_filter=IS(%27<INTERFACE NAME>%27)&cdt_device.name_filter=IS(%27<DEVICE NAME>%27)&indent=3&links=none"
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
-X PUT \
"https://your.statseeker.server/api/v2.1/cdt_port/<INTERFACE ID>/?indent=3"
-d '{"data":[{%27poll%27:%27off%27}]}'
# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword, reqType, reqData):
# Run auth request
headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
url = f'https://{server}/ss-auth'
authData = {'user': user, 'password': pword}
resp = requests.post(url, headers=headers, data=authData, verify=False)
headers['Content-Type'] = 'application/json'
url = f'https://{server}/{query}'
print(f'Get Auth Token: {resp.status_code}')
if resp.status_code == 200:
# Authentication successful, Statseeker >= v5.5.4
myToken = resp.json()
headers['Authorization'] = f'Bearer {myToken["access_token"]}'
if reqType == "get":
resp = requests.get(url, headers=headers, verify=False)
else:
resp = requests.put(url, headers=headers, data=reqData, verify=False)
if resp.status_code == 401:
print(f'Token auth failed: {resp.status_code}, trying basic auth')
# Either Authentication was unsuccessful (Statseeker < v5.5.4), or API set to use basic auth
# Try basic auth
if reqType == "get":
resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
else:
resp = requests.put(url, headers=headers, auth=(user, pword), data=reqData, verify=False)
return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/cdt_port'
# specify fields to be returned
query += '/?fields=name,cdt_device.name'
# Filters
query += '&name_filter=IS("<INTERFACE NAME>")&cdt_device.name_filter=IS("<DEVICE NAME>")'
# optional response formatting
query += '&indent=3&links=none'
# set request type
reqType = 'get'
data=''
portId=''
# Run the request
resp = do_request(server, query, user, pword, reqType, data)
if resp.status_code == 200:
print(resp.status_code)
print(resp.json())
portId=str(resp.json()['data']['objects'][0]['data'][0]['id'])
print("Interface ID: " + portId)
else:
print(f'Error: {resp.status_code} {resp.reason}')
# build next query
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/cdt_port/' + portId
# optional response formatting
query += '/?indent=3&links=none'
# update poll status to turn off polling
data = json.dumps({"data":[{"poll":"off"}]})
# set request type
reqType = 'put'
# Run the request
resp = do_request(server, query, user, pword, reqType, data)
if resp.status_code == 200:
print(resp.status_code)
print(resp.json())
else:
print(f'Error: {resp.status_code} {resp.reason}')
# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"
def try_basic(server, query, user, pword, reqType, reqData)
headers = {
:content_type => "json"
}
url = "https://" + server + "/" + query
headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
return RestClient::Request.execute(
:method => reqType,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => reqData
)
end
def do_request(server, query, user, pword, reqType, reqData)
# Run auth request
headers = {
:content_type => "application/x-www-form-urlencoded"
}
url = "https://" + server + "/ss-auth"
authData = {
:user => user,
:password => pword
}
begin
resp = RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => authData
)
rescue RestClient::Unauthorized
# bad credentials or Statseeker not v5.5.4 or higher
try_basic(server, query, user, pword, reqType, reqData)
else
# Authentication successful. Statseeker at least v5.5.4
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
rdata = JSON.parse(resp)
headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
return RestClient::Request.execute(
:method => reqType,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => reqData
)
end
rescue RestClient::Unauthorized
# Statseeker = v5.5.4 but configured for basic auth
try_basic(server, query, user, pword, reqType, reqData)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/cdt_port'
# specify fields to be returned
$query += '/?fields=name,cdt_device.name'
# Filters
$query += '&name_filter=IS("<INTERFACE NAME>")&cdt_device.name_filter=IS("<DEVICE NAME>")'
# optional response formatting
$query += '&indent=3&links=none'
$reqData = ''
# Set request type
$reqType = 'get'
# Run the request
resp = do_request($server, $query, $user, $pword, $reqType, $reqData)
puts "#{resp.to_str}"
rData = JSON.parse(resp)
$p = rData['data']['objects'][0]['data'][0]['id']
# output interface ID to screen
puts "#{'interfaceID: ' + $p.to_s}"
# build next query
# API root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/cdt_port/' + $p.to_s
# specify fields to be returned
$query += '/?indent=3&links=none'
# update poll status to turn off polling
$reqData = '{"data":[{"poll":"off"}]}'
# set request type
$reqType = 'put'
# Run the request
resp = do_request($server, $query, $user, $pword, $reqType, $reqData)
puts "#{resp.to_str}"
#This response includes some logging (preceding the response data object) which is only relevant to the Python and Ruby implementations
200
{
"version":"2.1",
"revision":"11",
"info":"The Statseeker RESTful API",
"data":{
"success":true,
"errmsg":"ok",
"time":1623655171,
"objects":[
{
"type":"cdt_port",
"sequence":5,
"status":{
"success":true,
"errcode":0
},
"data_total":1,
"data":[
{
"name":"<INTERFACE NAME>",
"cdt_device.name":"<DEVICE NAME>",
"id":<INTERFACE ID>"
}
]
}
]
}
}
"Interface ID":<INTERFACE ID>"
200
{
"version":"2.1",
"revision":"11",
"info":"The Statseeker RESTful API",
"data":{
"success":true,
"errmsg":"ok",
"time":1623655172
}
}
Example: Requesting Timeseries Data from all Interfaces on a Device
Request:
- Identifying data: the name and ID of the interface
- Timeseries data: total inbound/outbound discard percentage for the reporting period, minimum, average, and 95th percentile values for inbound/outbound utilization
- Time filter of ‘start of the day until now’
- Sort results on the average inbound utilization, descending
- Filter the results to show only those interfaces on a specific device
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
-X GET \
"https://your.statseeker.server/api/v2.1/cdt_port/?fields=deviceid,id,name,RxTxDiscardsPercent,TxUtil,RxUtil&RxUtil_sort=1,desc,avg&deviceid_filter=IS(%22<DEVICE ID>%22)&RxUtil_formats=95th,avg,min&TxUtil_formats=95th,avg,min&RxTxDiscardsPercent_formats=total&timefilter=range=start_of_today%20to%20now"
# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
# Run auth request
headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
url = f'https://{server}/ss-auth'
authData = {'user': user, 'password': pword}
resp = requests.post(url, headers=headers, data=authData, verify=False)
headers['Content-Type'] = 'application/json'
url = f'https://{server}/{query}'
print(f'Get Auth Token: {resp.status_code}')
if resp.status_code == 200:
# Authentication successful, Statseeker >= v5.5.4
myToken = resp.json()
headers['Authorization'] = f'Bearer {myToken["access_token"]}'
resp = requests.get(url, headers=headers, verify=False)
if resp.status_code == 401:
print(f'Token auth failed: {resp.status_code}, trying basic auth')
# Either Authentication was unsuccessful (Statseeker < v5.5.4), or API set to use basic auth
# Try basic auth
resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/cdt_port'
# specify fields to be returned
query += '/?fields=deviceid,id,name,RxTxDiscardsPercent,TxUtil,RxUtil'
# specify data formats
query += '&formats=95th,avg,min&RxTxDiscardsPercent_formats=total'
# specify filters
query += '&deviceid_filter=IS("<DEVICE ID>")&timefilter=range=start_of_today to now'
# optional response formatting
query += '&indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
print(resp.status_code)
print(resp.json())
else:
print(f'Error: {resp.status_code} {resp.reason}')
# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"
def try_basic(server, query, user, pword)
headers = {
:content_type => "json"
}
url = "https://" + server + "/" + query
headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false
)
end
def do_request(server, query, user, pword)
# Run auth request
headers = {
:content_type => "application/x-www-form-urlencoded"
}
url = "https://" + server + "/ss-auth"
authData = {
:user => user,
:password => pword
}
begin
resp = RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => authData
)
rescue RestClient::Unauthorized
# bad credentials or Statseeker not v5.5.4 or higher
try_basic(server, query, user, pword)
else
# Authentication successful. Statseeker at least v5.5.4
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
rdata = JSON.parse(resp)
headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false,
)
end
rescue RestClient::Unauthorized
# Statseeker = v5.5.4 but configured for basic auth
try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/cdt_port'
# specify fields to be returned
$query += '/?fields=deviceid,id,name,RxTxDiscardsPercent,TxUtil,RxUtil'
# specify data formats
$query += '&formats=95th,avg,min&RxTxDiscardsPercent_formats=total'
# Filters
$query += '&timefilter=range=start_of_today to now&deviceid_filter=IS('<DEVICE ID>')'
# optional response formatting
$query += '&indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"
{
'version':'2.1',
'revision':'11',
'info':'The Statseeker RESTful API',
'data':{
'success':True,
'errmsg':'ok',
'time':1623714662,
'objects':[
{
'type':'cdt_port',
'sequence':11,
'status':{
'success':True,
'errcode':0
},
'data_total':5,
'data':[
{
'deviceid':<DEVICE ID>,
'id':5267,
'name':'Gi0/1',
'RxTxDiscardsPercent':{
'total':0
},
'TxUtil':{
'min':1.40207,
'avg':1.88639,
'95th':2.19703
},
'RxUtil':{
'min':1.27934,
'avg':1.87145,
'95th':2.11322
}
},
{
'deviceid':<DEVICE ID>,
'id':5268,
'name':'Gi0/2',
'RxTxDiscardsPercent':{
'total':0
},
'TxUtil':{
'min':1.20236,
'avg':1.9108,
'95th':2.26653
},
'RxUtil':{
'min':1.52055,
'avg':1.8971,
'95th':2.14601
}
},
{
'deviceid':<DEVICE ID>,
'id':5269,
'name':'Gi0/3',
'RxTxDiscardsPercent':{
'total':0.00919672
},
'TxUtil':{
'min':9.02538,
'avg':32.583,
'95th':71.7206
},
'RxUtil':{
'min':9.19671,
'avg':45.9247,
'95th':71.0976
}
},
{
'deviceid':<DEVICE ID>,
'id':5270,
'name':'Gi0/4',
'RxTxDiscardsPercent':{
'total':0
},
'TxUtil':{
'min':1.19819,
'avg':25.2168,
'95th':37.0137
},
'RxUtil':{
'min':0.948108,
'avg':23.3934,
'95th':37.0401
}
},
{
'deviceid':<DEVICE ID>,
'id':5271,
'name':'Gi0/5',
'RxTxDiscardsPercent':{
'total':0
},
'TxUtil':{
'min':0.833396,
'avg':0.933941,
'95th':0.950772
},
'RxUtil':{
'min':0.833468,
'avg':0.933937,
'95th':0.950873
}
}
]
}
]
}
}
Example: Return the 10 Most Congested Interfaces (inbound) over the Last 30mins
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
-X GET \
'https://your.statseeker.server/api/v2.1/cdt_port/?fields=deviceid,id,name,RxUtil&RxUtil_formats=vals,avg&RxUtil_timefilter=range=now%20-%2030m%20to%20now%20-%201m&RxUtil_sort=1,desc,avg&limit=10&indent=3'
# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
# Run auth request
headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
url = f'https://{server}/ss-auth'
authData = {'user': user, 'password': pword}
resp = requests.post(url, headers=headers, data=authData, verify=False)
headers['Content-Type'] = 'application/json'
url = f'https://{server}/{query}'
print(f'Get Auth Token: {resp.status_code}')
if resp.status_code == 200:
# Authentication successful, Statseeker >= v5.5.4
myToken = resp.json()
headers['Authorization'] = f'Bearer {myToken["access_token"]}'
resp = requests.get(url, headers=headers, verify=False)
if resp.status_code == 401:
print(f'Token auth failed: {resp.status_code}, trying basic auth')
# Either Authentication was unsuccessful (Statseeker < v5.5.4), or API set to use basic auth
# Try basic auth
resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/cdt_port'
# specify fields to be returned
query += '/?fields=deviceid,id,name,RxUtil'
# specify data formats
query += '&RxUtil_formats=vals,avg'
# Filters and sorting
query += '&RxUtil_timefilter=range=now - 30m to now - 1m&limit=10&RxUtil_sort=1,desc,avg'
# optional response formatting
query += '&indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
print(resp.status_code)
print(resp.json())
else:
print(f'Error: {resp.status_code} {resp.reason}')
# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"
def try_basic(server, query, user, pword)
headers = {
:content_type => "json"
}
url = "https://" + server + "/" + query
headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false
)
end
def do_request(server, query, user, pword)
# Run auth request
headers = {
:content_type => "application/x-www-form-urlencoded"
}
url = "https://" + server + "/ss-auth"
authData = {
:user => user,
:password => pword
}
begin
resp = RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => authData
)
rescue RestClient::Unauthorized
# bad credentials or Statseeker not v5.5.4 or higher
try_basic(server, query, user, pword)
else
# Authentication successful. Statseeker at least v5.5.4
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
rdata = JSON.parse(resp)
headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false,
)
end
rescue RestClient::Unauthorized
# Statseeker = v5.5.4 but configured for basic auth
try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/cdt_port'
# specify fields to be returned
$query += '/?fields=deviceid,id,name,RxUtil'
# specify data formats
$query += '&RxUtil_formats=vals,avg'
# Filters and sorting
$query += '&RxUtil_timefilter=range=now - 30m to now - 1m&limit=10&RxUtil_sort=1,desc,avg'
# optional response formatting
$query += '&indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"
{
"version":"2.1",
"revision":"11",
"info":"The Statseeker RESTful API",
"data":{
"success":true,
"errmsg":"ok",
"time":1623715763,
"objects":[
{
"type":"cdt_port",
"sequence":11,
"status":{
"success":true,
"errcode":0
},
"data_total":21178,
"data":[
{
"deviceid":666,
"id":25349,
"name":"int.673",
"RxUtil":{
"vals":[
58.412,
59.2569,
62.7188,
62.8199,
60.9338,
61.2049,
62.5076,
64.7656,
68.891,
74.0913,
76.311,
79.5807,
82.8285,
89.1304,
93.4463,
94.0603,
97.8606,
102.481,
108.23,
108.733,
109.634,
111.784,
110.537,
118.258,
120.432,
121.998,
124.984,
131.161,
129.887
],
"avg":91.2737
}
},
{
"deviceid":576,
"id":14508,
"name":"Gi2/6",
"RxUtil":{
"vals":[
14.7061,
84.3344,
91.9828,
93.1667,
94.9071,
95.082,
94.8615,
91.9828,
94.6667,
95,
95.1452,
94.8721,
93.4828,
93.3333,
96.3333,
95.2404,
91.9404,
93.1525,
93.3333,
91.8333,
94.8118,
96.3663,
93.6552,
91.8333,
91.6667,
94.8118,
94.8721,
93.4828,
93.3333
],
"avg":90.8341
}
},
{
"deviceid":607,
"id":19079,
"name":"Gi5/1",
"RxUtil":{
"vals":[
32.9511,
82.6984,
94.9561,
93.7022,
92.1038,
93.1148,
95.8307,
92.4708,
94.5127,
90.6501,
91.9098,
95.467,
95.2381,
95,
95.0683,
92.6169,
95.4101,
95.1675,
93.6635,
93.4426,
94.8462,
94.8999,
94.8992,
92.2081,
94.4444,
93.8757,
95.8758,
18.9708,
2.16111
],
"avg":85.7985
}
},
{
"deviceid":560,
"id":12370,
"name":"Gi4/24",
"RxUtil":{
"vals":[
93.6138,
96.0178,
93.7018,
94.878,
95.082,
95.0123,
94.928,
94.9887,
95,
91.9887,
94.7371,
94.8776,
96.4521,
95.2669,
94.9375,
82.538,
13.7182,
1.89558,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
"avg":84.4241
}
},
{
"deviceid":572,
"id":14061,
"name":"Gi1/16",
"RxUtil":{
"vals":[
94.9785,
94.8721,
91.9828,
93.1667,
94.9071,
95.082,
94.8615,
91.9828,
94.6667,
95,
95.1452,
94.8721,
94.9828,
93.5,
93.2316,
93.521,
91.7614,
93.1525,
94.8333,
92,
94.8118,
96.3663,
93.6552,
60.9933,
7.39,
1.83817,
1.91872,
1.8731,
1.86667
],
"avg":77.2143
}
},
{
"deviceid":591,
"id":17044,
"name":"Gi6/20",
"RxUtil":{
"vals":[
1.87849,
36.1878,
87.6018,
93.6762,
94.8087,
95.082,
96.2094,
93.8999,
94.7404,
93.517,
93.6706,
95.8482,
95.2143,
95.0697,
95.0137,
92.5529,
95.5319,
95.1779,
93.5706,
93.3333,
94.9524,
94.9097,
96.3131,
95.2415,
93.5833,
22.1281,
3.58259,
1.87595,
1.895
],
"avg":77.1402
}
},
{
"deviceid":92491,
"id":93714,
"name":"Gi5/21",
"RxUtil":{
"vals":[
75.9317,
76.1367,
75.4496,
74.7143,
74.1968,
75.9783,
76.6457,
76.8767,
76.9577,
76.8083,
76.3996,
76.9991,
77.3082,
76.5974,
75.1579,
74.208,
75.7776,
74.1712,
75.5847,
76.9485,
73.8196,
73.5756,
74.4403,
73.1962,
73.1154,
70.7376,
71.3308,
74.8943,
76.6727
],
"avg":75.1942
}
},
{
"deviceid":468,
"id":7245,
"name":"Gi0/4",
"RxUtil":{
"vals":[
74.404,
74.1828,
76.5702,
77.0775,
77.3333,
75.5785,
73.5372,
74.079,
74.8937,
73.9347,
72.175,
73.2957,
72.9874,
76.0928,
76.1607,
74.4128,
74.838,
75.9916,
77.3333,
77.2873,
74.482,
72.616,
74.6077,
73.5125,
71.4153,
70.4813,
76.5989,
77.155,
74.8029
],
"avg":74.753
}
},
{
"deviceid":542,
"id":11260,
"name":"Gi2/20",
"RxUtil":{
"vals":[
95.1452,
94.9481,
93.4181,
94.8958,
93.6339,
94.7923,
93.3563,
91.9333,
94.6271,
93.428,
94.9672,
94.8721,
94.9828,
93.5984,
94.7434,
95.1367,
93.3778,
93.3103,
96.3333,
93.6667,
94.9785,
94.9481,
62.6062,
7.5439,
1.87197,
1.89782,
1.86734,
1.83621,
1.89333
],
"avg":74.2969
}
},
{
"deviceid":603,
"id":18345,
"name":"Gi3/11",
"RxUtil":{
"vals":[
75.2432,
76.9031,
74.3828,
73.5258,
73.8093,
74.4585,
75.7062,
73.6734,
74.6045,
74.9261,
73.7239,
74.2233,
75.8226,
75.2778,
74.8531,
76.0055,
74.3657,
75.7361,
73.3104,
70.7072,
72.137,
71.5355,
75.3817,
72.7648,
72.9251,
73.4308,
72.6468,
73.2978,
72.2705
],
"avg":74.0568
}
}
]
}
]
}
}
Example: Return the 10 Busiest Interfaces, According to their 90th Percentile Values, over the Last Hour
We are returning the deviceid and interface name to identify the interface.
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
-X GET \
"https://your.statseeker.server/api/v2.1/cdt_port/?fields=cdt_device.name,name,RxUtil,InOctets&timefilter=range=now%20-%201h%20to%20now&RxUtil_formats=avg,max&InOctets_formats=percentile&InOctets_stats=%7B%22percentile%22:90%7D&InOctets_sort=1,desc,percentile&limit=10&indent=3&links=none"
# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
# Run auth request
headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
url = f'https://{server}/ss-auth'
authData = {'user': user, 'password': pword}
resp = requests.post(url, headers=headers, data=authData, verify=False)
headers['Content-Type'] = 'application/json'
url = f'https://{server}/{query}'
print(f'Get Auth Token: {resp.status_code}')
if resp.status_code == 200:
# Authentication successful, Statseeker >= v5.5.4
myToken = resp.json()
headers['Authorization'] = f'Bearer {myToken["access_token"]}'
resp = requests.get(url, headers=headers, verify=False)
if resp.status_code == 401:
print(f'Token auth failed: {resp.status_code}, trying basic auth')
# Either Authentication was unsuccessful (Statseeker < v5.5.4), or API set to use basic auth
# Try basic auth
resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/cdt_port'
# specify fields to be returned
query += '?fields=cdt_device.name,name,RxUtil,InOctets'
# specify data formats
query += '&RxUtil_formats=avg,max&InOctets_formats=percentile&InOctets_stats={%22percentile%22:90}'
# Filters and sorting
query += '&timefilter=range=now -1h to now&InOctets_sort=1,desc,percentile&limit=10'
# optional response formatting
query += '&indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
print(resp.status_code)
print(resp.json())
else:
print(f'Error: {resp.status_code} {resp.reason}')
# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"
def try_basic(server, query, user, pword)
headers = {
:content_type => "json"
}
url = "https://" + server + "/" + query
headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false
)
end
def do_request(server, query, user, pword)
# Run auth request
headers = {
:content_type => "application/x-www-form-urlencoded"
}
url = "https://" + server + "/ss-auth"
authData = {
:user => user,
:password => pword
}
begin
resp = RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => authData
)
rescue RestClient::Unauthorized
# bad credentials or Statseeker not v5.5.4 or higher
try_basic(server, query, user, pword)
else
# Authentication successful. Statseeker at least v5.5.4
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
rdata = JSON.parse(resp)
headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false,
)
end
rescue RestClient::Unauthorized
# Statseeker = v5.5.4 but configured for basic auth
try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/cdt_port'
# specify fields to be returned
$query += '/?fields=cdt_device.name,name,RxUtil,InOctets'
# specify data formats
$query += '&RxUtil_formats=avg,max&InOctets_formats=percentile&InOctets_stats={"percentile":90}'
# Filters and sorting
$query += '&timefilter=range=now -1h to now&InOctets_sort=1,desc,percentile&limit=10'
# optional response formatting
$query += '&indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"
{
"version":"2.1",
"revision":"11",
"info":"The Statseeker RESTful API",
"data":{
"success":true,
"errmsg":"ok",
"time":1623720470,
"objects":[
{
"type":"cdt_port",
"sequence":11,
"status":{
"success":true,
"errcode":0
},
"data_total":21178,
"data":[
{
"cdt_device.name":"R-GMM-AGG-07",
"name":"Po15",
"RxUtil":{
"max":15.4582,
"avg":13.5477
},
"InOctets":{
"percentile":112727000000.0
},
"id":28487
},
{
"cdt_device.name":"R-GMM-AGG-07",
"name":"Tu2924",
"RxUtil":{
"max":7.72051,
"avg":6.92405
},
"InOctets":{
"percentile":57139800000.0
},
"id":28512
},
{
"cdt_device.name":"R-GMM-AGG-07",
"name":"Tu3937",
"RxUtil":{
"max":7.71764,
"avg":6.82324
},
"InOctets":{
"percentile":54429300000.0
},
"id":28563
},
{
"cdt_device.name":"R-GMM-AGG-07",
"name":"Tu2942",
"RxUtil":{
"max":7.61665,
"avg":5.65903
},
"InOctets":{
"percentile":53692000000.0
},
"id":28528
},
{
"cdt_device.name":"R-GMM-AGG-07",
"name":"Tu2912",
"RxUtil":{
"max":4.5065,
"avg":3.86295
},
"InOctets":{
"percentile":32249500000.0
},
"id":28504
},
{
"cdt_device.name":"CDT-IP-Interface-Stats",
"name":"Ethernet3/30",
"RxUtil":{
"max":38.799,
"avg":35.7174
},
"InOctets":{
"percentile":28524500000.0
},
"id":25042
},
{
"cdt_device.name":"CDT-IP-Interface-Stats",
"name":"Ethernet3/27",
"RxUtil":{
"max":38.9375,
"avg":34.1723
},
"InOctets":{
"percentile":28171200000.0
},
"id":25038
},
{
"cdt_device.name":"R-GMM-AGG-07",
"name":"Tu3936",
"RxUtil":{
"max":3.8409,
"avg":3.41211
},
"InOctets":{
"percentile":27906200000.0
},
"id":28562
},
{
"cdt_device.name":"CDT-IP-Interface-Stats",
"name":"Ethernet3/18",
"RxUtil":{
"max":38.4306,
"avg":35.0934
},
"InOctets":{
"percentile":27854000000.0
},
"id":25028
},
{
"cdt_device.name":"CDT-IP-Interface-Stats",
"name":"Ethernet3/11",
"RxUtil":{
"max":35.2323,
"avg":28.6036
},
"InOctets":{
"percentile":25326800000.0
},
"id":25021
}
]
}
]
}
}
Example: Return the Inbound Traffic 90th Percentile for the Last Hour on a specific Interface
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
-X GET \
"https://your.statseeker.server/api/v2.1/cdt_port/<INTERFACE ID>/RxUtil?timefilter=range=%20now%20-%201h%20to%20now&formats=percentile&stats=%7B%22percentile%22:90%7D&links=none&indent=3"
# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
# Run auth request
headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
url = f'https://{server}/ss-auth'
authData = {'user': user, 'password': pword}
resp = requests.post(url, headers=headers, data=authData, verify=False)
headers['Content-Type'] = 'application/json'
url = f'https://{server}/{query}'
print(f'Get Auth Token: {resp.status_code}')
if resp.status_code == 200:
# Authentication successful, Statseeker >= v5.5.4
myToken = resp.json()
headers['Authorization'] = f'Bearer {myToken["access_token"]}'
resp = requests.get(url, headers=headers, verify=False)
if resp.status_code == 401:
print(f'Token auth failed: {resp.status_code}, trying basic auth')
# Either Authentication was unsuccessful (Statseeker < v5.5.4), or API set to use basic auth
# Try basic auth
resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/cdt_port/<INTERFACE ID>/RxUtil'
# specify data formats
query += '/?formats=percentile&stats={"percentile":90}'
# Filters
query += '&timefilter=range=now -1h to now'
# optional response formatting
query += '&indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
print(resp.status_code)
print(resp.json())
else:
print(f'Error: {resp.status_code} {resp.reason}')
# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"
def try_basic(server, query, user, pword)
headers = {
:content_type => "json"
}
url = "https://" + server + "/" + query
headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false
)
end
def do_request(server, query, user, pword)
# Run auth request
headers = {
:content_type => "application/x-www-form-urlencoded"
}
url = "https://" + server + "/ss-auth"
authData = {
:user => user,
:password => pword
}
begin
resp = RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => authData
)
rescue RestClient::Unauthorized
# bad credentials or Statseeker < v5.5.4
try_basic(server, query, user, pword)
else
# Authentication successful. Statseeker >= v5.5.4
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
rdata = JSON.parse(resp)
headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false,
)
end
rescue RestClient::Unauthorized
# Statseeker = v5.5.4 but configured for basic auth
try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/cdt_port/<INTERFACE ID>/RxUtil'
# specify data formats
$query += '/?formats=percentile&stats={"percentile":90}'
# Filters
$query += '&timefilter=range=now -1h to now'
# optional response formatting
$query += '&indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"
{
'version':'2.1',
'revision':'11',
'info':'The Statseeker RESTful API',
'data':{
'success':True,
'errmsg':'ok',
'time':1623730579,
'objects':[
{
'type':'cdt_port',
'sequence':11,
'status':{
'success':True,
'errcode':0
},
'data_total':1,
'data':[
{
'RxUtil':{
'percentile':96.375
},
'id':<INTERFACE ID>
}
]
}
]
}
}
Example: Return traffic rate metrics for an interface, during business hours on a specific date
We are:
- Filtering to a specified interface on a specified device
- Restricting the response to between 6am – 6pm, on March 5th 2020
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
-X GET \
'https://your.statseeker.server/api/v2.1/cdt_port?fields=name,deviceid,cdt_device.name,ifAlias,ifDescr,RxBps&name_filter=IS("<INTERFACE NAME>")&cdt_device.name_filter=IS("<DEVICE NAME>")&formats=95th,median,avg&timefilter=range=2020-03-05 to 2020-03-06;time=08:00 to 18:00&indent=3&links=none'
# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
# Run auth request
headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
url = f'https://{server}/ss-auth'
authData = {'user': user, 'password': pword}
resp = requests.post(url, headers=headers, data=authData, verify=False)
headers['Content-Type'] = 'application/json'
url = f'https://{server}/{query}'
print(f'Get Auth Token: {resp.status_code}')
if resp.status_code == 200:
# Authentication successful, Statseeker >= v5.5.4
myToken = resp.json()
headers['Authorization'] = f'Bearer {myToken["access_token"]}'
resp = requests.get(url, headers=headers, verify=False)
if resp.status_code == 401:
print(f'Token auth failed: {resp.status_code}, trying basic auth')
# Either Authentication was unsuccessful (Statseeker < v5.5.4), or API set to use basic auth
# Try basic auth
resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/cdt_port'
# specify fields to be returned
query += '/?fields=name,deviceid,cdt_device.name,ifAlias,ifDescr,RxBps'
# specify data formats
query += '&formats=95th,median,avg'
# Filters
query += '&name_filter=IS(%22<INTERFACE NAME>%22)&cdt_device.name_filter=IS(%22<DEVICE NAME>%22)&timefilter=range=2020-03-05 to 2020-03-06;time=08:00 to 18:00'
# optional response formatting
query += '&indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
print(resp.status_code)
print(resp.json())
else:
print(f'Error: {resp.status_code} {resp.reason}')
# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"
def try_basic(server, query, user, pword)
headers = {
:content_type => "json"
}
url = "https://" + server + "/" + query
headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false
)
end
def do_request(server, query, user, pword)
# Run auth request
headers = {
:content_type => "application/x-www-form-urlencoded"
}
url = "https://" + server + "/ss-auth"
authData = {
:user => user,
:password => pword
}
begin
resp = RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => authData
)
rescue RestClient::Unauthorized
# bad credentials or Statseeker < v5.5.4
try_basic(server, query, user, pword)
else
# Authentication successful. Statseeker >= v5.5.4
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
rdata = JSON.parse(resp)
headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false,
)
end
rescue RestClient::Unauthorized
# Statseeker = v5.5.4 but configured for basic auth
try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/cdt_port'
# specify fields to be returned
$query += '/?fields=name,deviceid,cdt_device.name,ifAlias,ifDescr,RxBps'
# specify data formats
$query += '&formats=95th,median,avg'
# Filters
$query += '&name_filter=IS("<INTERFACE NAME>")&cdt_device.name_filter=IS("<DEVICE NAME>")&timefilter=range=2020-03-05 to 2020-03-06;time=08:00 to 18:00'
# optional response formatting
$query += '&indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"
{
"version": "2.1",
"revision": "13",
"info": "The Statseeker RESTful API",
"data": {
"success": true,
"errmsg": "ok",
"time": 1615501619,
"objects": [
{
"type": "cdt_port",
"sequence": 1,
"status": {
"success": true,
"errcode": 0
},
"data_total": 1,
"data": [
{
"name": "<INTERFACE NAME>",
"deviceid": 26478,
"cdt_device.name": "<DEVICE NAME>",
"ifAlias": "Link to SanJose-core",
"ifDescr": "GigabitEthernet0/1",
"RxBps": {
"avg": 19653900.0,
"median": 19410600.0,
"95th": 23579900.0
}
"id": 26486,
}
]
}
]
}
}
Group
The group resource allows you to create and populate the groups used by Statseeker for reporting, and for authorization when restricting visibility and access to functionality for users within Statseeker.
The group object
Field ID | Field Title | Type | Get, Add, Update | Description | ||||||||||||||||
entities | Entities | object | G, U | The entities that are assigned to this group
|
||||||||||||||||
id | ID | integer | G | ID of the group | ||||||||||||||||
name | Name | string | G, A (required), U | Name of the group |
Group Mode
The Group object requires a mode be specified when performing PUT requests to make changes to the group’s members (entities). The mode specifies what the API should do with the entities when making changes.
Mode | Description |
clear | Remove the specified entities from the group |
set | Remove all existing entities and then add the specified entities to the group |
add | Add the specified entities to the group |
Example: Create a Group
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
-X POST \
"https://your.statseeker.server/api/v2.1/group/?indent=3" \
-d '{"data":[{"name":"<GROUP NAME>"}]}'
# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword, reqData):
# Run auth request
headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
url = f'https://{server}/ss-auth'
authData = {'user': user, 'password': pword}
resp = requests.post(url, headers=headers, data=authData, verify=False)
headers['Content-Type'] = 'application/json'
url = f'https://{server}/{query}'
print(f'Get Auth Token: {resp.status_code}')
if resp.status_code == 200:
# Authentication successful, Statseeker >= v5.5.4
myToken = resp.json()
headers['Authorization'] = f'Bearer {myToken["access_token"]}'
resp = requests.post(url, headers=headers, data=reqData, verify=False)
if resp.status_code == 401:
print(f'Token auth failed: {resp.status_code}, trying basic auth')
# Either Authentication was unsuccessful (Statseeker < v5.5.4), or API set to use basic auth
# Try basic auth
resp = requests.post(url, headers=headers, auth=(user, pword), data=reqData, verify=False)
return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/group'
# optional response formatting
query += '/?indent=3&links=none'
# data
reqData = json.dumps({"data":[{"name":"<GROUP NAME>"}]})
# Run the request
resp = do_request(server, query, user, pword, reqData)
if resp.status_code == 200:
print(resp.status_code)
print(resp.json())
else:
print(f'Error: {resp.status_code} {resp.reason}')
# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"
def try_basic(server, query, user, pword, reqData)
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
return RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => reqData
)
end
def do_request(server, query, user, pword, reqData)
# Run auth request
headers = {
:content_type => "application/x-www-form-urlencoded"
}
url = "https://" + server + "/ss-auth"
authData = {
:user => user,
:password => pword
}
begin
resp = RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => authData
)
rescue RestClient::Unauthorized
# bad credentials or Statseeker < v5.5.4
try_basic(server, query, user, pword, reqData)
else
# Authentication successful. Statseeker >= v5.5.4
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
rdata = JSON.parse(resp)
headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
return RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => reqData
)
end
rescue RestClient::Unauthorized
# Statseeker = v5.5.4 but configured for basic auth
try_basic(server, query, user, pword, reqData)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/group'
# optional response formatting
$query += '/?indent=3&links=none'
# configure payload
$reqData = '{"data":[{"name":"<GROUP NAME>"}]}'
# Run the request
resp = do_request($server, $query, $user, $pword, $reqData)
puts "#{resp.to_str}"
{
"version":"2.1",
"revision":"11",
"info":"The Statseeker RESTful API",
"data":{
"success":true,
"errmsg":"ok",
"time":1623731624,
"objects":[
{
"type":"group",
"sequence":8,
"status":{
"success":true,
"errcode":0
},
"data_total":1,
"data":[
{
"name":"<GROUP NAME>",
"id":94551
}
]
}
]
}
}
Example: Populate a Group
When populating a group you use the /entities field endpoint and must specify a mode instructing the API on how to populate the group.
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
-X PUT \
"https://your.statseeker.server/api/v2.1/group/<GROUP ID>/entities/?indent=3" \
-d '{"value":[286,287,288,289,290,291,292,293],"mode":"add"}'
# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword, reqData):
# Run auth request
headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
url = f'https://{server}/ss-auth'
authData = {'user': user, 'password': pword}
resp = requests.post(url, headers=headers, data=authData, verify=False)
headers['Content-Type'] = 'application/json'
url = f'https://{server}/{query}'
print(f'Get Auth Token: {resp.status_code}')
if resp.status_code == 200:
# Authentication successful, Statseeker >= v5.5.4
myToken = resp.json()
headers['Authorization'] = f'Bearer {myToken["access_token"]}'
resp = requests.put(url, headers=headers, data=reqData, verify=False)
if resp.status_code == 401:
print(f'Token auth failed: {resp.status_code}, trying basic auth')
# Either Authentication was unsuccessful (Statseeker < v5.5.4), or API set to use basic auth
# Try basic auth
resp = requests.put(url, headers=headers, auth=(user, pword), data=reqData, verify=False)
return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/group/<GROUP ID>/entities'
# optional response formatting
query += '/?indent=3&links=none'
# data
reqData = json.dumps({"value":[286,287,288,289,290,291,292,293],"mode":"add"})
# Run the request
resp = do_request(server, query, user, pword, reqData)
if resp.status_code == 200:
print(resp.status_code)
print(resp.json())
else:
print(f'Error: {resp.status_code} {resp.reason}')
# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"
def try_basic(server, query, user, pword, reqData)
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
return RestClient::Request.execute(
:method => :put,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => reqData
)
end
def do_request(server, query, user, pword, reqData)
# Run auth request
headers = {
:content_type => "application/x-www-form-urlencoded"
}
url = "https://" + server + "/ss-auth"
authData = {
:user => user,
:password => pword
}
begin
resp = RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => authData
)
rescue RestClient::Unauthorized
# bad credentials or Statseeker < v5.5.4
try_basic(server, query, user, pword, reqData)
else
# Authentication successful. Statseeker >= v5.5.4
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
rdata = JSON.parse(resp)
headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
return RestClient::Request.execute(
:method => :put,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => reqData
)
end
rescue RestClient::Unauthorized
# Statseeker = v5.5.4 but configured for basic auth
try_basic(server, query, user, pword, reqData)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/group/<GROUP ID>/entities'
# optional response formatting
$query += '/?indent=3&links=none'
# configure payload
$reqData = '{"value":[286,287,288,289,290,291,292,293],"mode":"add"}'
# Run the request
resp = do_request($server, $query, $user, $pword, $reqData)
puts "#{resp.to_str}"
{
"info":"The Statseeker RESTful API",
"data":{
"errmsg":"ok",
"success":true,
"time":1496200162
},
"links":[
{
"link":"/api/v2.1/group/<GROUP ID>/entities?&indent=3",
"rel":"self"
},
{
"link":"/api/v2.1",
"rel":"base"
},
{
"link":"/api/v2.1/group/<GROUP ID>",
"rel":"collection"
}
],
"api_version":"2.1"
}
Example: Deleting a Group
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
-X DELETE \
"https://your.statseeker.server/api/v2.1/group/<GROUP ID>/?indent=3&links=none"
# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
# Run auth request
headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
url = f'https://{server}/ss-auth'
authData = {'user': user, 'password': pword}
resp = requests.post(url, headers=headers, data=authData, verify=False)
headers['Content-Type'] = 'application/json'
url = f'https://{server}/{query}'
print(f'Get Auth Token: {resp.status_code}')
if resp.status_code == 200:
# Authentication successful, Statseeker >= v5.5.4
myToken = resp.json()
headers['Authorization'] = f'Bearer {myToken["access_token"]}'
resp = requests.delete(url, headers=headers, data=reqData, verify=False)
if resp.status_code == 401:
print(f'Token auth failed: {resp.status_code}, trying basic auth')
# Either Authentication was unsuccessful (Statseeker < v5.5.4), or API set to use basic auth
# Try basic auth
resp = requests.delete(url, headers=headers, auth=(user, pword), data=reqData, verify=False)
return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/group/<GROUP ID>'
# optional response formatting
query += '/?indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
print(resp.status_code)
print(resp.json())
else:
print(f'Error: {resp.status_code} {resp.reason}')
# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"
def try_basic(server, query, user, pword)
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
return RestClient::Request.execute(
:method => :delete,
:url => url,
:headers => headers,
:verify_ssl => false
)
end
def do_request(server, query, user, pword)
# Run auth request
headers = {
:content_type => "application/x-www-form-urlencoded"
}
url = "https://" + server + "/ss-auth"
authData = {
:user => user,
:password => pword
}
begin
resp = RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => authData
)
rescue RestClient::Unauthorized
# bad credentials or Statseeker < v5.5.4
try_basic(server, query, user, pword, reqData)
else
# Authentication successful. Statseeker >= v5.5.4
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
rdata = JSON.parse(resp)
headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
return RestClient::Request.execute(
:method => :delete,
:url => url,
:headers => headers,
:verify_ssl => false
)
end
rescue RestClient::Unauthorized
# Statseeker = v5.5.4 but configured for basic auth
try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/group/<GROUP ID>'
# optional response formatting
$query += '/?indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"
{
"info": "The Statseeker RESTful API",
"data": {
"errmsg": "ok",
"success": true,
"time": 1496200297
},
"api_version": "2.1"
}
Example: Which Groups contain a specific entity (device, interface, user, etc.)
Return details on all groups containing a specified device.
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
-X GET \
"https://your.statseeker.server/api/v2.1/group/?fields=id,name,entities&entities_formats=count&entities_filter==<DEVICE ID>&entities_filter_format=list
# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
# Run auth request
headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
url = f'https://{server}/ss-auth'
authData = {'user': user, 'password': pword}
resp = requests.post(url, headers=headers, data=authData, verify=False)
headers['Content-Type'] = 'application/json'
url = f'https://{server}/{query}'
print(f'Get Auth Token: {resp.status_code}')
if resp.status_code == 200:
# Authentication successful, Statseeker >= v5.5.4
myToken = resp.json()
headers['Authorization'] = f'Bearer {myToken["access_token"]}'
resp = requests.get(url, headers=headers, verify=False)
if resp.status_code == 401:
print(f'Token auth failed: {resp.status_code}, trying basic auth')
# Either Authentication was unsuccessful (Statseeker < v5.5.4), or API set to use basic auth
# Try basic auth
resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/group'
# specify fields to be returned
query += '/?fields=id,name,entities'
# specify data formats
query += '&entities_formats=count'
# Filters
query += '&entities_filter==<DEVICE ID>&entities_filter_format=list'
# optional response formatting
query += '&indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
print(resp.status_code)
print(resp.json())
else:
print(f'Error: {resp.status_code} {resp.reason}')
# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"
def try_basic(server, query, user, pword)
headers = {
:content_type => "json"
}
url = "https://" + server + "/" + query
headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false
)
end
def do_request(server, query, user, pword)
# Run auth request
headers = {
:content_type => "application/x-www-form-urlencoded"
}
url = "https://" + server + "/ss-auth"
authData = {
:user => user,
:password => pword
}
begin
resp = RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => authData
)
rescue RestClient::Unauthorized
# bad credentials or Statseeker < v5.5.4
try_basic(server, query, user, pword)
else
# Authentication successful. Statseeker >= v5.5.4
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
rdata = JSON.parse(resp)
headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false,
)
end
rescue RestClient::Unauthorized
# Statseeker = v5.5.4 but configured for basic auth
try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/group'
# specify fields to be returned
$query += '/?fields=id,name,entities'
# specify data formats
$query += '&entities_formats=count'
# Filters
$query += '&entities_filter==<DEVICE ID>&entities_filter_format=list'
# optional response formatting
$query += '&indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"
{
"version": "2.1",
"revision": "13",
"info": "The Statseeker RESTful API",
"data": {
"success": true,
"errmsg": "ok",
"time": 1615841935,
"objects": [
{
"type": "group",
"sequence": 9,
"status": {
"success": true,
"errcode": 0
},
"data_total": 5,
"data": [
{
"id": 156472,
"name": "10.100.*.*",
"entities": {
"count": 51173
}
},
{
"id": 156893,
"name": "US Hardware",
"entities": {
"count": 12044
}
},
{
"id": 233023,
"name": "Switches",
"entities": {
"count": 58583
}
},
{
"id": 233024,
"name": "Chicago",
"entities": {
"count": 2347
}
},
{
"id": 233025,
"name": "Chicago Switches",
"entities": {
"count": 1985
}
}
]
}
]
}
}
Discovery Configuration
The discover_config resource allows you to configure Statseeker’s discovery process.
The discover_config Object
Field ID | Field Title | Type | Get, Add, Update | Description | ||||||||||||||||||||||||
communities | Community Strings | object | G, U | Comma separated SNMPv1 and SNMPv2 community strings | ||||||||||||||||||||||||
id | ID | integer | G | Discover config identifier/key | ||||||||||||||||||||||||
iftype | Interface Types | object | G, U | Comma separated list of interface types to include | ||||||||||||||||||||||||
ip_range_configurations | Per IP Address Range Configuration | object | G, U | An array of Discover Configuration objects associated to IP Address Ranges. Each configuration in the array contains the following fields:
These configurations are in addition to the global discovery settings for the IP range specified in ranges. This allows you to apply specific include/exclude rules based on sysDescr and iftype to select IP ranges, and to restrict which community strings are sent to a given IP. Note: community strings, and include/exclude rules, added in this way are in addition to the global rules, they do not replace the global rules. All exclude rules take precedence over any include rule.
|
||||||||||||||||||||||||
ping_count | Ping Run Count | integer | G, U | Number of passes for the ping discover | ||||||||||||||||||||||||
ping_skip | Ping Skip | integer | G, U | Number of ipaddress to skip between each ping | ||||||||||||||||||||||||
ranges | Ranges | object | G, U | Comma separated discover ranges (using include/exclude syntax) | ||||||||||||||||||||||||
sysdescr | SysDescr | object | G, U | Comma separated SysDescr values to decide which devices to discover | ||||||||||||||||||||||||
ping_rate | Ping Rate | integer | G, U | Number of pings to send per second |
Example: Updating the IP Ranges to be used during Discovery
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
-X PUT \
"https://your.statseeker.server/api/v2.1/discover_config/1?indent=3" \
-d "{"data":[{"ranges":["include 10.100.0.0/16","exclude 10.100.[50-100].*","include 10.101.0.0/16","include 10.116.0.0/16"]}]}"
# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword, reqData):
# Run auth request
headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
url = f'https://{server}/ss-auth'
authData = {'user': user, 'password': pword}
resp = requests.post(url, headers=headers, data=authData, verify=False)
headers['Content-Type'] = 'application/json'
url = f'https://{server}/{query}'
print(f'Get Auth Token: {resp.status_code}')
if resp.status_code == 200:
# Authentication successful, Statseeker >= v5.5.4
myToken = resp.json()
headers['Authorization'] = f'Bearer {myToken["access_token"]}'
resp = requests.put(url, headers=headers, data=reqData, verify=False)
if resp.status_code == 401:
print(f'Token auth failed: {resp.status_code}, trying basic auth')
# Either Authentication was unsuccessful (Statseeker < v5.5.4), or API set to use basic auth
# Try basic auth
resp = requests.put(url, headers=headers, auth=(user, pword), data=reqData, verify=False)
return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/discover_config/1'
# optional response formatting
query += '/?indent=3&links=none'
# data
reqData = json.dumps({"data":[{"ranges":["include 10.100.0.0/16","exclude 10.100.[50-100].*","include 10.101.0.0/16","include 10.116.0.0/16"]}]})
# Run the request
resp = do_request(server, query, user, pword, reqData)
if resp.status_code == 200:
print(resp.status_code)
print(resp.json())
else:
print(f'Error: {resp.status_code} {resp.reason}')
# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"
def try_basic(server, query, user, pword, reqData)
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
return RestClient::Request.execute(
:method => :put,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => reqData
)
end
def do_request(server, query, user, pword, reqData)
# Run auth request
headers = {
:content_type => "application/x-www-form-urlencoded"
}
url = "https://" + server + "/ss-auth"
authData = {
:user => user,
:password => pword
}
begin
resp = RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => authData
)
rescue RestClient::Unauthorized
# bad credentials or Statseeker < v5.5.4
try_basic(server, query, user, pword, reqData)
else
# Authentication successful. Statseeker >= v5.5.4
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
rdata = JSON.parse(resp)
headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
return RestClient::Request.execute(
:method => :put,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => reqData
)
end
rescue RestClient::Unauthorized
# Statseeker = v5.5.4 but configured for basic auth
try_basic(server, query, user, pword, reqData)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/discover_config/1'
# optional response formatting
$query += '/?indent=3&links=none'
# configure payload
$reqData = '{"data":[{"ranges":["include 10.100.0.0/16","exclude 10.100.[50-100].*","include 10.101.0.0/16","include 10.116.0.0/16"]}]}'
# Run the request
resp = do_request($server, $query, $user, $pword, $reqData)
puts "#{resp.to_str}"
{
"info": "The Statseeker RESTful API",
"data": {
"errmsg": "ok",
"success": true,
"time": 1496200675
},
"api_version": "2.1"
}
Syslog
The syslog resource provides access to the syslog messages collected by Statseeker. The contents of these records can be reported on and used to trigger alerts.
The syslog Object
Field ID | Field Title | Type | Get, Add, Update | Description |
entity | Entity | string | G | The name of the entity that owns this message |
entityid | Entity ID | integer | G, A (required) | The ID of the entity that owns this message |
id | ID | integer | G | Message Identifier |
text | Message Text | string | G, A (required) | The message text |
time | Time | integer | G | Message Time |
type | Type | string | G, A (required) | Message Type |
Options
- lastx – Display the last x records, rather than using a timefilter
Links
This resource has links to the following:
Example: Retrieving details, from Syslog Records, on devices that ‘went down’ in the previous 24hrs
In this example we will retrieve details on all Syslog messages that contain a specified string, in the previous 24h hours.
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
-X GET \
-u user:pword "https://your.statseeker.server/api/v2.1/syslog/?indent=3&links=none&fields=entity,entityid,text,type,time&text_filter=LIKE(%22<FILTER STRING>%22)&time_timefilter=range%20=%20now%20-%201d%20to%20now"
# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
# Run auth request
headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
url = f'https://{server}/ss-auth'
authData = {'user': user, 'password': pword}
resp = requests.post(url, headers=headers, data=authData, verify=False)
headers['Content-Type'] = 'application/json'
url = f'https://{server}/{query}'
print(f'Get Auth Token: {resp.status_code}')
if resp.status_code == 200:
# Authentication successful, Statseeker >= v5.5.4
myToken = resp.json()
headers['Authorization'] = f'Bearer {myToken["access_token"]}'
resp = requests.get(url, headers=headers, verify=False)
if resp.status_code == 401:
print(f'Token auth failed: {resp.status_code}, trying basic auth')
# Either Authentication was unsuccessful (Statseeker < v5.5.4), or API set to use basic auth
# Try basic auth
resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/syslog'
# specify fields to be returned
query += '/?fields=entity,entityid,text,type,time'
# Filters
query += '&text_filter=LIKE("<FILTER STRING>")&time_timefilter=range = now - 1d to now'
# optional response formatting
query += '&indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
print(resp.status_code)
print(resp.json())
else:
print(f'Error: {resp.status_code} {resp.reason}')
# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"
def try_basic(server, query, user, pword)
headers = {
:content_type => "json"
}
url = "https://" + server + "/" + query
headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false
)
end
def do_request(server, query, user, pword)
# Run auth request
headers = {
:content_type => "application/x-www-form-urlencoded"
}
url = "https://" + server + "/ss-auth"
authData = {
:user => user,
:password => pword
}
begin
resp = RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => authData
)
rescue RestClient::Unauthorized
# bad credentials or Statseeker < v5.5.4
try_basic(server, query, user, pword)
else
# Authentication successful. Statseeker >= v5.5.4
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
rdata = JSON.parse(resp)
headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false,
)
end
rescue RestClient::Unauthorized
# Statseeker = v5.5.4 but configured for basic auth
try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/syslog'
# specify fields to be returned
$query += '/?fields=entity,entityid,text,type,time'
# Filters
$query += '&text_filter=LIKE("<FILTER STRING>")&time_timefilter=range = now - 1d to now'
# optional response formatting
$query += '&indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts '#{resp.to_str}'
{
"info": "The Statseeker RESTful API",
"data": {
"objects": [{
"status": {
"errcode": 0,
"success": true
},
"data": [{
"text": "local0.info %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/10, changed state to down",
"entity": "LosAngeles-swt1",
"time": 1490240152,
"entityid": 174,
"type": "syslog",
"id": 126619
}, {
"text": "local0.info %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/7, changed state to down",
"entity": "Helsinki-swt1",
"time": 1490245557,
"entityid": 313,
"type": "syslog",
"id": 126626
}, {
"text": "local0.info %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet1/0/12, changed state to down",
"entity": "CapeTown-swt2",
"time": 1490246759,
"entityid": 412,
"type": "syslog",
"id": 126628
}, {
"text": "local0.info %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/18, changed state to down",
"entity": "Mumbai-swt2",
"time": 1490251556,
"entityid": 379,
"type": "syslog",
"id": 126631
}, {
"text": "local0.info %LINK-3-UPDOWN: Interface FastEthernet0/19, changed state to down",
"entity": "Unknown (10.100.52.25)",
"time": 1490270147,
"entityid": 0,
"type": "syslog",
"id": 126641
}, {
"text": "local0.info %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/24, changed state to down",
"entity": "Budapest-swt4",
"time": 1490271059,
"entityid": 271,
"type": "syslog",
"id": 126642
}, {
"text": "local0.info %LINK-3-UPDOWN: Interface FastEthernet0/18, changed state to down",
"entity": "Phoenix-swt4",
"time": 1490271643,
"entityid": 201,
"type": "syslog",
"id": 126643
}, {
"text": "local0.info %LINK-3-UPDOWN: Interface FastEthernet0/7, changed state to down",
"entity": "Bangkok-swt1",
"time": 1490279033,
"entityid": 374,
"type": "syslog",
"id": 126647
}, {
"text": "local0.info %LINK-3-UPDOWN: Interface GigabitEthernet1/0/20, changed state to down",
"entity": "Unknown (10.100.52.25)",
"time": 1490286824,
"entityid": 0,
"type": "syslog",
"id": 126652
}, {
"text": "local0.info %LINK-3-UPDOWN: Interface GigabitEthernet2/0/16, changed state to down",
"entity": "Chicago-rtr",
"time": 1490294444,
"entityid": 185,
"type": "syslog",
"id": 126657
}, {
"text": "local0.info %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/8, changed state to down",
"entity": "Tokyo-swt1",
"time": 1490301348,
"entityid": 355,
"type": "syslog",
"id": 126661
}, {
"text": "local0.info %LINK-3-UPDOWN: Interface GigabitEthernet1/0/8, changed state to down",
"entity": "LosAngeles-rtr",
"time": 1490305548,
"entityid": 175,
"type": "syslog",
"id": 126664
}, {
"text": "local0.info %LINK-3-UPDOWN: Interface GigabitEthernet1/0/18, changed state to down",
"entity": "Helsinki-swt3",
"time": 1490307644,
"entityid": 311,
"type": "syslog",
"id": 126667
}, {
"text": "local0.info %LINK-3-UPDOWN: Interface GigabitEthernet1/0/14, changed state to down",
"entity": "Athens-rtr",
"time": 1490316041,
"entityid": 299,
"type": "syslog",
"id": 126671
}, {
"text": "local0.info %LINK-3-UPDOWN: Interface FastEthernet0/28, changed state to down",
"entity": "Melbourne-swt2",
"time": 1490316942,
"entityid": 397,
"type": "syslog",
"id": 126672
}, {
"text": "local0.info %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/11, changed state to down",
"entity": "Chicago-swt2",
"time": 1490317855,
"entityid": 183,
"type": "syslog",
"id": 126673
}, {
"text": "local0.info %LINK-3-UPDOWN: Interface GigabitEthernet3/0/5, changed state to down",
"entity": "Copenhagen-swt3",
"time": 1490318756,
"entityid": 331,
"type": "syslog",
"id": 126674
}],
"type": "syslog",
"data_total": 17
}],
"errmsg": "ok",
"success": true,
"time": 1490325593
},
"api_version": "2.1"
}
Device and Interface Event Records (event_record)
The event_record resource provides access to the device and interface events recorded by Statseeker. The contents of these records can be reported on and used to trigger alerts.
The event_record Object
Field ID | Field Title | Type | Get, Add, Update | Description |
delta | Delta | integer | G | The number of seconds since the last record of the same event |
device | Device | string | G | The name of the device that owns the entity |
deviceid | Device ID | integer | G | The ID of the device that owns the entity |
entity | Entity | string | G | The name of the entity that owns the event |
entityid | Entity ID | integer | G, A | The ID of the entity that owns the entity |
entityTypeName | Entity Type Name | string | G | The name of the type of entity that owns the event |
entityTypeTitle | Entity Type Title | string | G | The title of the type of entity that owns the event |
event | Event | string | G, A | The event text associated to the record |
eventid | Event ID | integer | G, A (required) | The event id associated to the record |
id | ID | string | G | Event Record Identifier |
note | Note | string | G, U | The note associated with the record |
state | State | string | G, A (required) | The state text associated to the record |
stateid | State ID | integer | G, A | The state id associated to the record |
time | Time | integer | G, A | Epoch time that the record was created |
Options
- lastx – Display the last x records, rather than using a timefilter
Links
This resource has links to the following:
Example: Retrieving details, from Event Records, of interfaces that recovered from a ‘down’ state in the previous 3hrs
The delta value, found in each record in the response, details the duration that the interface was in a down state.
curl \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer myToken" \
-X GET \
-u user:pword "https://your.statseeker.server/api/v2.1/event_record/?indent=3&links=none&fields=event,eventid,device,deviceid,state,delta,time&state_filter=IS(%22up%22)&event_filter=IS(%22IF-MIB.ifOperStatus%22)&time_timefilter=range%20=%20now%20-%203h%20to%20now"
# import requests for handling connection and encoding
import requests
import json
def do_request(server, query, user, pword):
# Run auth request
headers = { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }
url = f'https://{server}/ss-auth'
authData = {'user': user, 'password': pword}
resp = requests.post(url, headers=headers, data=authData, verify=False)
headers['Content-Type'] = 'application/json'
url = f'https://{server}/{query}'
print(f'Get Auth Token: {resp.status_code}')
if resp.status_code == 200:
# Authentication successful, Statseeker >= v5.5.4
myToken = resp.json()
headers['Authorization'] = f'Bearer {myToken["access_token"]}'
resp = requests.get(url, headers=headers, verify=False)
if resp.status_code == 401:
print(f'Token auth failed: {resp.status_code}, trying basic auth')
# Either Authentication was unsuccessful (Statseeker < v5.5.4), or API set to use basic auth
# Try basic auth
resp = requests.get(url, headers=headers, auth=(user, pword), verify=False)
return resp
# Statseeker Server IP
server = 'your.statseeker.server'
# credentials
user = 'api_user'
pword = 'user_password'
# API root endpoint
query = 'api/v2.1'
# specify target endpoint
query += '/event_record'
# specify fields to be returned
query += '/?fields=event,eventid,device,deviceid,state,delta,time'
# Filters
query += '&state_filter=IS("up")&event_filter=IS("IF-MIB.ifOperStatus")&time_timefilter=range = now - 3h to now'
# optional response formatting
query += '&indent=3&links=none'
# Run the request
resp = do_request(server, query, user, pword)
if resp.status_code == 200:
print(resp.status_code)
print(resp.json())
else:
print(f'Error: {resp.status_code} {resp.reason}')
# install with: $ gem install rest-client
require "rest_client"
require "json"
require "base64"
def try_basic(server, query, user, pword)
headers = {
:content_type => "json"
}
url = "https://" + server + "/" + query
headers["Authorization"] = "Basic " + Base64.encode64("#{user}:#{pword}")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false
)
end
def do_request(server, query, user, pword)
# Run auth request
headers = {
:content_type => "application/x-www-form-urlencoded"
}
url = "https://" + server + "/ss-auth"
authData = {
:user => user,
:password => pword
}
begin
resp = RestClient::Request.execute(
:method => :post,
:url => url,
:headers => headers,
:verify_ssl => false,
:payload => authData
)
rescue RestClient::Unauthorized
# bad credentials or Statseeker < v5.5.4
try_basic(server, query, user, pword)
else
# Authentication successful. Statseeker >= v5.5.4
headers = {
:content_type => "application/json"
}
url = "https://" + server + "/" + query
rdata = JSON.parse(resp)
headers["Authorization"] = "Bearer " + rdata.fetch("access_token")
return RestClient::Request.execute(
:method => :get,
:url => url,
:headers => headers,
:verify_ssl => false,
)
end
rescue RestClient::Unauthorized
# Statseeker = v5.5.4 but configured for basic auth
try_basic(server, query, user, pword)
end
# Statseeker Server IP
$server = 'your.statseeker.server'
# api user credentials
$user = 'api_user'
$pword = 'user_password'
# api root endpoint
$query = 'api/v2.1'
# specify target endpoint
$query += '/event_record'
# specify fields to be returned
$query += '/?fields=event,eventid,device,deviceid,state,delta,time'
# Filters
$query += '&state_filter=IS("up")&event_filter=IS("IF-MIB.ifOperStatus")&time_timefilter=range = now - 3h to now'
# optional response formatting
$query += '&indent=3&links=none'
# Run the request
resp = do_request($server, $query, $user, $pword)
puts "#{resp.to_str}"
{
"info": "The Statseeker RESTful API",
"data": {
"objects": [{
"status": {
"errcode": 0,
"success": true
},
"data": [{
"eventid": 17,
"time": 1490328180,
"event": "IF-MIB.ifOperStatus",
"state": "up",
"deviceid": 185,
"delta": 23520,
"device": "Chicago-rtr",
"id": "58D49A74-1-1"
}, {
"eventid": 81,
"time": 1490324821,
"event": "IF-MIB.ifOperStatus",
"state": "up",
"deviceid": 284,
"delta": 3960,
"device": "Warsaw-rtr",
"id": "58D48D55-1-1"
}, {
"eventid": 81,
"time": 1490327161,
"event": "IF-MIB.ifOperStatus",
"state": "up",
"deviceid": 284,
"delta": 480,
"device": "Warsaw-rtr",
"id": "58D49679-1-1"
}, {
"eventid": 97,
"time": 1490329921,
"event": "IF-MIB.ifOperStatus",
"state": "up",
"deviceid": 293,
"delta": 3540,
"device": "Athens-srv1",
"id": "58D4A141-1-1"
}, {
"eventid": 97,
"time": 1490332501,
"event": "IF-MIB.ifOperStatus",
"state": "up",
"deviceid": 293,
"delta": 1080,
"device": "Athens-srv1",
"id": "58D4AB55-1-1"
}, {
"eventid": 129,
"time": 1490326021,
"event": "IF-MIB.ifOperStatus",
"state": "up",
"deviceid": 334,
"delta": 4260,
"device": "Copenhagen-rtr",
"id": "58D49205-1-1"
}, {
"eventid": 145,
"time": 1490324821,
"event": "IF-MIB.ifOperStatus",
"state": "up",
"deviceid": 350,
"delta": 6900,
"device": "Shanghai-rtr",
"id": "58D48D55-2-1"
}, {
"eventid": 145,
"time": 1490328421,
"event": "IF-MIB.ifOperStatus",
"state": "up",
"deviceid": 350,
"delta": 2040,
"device": "Shanghai-rtr",
"id": "58D49B65-1-1"
}, {
"eventid": 177,
"time": 1490329802,
"event": "IF-MIB.ifOperStatus",
"state": "up",
"deviceid": 378,
"delta": 19741,
"device": "Delhi-rtr",
"id": "58D4A0CA-1-1"
}, {
"eventid": 209,
"time": 1490332022,
"event": "IF-MIB.ifOperStatus",
"state": "up",
"deviceid": 390,
"delta": 840,
"device": "Chennai-rtr",
"id": "58D4A976-1-1"
}, {
"eventid": 209,
"time": 1490332142,
"event": "IF-MIB.ifOperStatus",
"state": "up",
"deviceid": 390,
"delta": 60,
"device": "Chennai-rtr",
"id": "58D4A9EE-1-1"
}, {
"eventid": 209,
"time": 1490332502,
"event": "IF-MIB.ifOperStatus",
"state": "up",
"deviceid": 390,
"delta": 120,
"device": "Chennai-rtr",
"id": "58D4AB56-1-1"
}, {
"eventid": 225,
"time": 1490325842,
"event": "IF-MIB.ifOperStatus",
"state": "up",
"deviceid": 414,
"delta": 840,
"device": "CapeTown-rtr",
"id": "58D49152-1-1"
}, {
"eventid": 225,
"time": 1490328002,
"event": "IF-MIB.ifOperStatus",
"state": "up",
"deviceid": 414,
"delta": 1080,
"device": "CapeTown-rtr",
"id": "58D499C2-1-1"
}, {
"eventid": 241,
"time": 1490323442,
"event": "IF-MIB.ifOperStatus",
"state": "up",
"deviceid": 417,
"delta": 300,
"device": "PortElizabeth-rtr",
"id": "58D487F2-1-1"
}, {
"eventid": 241,
"time": 1490327942,
"event": "IF-MIB.ifOperStatus",
"state": "up",
"deviceid": 417,
"delta": 3900,
"device": "PortElizabeth-rtr",
"id": "58D49986-1-1"
}, {
"eventid": 241,
"time": 1490329982,
"event": "IF-MIB.ifOperStatus",
"state": "up",
"deviceid": 417,
"delta": 1440,
"device": "PortElizabeth-rtr",
"id": "58D4A17E-1-1"
}, {
"eventid": 257,
"time": 1490326322,
"event": "IF-MIB.ifOperStatus",
"state": "up",
"deviceid": 423,
"delta": 6060,
"device": "Pretoria-rtr",
"id": "58D49332-1-1"
}, {
"eventid": 257,
"time": 1490330462,
"event": "IF-MIB.ifOperStatus",
"state": "up",
"deviceid": 423,
"delta": 2280,
"device": "Pretoria-rtr",
"id": "58D4A35E-2-1"
}, {
"eventid": 257,
"time": 1490331122,
"event": "IF-MIB.ifOperStatus",
"state": "up",
"deviceid": 423,
"delta": 360,
"device": "Pretoria-rtr",
"id": "58D4A5F2-1-1"
}],
"type": "event_record",
"data_total": 20
}],
"errmsg": "ok",
"success": true,
"time": 1490333357
},
"api_version": "2.0"
}
Resource Reference
- cdt_aci_application (ACI Application Profile)
- cdt_aci_bridge_domain (ACI Bridging Domain)
- cdt_aci_cep (ACI Client Endpoint)
- cdt_aci_epg (ACI Endpoint Groups)
- cdt_aci_fault (ACI Fault)
- cdt_aci_fault_summary (ACI Fault Summary)
- cdt_aci_node (ACI Node)
- cdt_aci_pod (ACI Pod)
- cdt_aci_subnet (ACI Subnet)
- cdt_aci_tenant (ACI Tenant)
- cdt_aci_vrf (ACI Private Network)
- cdt_apcon_port (Apcon Interface)
- cdt_appnav_cisco (Cisco APPNAV)
- cdt_bgp_peer (BGP Peer)
- cdt_bgp_peer_addr_family_prefix_cisco (BGP Peer Address Family Prefix – Cisco)
- cdt_bgp_peer_cisco (BGP Peer – Cisco)
- cdt_bgp_peer_juniper (BGP Peer – Juniper)
- cdt_checkpoint_firewall (Checkpoint Firewall)
- cdt_checkpoint_vpn_sessions (Checkpoint VPN Sessions)
- cdt_cisco_activeDS0 (Cisco Active DS0)
- cdt_cisco_call_stats (Cisco Call Stats)
- cdt_cisco_cb_qos_class_map_config (Cisco CB QoS Config – ClassMap)
- cdt_cisco_cb_qos_class_map_data (Cisco CB QoS Data – Class)
- cdt_cisco_cb_qos_config_policy_class (Cisco CB QoS Config – Policy/Class)
- cdt_cisco_cb_qos_match_data (Cisco CB QoS Data – Match)
- cdt_cisco_cb_qos_match_map_config (Cisco CB QoS Config – Match)
- cdt_cisco_cb_qos_policy_map_config (Cisco CB QoS Config – PolicyMap)
- cdt_cisco_cb_qos_queue_data (Cisco CB QoS Data – Queue)
- cdt_cisco_cb_qos_queue_map_config (Cisco CB QoS Config – Queue)
- cdt_cisco_cdp_cache (Cisco Discovery Protocol Cache)
- cdt_cisco_eigrp (Cisco EIGRP)
- cdt_cisco_eigrp_peer (Cisco EIGRP Peer)
- cdt_cisco_fib_tcam (Cisco TCAM Entries)
- cdt_cisco_firewall_connections (Cisco Firewall Connections)
- cdt_cisco_if_extension (Cisco IF Extension)
- cdt_cisco_ipsec_global (Cisco VPN Global Tunnels)
- cdt_cisco_ipsec_tun (Cisco VPN Tunnels)
- cdt_cisco_ipsla (Cisco IPSLA)
- cdt_cisco_nbar (Cisco NBAR)
- cdt_cisco_vpn_sessions (Cisco VPN Sessions)
- cdt_cisco_wan_3g (Cisco WAN 3G)
- cdt_cisco_wan_3g_nearby_cells (Cisco WAN 3G Nearby Cells)
- cdt_cisco_wan_4g (Cisco WAN 4G)
- cdt_citrix_netscaler_vpn_stats (Citrix Netscaler AAA Stats)
- cdt_connections_riverbed (Riverbed WAN Accelerator)
- cdt_cpu (CPU)
- cdt_cpu_alcatel (CPU – Alcatel)
- cdt_cpu_alcatel_aos7 (CPU – Alcatel – AOS7)
- cdt_cpu_alteon (CPU – Alteon)
- cdt_cpu_aruba (CPU – Aruba)
- cdt_cpu_avaya_rc (CPU – Avaya RC)
- cdt_cpu_avaya_s5 (CPU – Avaya S5)
- cdt_cpu_cisco (CPU – Cisco)
- cdt_cpu_cisco_asa (CPU – Cisco ASA)
- cdt_cpu_cisco_nexus (CPU – Cisco Nexus)
- cdt_cpu_cisco_san (CPU – Cisco SAN)
- cdt_cpu_dell (CPU – Dell)
- cdt_cpu_dell_F10_S (CPU – Dell F10 S)
- cdt_cpu_dell_dnos (CPU – Dell DNOS)
- cdt_cpu_dell_x (CPU – Dell X Series)
- cdt_cpu_extreme (CPU – Extreme)
- cdt_cpu_extreme_vsp (CPU – Extreme VSP)
- cdt_cpu_fortinet_fortigate (CPU – Fortinet Fortigate)
- cdt_cpu_foundry (CPU – Foundry)
- cdt_cpu_foundry_mlx (CPU – Foundry MLX)
- cdt_cpu_freebsd (CPU – FreeBSD)
- cdt_cpu_juniper (CPU – Juniper)
- cdt_cpu_juniper_pulse (CPU – Juniper Pulse)
- cdt_cpu_netscaler (CPU – NetScaler)
- cdt_cpu_netscreen (CPU – Netscreen)
- cdt_cpu_nokia (CPU – Nokia)
- cdt_cpu_procurve (CPU – Procurve)
- cdt_cpu_server (CPU – Server)
- cdt_cpu_ucd (CPU – UCD)
- cdt_dell_inventory (Dell DNOS System Information)
- cdt_device (Device)
- cdt_device_apic (APIC)
- cdt_device_freebsd (Device – FreeBSD)
- cdt_diskio (Disk IO – FreeBSD)
- cdt_env_mon (Environment Monitors)
- cdt_env_mon_apc_internal (APC Internal Environment Monitor)
- cdt_env_mon_enviromux_external_dewpoint (Enviromux Environmental Monitoring – External – DewPoint)
- cdt_env_mon_enviromux_external_humidity (Enviromux Environmental Monitoring – External – Humidity)
- cdt_env_mon_enviromux_external_temperature (Enviromux Environmental Monitoring – External – Temperature)
- cdt_env_mon_enviromux_internal_dewpoint (Enviromux Environmental Monitoring – Internal – DewPoint)
- cdt_env_mon_enviromux_internal_humidity (Enviromux Environmental Monitoring – Internal – Humidty)
- cdt_env_mon_enviromux_internal_temperature (Enviromux Environmental Monitoring – Internal – Temperature)
- cdt_env_mon_geist_internal (Geist Internal Environment Monitor)
- cdt_env_mon_interseptor (Interseptor Environment Monitor)
- cdt_f5_apm_sessions (F5 APM Sessions)
- cdt_f5_firewall_connections (F5 Firewall Connections)
- cdt_f5_loadbalancer_ltm_pool (F5 Load Balancer LTM Pool)
- cdt_f5_loadbalancer_ltm_pool_member (F5 Load Balancer LTM Pool Member)
- cdt_f5_loadbalancer_ltm_virtual_server (F5 Load Balancer LTM Virtual Server)
- cdt_fan_sensor (Sensor – Fan)
- cdt_fan_sensor_cisco (Sensor – Fan – Cisco)
- cdt_fan_sensor_entity (Sensor – Fan – Entity)
- cdt_filesystem (File System)
- cdt_filesystem_freebsd (File System – FreeBSD)
- cdt_filesystem_hostres (File System – Host Resources)
- cdt_filesystem_informant (File System – SNMP Informant)
- cdt_fortigate_vpn_stats (Fortinet Fortigate VPN Stats)
- cdt_framerelay (Frame Relay)
- cdt_framerelay_cisco (Frame Relay – Cisco)
- cdt_framerelay_juniper (Frame Relay – Juniper)
- cdt_framerelay_nortel (Frame Relay – Nortel)
- cdt_fw_fortinet_fortigate (Fortinet Fortigate Firewall)
- cdt_ieee_80211 (IEEE 802.11)
- cdt_inventory (Inventory)
- cdt_inventory_device (Device Information)
- cdt_inventory_entity (Entity Asset Information)
- cdt_inventory_f5 (F5 Asset Information)
- cdt_inventory_f5_chassis (F5 Chassis Information)
- cdt_inventory_f5_slot (F5 Slot Information)
- cdt_inventory_juniper (Juniper Asset Information)
- cdt_inventory_riverbed (Riverbed Asset Information)
- cdt_ip_addr (IP Address Table)
- cdt_ip_addr_freebsd (IP Address Table – FreeBSD)
- cdt_ip_address (IP Address Table (includes IPv6))
- cdt_ip_system_stats (IP System Stats)
- cdt_juniper_firewall (Juniper Firewall)
- cdt_juniper_ping (Juniper Ping)
- cdt_juniper_pulse_vpn_users (Juniper Pulse VPN Users)
- cdt_loadbalancer_alteon_group (Alteon Group)
- cdt_loadbalancer_alteon_rserv (Alteon Real Servers)
- cdt_loadbalancer_alteon_vserv (Alteon Virtual Servers)
- cdt_memory (Memory)
- cdt_memory_alcatel (Memory – Alcatel)
- cdt_memory_alcatel_aos7 (Memory – Alcatel – AOS7)
- cdt_memory_alteon (Memory – Alteon)
- cdt_memory_aruba (Memory – Aruba)
- cdt_memory_avaya_rc (Memory – Avaya – RC)
- cdt_memory_avaya_s5 (Memory – Avaya – S5)
- cdt_memory_checkpoint (Memory – Checkpoint)
- cdt_memory_checkpoint_virtual (Memory – Checkpoint Swap)
- cdt_memory_cisco (Memory – Cisco)
- cdt_memory_cisco_nexus (Memory – Cisco Enhanced)
- cdt_memory_cisco_san (Memory – Cisco SAN)
- cdt_memory_dell (Memory – Dell)
- cdt_memory_dell_F10_S (Memory – Dell F10 S)
- cdt_memory_dell_dnos (Memory – Dell DNOS)
- cdt_memory_extreme (Memory – Extreme)
- cdt_memory_extreme_vsp (Memory – Extreme VSP)
- cdt_memory_fortinet_fortigate (Memory – Fortinet Fortigate)
- cdt_memory_fortinet_fortigate_hd (Memory – Fortinet Fortigate Hard Disk)
- cdt_memory_fortinet_fortigate_lowmem (Memory – Fortinet Fortigate Low Mem)
- cdt_memory_foundry (Memory – Foundry)
- cdt_memory_foundry_mlx (Memory – Foundry MLX)
- cdt_memory_freebsd (Memory – FreeBSD)
- cdt_memory_juniper (Memory – Juniper)
- cdt_memory_netscaler (Memory – NetScaler)
- cdt_memory_netscreen (Memory – Netscreen)
- cdt_memory_nokia (Memory – Nokia)
- cdt_memory_procurve (Memory – Procurve)
- cdt_memory_server (Memory – Server)
- cdt_memory_ucd_real (Memory – UCD – Real)
- cdt_memory_ucd_swap (Memory – UCD – Swap)
- cdt_memory_virtual (Memory – Virtual)
- cdt_memory_virtual_freebsd (Memory – Virtual – FreeBSD)
- cdt_mis (MAC/IP/Switch Port)
- cdt_optical (Optical Signal Monitoring)
- cdt_optical_adva (Optical Signal Monitoring – ADVA)
- cdt_optical_adva_measurement (Optical Signal Monitoring – ADVA – Loss)
- cdt_optical_nbs (Optical Signal Monitoring – NBS)
- cdt_optical_sensor_cisco (Sensor – Optical – Cisco)
- cdt_other_sensor (Sensor – Other)
- cdt_other_sensor_cisco (Sensor – Other – Cisco)
- cdt_other_sensor_entity (Sensor – Other – Entity)
- cdt_palo_alto_firewall_connections (Palo Alto Firewall Connections)
- cdt_palo_alto_firewall_connections_zone (Palo Alto Firewall Connections Zone Stats)
- cdt_palo_alto_vpn (Palo Alto VPN)
- cdt_ping_data (Ping Data)
- cdt_poe_main (PoE Device)
- cdt_poe_main_cisco (PoE Device – Cisco)
- cdt_poe_port (PoE Interface)
- cdt_poe_port_cisco (PoE Interface – Cisco)
- cdt_port (Interface)
- cdt_port_etherlike (Interface EtherLike)
- cdt_port_freebsd (Interface – FreeBSD)
- cdt_port_nbar (Interface – Cisco NBAR)
- cdt_power_amps_sensor (Sensor – Power – Amps)
- cdt_power_amps_sensor_cisco (Sensor – Power – Amps – Cisco)
- cdt_power_amps_sensor_entity (Sensor – Power – Amps – Entity)
- cdt_power_system_battery (Power Systems – Battery)
- cdt_power_system_battery_alpha (Power Systems Battery – Alpha Power)
- cdt_power_system_battery_apcups (Power Systems Battery – APC Schneider Electric UPS)
- cdt_power_system_battery_generic_ups (Power Systems Battery – Generic UPS)
- cdt_power_system_input (Power Systems – Input)
- cdt_power_system_input_alpha (Power Systems Input – Alpha Power)
- cdt_power_system_input_apcups (Power Systems Input – APC Schneider Electric UPS)
- cdt_power_system_input_generic_ups (Power Systems Input – Generic UPS)
- cdt_power_system_output (Power Systems – Output)
- cdt_power_system_output_alpha (Power Systems Output – Argus/Alpha)
- cdt_power_system_output_apcups (Power Systems Output – APC Schneider Electric UPS)
- cdt_power_system_output_generic_ups (Power Systems Output – Generic UPS)
- cdt_power_system_status (Power Systems – Status)
- cdt_power_system_status_alpha (Power Systems Status – Alpha Power)
- cdt_power_system_status_apcups (Power Systems Status – APC Schneider Electric UPS)
- cdt_power_system_status_generic_ups (Power Systems Status – Generic UPS)
- cdt_power_volts_sensor (Sensor – Power – Volts)
- cdt_power_volts_sensor_cisco (Sensor – Power – Volts – Cisco)
- cdt_power_volts_sensor_entity (Sensor – Power – Volts – Entity)
- cdt_power_watts_sensor (Sensor – Power – Watts)
- cdt_power_watts_sensor_cisco (Sensor – Power – Watts – Cisco)
- cdt_power_watts_sensor_entity (Sensor – Power – Watts – Entity)
- cdt_printer (Printer)
- cdt_printer_general (Printer – General)
- cdt_process_table (Process Details)
- cdt_ranges (Custom Data Type Ranges)
- cdt_sonicwall_vpn_users (SonicWall VPN Users)
- cdt_t128_peer (128T Router Peers)
- cdt_temperature (Temperature)
- cdt_temperature_alcatel (Temperature – Alcatel)
- cdt_temperature_alcatel_aos7 (Temperature – Alcatel – AOS7)
- cdt_temperature_apc_env (Temperature – APC)
- cdt_temperature_apc_int (Temperature – APC Internal)
- cdt_temperature_avaya_s5 (Temperature – Avaya – S5)
- cdt_temperature_cisco (Temperature – Cisco)
- cdt_temperature_dell_F10_S (Temperature – Dell F10 S)
- cdt_temperature_dell_dnos (Temperature – Dell DNOS)
- cdt_temperature_dell_power (Temperature – Dell PowerConnect)
- cdt_temperature_extreme (Temperature – Extreme)
- cdt_temperature_extreme_vsp (Temperature – Extreme VSP)
- cdt_temperature_foundry (Temperature – Foundry)
- cdt_temperature_foundry_mlx (Temperature – Foundry MLX)
- cdt_temperature_juniper (Temperature – Juniper)
- cdt_temperature_netscreen (Temperature – Netscreen)
- cdt_temperature_sensor (Temperature – Sensor)
- cdt_temperature_sensor_cisco (Temperature – Cisco Sensor)
- cdt_ubiquiti_airmax (Ubiquiti AirMAX)
- cdt_ubiquiti_radio (Ubiquiti Radio)
- cdt_ubiquiti_wl_stats (Ubiquiti Wireless Statistics)
- cdt_ups (UPS)
- cdt_ups_apc (UPS – APC)
- cdt_ups_generic (UPS – Generic)
- cdt_waas_cisco (Cisco WAAS)
- cdt_wireless_ap (Wireless AP)
- cdt_wireless_ap_cisco (Wireless AP – Cisco)
- cdt_wireless_ap_extreme (Wireless AP – Extreme)
- config_build (Configuration Build)
- discover (Discover)
- discover_config (Discover Configuration)
- discover_hosts (Discover Hosts)
- entity (Statseeker Entities)
- event (Event Entity Details)
- event_record (Events)
- field (Field)
- group (Group)
- license (License)
- link (API Links)
- mac (MAC Records)
- message (Message)
- mis_record (MAC/IP/Switch Port Records)
- nim_options (NIM Options)
- notification (Notifications)
- object (Object)
- spe_aci (APIC Configurations)
- syslog (Syslog)
- task (Task)
- threshold (Threshold Configuration)
- threshold_event (Threshold Entity Details)
- threshold_record (Threshold Events)
- timefilter (Time Filter)
- trap (Trap)
- user (User)
ACI Application Profile
Description
The custom data entities for the aci_application table
Table
cdt_aci_application
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G | The poll state of the entity
|
aci_tenant | ACI Tenant | string | G | A policy owner in the virtual fabric. A tenant can be either a private or a shared entity. For example, you can create a tenant with contexts and bridge domains shared by other tenant. A shared type of tenant is typically named common, default, or infra. |
health | Health | integer | G | Health of ACI Application Profile |
title | Title | string | G | ACI Application Profile Name |
Links
This resource has links to the following:
[reference] [top]ACI Bridging Domain
Description
The custom data entities for the aci_bridge_domain table
Table
cdt_aci_bridge_domain
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G | The poll state of the entity
|
aci_tenant | ACI Tenant | string | G | A policy owner in the virtual fabric. A tenant can be either a private or a shared entity. For example, you can create a tenant with contexts and bridge domains shared by other tenant. A shared type of tenant is typically named common, default, or infra. |
broadcast_ip | Multicast Group IP Address | string | G | Outer multicast group IP address. |
health | Health | integer | G | Health Timeseries Data: Stats, Formats & Options |
mac | MAC | string | G | MAC Address |
title | Title | string | G | Bridging Domain Name |
type | Type | string | G | Bridging Domain Type |
Links
This resource has links to the following:
[reference] [top]ACI Client Endpoint
Description
The custom data entities for the aci_cep table
Table
cdt_aci_cep
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G | The poll state of the entity
|
aci_epg | EPG | string | G | A set of requirements for the application-level EPG instance. The policy regulates connectivity and visibility among the end points within the scope of the policy. |
ip | IP Address | string | G | IP Address of Client Endpoint |
mac | MAC Address | string | G | The MAC Address |
title | Title | string | G | Name of Client Endpoint |
vlan | VLAN | string | G | The VXLAN or VLAN |
Links
This resource has links to the following:
[reference] [top]ACI Endpoint Groups
Description
The custom data entities for the aci_epg table
Table
cdt_aci_epg
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G | The poll state of the entity
|
aci_application | ACI Application Profile | string | G | The application profile is a set of requirements that an application instance has on the virtualizable fabric. The policy regulates connectivity and visibility among endpoints within the scope of the policy. |
config_state | Configuration State | string | G | The configuration state of the endpoint groupCan be combined with an event format for event-based analytics, see Event Formats. |
health | Health | integer | G | Health of the EPG Timeseries Data: Stats, Formats & Options |
title | Title | string | G | Name of the Endpoint Group |
Links
This resource has links to the following:
[reference] [top]ACI Fault
Description
The custom data entities for the aci_fault table
Table
cdt_aci_fault
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G | The poll state of the entity
|
ack | Acknowledged | string | G | Acknowledged |
cause | Cause | string | G | Fault Cause |
changeSet | Change | string | G | Change Set |
code | Code | string | G | Fault Code |
created | Created | time | G | Fault Creation Time |
delegated | Delegated | string | G | Delegated |
descr | Description | string | G | Description |
domain | Domain | string | G | Domain |
highestSeverity | High Severity | string | G | Highest Severity |
lastTransition | Last Transition | time | G | Last Transition |
occur | Occurences | integer | G | Number of Occurences Timeseries Data: Stats, Formats & Options |
origSeverity | Original Severity | string | G | Original Severity |
prevSeverity | Previous Severity | string | G | Previous Severity |
rule | Rule | string | G | Rule |
severity | Severity | string | G | Severity |
subject | Subject | string | G | Subject |
type | Type | string | G | Type |
Links
This resource has links to the following:
[reference] [top]ACI Fault Summary
Description
The custom data entities for the aci_fault_summary table
Table
cdt_aci_fault_summary
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G | The poll state of the entity
|
ack_delegated_faults | Acknowledged Delegated Faults | integer | G | Number of Acknowledged Delegated Faults Timeseries Data: Stats, Formats & Options |
ack_faults | Acknowledged Faults | integer | G | Number of Acknowledged Faults Timeseries Data: Stats, Formats & Options |
delegated_faults | Delegated Faults | integer | G | Number of Delegated Faults Timeseries Data: Stats, Formats & Options |
faults | Faults | integer | G | Number of Faults Timeseries Data: Stats, Formats & Options |
severity | Severity | string | G | Severity |
title | Title | string | G | Title |
type | Type | string | G | Type |
Links
This resource has links to the following:
[reference] [top]ACI Node
Description
The custom data entities for the aci_node table
Table
cdt_aci_node
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G | The poll state of the entity
|
aci_pod | ACI Pod | string | G | ACI Pod |
admin_state | Admin State | string | G | ACI Node Administrative StateCan be combined with an event format for event-based analytics, see Event Formats. |
fabric_domain | ACI Fabric Domain | string | G | ACI Fabric Domain |
fabric_state | ACI Fabric State | string | G | ACI Fabric StateCan be combined with an event format for event-based analytics, see Event Formats. |
health | Health | integer | G | Health Timeseries Data: Stats, Formats & Options |
ip | IP Address | string | G | ACI Node Management IP Address |
model | Model | string | G | Model |
serial | Serial | string | G | Serial |
state | State | string | G | ACI Node StateCan be combined with an event format for event-based analytics, see Event Formats. |
title | Title | string | G | ACI Node Name |
type | Type | string | G | ACI Node Type |
vendor | vendor | string | G | vendor |
Links
This resource has links to the following:
[reference] [top]ACI Pod
Description
The custom data entities for the aci_pod table
Table
cdt_aci_pod
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G | The poll state of the entity
|
health | Health | integer | G | Health Timeseries Data: Stats, Formats & Options |
title | Title | string | G | ACI Pod |
Links
This resource has links to the following:
[reference] [top]ACI Subnet
Description
The custom data entities for the aci_subnet table
Table
cdt_aci_subnet
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G | The poll state of the entity
|
aci_bridge_domain | ACI Bridging Domain | string | G | ACI Bridging Domain |
alias | Alias | string | G | Subnet Alias |
ip | IP Address Range | string | G | IP Address Range |
title | Title | string | G | Subnet Name |
Links
This resource has links to the following:
[reference] [top]ACI Tenant
Description
The custom data entities for the aci_tenant table
Table
cdt_aci_tenant
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G | The poll state of the entity
|
health | Health | integer | G | Health Timeseries Data: Stats, Formats & Options |
title | Title | string | G | ACI Tenant Name |
Links
This resource has links to the following:
[reference] [top]ACI Private Network
Description
The custom data entities for the aci_vrf table
Table
cdt_aci_vrf
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G | The poll state of the entity
|
aci_tenant | ACI Tenant | string | G | aci_tenant |
health | Health | integer | G | health Timeseries Data: Stats, Formats & Options |
title | Title | string | G | Name for the Network Context |
Links
This resource has links to the following:
[reference] [top]Apcon Interface
Description
The custom data entities for the apcon_port table
Table
cdt_apcon_port
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
InBroadcastPkts | Rx Bcast Pkts | integer | G | Broadcast packets received. Timeseries Data: Stats, Formats & Options |
InMulticastPkts | Rx Mcast Pkts | integer | G | Multicast packets received. Timeseries Data: Stats, Formats & Options |
InOctets | Rx Bytes | integer | G | Receive byte count. Timeseries Data: Stats, Formats & Options |
InUcastPkts | Rx Ucast Pkts | integer | G | Unicast packets received. Timeseries Data: Stats, Formats & Options |
OutBroadcastPkts | Tx Bcast Pkts | integer | G | Broadcast packets transmitted. Timeseries Data: Stats, Formats & Options |
OutMulticastPkts | Tx Mcast Pkts | integer | G | Multicast packets transmitted. Timeseries Data: Stats, Formats & Options |
OutOctets | Tx Bytes | integer | G | Transmit byte count. Timeseries Data: Stats, Formats & Options |
OutUcastPkts | Tx Ucast Pkts | integer | G | Unicast packets transmitted. Timeseries Data: Stats, Formats & Options |
RxBps | Rx Bps | integer | G | Receive bits per second. Timeseries Data: Stats, Formats & Options |
RxUtil | Rx Util | float | G | Receive Utilization Timeseries Data: Stats, Formats & Options |
Speed | Speed | integer | G, U | Port Speed. |
TxBps | Tx Bps | integer | G | Transmit bits per second. Timeseries Data: Stats, Formats & Options |
TxUtil | Tx Util | float | G | Transmit Utilization Timeseries Data: Stats, Formats & Options |
Links
This resource has links to the following:
[reference] [top]Cisco APPNAV
Description
The custom data entities for the appnav_cisco table
Table
cdt_appnav_cisco
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
cAppNavACACGName | Controller Group | string | G, U | This object indicates the name of the AppNav controller group to which given AppNav controller belongs. |
cAppNavACCurrentCMState | Controller Member State | string | G, U | This object indicates the current cluster membership state of the given AppNav controller, one of:
Can be combined with an event format for event-based analytics, see Event Formats. |
cAppNavACIpAddr | Controller IP | string | G, U | This object indicates the IP address of the AppNav controller |
cAppNavACIpAddrType | Controller IP Type | string | G | This object indicates the address type of the cAppNavACIpAddr. The cAppNavACEntries are only valid for address type of IPv4 and IPv6. |
cAppNavACServContextName | Controller Service Context | string | G, U | This object indicates the name of the service context to which given AppNav controller belongs. |
cAppNavSNCurrentCMState | Node Member State | string | G, U | This object indicates the current cluster membership state of the given service node, one of:
Can be combined with an event format for event-based analytics, see Event Formats. |
cAppNavSNIpAddr | Node IP | string | G, U | This object indicates the IP address of the given service node. |
cAppNavSNIpAddrType | Node IP Type | string | G, U | This object indicates the address type of cacSnIpAddr. cacSNEntries are only valid for address type of IPv4 and IPv6. |
cAppNavSNSNGName | Node Group | string | G, U | This object indicates the name of the service node group to which given service node belongs. |
cAppNavSNServContextName | Node Context | string | G, U | This object indicates the name of the service context to which given service node belongs. |
Links
This resource has links to the following:
[reference] [top]BGP Peer
Description
The custom data entities for the bgp_peer table
Table
cdt_bgp_peer
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
AdminStatus | Admin Status | string | G, U | The desired state of the BGP connection.Can be combined with an event format for event-based analytics, see Event Formats.
|
ConnectRetryInterval | ConnectRetry Interval | integer | G, U | Time interval for the ConnectRetry timer. |
FsmEstablishedTime | FSM Established Time | integer | G | This timer indicates how long this peer has been in the established state or how long since this peer was last in the established state. Timeseries Data: Stats, Formats & Options |
FsmEstablishedTransitions | FSM Established Transitions | integer | G | The total number of times the BGP FSM transitioned into the established state for this peer. Timeseries Data: Stats, Formats & Options |
HoldTime | Hold Time | integer | G, U | Time interval for the Hold Timer established with the peer. |
KeepAlive | Keep Alive | integer | G, U | Time interval for the KeepAlive timer established with the peer. |
LocalAddr | Local IP | string | G, U | The local IP address of this entry’s BGP connection. |
LocalPort | Local Port | integer | G, U | The local port for the TCP connection between the BGP peers. |
MinASOriginationInterval | Min AS Origination Interval | integer | G, U | Time interval for the MinASOriginationInterval timer. |
MinRouteAdvertisementInterval | Min Route Advertisement Interval | integer | G, U | Time interval for the MinRouteAdvertisementInterval timer. |
NegotiatedVersion | Negotiated Version | integer | G, U | The negotiated version of BGP running between the two peers. |
PeerIdentifier | Peer Identifier | string | G, U | |
RemoteAddr | Remote IP | string | G, U | The remote IP address of this entry’s BGP peer. |
RemoteAs | Remote Autonomous System Number | string | G, U | The remote autonomous system number received in the BGP OPEN message. |
RemotePort | Remote Port | integer | G, U | The remote port for the TCP connection between the BGP peers. |
RxTotalMessages | Rx Messages | integer | G | The total number of messages received from the remote peer on this connection. Timeseries Data: Stats, Formats & Options |
RxUpdateElapsedTime | Rx Update Elapsed Time | integer | G | Elapsed time since the last BGP UPDATE message was received from the peer. Timeseries Data: Stats, Formats & Options |
RxUpdates | Rx Updates | integer | G | The number of BGP UPDATE messages received on this connection. Timeseries Data: Stats, Formats & Options |
State | State | string | G, U | The BGP peer connection state, one of:
Can be combined with an event format for event-based analytics, see Event Formats. |
TxTotalMessages | Tx Messages | integer | G | The total number of messages transmitted to the remote peer on this connection. Timeseries Data: Stats, Formats & Options |
TxUpdates | Tx Updates | integer | G | The number of BGP UPDATE messages transmitted on this connection. Timeseries Data: Stats, Formats & Options |
Links
This resource has links to the following:
[reference] [top]BGP Peer Address Family Prefix – Cisco
Description
The custom data entities for the bgp_peer_addr_family_prefix_cisco table
Table
cdt_bgp_peer_addr_family_prefix_cisco
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
AcceptedPrefixes | Accepted Prefixes | integer | G | Number of accepted route prefixes for an address family on this connection. Timeseries Data: Stats, Formats & Options |
AddrFamilyAfi | AFI Index | string | G | Address family identifier (e.g. IPv4, IPv6). |
AddrFamilyName | Address family name | string | G, U | Implementation specific address family name. |
AddrFamilySafi | SAFI Index | string | G | Subsequent address family identifier (e.g. unicast, multicast). |
AdvertisedPrefixes | Advertised Prefixes | integer | G | Incremented when a route prefix is advertised for an address family on this connection Timeseries Data: Stats, Formats & Options |
DeniedPrefixes | Denied Prefixes | integer | G | Incremented when a route prefix for an address family on this connection is denied. Timeseries Data: Stats, Formats & Options |
PrefixAdminLimit | Admin Limit | integer | G, U | Max number of route prefixes accepted for an address family on this connection. |
PrefixClearThreshold | Clear Threshold | integer | G, U | Prefix threshold value (%) to clear warning message for an address family on this connection. |
PrefixThreshold | Prefix Threshold | integer | G, U | Prefix threshold value (%) to generate warning message for an address family on this connection. |
RemoteAddr | Remote IP | string | G | The remote IP address of this entry’s BGP peer. |
SuppressedPrefixes | Suppressed Prefixes | integer | G | Incremented when a route prefix is suppressed from being sent for an address family on this connection. Timeseries Data: Stats, Formats & Options |
WithdrawnPrefixes | Withdrawn Prefixes | integer | G | Incremented when a route prefix is withdrawn for an address family on this connection Timeseries Data: Stats, Formats & Options |
Links
This resource has links to the following:
[reference] [top]BGP Peer – Cisco
Description
The custom data entities for the bgp_peer_cisco table
Table
cdt_bgp_peer_cisco
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
AdminStatus | Admin Status | string | G | The desired state of the BGP connection.Can be combined with an event format for event-based analytics, see Event Formats.
|
ConnectRetryInterval | ConnectRetry Interval | integer | G | Time interval for the ConnectRetry timer. |
FsmEstablishedTime | FSM Established Time | integer | G | This timer indicates how long this peer has been in the established state or how long since this peer was last in the established state. Timeseries Data: Stats, Formats & Options |
FsmEstablishedTransitions | FSM Established Transitions | integer | G | The total number of times the BGP FSM transitioned into the established state for this peer. Timeseries Data: Stats, Formats & Options |
HoldTime | Hold Time | integer | G | Time interval for the Hold Timer established with the peer. |
KeepAlive | Keep Alive | integer | G | Time interval for the KeepAlive timer established with the peer. |
LocalAddr | Local IP | string | G | The local IP address of this entry’s BGP connection. |
LocalPort | Local Port | integer | G | The local port for the TCP connection between the BGP peers. |
MinASOriginationInterval | Min AS Origination Interval | integer | G | Time interval for the MinASOriginationInterval timer. |
MinRouteAdvertisementInterval | Min Route Advertisement Interval | integer | G | Time interval for the MinRouteAdvertisementInterval timer. |
NegotiatedVersion | Negotiated Version | integer | G | The negotiated version of BGP running between the two peers. |
PeerIdentifier | Peer Identifier | string | G | |
RemoteAddr | Remote IP | string | G | The remote IP address of this entry’s BGP peer. |
RemoteAs | Remote Autonomous System Number | string | G | The remote autonomous system number received in the BGP OPEN message. |
RemotePort | Remote Port | integer | G | The remote port for the TCP connection between the BGP peers. |
RxTotalMessages | Rx Messages | integer | G | The total number of messages received from the remote peer on this connection. Timeseries Data: Stats, Formats & Options |
RxUpdateElapsedTime | Rx Update Elapsed Time | integer | G | Elapsed time since the last BGP UPDATE message was received from the peer. Timeseries Data: Stats, Formats & Options |
RxUpdates | Rx Updates | integer | G | The number of BGP UPDATE messages received on this connection. Timeseries Data: Stats, Formats & Options |
State | State | string | G | The BGP peer connection state
Can be combined with an event format for event-based analytics, see Event Formats. |
TxTotalMessages | Tx Messages | integer | G | The total number of messages transmitted to the remote peer on this connection. Timeseries Data: Stats, Formats & Options |
TxUpdates | Tx Updates | integer | G | The number of BGP UPDATE messages transmitted on this connection. Timeseries Data: Stats, Formats & Options |
Links
This resource has links to the following:
[reference] [top]BGP Peer – Juniper
Description
The custom data entities for the bgp_peer_juniper table
Table
cdt_bgp_peer_juniper
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
AdminStatus | Admin Status | string | G | The desired state of the BGP connection.Can be combined with an event format for event-based analytics, see Event Formats.
|
ConnectRetryInterval | ConnectRetry Interval | integer | G | Time interval for the ConnectRetry timer. |
FsmEstablishedTime | FSM Established Time | integer | G | This timer indicates how long this peer has been in the established state or how long since this peer was last in the established state. Timeseries Data: Stats, Formats & Options |
FsmEstablishedTransitions | FSM Established Transitions | integer | G | The total number of times the BGP FSM transitioned into the established state for this peer. Timeseries Data: Stats, Formats & Options |
HoldTime | Hold Time | integer | G | Time interval for the Hold Timer established with the peer. |
KeepAlive | Keep Alive | integer | G | Time interval for the KeepAlive timer established with the peer. |
LocalAddr | Local IP | string | G | The local IP address of this entry’s BGP connection. |
LocalPort | Local Port | integer | G | The local port for the TCP connection between the BGP peers. |
MinASOriginationInterval | Min AS Origination Interval | integer | G | Time interval for the MinASOriginationInterval timer. |
MinRouteAdvertisementInterval | Min Route Advertisement Interval | integer | G | Time interval for the MinRouteAdvertisementInterval timer. |
NegotiatedVersion | Negotiated Version | integer | G | The negotiated version of BGP running between the two peers. |
PeerIdentifier | Peer Identifier | string | G | |
RemoteAddr | Remote IP | string | G | The remote IP address of this entry’s BGP peer. |
RemoteAs | Remote Autonomous System Number | string | G | The remote autonomous system number received in the BGP OPEN message. |
RemotePort | Remote Port | integer | G | The remote port for the TCP connection between the BGP peers. |
RxTotalMessages | Rx Messages | integer | G | The total number of messages received from the remote peer on this connection. Timeseries Data: Stats, Formats & Options |
RxUpdateElapsedTime | Rx Update Elapsed Time | integer | G | Elapsed time since the last BGP UPDATE message was received from the peer. Timeseries Data: Stats, Formats & Options |
RxUpdates | Rx Updates | integer | G | The number of BGP UPDATE messages received on this connection. Timeseries Data: Stats, Formats & Options |
State | State | string | G | The BGP peer connection state
Can be combined with an event format for event-based analytics, see Event Formats. |
TxTotalMessages | Tx Messages | integer | G | The total number of messages transmitted to the remote peer on this connection. Timeseries Data: Stats, Formats & Options |
TxUpdates | Tx Updates | integer | G | The number of BGP UPDATE messages transmitted on this connection. Timeseries Data: Stats, Formats & Options |
Links
This resource has links to the following:
[reference] [top]Checkpoint Firewall
Description
The custom data entities for the checkpoint_firewall table
Table
cdt_checkpoint_firewall
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
Accepted | Accepted Pkts | integer | G | The number of accepted packets. Timeseries Data: Stats, Formats & Options |
Dropped | Dropped Pkts | integer | G | The number of dropped packets. Timeseries Data: Stats, Formats & Options |
InstallTime | Install Time | string | G, U | The time that the filter was installed. |
Logged | Logged Pkts | integer | G | The number of logged packets. Timeseries Data: Stats, Formats & Options |
Rejected | Rejected Pkts | integer | G | The number of rejected packets. Timeseries Data: Stats, Formats & Options |
Links
This resource has links to the following:
[reference] [top]Checkpoint VPN Sessions
Description
The custom data entities for the checkpoint_vpn_sessions table
Table
cdt_checkpoint_vpn_sessions
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
ActiveHwUserTunnels | Active Hw User Tunnels | integer | G | IPsec high-watermark active tunnels with remote access users Timeseries Data: Stats, Formats & Options |
RxError | Rx Errors | integer | G | Decryption Errors Timeseries Data: Stats, Formats & Options |
RxPackets | Rx Packets | integer | G | Decrypted packets Timeseries Data: Stats, Formats & Options |
TxError | Tx Errors | integer | G | Encryption Errors Timeseries Data: Stats, Formats & Options |
TxPackets | Tx Packets | integer | G | Encrypted packets Timeseries Data: Stats, Formats & Options |
activeHwTunnels | Active Hw Tunnels | integer | G | IPsec high-watermark active tunnels Timeseries Data: Stats, Formats & Options |
activeTunnels | Active IPsec Tunnels | integer | G | IPsec current active tunnels Timeseries Data: Stats, Formats & Options |
activeTunnelsLimit | Active Tunnels Limit | integer | G, U | IPsec active tunnels limit |
activeUserTunnels | Active User Tunnels | integer | G | IPsec current active tunnels with remote access users Timeseries Data: Stats, Formats & Options |
Links
This resource has links to the following:
[reference] [top]Cisco Active DS0
Description
The custom data entities for the cisco_activeDS0 table
Table
cdt_cisco_activeDS0
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
curActiveDS0s | Active DS0s | integer | G | The number of DS0s that are currently in use. Timeseries Data: Stats, Formats & Options |
maxActiveDS0s | Max Active DS0s | integer | G | The high water mark for number of DS0s active simultaneously. Timeseries Data: Stats, Formats & Options |
Links
This resource has links to the following:
[reference] [top]Cisco Call Stats
Description
The custom data entities for the cisco_call_stats table
Table
cdt_cisco_call_stats
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
MaxConnections | Max Connections | integer | G | This object represents the licensed call capacity for a voice gateway. |
RxCalls | Rx Calls | integer | G | This object represents the total number of inbound active media calls through this IP interface. Timeseries Data: Stats, Formats & Options |
TotalActiveConnections | Total Active Connections | integer | G | This object represents the total number of active call legs in the voice gateway. Timeseries Data: Stats, Formats & Options |
TxCalls | Tx Calls | integer | G | This object represents the total number of outbound active media calls through this IP interface. Timeseries Data: Stats, Formats & Options |
Links
This resource has links to the following:
[reference] [top]Cisco CB QoS Config – ClassMap
Description
The custom data entities for the cisco_cb_qos_class_map_config table
Table
cdt_cisco_cb_qos_class_map_config
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
description | Description | string | G, U | Description of the PolicyMap. |
matchType | Match Type | string | G, U | Match all vs Match any in a given class, one of:
|
Links
This resource has links to the following:
[reference] [top]Cisco CB QoS Data – Class
Description
The custom data entities for the cisco_cb_qos_class_map_data table
Table
cdt_cisco_cb_qos_class_map_data
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
direction | Direction | string | G | Direction of the top level policy |
drop | Dropped Bytes | integer | G | The 64 bits counter of dropped bytes per class as the result of all features that can produce drops (e.g., police, random detect, etc.). Timeseries Data: Stats, Formats & Options |
dropBitRate | Drop BitRate | float | G | The bit rate of the drops per class as the result of all features that can produce drops (e.g., police, random detect, etc.). Timeseries Data: Stats, Formats & Options |
dropPercent | Dropped Percent | float | G | Percentage of bytes dropped Timeseries Data: Stats, Formats & Options |
postPolicy | Post Policy Byte | integer | G | The 64 bits count of outbound octets after executing QoS policies. Timeseries Data: Stats, Formats & Options |
postPolicyBitRate | Post Policy BitRate | float | G | The bit rate of the traffic after executing QoS policies. Timeseries Data: Stats, Formats & Options |
prePolicy | Pre Policy Byte | integer | G | The 64 bits count of inbound octets prior to executing any QoS policies. Timeseries Data: Stats, Formats & Options |
prePolicyBitRate | Pre Policy BitRate | float | G | The bit rate of the traffic prior to executing any QoS policies. Timeseries Data: Stats, Formats & Options |
Links
This resource has links to the following:
- cdt_cisco_cb_qos_class_map_config
- cdt_cisco_cb_qos_config_policy_class
- cdt_cisco_cb_qos_policy_map_config
- cdt_device
- cdt_cisco_cb_qos_match_data
- cdt_port
Cisco CB QoS Config – Policy/Class
Description
The custom data entities for the cisco_cb_qos_config_policy_class table
Table
cdt_cisco_cb_qos_config_policy_class
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
Links
This resource has links to the following:
[reference] [top]Cisco CB QoS Data – Match
Description
The custom data entities for the cisco_cb_qos_match_data table
Table
cdt_cisco_cb_qos_match_data
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
bitRate | BitRate | float | G | The bit rate of the traffic prior to executing any QoS policies. Timeseries Data: Stats, Formats & Options |
bytes | Bytes | integer | G | Bytes Timeseries Data: Stats, Formats & Options |
packets | Packets | integer | G | Packets Timeseries Data: Stats, Formats & Options |
Links
This resource has links to the following:
- cdt_cisco_cb_qos_class_map_config
- cdt_cisco_cb_qos_class_map_data
- cdt_cisco_cb_qos_config_policy_class
- cdt_cisco_cb_qos_match_map_config
- cdt_cisco_cb_qos_policy_map_config
- cdt_device
- cdt_port
Cisco CB QoS Config – Match
Description
The custom data entities for the cisco_cb_qos_match_map_config table
Table
cdt_cisco_cb_qos_match_map_config
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
statement | Statement | string | G | The match statement |
type | Type | string | G | Match vs Match Not in a given class |
Links
This resource has links to the following:
- cdt_cisco_cb_qos_class_map_config
- cdt_cisco_cb_qos_config_policy_class
- cdt_cisco_cb_qos_policy_map_config
- cdt_device
Cisco CB QoS Config – PolicyMap
Description
The custom data entities for the cisco_cb_qos_policy_map_config table
Table
cdt_cisco_cb_qos_policy_map_config
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
description | Description | string | G, U | Description of the PolicyMap. |
Links
This resource has links to the following:
[reference] [top]Cisco CB QoS Data – Queue
Description
The custom data entities for the cisco_cb_qos_queue_data table
Table
cdt_cisco_cb_qos_queue_data
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
discard | Discard | integer | G | The count of octets, associated with this class, that were dropped by queuing Timeseries Data: Stats, Formats & Options |
percentUsed | Used Percent | float | G | The percent of the Queue Depth used Timeseries Data: Stats, Formats & Options |
size | Size | integer | G | The maximum depth of the queue. Timeseries Data: Stats, Formats & Options |
used | Used | integer | G | The current depth of the queue Timeseries Data: Stats, Formats & Options |
Links
This resource has links to the following:
- cdt_cisco_cb_qos_class_map_config
- cdt_cisco_cb_qos_class_map_data
- cdt_cisco_cb_qos_config_policy_class
- cdt_cisco_cb_qos_policy_map_config
- cdt_cisco_cb_qos_queue_map_config
- cdt_device
- cdt_port
Cisco CB QoS Config – Queue
Description
The custom data entities for the cisco_cb_qos_queue_map_config table
Table
cdt_cisco_cb_qos_queue_map_config
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
aggregateQueueLimit | Aggregate Queue Limit | string | G | Maximum allowed queue size for all the individual queues associated with this class. When the queue size exceed this value, the packets will be dropped. |
aggregateQueueSize | Aggregate Queue Size | integer | G | Maximum number of packets that can be held in all the individual queues associated with this class before packets are dropped. |
bandwidth | Bandwidth | string | G | The bandwidth configuration value |
dynamicQueueNumber | Dynamic Queue Number | integer | G | Number of dynamic queues supported when flow-based fair-queue is in use. |
flowEnabled | Flow Enabled | string | G | Indicate if flow-based fair-queue is enabled for this class, one of:
|
individualQueueSize | Individual Queue Size | integer | G | Maximum number of packets that can be held in an individual Flow-based fair-queue associated with this class before it drops packets (once the AggregateQSize has been reached). This field only makes sense in the context of Flow-based fair-queuing. |
priorityBurstSize | Priority Burst Size | integer | G | In the priority queue, this is the number of bytes allowed in a single burst. This parameter only makes sense if Priority is enabled |
priorityEnabled | Priority Enabled | string | G | Indicate if low latency queuing (priority) is enabled for this class, one of:
|
Links
This resource has links to the following:
- cdt_cisco_cb_qos_class_map_config
- cdt_cisco_cb_qos_config_policy_class
- cdt_cisco_cb_qos_policy_map_config
- cdt_device
Cisco Discovery Protocol Cache
Description
The custom data entities for the cisco_cdp_cache table
Table
cdt_cisco_cdp_cache
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
cdpCacheAddressIP | Remote Device IP | string | G | |
cdpCacheAddressName | Remote Device | string | G | |
cdpCacheDeviceId | Remote Device ID | string | G, U | |
cdpCacheDevicePort | Remote Interface | string | G, U | |
cdpCacheIfIndex | Local ifIndex | string | G | Interface Index (IF-MIB.ifIndex) of the local interface |
cdpCachePlatform | Remote Device Platform | string | G, U |
Links
This resource has links to the following:
[reference] [top]Cisco EIGRP
Description
The custom data entities for the cisco_eigrp table
Table
cdt_cisco_eigrp
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
AcksRcvd | Acks Received | integer | G | Acks Received Timeseries Data: Stats, Formats & Options |
AcksSent | Acks Sent | integer | G | Acks Sent Timeseries Data: Stats, Formats & Options |
AsNumber | AS Number | integer | G | The Autonomous System number which is unique integer per VPN |
AsRouterId | Router Id | string | G | The router-id configured or automatically selected for the EIGRP AS. Each EIGRP routing process has a unique router-id selected from each autonomous system configured. The format is governed by object cEigrpAsRouterIdType. |
AsRouterIdType | Router Type | string | G, U | The format of the router-id configured or automatically selected for the EIGRP AS. |
HellosRcvd | Hellos Received | integer | G | Hellos Received Timeseries Data: Stats, Formats & Options |
HellosSent | Hellos Sent | integer | G | The total number Hello packets that have been sent to all EIGRP neighbors formed on all interfaces whose IP addresses fall under networks configured for the EIGRP AS. Timeseries Data: Stats, Formats & Options |
NbrCount | Neighbor Count | integer | G | The total number of live EIGRP neighbors formed on all interfaces whose IP addresses fall under networks configured in the EIGRP AS. Timeseries Data: Stats, Formats & Options |
QueriesRcvd | Queries Received | integer | G | The total number alternate route query packets that have been received from all EIGRP neighbors formed on all interfaces whose IP addresses fall under networks configured for the EIGRP AS. Timeseries Data: Stats, Formats & Options |
QueriesSent | Queries Sent | integer | G | The total number alternate route query packets that have been sent to all EIGRP neighbors formed on all interfaces whose IP addresses fall under networks configured for the EIGRP AS. Timeseries Data: Stats, Formats & Options |
RepliesRcvd | Replies Received | integer | G | Replies Received Timeseries Data: Stats, Formats & Options |
RepliesSent | Replies Sent | integer | G | Replies Sent Timeseries Data: Stats, Formats & Options |
TopoRoutes | Routes | integer | G | The total number of EIGRP derived routes currently existing in the topology table for the AS. Timeseries Data: Stats, Formats & Options |
UpdatesRcvd | Updates Received | integer | G | Updates Received Timeseries Data: Stats, Formats & Options |
UpdatesSent | Updates Sent | integer | G | Updates Sent Timeseries Data: Stats, Formats & Options |
Links
This resource has links to the following:
[reference] [top]Cisco EIGRP Peer
Description
The custom data entities for the cisco_eigrp_peer table
Table
cdt_cisco_eigrp_peer
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
HoldTime | Hold Time | integer | G | The count-down timer indicating how much time must pass without receiving a hello packet from this EIGRP peer before this router declares the peer down. A peer declared as down is removed from the table and is no longer visible. Timeseries Data: Stats, Formats & Options |
LastSeq | Last Seq | integer | G | All transmitted EIGRP packets have a sequence number assigned. This is the sequence number of the last EIGRP packet sent to this peer. Timeseries Data: Stats, Formats & Options |
PeerAddrType | Peer Address Type | string | G, U | The format of the remote source IP address used by the peer to establish the EIGRP adjacency with this router. |
PeerIfIndex | Peer Interface Index | integer | G, U | The ifIndex of the interface on this router through which this peer can be reached. |
PktsEnqueued | Packets Enqueued | integer | G | The number of any EIGRP packets currently enqueued waiting to be sent to this peer. Timeseries Data: Stats, Formats & Options |
RemotePeerDevice | Remote Peer | string | G | Remote Peer |
Retrans | Retransmits | integer | G | Retransmits Timeseries Data: Stats, Formats & Options |
Retries | Retries | integer | G | Retries Timeseries Data: Stats, Formats & Options |
Rto | Retransmission Timeout | integer | G | The computed retransmission timeout for the peer. This value is computed over time as packets are sent to the peer and acknowledgements are received from it, and is the amount of time to wait before resending a packet from the retransmission queue to the peer when an expected acknowledgement has not been received. Timeseries Data: Stats, Formats & Options |
Srtt | SRTT | integer | G | The computed smooth round trip time for packets to and from the peer. Timeseries Data: Stats, Formats & Options |
Version | Eigrp Version | string | G, U | Eigrp Version |
portLink | portLink | string | G, U | portLink |
Links
This resource has links to the following:
[reference] [top]Cisco TCAM Entries
Description
The custom data entities for the cisco_fib_tcam table
Table
cdt_cisco_fib_tcam
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
ciscoTcamProtocolType | TCAM Protocol | string | G | The Layer 3 protocol utilizing FIB TCAM resource, one of
|
entPhysicalName | Component Name | string | G | |
tcamFree | Physical Free | integer | G | Amount of Physical TCAM entries free Timeseries Data: Stats, Formats & Options |
tcamFreePercent | Physical Free Percent | float | G | Amount of Physical TCAM entries free as a percentage Timeseries Data: Stats, Formats & Options |
tcamLogicalFree | Logical Free | integer | G | Amount of Logical TCAM entries free Timeseries Data: Stats, Formats & Options |
tcamLogicalFreePercent | Logical Free Percent | float | G | Amount of TCAM entries free as a percentage Timeseries Data: Stats, Formats & Options |
tcamLogicalSize | Logical Total | integer | G | Amount of Logical TCAM entries Timeseries Data: Stats, Formats & Options |
tcamLogicalUsed | Logical Used | integer | G | Amount of Logical TCAM entries used Timeseries Data: Stats, Formats & Options |
tcamLogicalUsedPercent | Logical Used Percent | float | G | Amount of Logical TCAM entries used as a percentage Timeseries Data: Stats, Formats & Options |
tcamSize | Physical Total | integer | G | Amount of Physical TCAM entries Timeseries Data: Stats, Formats & Options |
tcamUsed | Physical Used | integer | G | tsg Timeseries Data: Stats, Formats & Options |
tcamUsedPercent | Physical Used Percent | float | G | Amount of Physical TCAM entries used as a percentage Timeseries Data: Stats, Formats & Options |
tcamWidth | TCAM Width | string | G, U | Indicates the entry width type for the protocol |
Links
This resource has links to the following:
[reference] [top]Cisco Firewall Connections
Description
The custom data entities for the cisco_firewall_connections table
Table
cdt_cisco_firewall_connections
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
cfwConnectionService | Service | string | G | Connection service |
cfwConnectionStatCount | Count | integer | G | This is an integer that contains the value of the resource statistic. Timeseries Data: Stats, Formats & Options |
cfwConnectionStatDescription | Description | string | G, U | A detailed textual description of this statistic. |
cfwConnectionStatValue | Value | integer | G | This is an integer that contains the value of the resource statistic. Timeseries Data: Stats, Formats & Options |
cfwConnectionType | Type | string | G | Connection type, one of:
|
Links
This resource has links to the following:
[reference] [top]Cisco IF Extension
Description
The custom data entities for the cisco_if_extension table
Table
cdt_cisco_if_extension
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
cieIfInAbortErrs | In Abort Errs | integer | G | Number of input packets which were dropped because the receiver aborted. Examples of this could be when an abort sequence aborted the input frame or when there is a collision in an ethernet segment. Timeseries Data: Stats, Formats & Options |
cieIfInFramingErrs | In Framing Errs | integer | G | The number of input packets on a physical interface which were misaligned or had framing errors. This happens when the format of the incoming packet on a physical interface is incorrect. Timeseries Data: Stats, Formats & Options |
cieIfInGiantsErrs | In Giants Errs | integer | G | The number of input packets on a particular physical interface which were dropped as they were larger than the ifMtu (largest permitted size of a packet which can be sent/received on an interface). Timeseries Data: Stats, Formats & Options |
cieIfInIgnored | In Ignored | integer | G | The number of input packets which were simply ignored by this physical interface due to insufficient resources to handle the incoming packets. For example, this could indicate that the input receive buffers are not available or that the receiver lost a packet. Timeseries Data: Stats, Formats & Options |
cieIfInOverrunErrs | In Overrun Errs | integer | G | The number of input packets which arrived on a particular physical interface which were too quick for the hardware to receive and hence the receiver ran out of buffers. Timeseries Data: Stats, Formats & Options |
cieIfInRuntsErrs | In Runts Errs | integer | G | The number of packets input on a particular physical interface which were dropped as they were smaller than the minimum allowable physical media limit. Timeseries Data: Stats, Formats & Options |
cieIfInputQueueDrops | Input Queue Drops | integer | G | The number of input packets which were dropped. Some reasons why this object could be incremented are: o Input queue is full. o Errors at the receiver hardware while receiving the packet. Timeseries Data: Stats, Formats & Options |
cieIfOutputQueueDrops | Output Queue Drops | integer | G | This object indicates the number of output packets dropped by the interface even though no error had been detected to prevent them being transmitted. The packet could be dropped for many reasons, which could range from the interface being down to errors in the format of the packet. Timeseries Data: Stats, Formats & Options |
Links
This resource has links to the following:
[reference] [top]Cisco VPN Global Tunnels
Description
The custom data entities for the cisco_ipsec_global table
Table
cdt_cisco_ipsec_global
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
ActiveTunnels | Active Tunnels | integer | G | The total number of currently active IPsec Phase-1 Tunnels. Timeseries Data: Stats, Formats & Options |
InDropPkts | RxDropPkts | integer | G | The total number of packets dropped during receive processing by all currently and previously active IPsec Phase-1 Tunnels Timeseries Data: Stats, Formats & Options |
InOctets | RxBytes | integer | G | The total number of octets received by all currently and previously active IPsec Phase-1 IKE Tunnels. Timeseries Data: Stats, Formats & Options |
InPkts | RxPkts | integer | G | The total number of packets received by all currently and previously active IPsec Phase-1 IKE Tunnels. Timeseries Data: Stats, Formats & Options |
OutDropPkts | TxDropPkts | integer | G | The total number of packets dropped during send processing by all currently and previously active IPsec Phase-1 Tunnels Timeseries Data: Stats, Formats & Options |
OutOctets | TxBytes | integer | G | The total number of octets sent by all currently and previously active IPsec Phase-1 IKE Tunnels. Timeseries Data: Stats, Formats & Options |
OutPkts | TxPkts | integer | G | The total number of packets sent by all currently and previously active IPsec Phase-1 IKE Tunnels. Timeseries Data: Stats, Formats & Options |
Links
This resource has links to the following:
[reference] [top]Cisco VPN Tunnels
Description
The custom data entities for the cisco_ipsec_tun table
Table
cdt_cisco_ipsec_tun
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
ActiveTime | Active Time | integer | G | The length of time the IPsec Phase-1 IKE tunnel has been active in seconds. Timeseries Data: Stats, Formats & Options |
InDropPkts | RxDropPkts | integer | G | The total number of packets dropped by this IPsec Phase-1 IKE Tunnel during receive processing. Timeseries Data: Stats, Formats & Options |
InOctets | RxBytes | integer | G | The total number of octets received by this IPsec Phase-1 IKE Tunnel. Timeseries Data: Stats, Formats & Options |
InPkts | RxPkts | integer | G | The total number of packets received by this IPsec Phase-1 IKE Tunnel. Timeseries Data: Stats, Formats & Options |
LifeTime | Life Time | integer | G | The negotiated LifeTime the IPsec Phase-1 IKE tunnel in seconds. Timeseries Data: Stats, Formats & Options |
LocalAddr | Local IP | string | G | Local IP of the Tunnel |
LocalName | Local DNS Name | string | G, U | DNS name of the local IP, or NULL if not known. |
LocalType | Tunnel Type | string | G, U | Local Peer Identity Type, one of:
|
LocalValue | Tunnel Local Value | string | G, U | Local Peer Identity Value |
OutDropPkts | TxDropPkts | integer | G | The total number of packets dropped by this IPsec Phase-1 IKE Tunnel during send processing Timeseries Data: Stats, Formats & Options |
OutOctets | TxBytes | integer | G | The total number of octets sent by this IPsec Phase-1 IKE Tunnel. Timeseries Data: Stats, Formats & Options |
OutPkts | TxPkts | integer | G | The total number of packets sent by this IPsec Phase-1 IKE Tunnel. Timeseries Data: Stats, Formats & Options |
RemoteAddr | Remote IP | string | G | Remote IP of the Tunnel |
RemoteName | Remote DNS Name | string | G, U | DNS name of the Remote IP, or NULL if not known. |
RemoteType | Tunnel Type | string | G, U | Remote Peer Identity Type |
RemoteValue | Tunnel Remote Value | string | G, U | Remote Peer Identity Value |
Status | Tun Status | string | G | Tunnel Status, one of:
|
Links
This resource has links to the following:
[reference] [top]Cisco IPSLA
Description
The custom data entities for the cisco_ipsla table
Table
cdt_cisco_ipsla
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
AdminFrequency | Frequency | integer | G, U | Specifies the duration between initiating each RTT operation |
AdminOwner | Owner | string | G, U | Identifies the entity that created this table row |
AdminProtocol | Protocol | string | G, U | Specifies the protocol to be used to perform the RTT operation, one of:
|
AdminRttType | RTT Type | string | G, U | Admin Round Trip Time Type, one of:
|
AdminStatus | Admin Status | string | G, U | The status of the conceptual RTT control row, one of:
|
AdminTag | Tag | string | G, U | A string which is used by a managing application to identify the RTT target |
AdminThreshold | Threshold | integer | G, U | This object defines an administrative threshold limit |
AdminTimeout | Timeout | integer | G, U | Specifies the duration to wait for a RTT operation completion |
CompletionStatus | Completion Status | string | G, U | The completion status of the conceptual RTT control row, one of:
Can be combined with an event format for event-based analytics, see Event Formats. |
JitterAvgDSJ | Jitter – Dst to Src | integer | G | The average of positive and negative jitter values from destination to source. Timeseries Data: Stats, Formats & Options |
JitterAvgSDJ | Jitter – Src to Dst | integer | G | The average of positive and negative jitter values from source to destination. Timeseries Data: Stats, Formats & Options |
JitterMaxNegDS | Jitter – Neg Dst to Src Max | integer | G | The maximum of all absolute negative jitter values from packets sent from destination to source Timeseries Data: Stats, Formats & Options |
JitterMaxNegSD | Jitter – Neg Src to Dst Max | integer | G | The maximum of all absolute negative jitter values from packets sent from source to destination. Timeseries Data: Stats, Formats & Options |
JitterMaxPosDS | Jitter – Pos Dst to Src Max | integer | G | The maximum of all positive jitter values from packets sent from destination to source Timeseries Data: Stats, Formats & Options |
JitterMaxPosSD | Jitter – Pos Src to Dst Max | integer | G | The maximum of all positive jitter values from packets sent from source to destination. Timeseries Data: Stats, Formats & Options |
JitterMinNegDS | Jitter – Neg Dst to Src Min | integer | G | The minimum of all absolute negative jitter values from packets sent from destination to source Timeseries Data: Stats, Formats & Options |
JitterMinNegSD | Jitter – Neg Src to Dst Min | integer | G | The minimum of all absolute negative jitter values from packets sent from source to destination. Timeseries Data: Stats, Formats & Options |
JitterMinPosDS | Jitter – Pos Dst to Src Min | integer | G | The maximum of all positive jitter values from packets sent from destination to source Timeseries Data: Stats, Formats & Options |
JitterMinPosSD | Jitter – Pos Src to Dst Min | integer | G | The maximum of all positive jitter values from packets sent from source to destination. Timeseries Data: Stats, Formats & Options |
JitterRTTAvg | Latency – RTT Avg | integer | G | The average latency from of the measured RTT’s Timeseries Data: Stats, Formats & Options |
JitterRTTMax | Latency – RTT Max | integer | G | The maximum of RTT’s that were successfully measured. Timeseries Data: Stats, Formats & Options |
JitterRTTMin | Latency – RTT Min | integer | G | The minimum of RTT’s that were successfully measured. Timeseries Data: Stats, Formats & Options |
LatencyAvgDS | Latency – Dst to Src | integer | G | The average latency from source to destination. Timeseries Data: Stats, Formats & Options |
LatencyAvgSD | Latency – Src to Dest | integer | G | The average latency from source to destination. Timeseries Data: Stats, Formats & Options |
LatestRttOperCompletionTime | Latest RTT Completion Time | integer | G | The completion time of the latest RTT operation successfully completed Timeseries Data: Stats, Formats & Options |
TargetAddress | Target Address | string | G | The target address of the ipsla probe. |
rttMonEchoAdminNumPackets | Num RTT’s | integer | G | This value represents the number of packets that need to be transmitted. This value is currently used for Jitter probe. This object is applicable to jitter probe only. Timeseries Data: Stats, Formats & Options |
rttMonLatestJitterOperICPIF | ICPIF | integer | G | ICPIF Timeseries Data: Stats, Formats & Options |
rttMonLatestJitterOperMOS | MOS | integer | G | MOS Timeseries Data: Stats, Formats & Options |
Links
This resource has links to the following:
[reference] [top]Cisco NBAR
Description
The custom data entities for the cisco_nbar table
Table
cdt_cisco_nbar
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
Interface | Interface Name | string | G, U | Interface Name |
ProtocolName | Protocol Name | string | G, U | Protocol Name |
RxBps | Rx Bps | integer | G | Tx Bits Per second (Calculated from Bytes) Timeseries Data: Stats, Formats & Options |
RxBytes | Rx Bytes | integer | G | The byte count of inbound octets as determined by Protocol Discovery. Timeseries Data: Stats, Formats & Options |
RxPkts | Rx Pkts | integer | G | The packet count of inbound packets as determined by Protocol Discovery. Timeseries Data: Stats, Formats & Options |
RxUtil | Rx Util | float | G | The Rx Utilization of this protocol. Timeseries Data: Stats, Formats & Options |
TxBps | Tx Bps | integer | G | Tx Bits Per second (Calculated from Bytes) Timeseries Data: Stats, Formats & Options |
TxBytes | Tx Bytes | integer | G | The byte count of outbound octets as determined by Protocol Discovery. Timeseries Data: Stats, Formats & Options |
TxPkts | Tx Pkts | integer | G | The packet count of outbound packets as determined by Protocol Discovery. Timeseries Data: Stats, Formats & Options |
TxUtil | Tx Util | float | G | The Tx Utilization of this protocol. Timeseries Data: Stats, Formats & Options |
Type | Type | string | G | Application Monitor Type |
Links
This resource has links to the following:
[reference] [top]Cisco VPN Sessions
Description
The custom data entities for the cisco_vpn_sessions table
Table
cdt_cisco_vpn_sessions
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
IPSecSessions | Established IPSec Sessions | integer | G | The number of IPSec sessions established. Timeseries Data: Stats, Formats & Options |
L2LSessions | Established L2L Sessions | integer | G | The number of LAN to LAN sessions established. Timeseries Data: Stats, Formats & Options |
LBSessions | Established LB Sessions | integer | G | The number of load balancing sessions established. Timeseries Data: Stats, Formats & Options |
MaxGroupsSuport | Maximum Supported Groups | integer | G, U | Maximum number of remote access groups supported. |
MaxSessionsSuport | Maximum Supported Sessions | integer | G, U | Maximum number of remote access sessions supported. |
MaxUsersSuport | Maximum Supported Users | integer | G, U | Maximum number of remote access users supported. |
SVCSessions | Established SVC Sessions | integer | G | The number of secure VPN client sessions sessions established. Timeseries Data: Stats, Formats & Options |
WebvpnSessions | Established Webvpn Sessions | integer | G | The number of secure VPN client sessions sessions established. Timeseries Data: Stats, Formats & Options |
activeEmailSessions | Active Email Sessions | integer | G | The number of active Email proxy sessions. Timeseries Data: Stats, Formats & Options |
activeGroups | Active Groups | integer | G | The number of user groups whose members have active sessions. Timeseries Data: Stats, Formats & Options |
activeIPSecSessions | Active IPSec Sessions | integer | G | The number of active IPSec sessions. Timeseries Data: Stats, Formats & Options |
activeL2LSessions | Active L2L Sessions | integer | G | The number of active LAN to LAN sessions. Timeseries Data: Stats, Formats & Options |
activeLBSessions | Active LB Sessions | integer | G | The number of active load balancing sessions. Timeseries Data: Stats, Formats & Options |
activeSVCSessions | Active SVC Sessions | integer | G | The number of active secure VPN client sessions. Timeseries Data: Stats, Formats & Options |
activeSessions | Active Sessions | integer | G | Number of active remote access sessions. Timeseries Data: Stats, Formats & Options |
activeUsers | Active Users | integer | G | The number of users who have active sessions. Timeseries Data: Stats, Formats & Options |
activeWebvpnSessions | Active Webvpn Sessions | integer | G | The number of secure VPN client sessions. Timeseries Data: Stats, Formats & Options |
emailSessions | Established Email Sessions | integer | G | The number of Email proxy sessions established. Timeseries Data: Stats, Formats & Options |
maxSvcSessions | Max Concurrent SVC Sessions | integer | G | Maximum number of concurrent SVC sessions since system up. Timeseries Data: Stats, Formats & Options |
prevSessions | Previous Sessions | integer | G | The number of remote access sessions which were previously active but which where since terminated. Timeseries Data: Stats, Formats & Options |
Links
This resource has links to the following:
[reference] [top]Cisco WAN 3G
Description
The custom data entities for the cisco_wan_3g table
Table
cdt_cisco_wan_3g
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
GsmCountry | GSM Country | string | G, U | GSM Country |
GsmEcIo | GSM Ec/Io | integer | G | GSM Ec/Io Timeseries Data: Stats, Formats & Options |
GsmNetwork | GSM Network | string | G, U | GSM Network |
GsmRSSI | GSM RSSI | integer | G | GSM RSSI Timeseries Data: Stats, Formats & Options |
IMEI | IMEI | string | G | International Mobile Equipment Identifier |
ModemTemp | Modem Temperature | integer | G | The modem temperature in degrees celsius Timeseries Data: Stats, Formats & Options |
NearbyCells | Nearby Cells | integer | G | The current total number of nearby cells in the c3gGsmNearbyCellTable. Timeseries Data: Stats, Formats & Options |
RetriesRemaining | Retries Remaining | integer | G | Indicates the number of attempts remaining in case the SIM is locked. If the number of retries becomes zero, the SIM is blocked and becomes unusable. Timeseries Data: Stats, Formats & Options |
RxBytes | Rx Bytes | integer | G | Rx Bytes Timeseries Data: Stats, Formats & Options |
TxBytes | Tx Bytes | integer | G | Tx Bytes Timeseries Data: Stats, Formats & Options |
Links
This resource has links to the following:
[reference] [top]Cisco WAN 3G Nearby Cells
Description
The custom data entities for the cisco_wan_3g_nearby_cells table
Table
cdt_cisco_wan_3g_nearby_cells
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
EcIoMeasurement | EcIo Measurement | integer | G | EcIo Measurement Timeseries Data: Stats, Formats & Options |
PrimaryScramblingCode | Primary Scrambling Code | integer | G | Primary Scrambling Code Timeseries Data: Stats, Formats & Options |
RSCP | RSCP | integer | G | Received Signal Code Power (RSCP). Timeseries Data: Stats, Formats & Options |
wan3gIndex | Cisco WAN 3G Index | string | G | Index to parent cisco_wan_3g entity. |
Links
This resource has links to the following:
[reference] [top]Cisco WAN 4G
Description
The custom data entities for the cisco_wan_4g table
Table
cdt_cisco_wan_4g
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
operatingBand | Operating Band | integer | G | Operating Band Timeseries Data: Stats, Formats & Options |
rsrp | Reference Signal Receive Power (RSRP) | integer | G | Reference Signal Receive Power (RSRP) Timeseries Data: Stats, Formats & Options |
rsrq | Reference Signal Receive Quality (RSRQ) | integer | G | Reference Signal Receive Quality (RSRQ) Timeseries Data: Stats, Formats & Options |
sinr | Signal-to-Interference plus Noise Ratio (SINR) | integer | G | Signal-to-Interference plus Noise Ratio (SINR) Timeseries Data: Stats, Formats & Options |
snr | Signal to Noise Ratio(SNR) | integer | G | Signal to Noise Ratio(SNR) Timeseries Data: Stats, Formats & Options |
Links
This resource has links to the following:
[reference] [top]Citrix Netscaler AAA Stats
Description
The custom data entities for the citrix_netscaler_vpn_stats table
Table
cdt_citrix_netscaler_vpn_stats
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
AuthFail | Auth Fail Count | integer | G | Count of authentication failures Timeseries Data: Stats, Formats & Options |
AuthNonHttpFail | Non-HTTP Fail Count | integer | G | Count of non HTTP connections that failed authorization Timeseries Data: Stats, Formats & Options |
AuthNonHttpSuccess | Non-HTTP Success Count | integer | G | Count of non HTTP connections that succeeded authorization Timeseries Data: Stats, Formats & Options |
AuthOnlyHttpFail | HTTP Fail Count | integer | G | Count of HTTP connections that failed authorization Timeseries Data: Stats, Formats & Options |
AuthOnlyHttpSuccess | HTTP Success Count | integer | G | Count of HTTP connections that succeeded authorization Timeseries Data: Stats, Formats & Options |
AuthSuccess | Auth Success Count | integer | G | Count of authentication successes Timeseries Data: Stats, Formats & Options |
CurICAOnlyConn | ICA Only Connections | integer | G | Count of current ICA only connections Timeseries Data: Stats, Formats & Options |
CurICASessions | ICA Only Sessions | integer | G | Count of current ICA only sessions Timeseries Data: Stats, Formats & Options |
CurSessions | AAA Currrent Sessions | integer | G | Count of all AAA current sessions Timeseries Data: Stats, Formats & Options |
CurTMSessions | AAATM Only Sessions | integer | G | Count of current AAATM only sessions Timeseries Data: Stats, Formats & Options |
TotSessionTimeout | AAA Total Sessions Timed Out | integer | G | Count of all AAA sessions that have timed out Timeseries Data: Stats, Formats & Options |
TotSessions | AAA Total Sessions | integer | G | Count of all AAA sessions Timeseries Data: Stats, Formats & Options |
TotTMSessions | AAATM Total Sessions | integer | G | Count of all AAATM sessions Timeseries Data: Stats, Formats & Options |
Links
This resource has links to the following:
[reference] [top]Riverbed WAN Accelerator
Description
The custom data entities for the connections_riverbed table
Table
cdt_connections_riverbed
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
LANRxOptBps | LANRxOpt Bps | float | G | Total optimized bytes across all application ports, in the WAN to LAN direction since the last restart of service, as measured on the LAN side. Timeseries Data: Stats, Formats & Options |
LANRxTotal | LANRxTotal Bytes | integer | G | Rx Optimized + Rx Passthrough Bytes over LAN Timeseries Data: Stats, Formats & Options |
LANRxTotalBps | LANRxTotalBps | float | G | Rx Optimized + Rx Passthrough Bytes over LAN Timeseries Data: Stats, Formats & Options |
LANTotal | LAN Total Bytes | integer | G | LAN Rx + Tx Total Bytes Timeseries Data: Stats, Formats & Options |
LANTotalBps | LAN Total Bps | float | G | LAN Rx + Tx Total Bytes Timeseries Data: Stats, Formats & Options |
LANTxOptBps | LANTxOpt Bps | float | G | Total optimized bytes across all application ports, in the LAN to WAN direction since the last restart of service, as measured on the LAN side Timeseries Data: Stats, Formats & Options |
LANTxTotal | LANTxTotal Bytes | integer | G | Tx Optimized + Tx Passthrough Bytes over LAN Timeseries Data: Stats, Formats & Options |
LANTxTotalBps | LANTxTotal Bps | float | G | Tx Optimized + Tx Passthrough Bytes over LAN Timeseries Data: Stats, Formats & Options |
PassThroughRxBps | PassThrough WAN to LAN Bps | float | G | Passthrough Bps in WAN to LAN direction. Timeseries Data: Stats, Formats & Options |
PassThroughTxBps | PassThrough LAN to WAN Bps | float | G | Passthrough Bps in LAN to WAN direction. Timeseries Data: Stats, Formats & Options |
TotalLANOptBps | LAN Optimized Total | float | G | LAN Optimized Total Bps Timeseries Data: Stats, Formats & Options |
TotalPassThroughBps | PassThrough Total Bps | float | G | Passthrough Bps in LAN to WAN direction. Timeseries Data: Stats, Formats & Options |
TotalWANOptBps | Total WAN Optimized Bps | float | G | WAN Optimized Total Bps Timeseries Data: Stats, Formats & Options |
WANOptTotal | WAN Optimized Total Bytes | integer | G | Bytes WAN Optimized Total Timeseries Data: Stats, Formats & Options |
WANRxOptBps | WANRxOpt Bps | float | G | Total optimized bytes across all application ports, in the WAN to LAN direction since the last restart of service, as measured on the WAN side. Timeseries Data: Stats, Formats & Options |
WANRxTotal | WANRxTotal Bytes | integer | G | Rx Optimized + Rx Passthrough Bytes over WAN Timeseries Data: Stats, Formats & Options |
WANRxTotalBps | WANRxTotal Bps | float | G | Rx Optimized + Rx Passthrough Bytes over WAN Timeseries Data: Stats, Formats & Options |
WANTotal | WAN Total Bytes | integer | G | WANRx + Tx Total Bytes Timeseries Data: Stats, Formats & Options |
WANTotalBps | WAN Total Bps | float | G | WAN Rx + Tx Total Bps Timeseries Data: Stats, Formats & Options |
WANTxOptBps | WANTxOpt Bps | float | G | Total optimized bytes across all application ports, in the LAN to WAN direction since the last restart of service, as measured on the WAN side. Timeseries Data: Stats, Formats & Options |
WANTxTotal | WANTxTotal Bytes | integer | G | Tx Optimized + Tx Passthrough Bytes over WAN Timeseries Data: Stats, Formats & Options |
WANTxTotalBps | WANTxTotal Bps | float | G | Tx Optimized + Tx Passthrough Bytes over WAN Timeseries Data: Stats, Formats & Options |
activeConnections | Connections Active | integer | G | Current number of active (optimized) connections Timeseries Data: Stats, Formats & Options |
bpsReduction | Reduction Bps | integer | G | Bps Reduction Timeseries Data: Stats, Formats & Options |
bwAggHCOutWan | WANTxOpt Bytes | integer | G | Total optimized bytes across all application ports, in the LAN to WAN direction since the last restart of service, as measured on the WAN side Timeseries Data: Stats, Formats & Options |
bwHCAggInLan | LANRxOpt Bytes | integer | G | Total optimized bytes across all application ports, in the WAN to LAN direction since the last restart of service, as measured on the LAN side Timeseries Data: Stats, Formats & Options |
bwHCAggInWan | WANRxOpt Bytes | integer | G | Total optimized bytes across all application ports, in the WAN to LAN direction since the last restart of service, as measured on the WAN side Timeseries Data: Stats, Formats & Options |
bwHCAggOutLan | LANTxOpt Bytes | integer | G | Total optimized bytes across all application ports, in the LAN to WAN direction since the last restart of service, as measured on the LAN side Timeseries Data: Stats, Formats & Options |
bwPassThroughIn | Bytes PassThrough WAN to LAN | integer | G | Passthrough bytes in WAN to LAN direction Timeseries Data: Stats, Formats & Options |
bwPassThroughOut | Bytes PassThrough LAN to WAN | integer | G | Passthrough bytes in LAN to WAN direction Timeseries Data: Stats, Formats & Options |
bwPassThroughTotal | Passthrough Total Bytes | integer | G | Total passthrough bytes Timeseries Data: Stats, Formats & Options |
bytesReduction | Reduction Bytes | integer | G | Bytes Reduction Timeseries Data: Stats, Formats & Options |
establishedConnections | Connections Established | integer | G | Current number of established (optimized) connections Timeseries Data: Stats, Formats & Options |
halfClosedConnections | Connections Half Closed | integer | G | Current total number of half-closed (optimized) connections Timeseries Data: Stats, Formats & Options |
halfOpenedConnections | Connections Half Opened | integer | G | Current total number of half-opened (optimized) connections Timeseries Data: Stats, Formats & Options |
health | Health | string | G, U | Current health of the system, one of:
Can be combined with an event format for event-based analytics, see Event Formats. |
optimizedConnections | Connections Optimized | integer | G | Current total number of optimized connections Timeseries Data: Stats, Formats & Options |
passthroughConnections | Connections Passthrough | integer | G | Current total number of pass-through connections Timeseries Data: Stats, Formats & Options |
percentConnections | Connections Used Percent | float | G | Percentage of total connections in use. Timeseries Data: Stats, Formats & Options |
shMaxBandwidth | Max Bandwidth | integer | G | Maximum possible bandwidth for this appliance Timeseries Data: Stats, Formats & Options |
shMaxConnections | Connections Max Optimized | integer | G | Maximum possible connections through this appliance Timeseries Data: Stats, Formats & Options |
totalConnections | Connections Total Current | integer | G | Total number of connections Timeseries Data: Stats, Formats & Options |
Links
This resource has links to the following:
[reference] [top]CPU
Description
The custom data entities for the cpu table
Table
cdt_cpu
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
cpuDescr | Description | string | G | Description |
cpuLoad | Load Percentage | float | G | Load Percentage Timeseries Data: Stats, Formats & Options |
cpuType | Vendor | string | G | Vendor |
Links
This resource has links to the following:
[reference] [top]CPU – Alcatel
Description
The custom data entities for the cpu_alcatel table
Table
cdt_cpu_alcatel
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
cpuDescr | Description | string | G | Description |
cpuLoad | Load Percentage | float | G | Load Percentage Timeseries Data: Stats, Formats & Options |
cpuType | Vendor | string | G | Vendor |
Links
This resource has links to the following:
[reference] [top]CPU – Alcatel – AOS7
Description
The custom data entities for the cpu_alcatel_aos7 table
Table
cdt_cpu_alcatel_aos7
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
cpuDescr | Description | string | G | Description |
cpuLoad | Load Percentage | float | G | Load Percentage Timeseries Data: Stats, Formats & Options |
cpuType | Vendor | string | G | Vendor |
Links
This resource has links to the following:
[reference] [top]CPU – Alteon
Description
The custom data entities for the cpu_alteon table
Table
cdt_cpu_alteon
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
cpuDescr | Description | string | G | Description |
cpuLoad | Load Percentage | float | G | Load Percentage Timeseries Data: Stats, Formats & Options |
cpuType | Vendor | string | G | Vendor |
Links
This resource has links to the following:
[reference] [top]CPU – Aruba
Description
The custom data entities for the cpu_aruba table
Table
cdt_cpu_aruba
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
cpuDescr | Description | string | G | Description |
cpuLoad | Load Percentage | float | G | Load Percentage Timeseries Data: Stats, Formats & Options |
cpuType | Vendor | string | G | Vendor |
Links
This resource has links to the following:
[reference] [top]CPU – Avaya RC
Description
The custom data entities for the cpu_avaya_rc table
Table
cdt_cpu_avaya_rc
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
cpuDescr | Description | string | G | Description |
cpuLoad | Load Percentage | float | G | Load Percentage Timeseries Data: Stats, Formats & Options |
cpuType | Vendor | string | G | Vendor |
Links
This resource has links to the following:
[reference] [top]CPU – Avaya S5
Description
The custom data entities for the cpu_avaya_s5 table
Table
cdt_cpu_avaya_s5
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
cpuDescr | Description | string | G | Description |
cpuLoad | Load Percentage | float | G | Load Percentage Timeseries Data: Stats, Formats & Options |
cpuType | Vendor | string | G | Vendor |
Links
This resource has links to the following:
[reference] [top]CPU – Cisco
Description
The custom data entities for the cpu_cisco table
Table
cdt_cpu_cisco
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
cpuDescr | Description | string | G | Description |
cpuLoad | Load Percentage | float | G | Load Percentage Timeseries Data: Stats, Formats & Options |
cpuType | Vendor | string | G | Vendor |
Links
This resource has links to the following:
[reference] [top]CPU – Cisco ASA
Description
The custom data entities for the cpu_cisco_asa table
Table
cdt_cpu_cisco_asa
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
cpuDescr | Description | string | G | Description |
cpuLoad | Load Percentage | float | G | Load Percentage Timeseries Data: Stats, Formats & Options |
cpuType | Vendor | string | G | Vendor |
Links
This resource has links to the following:
[reference] [top]CPU – Cisco Nexus
Description
The custom data entities for the cpu_cisco_nexus table
Table
cdt_cpu_cisco_nexus
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
cpuDescr | Description | string | G | Description |
cpuLoad | Load Percentage | float | G | Load Percentage Timeseries Data: Stats, Formats & Options |
cpuType | Vendor | string | G | Vendor |
Links
This resource has links to the following:
[reference] [top]CPU – Cisco SAN
Description
The custom data entities for the cpu_cisco_san table
Table
cdt_cpu_cisco_san
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
cpuDescr | Description | string | G | Description |
cpuLoad | Load Percentage | float | G | Load Percentage Timeseries Data: Stats, Formats & Options |
cpuType | Vendor | string | G | Vendor |
Links
This resource has links to the following:
[reference] [top]CPU – Dell
Description
The custom data entities for the cpu_dell table
Table
cdt_cpu_dell
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
agentSwitchCpuProcessTotalUtilizationSixty | CPU Load | integer | G | Total CPU utilization over a period of 60 seconds. Timeseries Data: Stats, Formats & Options |
cpuDescr | Description | string | G | Description |
cpuLoad | Load Percentage | float | G | Load Percentage Timeseries Data: Stats, Formats & Options |
cpuType | Vendor | string | G | Vendor |
Links
This resource has links to the following:
[reference] [top]CPU – Dell F10 S
Description
The custom data entities for the cpu_dell_F10_S table
Table
cdt_cpu_dell_F10_S
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
cpuDescr | Description | string | G | Description |
cpuLoad | Load Percentage | float | G | Load Percentage Timeseries Data: Stats, Formats & Options |
cpuType | Vendor | string | G | Vendor |
Links
This resource has links to the following:
[reference] [top]CPU – Dell DNOS
Description
The custom data entities for the cpu_dell_dnos table
Table
cdt_cpu_dell_dnos
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
cpuDescr | Description | string | G | Description |
cpuLoad | Load Percentage | float | G | Load Percentage Timeseries Data: Stats, Formats & Options |
cpuType | Vendor | string | G | Vendor |
Links
This resource has links to the following:
[reference] [top]CPU – Dell X Series
Description
The custom data entities for the cpu_dell_x table
Table
cdt_cpu_dell_x
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
cpuDescr | Description | string | G | Description |
cpuLoad | Load Percentage | float | G | Load Percentage Timeseries Data: Stats, Formats & Options |
cpuType | Vendor | string | G | Vendor |
rlCpuUtilDuringLastMinute | CPU Load | integer | G | Total CPU utilization over a period of 60 seconds. Timeseries Data: Stats, Formats & Options |
Links
This resource has links to the following:
[reference] [top]CPU – Extreme
Description
The custom data entities for the cpu_extreme table
Table
cdt_cpu_extreme
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
cpuDescr | Description | string | G | Description |
cpuLoad | Load Percentage | float | G | Load Percentage Timeseries Data: Stats, Formats & Options |
cpuType | Vendor | string | G | Vendor |
Links
This resource has links to the following:
[reference] [top]CPU – Extreme VSP
Description
The custom data entities for the cpu_extreme_vsp table
Table
cdt_cpu_extreme_vsp
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
cpuDescr | Description | string | G | Description |
cpuLoad | Load Percentage | float | G | Load Percentage Timeseries Data: Stats, Formats & Options |
cpuType | Vendor | string | G | Vendor |
Links
This resource has links to the following:
[reference] [top]CPU – Fortinet Fortigate
Description
The custom data entities for the cpu_fortinet_fortigate table
Table
cdt_cpu_fortinet_fortigate
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
cpuDescr | Description | string | G | Description |
cpuLoad | Load Percentage | float | G | Load Percentage Timeseries Data: Stats, Formats & Options |
cpuType | Vendor | string | G | Vendor |
Links
This resource has links to the following:
[reference] [top]CPU – Foundry
Description
The custom data entities for the cpu_foundry table
Table
cdt_cpu_foundry
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
cpuDescr | Description | string | G | Description |
cpuLoad | Load Percentage | float | G | Load Percentage Timeseries Data: Stats, Formats & Options |
cpuType | Vendor | string | G | Vendor |
Links
This resource has links to the following:
[reference] [top]CPU – Foundry MLX
Description
The custom data entities for the cpu_foundry_mlx table
Table
cdt_cpu_foundry_mlx
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
cpuDescr | Description | string | G | Description |
cpuLoad | Load Percentage | float | G | Load Percentage Timeseries Data: Stats, Formats & Options |
cpuType | Vendor | string | G | Vendor |
Links
This resource has links to the following:
[reference] [top]CPU – FreeBSD
Description
The custom data entities for the cpu_freebsd table
Table
cdt_cpu_freebsd
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G | The poll state of the entity
|
cpuDescr | Description | string | G | Description |
cpuLoad | Load Percentage | float | G | Load Percentage Timeseries Data: Stats, Formats & Options |
cpuType | Vendor | string | G | Vendor |
idle_cpu | Idle Percentage | float | G | Percentage of time the CPU was idle Timeseries Data: Stats, Formats & Options |
interrupt_cpu | Interrupt Load Percentage | float | G | Load percentage of servicing hardware or software interrupts Timeseries Data: Stats, Formats & Options |
nice_cpu | Nice Load Percentage | float | G | Load percentage of user-level applications with nice priority Timeseries Data: Stats, Formats & Options |
system_cpu | System Load Percentage | float | G | Load percentage of system-level applications Timeseries Data: Stats, Formats & Options |
total_cpu | Total CPU Usage | integer | G | Total amount of cpu usage Timeseries Data: Stats, Formats & Options |
user_cpu | User Load Percentage | float | G | Load percentage of user-level applications Timeseries Data: Stats, Formats & Options |
Links
This resource has links to the following:
- deviceLink – Link to Device (cdt_device)
CPU – Juniper
Description
The custom data entities for the cpu_juniper table
Table
cdt_cpu_juniper
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
cpuDescr | Description | string | G, U | Description |
cpuLoad | Load Percentage | float | G | Load Percentage Timeseries Data: Stats, Formats & Options |
cpuType | Vendor | string | G | Vendor |
Links
This resource has links to the following:
[reference] [top]CPU – Juniper Pulse
Description
The custom data entities for the cpu_juniper_pulse table
Table
cdt_cpu_juniper_pulse
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
cpuDescr | Description | string | G | Description |
cpuLoad | Load Percentage | float | G | Load Percentage Timeseries Data: Stats, Formats & Options |
cpuType | Vendor | string | G | Vendor |
Links
This resource has links to the following:
[reference] [top]CPU – NetScaler
Description
The custom data entities for the cpu_netscaler table
Table
cdt_cpu_netscaler
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
cpuDescr | Description | string | G | Description |
cpuLoad | Load Percentage | float | G | Load Percentage Timeseries Data: Stats, Formats & Options |
cpuType | Vendor | string | G | Vendor |
Links
This resource has links to the following:
[reference] [top]CPU – Netscreen
Description
The custom data entities for the cpu_netscreen table
Table
cdt_cpu_netscreen
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
cpuDescr | Description | string | G | Description |
cpuLoad | Load Percentage | float | G | Load Percentage Timeseries Data: Stats, Formats & Options |
cpuType | Vendor | string | G | Vendor |
Links
This resource has links to the following:
[reference] [top]CPU – Nokia
Description
The custom data entities for the cpu_nokia table
Table
cdt_cpu_nokia
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
cpuDescr | Description | string | G | Description |
cpuLoad | Load Percentage | float | G | Load Percentage Timeseries Data: Stats, Formats & Options |
cpuType | Vendor | string | G | Vendor |
Links
This resource has links to the following:
[reference] [top]CPU – Server
Description
The custom data entities for the cpu_server table
Table
cdt_cpu_server
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
cpuDescr | Description | string | G | Description |
cpuLoad | Load Percentage | float | G | Load Percentage Timeseries Data: Stats, Formats & Options |
cpuType | Vendor | string | G | Vendor |
Links
This resource has links to the following:
[reference] [top]CPU – UCD
Description
The custom data entities for the cpu_ucd table
Table
cdt_cpu_ucd
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
cpuDescr | Description | string | G | Description |
cpuLoad | Load Percentage | float | G | Load Percentage Timeseries Data: Stats, Formats & Options |
cpuNicePercent | Nice Percent | integer | G | Nice Percent Timeseries Data: Stats, Formats & Options |
cpuRawIdlePercent | Idle Percent | integer | G | Idle Percent Timeseries Data: Stats, Formats & Options |
cpuRawInterruptPercent | Interrupt Percent | integer | G | Interrupt Percent Timeseries Data: Stats, Formats & Options |
cpuRawKernelPercent | Kernel Percent | integer | G | Kernel Percent Timeseries Data: Stats, Formats & Options |
cpuRawWaitPercent | Wait Percent | integer | G | Wait Percent Timeseries Data: Stats, Formats & Options |
cpuSystemUsedPercent | System Percent | integer | G | System Percent Timeseries Data: Stats, Formats & Options |
cpuTotal | Total | integer | G | Total of raw cpu data types. Timeseries Data: Stats, Formats & Options |
cpuType | Vendor | string | G | Vendor |
cpuUserUsedPercent | User Percent | integer | G | User Percent Timeseries Data: Stats, Formats & Options |
Links
This resource has links to the following:
- deviceLink – Link to Device (cdt_device)
Dell DNOS System Information
Description
The custom data entities for the dell_inventory table
Table
cdt_dell_inventory
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
dellNetStackUnitModelId | Model | string | G, U | The Dell Networking OS Model number for this unit. |
description | Description | string | G, U | Inventory Description |
model | Model | string | G, U | Inventory Model |
serial | Serial Number | string | G, U | Serial Number |
softwareRev | Software Revision | string | G, U | Software Revision |
vendor | Vendor | string | G | Inventory Vendor |
Links
This resource has links to the following:
[reference] [top]Device
Description
The custom data entities for the device table
Table
cdt_device
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G, U | The poll state of the entity
|
auth_method | SNMPv3 Authentication Method | string | G, U, A | Authentication method for SNMPv3 devices, one of:
|
auth_pass | SNMPv3 Authentication Password | string | G, U, A | Authentication password for SNMPv3 devices |
auth_user | SNMPv3 Authentication Username | string | G, U, A | Authentication user for SNMPv3 devices |
community | Community | string | G, U, A | The community string status of the device |
context | SNMPv3 Context | string | G, U, A | Context for SNMPv3 devices |
custom_data_details | Custom Data Details | string | G, U | A JSON string object indicating which custom entities have been found during a discovery |
discover_getNext | Use GetNext | string | G, U | Walk this device using SNMP getNext instead of getBulk, one of:
|
discover_minimal | Use Minimal Walk | string | G, U | Walk this device using a minimal set of oids, one of:
|
discover_snmpv1 | Use SNMPv1 | string | G, U | Walk this device using SNMPv1, one of:
|
hostname | Hostname | string | G, U, A | The hostname of the device |
ipaddress | IP Address | string | G, U, A (required) | The IP address of the device |
latitude | Latitude | float | G, U, A | The user defined latitude of the device’s location |
longitude | Longitude | float | G, U, A | The user defined longitude of the device’s location |
manual_name | User Defined Name | string | G, U | The user defined name of the device |
memorySize | Memory Size | integer | G | The amount of physical read-write memory contained by the entity |
mis | MAC/IP/Switch Collection State | string | G, U | Include this device in the MIS report calculations, one of
|
ping_dup | Ping Duplicate | integer | G | Number of duplicate ping responses received Timeseries Data: Stats, Formats & Options |
ping_lost1 | Ping Lost 1 | integer | G | Number of times that a single ping request is lost Timeseries Data: Stats, Formats & Options |
ping_lost2 | Ping Lost 2 | integer | G | Number of times that two ping requests in a row have been lost Timeseries Data: Stats, Formats & Options |
ping_lost3 | Ping Lost 3 | integer | G | Number of times that three ping requests in a row have been lost Timeseries Data: Stats, Formats & Options |
ping_lost4 | Ping Lost 4 | integer | G | Number of times that four ping requests in a row have been lost Timeseries Data: Stats, Formats & Options |
ping_outage | Ping Outage | integer | G, U | Number of seconds to wait before a device is considered to be down |
ping_poll | Ping Poll | string | G, U, A | The ping polling status of the device, one of:
|
ping_rtt | Ping RTT | integer | G | The current ping state of the device Timeseries Data: Stats, Formats & Options |
ping_rtt_ms | Ping RTT(High Precision) | float | G | The current ping state of the device in ms to 3 decimal places Timeseries Data: Stats, Formats & Options |
ping_state | Ping State | string | G, U | The current ping state of the device, one of:
Can be combined with an event format for event-based analytics, see Event Formats. |
priv_method | SNMPv3 Privacy Method | string | G, U, A | Privacy method for SNMPv3 devices, one of:
|
priv_pass | SNMPv3 Privacy Password | string | G, U, A | Privacy password for SNMPv3 devices |
retired | Retired | string | G | The device has been Retired, one of:
|
snmpEngineID | SNMP Engine ID | string | G, U | An SNMP engine’s administratively-unique identifier |
snmp_maxoid | SNMP Max OID | integer | G, U | Maximum number of oids to poll in a single request |
snmp_poll | SNMP Poll | string | G, U, A | The SNMP polling status of the device, one of:
|
snmp_version | SNMP Version | integer | G, U, A | The SNMP version of the device, one of:
|
sysContact | Contact | string | G, U | The textual identification of the contact person for the entity |
sysDescr | System Description | string | G, U | A textual description of the entity |
sysLocation | Location | string | G, U | The physical location of the entity |
sysName | System Name | string | G, U | An administratively-assigned name for the entity |
sysObjectID | Object ID | string | G, U | The vendor’s authoritative identification of the network management subsystem contained in the entity |
sysServices | Services | integer | G, U | A value which indicates the set of services that the entity may potentially offer |
vendor | Vendor | string | G | The vendor name for the device |
Links
This resource has links to the following:
[reference] [top] [reference] [top]APIC
Description
The custom data entities for the device_apic table
Table
cdt_device_apic
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G | The poll state of the entity
|
auth_method | SNMPv3 Authentication Method | string | G | Authentication method for SNMPv3 devices, one of:
|
auth_pass | SNMPv3 Authentication Password | string | G | Authentication password for SNMPv3 devices |
auth_user | SNMPv3 Authentication Username | string | G | Authentication user for SNMPv3 devices |
community | Community | string | G | The community string status of the device |
context | SNMPv3 Context | string | G | Context for SNMPv3 devices |
custom_data_details | Custom Data Details | string | G | A JSON string object indicating which custom entities have been found during a discovery |
discover_getNext | Use GetNext | string | G | Walk this device using SNMP getNext instead of getBulk, one of:
|
discover_minimal | Use Minimal Walk | string | G | Walk this device using a minimal set of oids, one of:
|
discover_snmpv1 | Use SNMPv1 | string | G | Walk this device using SNMPv1, one of:
|
health | Health | integer | G | Health Timeseries Data: Stats, Formats & Options |
hostname | Hostname | string | G | The hostname of the device |
ipaddress | IP Address | string | G | The IP address of the device |
latitude | Latitude | float | G | The user defined latitude of the device’s location |
longitude | Longitude | float | G | The user defined longitude of the device’s location |
manual_name | User Defined Name | string | G | The user defined name of the device |
memorySize | Memory Size | integer | G | The amount of physical read-write memory contained by the entity |
mis | MAC/IP/Switch Collection State | string | G | Include this device in the MIS report calculations, one of
|
noApplications | Application Profiles | integer | G | Number of Application Profiles Timeseries Data: Stats, Formats & Options |
noBridgeDomains | Bridging Domains | integer | G | Number of Bridging Domains Timeseries Data: Stats, Formats & Options |
noCEPs | Client Endpoints | integer | G | Number of Client Endpoints Timeseries Data: Stats, Formats & Options |
noControllers | Controllers | integer | G | Number of Controllers Timeseries Data: Stats, Formats & Options |
noEPGs | Endpoint Groups | integer | G | Number of Endpoint Groups Timeseries Data: Stats, Formats & Options |
noLeaves | Leaves | integer | G | Number of Leaves Timeseries Data: Stats, Formats & Options |
noNodes | Nodes | integer | G | Number of Nodes Timeseries Data: Stats, Formats & Options |
noPods | Pods | integer | G | Number of Pods Timeseries Data: Stats, Formats & Options |
noSpines | Spines | integer | G | Number of Spines Timeseries Data: Stats, Formats & Options |
noTenants | Tenants | integer | G | Number of Tenants Timeseries Data: Stats, Formats & Options |
noVRFs | VRFs | integer | G | Number of VRFs Timeseries Data: Stats, Formats & Options |
ping_dup | Ping Duplicate | integer | G | Number of duplicate ping responses received Timeseries Data: Stats, Formats & Options |
ping_lost1 | Ping Lost 1 | integer | G | Number of times that a single ping request is lost Timeseries Data: Stats, Formats & Options |
ping_lost2 | Ping Lost 2 | integer | G | Number of times that two ping requests in a row have been lost Timeseries Data: Stats, Formats & Options |
ping_lost3 | Ping Lost 3 | integer | G | Number of times that three ping requests in a row have been lost Timeseries Data: Stats, Formats & Options |
ping_lost4 | Ping Lost 4 | integer | G | Number of times that four ping requests in a row have been lost Timeseries Data: Stats, Formats & Options |
ping_outage | Ping Outage | integer | G | Number of seconds to wait before a device is considered to be down |
ping_poll | Ping Poll | string | G | The ping polling status of the device, one of:
|
ping_rtt | Ping RTT | integer | G | The current ping state of the device Timeseries Data: Stats, Formats & Options |
ping_rtt_ms | Ping RTT(High Precision) | float | G | The current ping state of the device in ms to 3 decimal places Timeseries Data: Stats, Formats & Options |
ping_state | Ping State | string | G | The current ping state of the device, one of:
Can be combined with an event format for event-based analytics, see Event Formats. |
priv_method | SNMPv3 Privacy Method | string | G | Privacy method for SNMPv3 devices, one of:
|
priv_pass | SNMPv3 Privacy Password | string | G | Privacy password for SNMPv3 devices |
retired | Retired | string | G | The device has been Retired, one of:
|
snmpEngineID | SNMP Engine ID | string | G | An SNMP engine’s administratively-unique identifier |
snmp_maxoid | SNMP Max OID | integer | G | Maximum number of oids to poll in a single request |
snmp_poll | SNMP Poll | string | G | The SNMP polling status of the device, one of:
|
snmp_version | SNMP Version | integer | G | The SNMP version of the device, one of:
|
sysContact | Contact | string | G | The textual identification of the contact person for the entity |
sysDescr | System Description | string | G | A textual description of the entity |
sysLocation | Location | string | G | The physical location of the entity |
sysName | System Name | string | G | An administratively-assigned name for the entity |
sysObjectID | Object ID | string | G | The vendor’s authoritative identification of the network management subsystem contained in the entity |
sysServices | Services | integer | G | A value which indicates the set of services that the entity may potentially offer |
vendor | Vendor | string | G | The vendor name for the device |
Device – FreeBSD
Description
The custom data entities for the device_freebsd table
Table
cdt_device_freebsd
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G | The poll state of the entity
|
auth_method | SNMPv3 Authentication Method | string | G | Authentication method for SNMPv3 devices |
auth_pass | SNMPv3 Authentication Password | string | G | Authentication password for SNMPv3 devices |
auth_user | SNMPv3 Authentication Username | string | G | Authentication user for SNMPv3 devices |
boottime | System Start Time | time | G | The time that the system started |
community | Community | string | G | The community string status of the device |
context | SNMPv3 Context | string | G | Context for SNMPv3 devices |
custom_data_details | Custom Data Details | string | G | A JSON string object indicating which custom entities have been found during a discovery |
discover_getNext | Use GetNext | string | G | Walk this device using SNMP getNext instead of getBulk |
discover_minimal | Use Minimal Walk | string | G | Walk this device using a minimal set of oids |
discover_snmpv1 | Use SNMPv1 | string | G | Walk this device using SNMPv1 |
hostid | Host Id | integer | G | Host Id |
hostname | Hostname | string | G | The hostname of the device |
ipaddress | IP Address | string | G | The IP address of the device |
latitude | Latitude | float | G | The user defined latitude of the device’s location |
loadavg15min | Load Average 15 Minute | float | G | The number of process being or waiting to be executed over a 15 minute period Timeseries Data: Stats, Formats & Options |
loadavg1min | Load Average 1 Minute | float | G | The number of process being or waiting to be executed over a 1 minute period Timeseries Data: Stats, Formats & Options |
loadavg5min | Load Average 5 Minute | float | G | The number of process being or waiting to be executed over a 5 minute period Timeseries Data: Stats, Formats & Options |
lock_processes | Locked Processes | integer | G | Number of locked processes Timeseries Data: Stats, Formats & Options |
longitude | Longitude | float | G | The user defined longitude of the device’s location |
maker | Maker | string | G | System Maker |
manual_name | User Defined Name | string | G | The user defined name of the device |
memorySize | Memory Size | integer | G | The amount of physical read-write memory contained by the entity |
mis | MAC/IP/Switch Collection State | string | G | Include this device in the MIS report calculations |
model | Model | string | G | System Model |
nocpus | Number of CPUs | integer | G | The Number of CPUs |
osrelease | OS Release | string | G | OS Release |
osrevision | OS Revision | integer | G | OS Revision |
ping_dup | Ping Duplicate | integer | G | Number of duplicate ping responses received Timeseries Data: Stats, Formats & Options |
ping_lost1 | Ping Lost 1 | integer | G | Number of times that a single ping request is lost Timeseries Data: Stats, Formats & Options |
ping_lost2 | Ping Lost 2 | integer | G | Number of times that two ping requests in a row have been lost Timeseries Data: Stats, Formats & Options |
ping_lost3 | Ping Lost 3 | integer | G | Number of times that three ping requests in a row have been lost Timeseries Data: Stats, Formats & Options |
ping_lost4 | Ping Lost 4 | integer | G | Number of times that four ping requests in a row have been lost Timeseries Data: Stats, Formats & Options |
ping_outage | Ping Outage | integer | G | Number of seconds to wait before a device is considered to be down |
ping_poll | Ping Poll | string | G | The ping polling status of the device |
ping_rtt | Ping RTT | integer | G | The current ping state of the device Timeseries Data: Stats, Formats & Options |
ping_rtt_ms | Ping RTT(High Precision) | float | G | The current ping state of the device in ms to 3 decimal places Timeseries Data: Stats, Formats & Options |
ping_state | Ping State | string | The current ping state of the device
Can be combined with an event format for event-based analytics, see Event Formats |
|
priv_method | SNMPv3 Privacy Method | string | G | Privacy method for SNMPv3 devices |
priv_pass | SNMPv3 Privacy Password | string | G | Privacy password for SNMPv3 devices |
processes | Process Count | integer | G | Number of processes Timeseries Data: Stats, Formats & Options |
retired | Retired | string | G | The device has been Retired |
running_processes | Running Processes | integer | G | Number of running processes Timeseries Data: Stats, Formats & Options |
sleeping_processes | Sleeping Processes | integer | G | Number of sleeping processes Timeseries Data: Stats, Formats & Options |
snmpEngineID | SNMP Engine ID | string | G | An SNMP engine’s administratively-unique identifier |
snmp_maxoid | SNMP Max OID | integer | G | Maximum number of oids to poll in a single request |
snmp_poll | SNMP Poll | string | G | The SNMP polling status of the device |
snmp_version | SNMP Version | integer | G | The SNMP version of the device |
starting_processes | Starting Processes | integer | G | Number of starting processes Timeseries Data: Stats, Formats & Options |
stopped_processes | Stopped Processes | integer | G | Number of stopped processes Timeseries Data: Stats, Formats & Options |
swapin | Swap In | integer | G | Number of pages swapped in Timeseries Data: Stats, Formats & Options |
swapout | Swap Out | integer | G | Number of pages swapped out Timeseries Data: Stats, Formats & Options |
sysContact | Contact | string | G | The textual identification of the contact person for the entity |
sysDescr | System Description | string | G | A textual description of the entity |
sysLocation | Location | string | G | The physical location of the entity |
sysName | System Name | string | G | An administratively-assigned name for the entity |
sysObjectID | Object ID | string | G | The vendor’s authoritative identification of the network management subsystem contained in the entity |
sysServices | Services | integer | G | A value which indicates the set of services that the entity may potentially offer |
vendor | Vendor | string | G | The vendor name for the device |
waiting_processes | Waiting Processes | integer | G | Number of waiting processes Timeseries Data: Stats, Formats & Options |
zombie_processes | Zombie Processes | integer | G | Number of zombie processes Timeseries Data: Stats, Formats & Options |
Disk IO – FreeBSD
Description
The custom data entities for the diskio table
Table
cdt_diskio
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifier |
name | Name | string | G | The entity name |
deviceid | Device ID | integer | G | The ID of the parent device |
idx | Index | string | G | The base SNMP index for this entity |
table | Table | string | G | The table to which the entity belongs |
poll | Poll State | string | G | The poll state of the entity
|
busy_percent | Busy Percent | integer | G | The percentage of time the disk has been busy Timeseries Data: Stats, Formats & Options |
busy_time | Busy Time | string | G | The amount of time the disk has been busy Timeseries Data: Stats, Formats & Options |
bytes_read | Bytes Read | string | G | The number of bytes read from the disk Timeseries Data: Stats, Formats & Options |
bytes_write | Bytes Written | string | G | The number of bytes written to the disk Timeseries Data: Stats, Formats & Options |
trans_read | Read Transactions | string | G | The number of read transactions from the disk Timeseries Data: Stats, Formats & Options |
trans_write | Write Transactions | string | G | The number of write transactions to the disk Timeseries Data: Stats, Formats & Options |
Links
This resource has links to the following:
- deviceLink – Link to Device (cdt_device)
Environment Monitors
Description
The custom data entities for the env_mon table
Table
cdt_env_mon
Fields
Field ID | Field Title | Type | Get, Add, Update | Description |
id | ID | integer | G | The entity identifi |