Gestione degli avvisi tramite l'API Avvisi
Puoi gestire gli avvisi in un'istanza IBM Cloud Monitoring utilizzando la API Monitoring.
Per imparare a usare cURL, vedere il comandocURL.
Ottieni dettagli su un avviso utente
Per ottenere informazioni su un avviso, puoi utilizzare il seguente comando cURL:
curl -X GET <REST_API_ENDPOINT>/api/alerts/<ALERT_ID> -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "TeamID: $TEAM_ID" -H "content-type: application/json"
Dove
-
<REST_API_ENDPOINT>indica l'endpoint di destinazione della chiamata API REST. Per ulteriori informazioni, vedi Monitoring endpoint API REST. Ad esempio, l'endpoint pubblico per un'istanza disponibile in us - south è il seguente:https://us-south.monitoring.cloud.ibm.com/api -
Puoi passare più intestazioni utilizzando
-H.AuthorizationeIBMInstanceIDsono intestazioni richieste per l'autenticazione.TeamIDè facoltativo. Quando si specifica questa intestazione, si limita la richiesta ai dati e alle risorse disponibili per il team specificato.Per ottenere un
AUTH_TOKENe laGUIDconsultare, Intestazioni per i token IAM. -
<ALERT_ID>definisce l'ID dell'avviso che si desidera modificare.
Ad esempio, il corpo della risposta per un avviso è simile al seguente:
{
"alert": {
"autoCreated": false,
"condition": "min(min(dallas_prod)) = 0",
"createdOn": 1551358413000,
"enabled": false,
"id": 23211,
"modifiedOn": 1551634372000,
"name": "Monitoring Uptime Alert",
"filter": "env in (\"prod\")",
"notificationChannelIds": [
4
],
"segmentBy": [
"host.hostname"
],
"segmentCondition": {
"type": "ANY"
},
"notificationCount": 60,
"rateOfChange": false,
"reNotify": false,
"severity": 0,
"severityLabel": "HIGH",
"teamId": 493,
"timespan": 60000000,
"type": "MANUAL",
"version": 9
}
}
Crea un avviso
Puoi utilizzare il seguente comando cURL per creare un avviso:
curl -X POST <REST_API_ENDPOINT>/api/alerts -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "TeamID: $TEAM_ID" -H "content-type: application/json" -d @alert.json
Dove
-
<REST_API_ENDPOINT>indica l'endpoint di destinazione della chiamata API REST. Per ulteriori informazioni, vedi Monitoring endpoint API REST. Ad esempio, l'endpoint pubblico per un'istanza disponibile in us - south è il seguente:https://us-south.monitoring.cloud.ibm.com/api -
Puoi passare più intestazioni utilizzando
-H.AuthorizationeIBMInstanceIDsono intestazioni richieste per l'autenticazione.TeamIDè facoltativo. Quando si specifica questa intestazione, si limita la richiesta ai dati e alle risorse disponibili per il team specificato.Per ottenere un
AUTH_TOKENe laGUIDconsultare, Intestazioni per i token IAM. -
È possibile passare i dati per creare l'avviso nel file
alert.jsonutilizzando-d.Quando si crea un avviso, includere i seguenti parametri: tipo, nome, gravità, durata, condizione, segmentby, segmentConditionn, filtro, notificationChannelIds, abilitato
Per ulteriori informazioni, consultare Schema di avviso.
Il seguente esempio mostra i parametri del corpo della richiesta che è possibile impostare per creare un avviso:
{
"alert": {
"version": null,
"name": "My Alert!",
"description": null,
"teamId": null,
"enabled": false,
"filter": null,
"type": "MANUAL",
"condition": "avg(timeAvg(uptime)) <= 0",
"timespan": 600000000,
"notificationChannelIds": [],
"reNotify": false,
"reNotifyMinutes": 30,
"segmentBy": [
"host.hostName"
],
"segmentCondition": {
"type": "ANY"
},
"severityLabel": "LOW"
}
}
Aggiorna un avviso
Per aggiornare un avviso esistente, è necessario l'ID di tale avviso.
Puoi utilizzare il seguente comando cURL per aggiornare un avviso:
curl -X PUT <REST_API_ENDPOINT>/api/alerts/<ALERT_ID> -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "TeamID: $TEAM_ID" -H "content-type: application/json" -d @alert.json
Dove
-
<REST_API_ENDPOINT>indica l'endpoint di destinazione della chiamata API REST. Per ulteriori informazioni, vedi Monitoring endpoint API REST. Ad esempio, l'endpoint pubblico per un'istanza disponibile in us - south è il seguente:https://us-south.monitoring.cloud.ibm.com/api -
Puoi passare più intestazioni utilizzando
-H.AuthorizationeIBMInstanceIDsono intestazioni richieste per l'autenticazione.TeamIDè facoltativo. Quando si specifica questa intestazione, si limita la richiesta ai dati e alle risorse disponibili per il team specificato.Per ottenere un
AUTH_TOKENe laGUIDconsultare, Intestazioni per i token IAM. -
<ALERT_ID>definisce l'ID dell'avviso che si desidera modificare. -
È possibile passare i dati per creare l'avviso nel file
alert.jsonutilizzando-d.Per ulteriori informazioni, consultare Schema di avviso.
Il seguente esempio mostra i parametri del corpo della richiesta che è possibile impostare per aggiornare un avviso:
{
"alert": {
"type": "MANUAL",
"id": 23212,
"version": 10,
"name": "CheckNginxConnections",
"description": "Active connections of nginx server",
"enabled": false,
"severity": 2,
"timespan": 1000000,
"condition": "avg(avg(nginx.net.connections)) > 1000",
"segmentBy": [
"host.hostName"
],
"segmentCondition": {
"type": "ANY"
},
"notificationChannelIds": [
2
]
}
}
Elimina un avviso
Per eliminare un avviso esistente, è necessario l'ID di tale avviso.
È possibile utilizzare il comando cURL per eliminare un messaggio di alert:
curl -X DELETE <REST_API_ENDPOINT>/api/alerts/<ALERT_ID> -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "TeamID: $TEAM_ID" -H "content-type: application/json"
Dove
-
<REST_API_ENDPOINT>indica l'endpoint di destinazione della chiamata API REST. Per ulteriori informazioni, vedi Monitoring endpoint API REST. Ad esempio, l'endpoint pubblico per un'istanza disponibile in us - south è il seguente:https://us-south.monitoring.cloud.ibm.com/api -
Puoi passare più intestazioni utilizzando
-H.AuthorizationeIBMInstanceIDsono intestazioni richieste per l'autenticazione.TeamIDè facoltativo. Quando si specifica questa intestazione, si limita la richiesta ai dati e alle risorse disponibili per il team specificato.Per ottenere un
AUTH_TOKENe laGUIDconsultare, Intestazioni per i token IAM. -
<ALERT_ID>definisce l'ID dell'avviso che si vuole eliminare.
Ottieni tutti gli avvisi utente
È possibile utilizzare il seguente comando cURL per ottenere informazioni su tutti gli avvisi:
curl -X GET <REST_API_ENDPOINT>/api/alerts?from=<START_TIMESTAMP>&to=<END_TIMESTAMP> -H "Authorization: Bearer $AUTH_TOKEN" -H "IBMInstanceID: $GUID"
Dove
-
<REST_API_ENDPOINT>indica l'endpoint di destinazione della chiamata API REST. Per ulteriori informazioni, vedi Monitoring endpoint API REST. Ad esempio, l'endpoint pubblico per un'istanza disponibile in us - south è il seguente:https://us-south.monitoring.cloud.ibm.com/api -
Puoi passare più intestazioni utilizzando
-H.AuthorizationeIBMInstanceIDsono intestazioni richieste per l'autenticazione. Per ottenere unAUTH_TOKENe laGUIDconsultare, Intestazioni per i token IAM. -
toefromsono parametri di query che è necessario definire per configurare il periodo di tempo per cui si desiderano informazioni sugli avvisi.
Per ulteriori informazioni sul formato della risposta, vedi Schema di avviso.
Schema degli avvisi: corpo della richiesta
{
"alerts": [
{
"alert": {
"version": null,
"name": "",
"description": null,
"teamId": null,
"enabled": false,
"filter": null,
"type": "",
"condition": "",
"timespan": 600000000,
"notificationChannelIds": [],
"reNotify": false,
"reNotifyMinutes": 30,
"segmentBy": [],
"segmentCondition": {
"type": ""
},
"severityLabel": ""
}
}
]
}
Schema degli avvisi: corpo della risposta
{
"alerts": [
{
"alert": {
"autoCreated": false,
"condition": "",
"createdOn": 1551358413000,
"enabled": false,
"id": 23211,
"modifiedOn": 1551634372000,
"name": "",
"filter": "",
"notificationChannelIds": [],
"segmentBy": [],
"segmentCondition": {
"type": "ANY"
},
"notificationCount": 60,
"rateOfChange": false,
"reNotify": false,
"severity": 0,
"severityLabel": "",
"teamId": 493,
"timespan": 60000000,
"type": "",
"version": 9
}
}
]
}
Codici di risposta di errore
La tabella riportata di seguito mostra i codici di risposta di errore comuni:
| CR | Descrizione |
|---|---|
400 |
La configurazione dell'avviso non è valida. |
401 |
Accesso non autorizzato. |
404 |
L'ID avviso non è riconosciuto. |
409 |
Esiste una mancata corrispondenza di versione. |
422 |
Il nome dell'avviso non è valido. Il nome è già utilizzato. |
Parametri del corpo
id (intero)
ID di un avviso.
condizione (stringa)
Definisce la soglia configurata per l'avviso. Questo parametro è obbligatorio solo per gli avvisi MANUAL.
Ad esempio, è possibile definire una configurazione nel modo seguente: avg(timeAvg(uptime)) <= 0
createdOn (numero intero)
Definisce l'ora di creazione di un avviso in millisecondi.
Questo parametro restituisce la data / ora Unix quando è stato creato l'avviso.
descrizione (stringa)
Questo parametro descrive l'avviso.
La descrizione è disponibile quando si visualizza un messaggio di alert nella sezione Avvisi della UI di monitoraggio e viene inclusa nelle email di notifica.
abilitato (booleano)
Definisce lo stato di un avviso.
Per impostazione predefinita, questo parametro è impostato su true e l'avviso viene abilitato quando viene creato.
filtro (stringa)
Definisce l'ambito dell'avviso configurando i segmenti.
Quando questo campo è vuoto, vengono incluse tutte le origini di metrica. L'ambito è impostato su Everything.
Ad esempio, è possibile definire i filtri come i seguenti:
kubernetes.namespace.name='production'
container.image='nginx'*.
kubernetes.namespace.name='production' and container.image='nginx'*.
name (stringa)
Nome dell'Avviso. Deve essere univoco.
Il nome viene utilizzato per identificare l'avviso nella sezione Avvisi della IU di monitoraggio ed è incluso nelle e-mail di notifica.
modifiedOn (numero intero)
Definisce l'ultima modifica di un avviso in millisecondi.
Questo parametro definisce la data / ora Unix in cui l'avviso è stato modificato l'ultima volta.
notificationChannelIds (array)
Elenca i canali di notifica configurati per notificare quando viene attivato un avviso.
Le opzioni valide sono EMAIL, PAGER_DUTY, WEBHOOK, VICTOROPS e SLACK.
"notificationChannelIds": [
"EMAIL",
"WEBHOOK"
]
notificationCount (numero intero)
Indica il numero di notifiche inviate per l'avviso durante le ultime due settimane.
reNotify (booleano)
Definisce se si desidera ricevere notifiche di follow-up fino a quando la condizione di avviso non viene riconosciuta e risolta.
Per impostazione predefinita, le notifiche di follow up non sono abilitate e il campo è impostato su false.
reNotifyMinutes (intero)
Definisce la frequenza con cui si desidera ricevere notifiche su un avviso non risolto.
Specificare il numero di minuti prima che venga inviato un promemoria.
gravità (intero)
Definisce la severità dell'avviso codificato syslog.
La tabella seguente elenca i valori che è possibile impostare:
| Severità | Info |
|---|---|
0 |
emergency |
1 |
alert |
2 |
critical |
3 |
error |
4 |
warning |
5 |
notice |
6 |
informational |
7 |
debug |
severityLabel (stringa)
Definisce la criticità di un avviso. I valori validi sono " HIGH, " MEDIUM, " LOW e " INFO. Un valore inferiore indica una maggiore gravità.
La seguente tabella mostra lo stato di severità che deve essere impostato in base al valore del parametro di severità:
| Severità | Stato gravità |
|---|---|
0 |
HIGH |
1 |
HIGH |
2 |
MEDIUM |
3 |
MEDIUM |
4 |
LOW |
5 |
LOW |
6 |
INFO |
7 |
INFO |
segmentBy (array di stringhe)
Definisce ulteriori criteri di segmentazione.
Ad esempio, è possibile segmentare un avviso CPU per ['host.mac', 'proc.name'] in modo che l'avviso possa notificare qualsiasi processo in qualsiasi macchina per cui si ottengono dati nell'istanza di monitoraggio.
segmentCondition (stringa)
Definisce quando viene attivato l'avviso per ciascuna entità monitorata specificata nel parametro segmentBy. Questo parametro è obbligatorio solo per gli avvisi MANUAL.
I valori validi sono i seguenti:
- ANY: l'avviso viene attivato quando almeno una delle entità monitorate soddisfa la condizione.
- ALL: l'avviso viene attivato quando tutte le entità monitorate soddisfano la condizione.
teamId (stringa)
Definisce il GUID del team proprietario dell'avviso.
type (stringa)
Definisce il tipo di avviso. I valori validi sono MANUAL, BASELINE e HOST_COMPARISON.
Impostare su MANUAL per gli avvisi che si desidera controllare quando viene inviata una notifica. È necessario definire la soglia che determina quando viene attivato il messaggio di alert.
Impostare su BASELINE per gli avvisi che si desidera notificare quando vengono rilevati valori di metrica non previsti. I nuovi dati di metrica vengono confrontati con i valori di metrica raccolti nel tempo.
Impostare su HOST_COMPARISON per gli avvisi che si desidera notificare quando 1 host in un gruppo riporta valori di metrica diversi dagli altri host nel gruppo.
timespan (intero)
Intervallo di tempo minimo, in microsecondi, entro il quale la condizione di avviso deve essere soddisfatta prima che l'avviso venga attivato.
Il valore minimo è 60000000 microsecondi, ossia 1 minuto.
Il valore di questo parametro deve essere un multiplo di 60000000 microsecondi.
versione (intero)
Versione di un avviso.
La versione cambia ogni volta che si aggiorna un avviso.
La versione viene utilizzata per il blocco ottimistico.
Parametri di query
alertId (numero intero)
ID di un avviso.
da (lungo)
Definisce la data / ora di inizio, in microsecondi, utilizzata quando si richiedono informazioni sugli avvisi definiti.
a (lungo)
Definisce la data / ora di fine, in microsecondi, utilizzata quando si richiedono informazioni sugli avvisi definiti.