Как из Go-приложения взаимодействовать с Grafana API?

Ответ

Для программного взаимодействия с 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)
    }
}

Основные шаги:

  1. Установите библиотеку:

    go get github.com/grafana/grafana-api-golang-client
  2. Создайте API-ключ в Grafana:

    Перейдите в Configuration -> API Keys в вашем Grafana и создайте новый ключ с необходимыми правами (например, Admin или Editor).
  3. Инициализируйте клиент:

    Используйте gapi.New(), передав URL и созданный ключ.

Важно:
Это один из двух основных способов интеграции Go и Grafana. Описанный метод (через API) используется для управления Grafana. Другой популярный способ — это предоставление метрик из вашего Go-приложения (например, в формате Prometheus), которые Grafana будет собирать и визуализировать.