Ответ
Для программного взаимодействия с 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 будет собирать и визуализировать.
Ответ 18+ 🔞
Смотри, чтобы твоё Go-приложение могло командовать Grafana как своим личным холопом, есть официальная библиотека grafana-api-golang-client. Эта штука позволяет на автомате создавать дашборды, источники данных и прочую хуйню, не тыкая мышкой в интерфейс, как последний лох.
Вот, например, как подключиться и вытащить список всех дашбордов, которые у тебя там наворочены:
package main
import (
"fmt"
"log"
gapi "github.com/grafana/grafana-api-golang-client"
)
func main() {
// Подключаемся, как будто это наш личный сервер. Подсовываем URL и 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, создаёшь новый ключ и даёшь ему права, например,Admin, чтобы он мог всё, как хозяин. - Инициализируем клиента:
Кидаешь в
gapi.New()адрес своей Grafana и этот самый ключ — и вуаля, ты уже почти бог.
Важный момент, чтобы не облажаться: Этот способ — для управления Grafana, чтобы она плясала под твою дудку. Но есть и другой, не менее охуенный путь — когда твоё приложение отдаёт метрики (например, в формате Prometheus), а Grafana их уже красиво рисует. Так что выбирай, что тебе нужно: командовать или отчитываться.