Управление сохранёнными запросами с помощью Terraform
В этом руководстве показано, как управлять сохранёнными запросами, также известными как библиотека запросов, с помощью провайдера Grafana для Terraform. Управление сохранёнными запросами как код позволяет версионировать библиотеку запросов и поддерживать её согласованность между экземплярами Grafana.
Note
Сохранённые запросы доступны только в Grafana Enterprise и Grafana Cloud.
Прежде чем начать
Прежде чем начать, убедитесь, что у вас есть следующее:
- Экземпляр Grafana Enterprise или Grafana Cloud. Дополнительные сведения о настройке учётной записи Grafana Cloud см. в разделе Get started.
- Terraform, установленный на вашей машине. Дополнительные сведения об установке Terraform см. в документации по установке Terraform.
- Токен сервисной учётной записи с ролью Writer для сохранённых запросов. Дополнительные сведения см. в разделах Roles, permissions, and RBAC и Service account tokens.
Настройка провайдера Grafana
Создайте файл с именем main.tf и добавьте следующее, чтобы настроить провайдер Grafana с аутентификацией, необходимой для управления сохранёнными запросами:
terraform {
required_providers {
grafana = {
source = "grafana/grafana"
version = ">= 4.44.0"
}
}
}
provider "grafana" {
url = "<Grafana-URL>"
auth = "<Service-account-token>"
}
Замените следующие значения полей:
Grafana-URLна URL вашего экземпляра Grafana, напримерhttps://my-stack.grafana.net/Service-account-tokenна созданный вами токен сервисной учётной записи
Создание ресурса сохранённого запроса
Создайте файл с именем saved-queries.tf и добавьте следующее:
resource "grafana_apps_queries_query_v1" "example" {
metadata {
uid = "example-saved-query"
}
spec {
title = "Requests per second"
description = "Prometheus rate of HTTP requests"
is_visible = true
tags = ["http", "prometheus"]
targets {
properties_json = jsonencode({
refId = "A"
expr = "rate(http_requests_total[$__rate_interval])"
datasource = {
type = "prometheus"
uid = "my-prometheus-uid"
}
})
}
}
}
Поскольку структура запроса к источнику данных зависит от источника данных, запрос, хранимый в каждой цели (properties_json), подстановки переменных цели (variables_json) и список значений переменной (value_list_definition_json) передаются как необработанные строки JSON. Используйте jsonencode() для их построения.
Блок spec поддерживает следующие поля:
Полную схему см. в документации ресурса grafana_apps_queries_query_v1.
Импорт существующего сохранённого запроса
Чтобы перевести существующий сохранённый запрос под управление Terraform, импортируйте его по UID:
terraform import grafana_apps_queries_query_v1.example example-saved-query
Итог
В этом руководстве вы узнали, как создавать и импортировать сохранённые запросы с помощью Terraform.
Чтобы узнать больше о сохранённых запросах, обратитесь к разделу Saved queries.