Performing metric operations with the REST API
The following section provides a list of supported endpoints and an overview about running these endpoints. Before you run an endpoint, you must authenticate yourself. For more information, see Access and authentication for the REST API
Metric Ingestion
POST /insert
Insert metrics data in the time series database, and convert the data to the device and entity format
Authorization: Bearer <Jwt_Token>/<apiKey>
For instructions on obtaining the JWT token, see Access and authentication for the REST API..
[
{
"labels": {
"metricName": "<metric name>",
"hostname": "<hostname>" ,
"entityId": "<source name>:<hostname>:<entityTypeId>:<entityName>",
"entityTypeId": "<Name of the entityTypeId>",
"entityName": "<Name of entity name>",
"hostType": "<type of host>",
"isKpi": <isKpi>,
"unit": "<unit type>",
"entityId":"<entity ID>",
"instanceName":"<instance name>"
"source": "<source type>"
}
"samples": [
{
"value": <value>,
"timestamp": <timestamp>
},
{
"value": <value>,
"timestamp": <timestamp>
}
]
}
]
{
"labels":{
"metricName":"offset",
"hostname":"clm-HostA",
"source":"nagios",
"entityTypeId":"segmentEntityType1",
"entityName":"entitysegment",
"hostType":"server",
"isKpi":"True",
"unit":"Percent",
"entityId":"nagios:clm-pun-microbots77:segmentEntityType1:entitysegment",
"instanceName":"segment"
},
"samples":[
{
"value":90,
"timestamp":1639030067000
}
]
},
{
"labels":{
"metricName":"offset",
"hostname":"clm-HostA",
"source":"nagios",
"entityTypeId":"segmentEntityType2",
"entityName":"entitytower1",
"hostType":"server",
"isKpi":"True",
"unit":"Percent",
"parentEntityName":"entitysegment",
"parentEntityTypeId":"segmentEntityType1",
"entityId":"nagios:clm-pun-microbots77:segmentEntityType2:entitytower1",
"instanceName":"tower1",
"isDeviceMappingEnabled":"true"
},
"samples":[
{
"value":90,
"timestamp":1639030067000
}
]
Response codes:
- 200 (OK): Successful response
- 400 (Bad Request): Unsuccessful response
- 401 (Unauthorized): Unsuccessful response
POST /prometheus
Send Prometheus metrics to BMC Helix Operations Management
Authorization: Bearer <Jwt_Token>/<apiKey>
Content-Encoding : Snappy
For instructions on obtaining the JWT token, see Access and authentication for the REST API..
To send Prometheus metrics to BMC Helix Operations Management, following exporters are supported:
- Node exporter
- Windows exporter
- Oracle database exporter
- Kafka exporter
- Redis exporter
Response codes:
- 200 (OK): Successful response
- 400 (Bad Request): Unsuccessful response
- 401 (Unauthorized): Unsuccessful response
POST /delete
Delete the device details from BMC Helix Operations Management
You can use this API to delete only the data that is inserted using the /insert API.
Authorization: Bearer <Jwt_Token>/<apiKey>
For instructions on obtaining the JWT token, see Access and authentication for the REST API..
"devices": [
{
"hostname": "<hostname>",
"source": "<source name>"
}
]
}
"devices": [
{
"hostname": "clm-HostA",
"source": "co"
}
]
}
Response codes:
- 200 (OK): Successful response
- 400 (Bad Request): Unsuccessful response
- 401 (Unauthorized): Unsuccessful response
Note
The monitor details in the Non BMC MonitorTypes category are retained in the system even after device deletion.
For example: entityTypeId, entityName
Metric Query
GET /query?query=<query>
Get the time series data by specifying the timeselector query using labels and timestamp
For instructions on obtaining the JWT token, see Access and authentication for the REST API..
Response codes:
- 200 (OK): Successful response
- 401 (Unauthorized): Unsuccessful response
GET /query_range?query=<query>
Get the time series data by specifying the timeselector query using labels and time frame
For instructions on obtaining the JWT token, see Access and authentication for the REST API..
Response codes:
- 200 (OK): Successful response
- 401 (Unauthorized): Unsuccessful response
GET /labels
Get all the labels from the time series database
For instructions on obtaining the JWT token, see Access and authentication for the REST API..
"status": "success",
"data": [
"VictoriaMetrics_AccountID",
"__name__",
"deviceId",
"entityId",
"entityName",
"entityTypeId",
"hostname",
"isblackout",
"source"
],
}
Response codes:
- 200 (OK): Successful response
- 401 (Unauthorized): Unsuccessful response
GET /label/<lable_name>/values
Get the specified label values from the time series database
For instructions on obtaining the JWT token, see Access and authentication for the REST API..
{
"status": "success",
"data": [
"CPU0",
"CPU1",
"NUK_CPU",
"NUK_FileSystem_Container",
"NUK_Linux_OS",
"NUK_Memory",
"NUK_Network_Container",
"boot",
"dev",
"dev-hugepages",
"dev-mqueue",
"dev-pts",
"dev-shm",
"docker0",
"ens160",
"ens192",
"lo",
"proc",
"proc-sys-fs-binfmt_misc",
],
}
Response codes:
- 200 (OK): Successful response
- 401 (Unauthorized): Unsuccessful response
GET series
Get the unique time series data that match the specified criteria
For instructions on obtaining the JWT token, see Access and authentication for the REST API..
<labels name>="<name>"}&start=<time stamp>
hostname="clm-HostB"}&start=1596786531
Description
#Consider the following example to understand the series API:
{hostname="clm-HostA", server="web server"} 10
{hostname="clm-HostA", server="web server"} 1
{hostname="clm-HostA", server="web server"} 10
{hostname="clm-HostA", server="web server"} 2
{hostname="clm-HostB", server="web server"} 3455
{hostname="clm-HostB", server="web server"} 321
{hostname="clm-HostB", server="web server"} 32
{hostname="clm-HostB", server="web server"} 34
#In the above example, there is only 1 unique time series matching the hostname criteria and timestamp, and therefore the /series API will display the output as shown below:
#Example Output
{hostname="clm-HostB", server="web server"}
Response codes:
- 200 (OK): Successful response
- 401 (Unauthorized): Unsuccessful response
GET /series/count
Get the count of unique time series data
For instructions on obtaining the JWT token, see Access and authentication for the REST API..
Description
#Consider the following example to understand the series/count API: {hostname="clm-HostA", server="web server"} 10 {hostname="clm-HostA", server="web server"} 1 {hostname="clm-HostA", server="web server"} 10 {hostname="clm-HostA", server="web server"} 2 {hostname="clm-HostB", server="web server"} 3455 {hostname="clm-HostB", server="web server"} 321 {hostname="clm-HostB", server="web server"} 32 {hostname="clm-HostB", server="web server"} 34 #In the above example, there are only 2 unique time series data, and therefore the /series/count API will display the count as 2. {hostname="clm-HostA", server="web server"} {hostname="clm-HostB", server="web server"} #Example Output { "status": "success", "data": [ 2 ], }
Response codes:
- 200 (OK): Successful response
- 401 (Unauthorized): Unsuccessful response
GET /export?match=<condition>
Get the time series data by specifying the query using labels
Consider the following sample examples to understand possible values for <condition>:
https://<HOST_NAME>/metrics-query-service/api/v1.0/export?match[]={__name__=" total1111"}
https://<HOST_NAME>/metrics-query-service/api/v1.0/export?match[]={entityName="data1111",__name__="total1111"}
https://<HOST_NAME>/metrics-query-service/api/v1.0/export?match[]={entityName="NUK_CPU",source="HM",hostname="<hostname>"}
Payload Encoding: url-encoded key value format
For instructions on obtaining the JWT token, see Access and authentication for the REST API..
{
"metric": {
"__name__": "teemetric",
VictoriaMetrics_AccountID": "888",
"tag": "dev1",
"tag2": "inst2"
},
"values": [
110,
765
],
"timestamps": [
1589367922000,
1589368322000
]
}
{
"metric": {
"__name__": "teemetric1",
VictoriaMetrics_AccountID": "888",
"tag": "dev2",
"tag2": "inst2"
},
"values": [
110,
765
],
"timestamps": [
1589344422000,
1589128322000
]
}
Response codes:
- 200 (OK): Successful response
- 401 (Unauthorized): Unsuccessful response
The response Content-Type is application/stream+json.
POST /query
Get the time series data by specifying the timeselector query using labels and timestamp
You can run this API by specifying the API key in the header.
For instructions on obtaining the JWT token, see Access and authentication for the REST API..
Response codes:
- 200 (OK): Successful response
- 401 (Unauthorized): Unsuccessful response
POST /query_range
Get the time series data by specifying the timeselector query using labels and time frame
You can run this API by specifying the API key in the header.
Encoding format: url-encoded key value format
For instructions on obtaining the JWT token, see Access and authentication for the REST API..
Response codes:
- 200 (OK): Successful response
- 401 (Unauthorized): Unsuccessful response
POST /labels
Get all the labels from the time series database
For instructions on obtaining the JWT token, see Access and authentication for the REST API..
"status": "success",
"data": [
"VictoriaMetrics_AccountID",
"__name__",
"deviceId",
"entityId",
"entityName",
"entityTypeId",
"hostname",
"isblackout",
"source"
],
}
Response codes:
- 200 (OK): Successful response
- 401 (Unauthorized): Unsuccessful response
POST series
Get the unique time series data that match the specified criteria
For instructions on obtaining the JWT token, see Access and authentication for the REST API..
hostname="clm-HostB"}&start=1596786531
{hostname="clm-HostA", server="web server"} 10
{hostname="clm-HostA", server="web server"} 1
{hostname="clm-HostA", server="web server"} 10
{hostname="clm-HostA", server="web server"} 2
{hostname="clm-HostB", server="web server"} 3455
{hostname="clm-HostB", server="web server"} 321
{hostname="clm-HostB", server="web server"} 32
{hostname="clm-HostB", server="web server"} 34
#Example Output - In the above example, there is only 1 unique time series matching the hostname criteria and timestamp:
{hostname="clm-HostB", server="web server"}
Response codes:
- 200 (OK): Successful response
- 401 (Unauthorized): Unsuccessful response
POST /export?match=<condition>
Get the time series data by specifying the query using labels
You can run this API by specifying the API key in the header.
Consider the following sample examples to understand possible values for <condition>:
https://<HOST_NAME>/metrics-query-service/api/v1.0/export?match[]={__name__=" total1111"}
https://<HOST_NAME>/metrics-query-service/api/v1.0/export?match[]={entityName="data1111",__name__="total1111"}
https://<HOST_NAME>/metrics-query-service/api/v1.0/export?match[]={entityName="NUK_CPU",source="HM",hostname="<hostname>"}
Payload Encoding: url-encoded key value format
For instructions on obtaining the JWT token, see Access and authentication for the REST API..
Response codes:
- 200 (OK): Successful response
- 401 (Unauthorized): Unsuccessful response
The response Content-Type is application/stream+json.