-
Notifications
You must be signed in to change notification settings - Fork 272
Open
Description
Terraform Version
Terraform v1.13.3
Terraform Grafana Provider Version
version = "~> 3.25.1"
Grafana Version
Grafana v12.2.0-17282025910 (12382d7f20)
Affected Resource(s)
grafana_rule_group
Terraform Configuration Files
I have imported the loki rules from loki-2.9.7\production\loki-mixins-compiled\rules.yml via the grafana UI
- The rules import fine.. however when i export the rules as terraform i hit an issue issue.... grafana-ui is generating code thats not runnable from terraform
Error: conflicting fields "record" and "missing_series_evals_to_resolve"
│
│ with module.rules_loki.grafana_rule_group.loki_rules,
│ on rules-loki/loki_rules.tf line 1, in resource "grafana_rule_group" "loki_rules":
│ 1: resource "grafana_rule_group" "loki_rules" {
│
* exported working managed grafana recording rule
* the grafana provider wants record and missing_series_evals_to_resolve to be mutually exlusive
resource "grafana_rule_group" "loki_rules" {
name = "loki_rules"
folder_uid = var.folder_uid
interval_seconds = 60
disable_provenance = true
rule {
name = "cluster_job:loki_request_duration_seconds:99quantile"
data {
ref_id = "query"
query_type = "prometheus"
relative_time_range {
from = 660
to = 60
}
datasource_uid = "prometheus"
model = "{\"datasource\":{\"type\":\"prometheus\",\"uid\":\"prometheus\"},\"expr\":\"histogram_quantile(0.99, sum(rate(loki_request_duration_seconds_bucket[1m])) by (le, cluster, job))\",\"instant\":true,\"intervalMs\":1000,\"maxDataPoints\":43200,\"range\":false,\"refId\":\"query\"}"
}
annotations = {}
labels = {
__converted_prometheus_rule__ = "true"
}
is_paused = true
record {
metric = "cluster_job:loki_request_duration_seconds:99quantile"
from = "query"
target_datasource_uid = "prometheus"
}
}
rule {
name = "cluster_job:loki_request_duration_seconds:50quantile"
data {
ref_id = "query"
query_type = "prometheus"
relative_time_range {
from = 660
to = 60
}
datasource_uid = "prometheus"
model = "{\"datasource\":{\"type\":\"prometheus\",\"uid\":\"prometheus\"},\"expr\":\"histogram_quantile(0.50, sum(rate(loki_request_duration_seconds_bucket[1m])) by (le, cluster, job))\",\"instant\":true,\"intervalMs\":1000,\"maxDataPoints\":43200,\"range\":false,\"refId\":\"query\"}"
}
labels = {
__converted_prometheus_rule__ = "true"
}
is_paused = true
record {
metric = "cluster_job:loki_request_duration_seconds:50quantile"
from = "query"
target_datasource_uid = "prometheus"
}
missing_series_evals_to_resolve = 1
}
rule {
name = "cluster_job:loki_request_duration_seconds:avg"
data {
ref_id = "query"
query_type = "prometheus"
relative_time_range {
from = 660
to = 60
}
datasource_uid = "prometheus"
model = "{\"datasource\":{\"type\":\"prometheus\",\"uid\":\"prometheus\"},\"expr\":\"sum(rate(loki_request_duration_seconds_sum[1m])) by (cluster, job) / sum(rate(loki_request_duration_seconds_count[1m])) by (cluster, job)\",\"instant\":true,\"intervalMs\":1000,\"maxDataPoints\":43200,\"range\":false,\"refId\":\"query\"}"
}
labels = {
__converted_prometheus_rule__ = "true"
}
is_paused = true
record {
metric = "cluster_job:loki_request_duration_seconds:avg"
from = "query"
target_datasource_uid = "prometheus"
}
missing_series_evals_to_resolve = 1
}
rule {
name = "cluster_job:loki_request_duration_seconds_bucket:sum_rate"
data {
ref_id = "query"
query_type = "prometheus"
relative_time_range {
from = 660
to = 60
}
datasource_uid = "prometheus"
model = "{\"datasource\":{\"type\":\"prometheus\",\"uid\":\"prometheus\"},\"expr\":\"sum(rate(loki_request_duration_seconds_bucket[1m])) by (le, cluster, job)\",\"instant\":true,\"intervalMs\":1000,\"maxDataPoints\":43200,\"range\":false,\"refId\":\"query\"}"
}
labels = {
__converted_prometheus_rule__ = "true"
}
is_paused = true
record {
metric = "cluster_job:loki_request_duration_seconds_bucket:sum_rate"
from = "query"
target_datasource_uid = "prometheus"
}
missing_series_evals_to_resolve = 1
}
rule {
name = "cluster_job:loki_request_duration_seconds_sum:sum_rate"
data {
ref_id = "query"
query_type = "prometheus"
relative_time_range {
from = 660
to = 60
}
datasource_uid = "prometheus"
model = "{\"datasource\":{\"type\":\"prometheus\",\"uid\":\"prometheus\"},\"expr\":\"sum(rate(loki_request_duration_seconds_sum[1m])) by (cluster, job)\",\"instant\":true,\"intervalMs\":1000,\"maxDataPoints\":43200,\"range\":false,\"refId\":\"query\"}"
}
labels = {
__converted_prometheus_rule__ = "true"
}
is_paused = true
record {
metric = "cluster_job:loki_request_duration_seconds_sum:sum_rate"
from = "query"
target_datasource_uid = "prometheus"
}
missing_series_evals_to_resolve = 1
}
rule {
name = "cluster_job:loki_request_duration_seconds_count:sum_rate"
data {
ref_id = "query"
query_type = "prometheus"
relative_time_range {
from = 660
to = 60
}
datasource_uid = "prometheus"
model = "{\"datasource\":{\"type\":\"prometheus\",\"uid\":\"prometheus\"},\"expr\":\"sum(rate(loki_request_duration_seconds_count[1m])) by (cluster, job)\",\"instant\":true,\"intervalMs\":1000,\"maxDataPoints\":43200,\"range\":false,\"refId\":\"query\"}"
}
labels = {
__converted_prometheus_rule__ = "true"
}
is_paused = true
record {
metric = "cluster_job:loki_request_duration_seconds_count:sum_rate"
from = "query"
target_datasource_uid = "prometheus"
}
missing_series_evals_to_resolve = 1
}
rule {
name = "cluster_job_route:loki_request_duration_seconds:99quantile"
data {
ref_id = "query"
query_type = "prometheus"
relative_time_range {
from = 660
to = 60
}
datasource_uid = "prometheus"
model = "{\"datasource\":{\"type\":\"prometheus\",\"uid\":\"prometheus\"},\"expr\":\"histogram_quantile(0.99, sum(rate(loki_request_duration_seconds_bucket[1m])) by (le, cluster, job, route))\",\"instant\":true,\"intervalMs\":1000,\"maxDataPoints\":43200,\"range\":false,\"refId\":\"query\"}"
}
labels = {
__converted_prometheus_rule__ = "true"
}
is_paused = true
record {
metric = "cluster_job_route:loki_request_duration_seconds:99quantile"
from = "query"
target_datasource_uid = "prometheus"
}
missing_series_evals_to_resolve = 1
}
rule {
name = "cluster_job_route:loki_request_duration_seconds:50quantile"
data {
ref_id = "query"
query_type = "prometheus"
relative_time_range {
from = 660
to = 60
}
datasource_uid = "prometheus"
model = "{\"datasource\":{\"type\":\"prometheus\",\"uid\":\"prometheus\"},\"expr\":\"histogram_quantile(0.50, sum(rate(loki_request_duration_seconds_bucket[1m])) by (le, cluster, job, route))\",\"instant\":true,\"intervalMs\":1000,\"maxDataPoints\":43200,\"range\":false,\"refId\":\"query\"}"
}
labels = {
__converted_prometheus_rule__ = "true"
}
is_paused = true
record {
metric = "cluster_job_route:loki_request_duration_seconds:50quantile"
from = "query"
target_datasource_uid = "prometheus"
}
missing_series_evals_to_resolve = 1
}
rule {
name = "cluster_job_route:loki_request_duration_seconds:avg"
data {
ref_id = "query"
query_type = "prometheus"
relative_time_range {
from = 660
to = 60
}
datasource_uid = "prometheus"
model = "{\"datasource\":{\"type\":\"prometheus\",\"uid\":\"prometheus\"},\"expr\":\"sum(rate(loki_request_duration_seconds_sum[1m])) by (cluster, job, route) / sum(rate(loki_request_duration_seconds_count[1m])) by (cluster, job, route)\",\"instant\":true,\"intervalMs\":1000,\"maxDataPoints\":43200,\"range\":false,\"refId\":\"query\"}"
}
labels = {
__converted_prometheus_rule__ = "true"
}
is_paused = true
record {
metric = "cluster_job_route:loki_request_duration_seconds:avg"
from = "query"
target_datasource_uid = "prometheus"
}
missing_series_evals_to_resolve = 1
}
rule {
name = "cluster_job_route:loki_request_duration_seconds_bucket:sum_rate"
data {
ref_id = "query"
query_type = "prometheus"
relative_time_range {
from = 660
to = 60
}
datasource_uid = "prometheus"
model = "{\"datasource\":{\"type\":\"prometheus\",\"uid\":\"prometheus\"},\"expr\":\"sum(rate(loki_request_duration_seconds_bucket[1m])) by (le, cluster, job, route)\",\"instant\":true,\"intervalMs\":1000,\"maxDataPoints\":43200,\"range\":false,\"refId\":\"query\"}"
}
labels = {
__converted_prometheus_rule__ = "true"
}
is_paused = true
record {
metric = "cluster_job_route:loki_request_duration_seconds_bucket:sum_rate"
from = "query"
target_datasource_uid = "prometheus"
}
missing_series_evals_to_resolve = 1
}
rule {
name = "cluster_job_route:loki_request_duration_seconds_sum:sum_rate"
data {
ref_id = "query"
query_type = "prometheus"
relative_time_range {
from = 660
to = 60
}
datasource_uid = "prometheus"
model = "{\"datasource\":{\"type\":\"prometheus\",\"uid\":\"prometheus\"},\"expr\":\"sum(rate(loki_request_duration_seconds_sum[1m])) by (cluster, job, route)\",\"instant\":true,\"intervalMs\":1000,\"maxDataPoints\":43200,\"range\":false,\"refId\":\"query\"}"
}
labels = {
__converted_prometheus_rule__ = "true"
}
is_paused = true
record {
metric = "cluster_job_route:loki_request_duration_seconds_sum:sum_rate"
from = "query"
target_datasource_uid = "prometheus"
}
missing_series_evals_to_resolve = 1
}
rule {
name = "cluster_job_route:loki_request_duration_seconds_count:sum_rate"
data {
ref_id = "query"
query_type = "prometheus"
relative_time_range {
from = 660
to = 60
}
datasource_uid = "prometheus"
model = "{\"datasource\":{\"type\":\"prometheus\",\"uid\":\"prometheus\"},\"expr\":\"sum(rate(loki_request_duration_seconds_count[1m])) by (cluster, job, route)\",\"instant\":true,\"intervalMs\":1000,\"maxDataPoints\":43200,\"range\":false,\"refId\":\"query\"}"
}
labels = {
__converted_prometheus_rule__ = "true"
}
is_paused = true
record {
metric = "cluster_job_route:loki_request_duration_seconds_count:sum_rate"
from = "query"
target_datasource_uid = "prometheus"
}
missing_series_evals_to_resolve = 1
}
rule {
name = "cluster_namespace_job_route:loki_request_duration_seconds:99quantile"
data {
ref_id = "query"
query_type = "prometheus"
relative_time_range {
from = 660
to = 60
}
datasource_uid = "prometheus"
model = "{\"datasource\":{\"type\":\"prometheus\",\"uid\":\"prometheus\"},\"expr\":\"histogram_quantile(0.99, sum(rate(loki_request_duration_seconds_bucket[1m])) by (le, cluster, namespace, job, route))\",\"instant\":true,\"intervalMs\":1000,\"maxDataPoints\":43200,\"range\":false,\"refId\":\"query\"}"
}
labels = {
__converted_prometheus_rule__ = "true"
}
is_paused = true
record {
metric = "cluster_namespace_job_route:loki_request_duration_seconds:99quantile"
from = "query"
target_datasource_uid = "prometheus"
}
missing_series_evals_to_resolve = 1
}
rule {
name = "cluster_namespace_job_route:loki_request_duration_seconds:50quantile"
data {
ref_id = "query"
query_type = "prometheus"
relative_time_range {
from = 660
to = 60
}
datasource_uid = "prometheus"
model = "{\"datasource\":{\"type\":\"prometheus\",\"uid\":\"prometheus\"},\"expr\":\"histogram_quantile(0.50, sum(rate(loki_request_duration_seconds_bucket[1m])) by (le, cluster, namespace, job, route))\",\"instant\":true,\"intervalMs\":1000,\"maxDataPoints\":43200,\"range\":false,\"refId\":\"query\"}"
}
labels = {
__converted_prometheus_rule__ = "true"
}
is_paused = true
record {
metric = "cluster_namespace_job_route:loki_request_duration_seconds:50quantile"
from = "query"
target_datasource_uid = "prometheus"
}
missing_series_evals_to_resolve = 1
}
rule {
name = "cluster_namespace_job_route:loki_request_duration_seconds:avg"
data {
ref_id = "query"
query_type = "prometheus"
relative_time_range {
from = 660
to = 60
}
datasource_uid = "prometheus"
model = "{\"datasource\":{\"type\":\"prometheus\",\"uid\":\"prometheus\"},\"expr\":\"sum(rate(loki_request_duration_seconds_sum[1m])) by (cluster, namespace, job, route) / sum(rate(loki_request_duration_seconds_count[1m])) by (cluster, namespace, job, route)\",\"instant\":true,\"intervalMs\":1000,\"maxDataPoints\":43200,\"range\":false,\"refId\":\"query\"}"
}
labels = {
__converted_prometheus_rule__ = "true"
}
is_paused = true
record {
metric = "cluster_namespace_job_route:loki_request_duration_seconds:avg"
from = "query"
target_datasource_uid = "prometheus"
}
missing_series_evals_to_resolve = 1
}
rule {
name = "cluster_namespace_job_route:loki_request_duration_seconds_bucket:sum_rate"
data {
ref_id = "query"
query_type = "prometheus"
relative_time_range {
from = 660
to = 60
}
datasource_uid = "prometheus"
model = "{\"datasource\":{\"type\":\"prometheus\",\"uid\":\"prometheus\"},\"expr\":\"sum(rate(loki_request_duration_seconds_bucket[1m])) by (le, cluster, namespace, job, route)\",\"instant\":true,\"intervalMs\":1000,\"maxDataPoints\":43200,\"range\":false,\"refId\":\"query\"}"
}
labels = {
__converted_prometheus_rule__ = "true"
}
is_paused = true
record {
metric = "cluster_namespace_job_route:loki_request_duration_seconds_bucket:sum_rate"
from = "query"
target_datasource_uid = "prometheus"
}
missing_series_evals_to_resolve = 1
}
rule {
name = "cluster_namespace_job_route:loki_request_duration_seconds_sum:sum_rate"
data {
ref_id = "query"
query_type = "prometheus"
relative_time_range {
from = 660
to = 60
}
datasource_uid = "prometheus"
model = "{\"datasource\":{\"type\":\"prometheus\",\"uid\":\"prometheus\"},\"expr\":\"sum(rate(loki_request_duration_seconds_sum[1m])) by (cluster, namespace, job, route)\",\"instant\":true,\"intervalMs\":1000,\"maxDataPoints\":43200,\"range\":false,\"refId\":\"query\"}"
}
labels = {
__converted_prometheus_rule__ = "true"
}
is_paused = true
record {
metric = "cluster_namespace_job_route:loki_request_duration_seconds_sum:sum_rate"
from = "query"
target_datasource_uid = "prometheus"
}
missing_series_evals_to_resolve = 1
}
rule {
name = "cluster_namespace_job_route:loki_request_duration_seconds_count:sum_rate"
data {
ref_id = "query"
query_type = "prometheus"
relative_time_range {
from = 660
to = 60
}
datasource_uid = "prometheus"
model = "{\"datasource\":{\"type\":\"prometheus\",\"uid\":\"prometheus\"},\"expr\":\"sum(rate(loki_request_duration_seconds_count[1m])) by (cluster, namespace, job, route)\",\"instant\":true,\"intervalMs\":1000,\"maxDataPoints\":43200,\"range\":false,\"refId\":\"query\"}"
}
labels = {
__converted_prometheus_rule__ = "true"
}
is_paused = true
record {
metric = "cluster_namespace_job_route:loki_request_duration_seconds_count:sum_rate"
from = "query"
target_datasource_uid = "prometheus"
}
missing_series_evals_to_resolve = 1
}
}
Expected Behavior
A grafana rule exported from the grafana-ui should work
Actual Behavior
The exported rule contains invalid structure
Steps to Reproduce
No response
Important Factoids
No response
References
No response