Ответ
Для программного взаимодействия с Grafana из Go-приложения используется официальный клиент grafana-api-golang-client
. Это позволяет автоматизировать управление дашбордами, источниками данных, пользователями и другими сущностями Grafana.
Пример подключения и получения списка дашбордов:
package main
import (
"fmt"
"log"
gapi "github.com/grafana/grafana-api-golang-client"
)
func main() {
// Инициализируем клиент, указывая URL вашего инстанса Grafana и API-ключ
client, err := gapi.New("http://localhost:3000", gapi.Config{
APIKey: "your_api_key_here",
})
if err != nil {
log.Fatalf("Ошибка создания клиента Grafana: %s", err)
}
// Пример использования: получение списка дашбордов
dashboards, err := client.Dashboards()
if err != nil {
log.Fatalf("Ошибка получения дашбордов: %s", err)
}
fmt.Printf("Найдено %d дашбордовn", len(dashboards))
for _, board := range dashboards {
fmt.Printf("- %s (UID: %s)n", board.Title, board.UID)
}
}
Основные шаги:
- Установите библиотеку:
go get github.com/grafana/grafana-api-golang-client
- Создайте API-ключ в Grafana:
Перейдите вConfiguration -> API Keys
в вашем Grafana и создайте новый ключ с необходимыми правами (например,Admin
илиEditor
). - Инициализируйте клиент:
Используйтеgapi.New()
, передав URL и созданный ключ.
Важно:
Это один из двух основных способов интеграции Go и Grafana. Описанный метод (через API) используется для управления Grafana. Другой популярный способ — это предоставление метрик из вашего Go-приложения (например, в формате Prometheus), которые Grafana будет собирать и визуализировать.