To generate a service account token please refer to the authentication chapter.
jq can be used to easily format and parse the outputs.
Events
Get all active events
curl
curl -sS -kX GET --header 'Accept: application/json' 'https://192.0.2.33/api/resources/event/v1/Event/all' -b access_token=`cat token.tok`
cvprac
event_url = '/api/resources/event/v1/Event/all'
response = client.get(event_url)
python requests
def get_events_all():
event_url = '/api/resources/event/v1/Event/all'
url = cvp_url + event_url
head = {'Authorization': 'Bearer {}'.format(token)}
response = requests.get(url, headers=head, verify=False)
print(response.text)
get_events_all()
Get a specific event
curl
curl -sS -kX GET --header 'Accept: application/json' -b access_token=`cat token.tok` 'https://192.0.2.33/api/resources/event/v1/Event?key.key=6152f6160fc38f55&key.timestamp=2021-03-23T13:38:59.295341290Z'
Result:
{
"value":{
"key":{
"key":"6152f6160fc38f55",
"timestamp":"2021-03-23T13:38:59.295341290Z"
},
"severity":"EVENT_SEVERITY_ERROR",
"title":"Low Disk Volume Space Available",
"description":"Detected low disk space on volume /mnt/flash, 93.46756% of space used",
"eventType":"LOW_DEVICE_DISK_SPACE",
"data":{
"data":{
"deviceId":"JPE15233329",
"threshold":"90",
"value":"93.46756",
"volume":"/mnt/flash"
}
},
"components":{
"components":[
{
"type":"COMPONENT_TYPE_DEVICE",
"components":{
"deviceId":"JPE15233329"
}
}
]
}
},
"time":"2021-03-25T14:37:00Z"
}
The time key here shows the state of the resource at a given time,
key.timestmap is part of the key for that an event.
cvprac
event_url = '/api/resources/event/v1/Event?'
url = event_url + 'key.key=' + key + "&key.timestamp=" + ts
response = client.get(url)
python requests
def get_event(key, ts):
event_url = '/api/resources/event/v1/Event?'
url = cvp_url + event_url + 'key.key=' + key + "&key.timestamp=" + ts
head = {'Authorization': 'Bearer {}'.format(token)}
response = requests.get(url, headers=head, verify=False)
print(response.text)
get_event("bf931ff01f5c5a2","2021-04-01T18:14:53Z")
Get events between two dates
When fetching a state from NetDB between two arbitrary dates, the result returned will contain data that existed between those two dates and not just data that was created between those dates. For instance if BGP events are queried between 2021-03-24 09:00 and 2021-03-24 10:00 the result will contain events that were active in the range of 9 AM to 10 AM. If there were events that started before 9 AM and were not resolved (still active) at that time, the result will contain those events too.
curl
curl -sS -kX GET --header 'Accept: application/json' -b access_token=`cat token.tok` 'https://192.0.2.33/api/resources/event/v1/Event/all?time.start=2021-03-24T09:00:00Z&time.end=2021-03-24T10:00:00Z'
Result:
{
"result": {
"value": {
"key": {
"key": "6a5eea29e5599b0",
"timestamp": "2021-02-04T23:19:22.809962243Z"
},
"severity": "EVENT_SEVERITY_WARNING",
"title": "Interface went down unexpectedly",
"description": "Interface Ethernet1 on JPE19332824 is no longer operationally active",
"eventType": "DEVICE_INTF_ERR_SMART",
"data": {
"data": {
"deviceId": "JPE19332824",
"interfaceId": "Ethernet1"
}
},
"components": {
"components": [
{
"type": "COMPONENT_TYPE_INTERFACE",
"components": {
"deviceId": "JPE19332824",
"interfaceId": "Ethernet1"
}
}
]
}
},
"time": "2021-02-04T23:19:22.809962243Z",
"type": "INITIAL"
}
}
{
"result": {
"value": {
"key": {
"key": "6acbaa29e5b6002",
"timestamp": "2021-02-04T23:19:22.819264873Z"
},
"severity": "EVENT_SEVERITY_WARNING",
"title": "Interface went down unexpectedly",
"description": "Interface Ethernet3 on JPE19332824 is no longer operationally active",
"eventType": "DEVICE_INTF_ERR_SMART",
"data": {
"data": {
"deviceId": "JPE19332824",
"interfaceId": "Ethernet3"
}
},
"components": {
"components": [
{
"type": "COMPONENT_TYPE_INTERFACE",
"components": {
"deviceId": "JPE19332824",
"interfaceId": "Ethernet3"
}
}
]
}
}
cvprac
event_url = '/api/resources/event/v1/Event/all?'
url = event_url + 'time.start=' + t1 + "&time.end=" + t2
response = client.get(url)
python requests
def get_events_t1_t2(t1, t2):
event_url = '/api/resources/event/v1/Event/all?'
url = cvp_url + event_url + 'time.start=' + t1 + "&time.end=" + t2
head = {'Authorization': 'Bearer {}'.format(token)}
response = requests.get(url, headers=head, verify=False)
print(response.text)
get_events_t1_t2("2021-03-24T09:00:00Z", "2021-03-24T10:00:00Z")
Get all INFO severity events
To apply filters on events, the POST method has to be used.
curl
curl -sS -kX POST --header 'Accept: application/json' -b access_token=`cat token.tok` -d '{"partialEqFilter": [{"severity": 1}]}' 'https://192.0.2.33/api/resources/event/v1/Event/all'
Result:
{
"result": {
"value": {
"key": {
"key": "571d021ba26bbb96",
"timestamp": "2020-12-11T10:35:00Z"
},
"severity": "EVENT_SEVERITY_INFO",
"title": "High PTP skew",
"description": "Detected high PTP skew (0)",
"eventType": "HIGH_PTP_SKEW",
"data": {
"data": {
"deviceId": "JPE15233329",
"discovered": "true",
"threshold": "0.9",
"value": "0"
}
},
"components": {
"components": [
{
"components": {
"deviceId": "JPE15233329"
}
}
]
}
},
"time": "2020-12-11T10:35:00Z",
"type": "INITIAL"
}
}
curl -sS -kX POST --header 'Accept: application/json' -b access_token=`cat token.tok` -d '{"partialEqFilter": [{"severity": "EVENT_SEVERITY_INFO"}]}' 'https://192.0.2.33/api/resources/event/v1/Event/all'
curl -sS -kX POST --header 'Accept: application/json' -b access_token=`cat token.tok` -d '{"partial_eq_filter": [{"severity": 1}]}' 'https://192.0.2.33/api/resources/event/v1/Event/all'
cvprac
severity = 1 ## Severity INFO
payload = {"partialEqFilter": [{"severity": severity }]}
event_url = '/api/resources/event/v1/Event/all'
response = client.post(event_url, data=payload)
python requests
def get_events_by_severity(severity):
payload = {"partialEqFilter": [{"severity": severity }]}
event_url = '/api/resources/event/v1/Event/all'
url = cvp_url + event_url
head = {'Authorization': 'Bearer {}'.format(token)}
response = requests.post(url, headers=head, data=json.dumps(payload), verify=False)
print(response.text)
# Get with string value
get_events_by_severity("EVENT_SEVERITY_INFO")
# Get with enum value
get_events_by_severity(1)