Документация HTTP 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