Добавляем Annotations на графики Grafana через HTTP API

Документация HTTP API по работе с аннотациями:

https://grafana.com/docs/grafana/latest/http_api/annotations/#annotations-api

Начать стоит с создания ключа в настройках Grafana c правами на редактирование:

Примеры с использованием CURL:

1. Просмотр аннотаций:

Пример:

curl -X GET http://yourhost.ru/api/annotations?from=now-30d&to=now&tags=tag1&tags=tag2&limit=100 -H "Authorization: Bearer YOURKEY"

2. Добавление аннотаций:

Пример:

curl -X POST http://yourhost.ru/api/annotations/ -H "Authorization: Bearer YOURKEY" -H "Content-Type: application/json" -d '{"dashboardId":468,"panelId":1,"time":1507037197339,"timeEnd":1507180805056,"tags":["tag1","tag2"],"text":"Annotation Description"}'

3. Удаление аннотаций:

Пример:

curl -X DELETE http://yourhost.ru/api/annotations/ПОРЯДКОВЫЙ_НОМЕР -H "Authorization: Bearer YOURKEY"

4. Изменение аннотаций:

Пример:

curl -X PUT http://yourhost.ru/api/annotations/ПОРЯДКОВЫЙ_НОМЕР -H "Authorization: Bearer YOURKEY" -H "Content-Type: application/json" -d '{"time":1653582186000,"timeEnd":1653582186000,"text":"Annotation Description","tags":["tag1","tag2"]}'

Источник: https://monhouse.tech/master-klass-dobavlyaem-annotations-na-grafiki-grafana-cherez-http-api/

Добавление аннотаций через HTTP

Добавление аннотаций выполняется с помощью POST запросов. Для этого требуется некоторая дополнительная информация:

  • title аннотации. Это обязательно и отображается как — по понятным причинам — заголовок аннотации
  • text Это также обязательно.
  • Существуют дополнительные необязательные аргументы:
    • dashboardId. Если не указать идентификатор панели мониторинга (id — обратите внимание, что это не uid), аннотация влияет на все панели мониторинга
    • В panelId указывается единственная панель с комментариями. Если панель не указана, то аннотируются все панели данной панели мониторинга.
  • При желании можно установить время события, а для временных интервалов — начальную и конечную временные метки (обратите внимание, что временные метки обычно должны указываться в миллисекундах вместо секунд)
    • Время события — или время начала, в случае указания региона — добавляется в цифровом виде в качестве временной метки с помощью time (пример: "time":1627501786)
    • В случае указания региона следует установить "isRegion":true а также указать timeEnd параметр (например: "timeEnd":1512548410517)

На случай, если кто-то не хочет использовать API для определения dashboardId наиболее эффективным методом, который я лично нашел, было использование отображения панели мониторинга или идентификатора панели в формате JSON.

Для панели мониторинга это находится в настройках панели мониторинга — можно просто найти id:

Тот же метод можно использовать для идентификатора панели, выбрав Inspect и panel JSON:

Затем нужно просто отправить JSON с описанием аннотации в /api/annotations конечную точку. При использовании curl это будет выглядеть следующим образом:

curl \
   -H "Authorization: Bearer eyJrIjoiSXI1UnYwNzRJQ0haS3hrdFE4aFpzelVlanB2cU9sNmsiLCJuIjoiTm90aWZpY2F0aW9uIEJsb2cgQXJ0aWNsZSIsImlkIjoxfQ==" \
   -X POST \
   -H "Content-Type: application/json" \
   -d '{ "text" : "Test annotation pushed via curl", "dashboardId" : 6, "panelId" : 2 }' \
   https://www.example.com/api/annotations

Если окажется, что все работает правильно, Grafana ответит JSON, содержащим идентификатор аннотации:

{"id":1,"message":"Annotation added"}

Пример аннотации диапазона будет выглядеть как следующая команда:

curl \
   -H "Authorization: Bearer eyJrIjoiSXI1UnYwNzRJQ0haS3hrdFE4aFpzelVlanB2cU9sNmsiLCJuIjoiTm90aWZpY2F0aW9uIEJsb2cgQXJ0aWNsZSIsImlkIjoxfQ==" \
   -X POST \
   -H "Content-Type: application/json" \
   -d '{ "text" : "Watering plants", "dashboardId" : 5, "panelId" : 2, "time" :  1627500813000, "isRegion" : true, "timeEnd" : 1627504413000 }' \
   https://www.example.com/api/annotations

Источник: https://www.tspi.at/2021/07/28/grafanahttpapiannotations.html

Was this helpful?

0 / 0