1. Packages
  2. Packages
  3. Grafana Cloud
  4. API Docs
  5. slo
  6. SLO
Viewing docs for Grafana v2.29.1
published on Tuesday, May 12, 2026 by pulumiverse
grafana logo
Viewing docs for Grafana v2.29.1
published on Tuesday, May 12, 2026 by pulumiverse

    Resource manages Grafana SLOs (Service Level Objectives).

    Example Usage

    Ratio

    import * as pulumi from "@pulumi/pulumi";
    import * as grafana from "@pulumiverse/grafana";
    
    const ratio = new grafana.slo.SLO("ratio", {
        name: "Terraform Testing - Ratio Query",
        description: "Terraform Description - Ratio Query",
        queries: [{
            ratio: {
                successMetric: "kubelet_http_requests_total{status!~\"5..\"}",
                totalMetric: "kubelet_http_requests_total",
                groupByLabels: [
                    "job",
                    "instance",
                ],
            },
            type: "ratio",
        }],
        objectives: [{
            value: 0.995,
            window: "30d",
        }],
        destinationDatasource: {
            uid: "grafanacloud-prom",
        },
        labels: [{
            key: "slo",
            value: "terraform",
        }],
        alerting: {
            fastburn: {
                annotations: [
                    {
                        key: "name",
                        value: "SLO Burn Rate Very High",
                    },
                    {
                        key: "description",
                        value: "Error budget is burning too fast",
                    },
                ],
            },
            slowburn: {
                annotations: [
                    {
                        key: "name",
                        value: "SLO Burn Rate High",
                    },
                    {
                        key: "description",
                        value: "Error budget is burning too fast",
                    },
                ],
            },
        },
    });
    
    import pulumi
    import pulumiverse_grafana as grafana
    
    ratio = grafana.slo.SLO("ratio",
        name="Terraform Testing - Ratio Query",
        description="Terraform Description - Ratio Query",
        queries=[{
            "ratio": {
                "success_metric": "kubelet_http_requests_total{status!~\"5..\"}",
                "total_metric": "kubelet_http_requests_total",
                "group_by_labels": [
                    "job",
                    "instance",
                ],
            },
            "type": "ratio",
        }],
        objectives=[{
            "value": 0.995,
            "window": "30d",
        }],
        destination_datasource={
            "uid": "grafanacloud-prom",
        },
        labels=[{
            "key": "slo",
            "value": "terraform",
        }],
        alerting={
            "fastburn": {
                "annotations": [
                    {
                        "key": "name",
                        "value": "SLO Burn Rate Very High",
                    },
                    {
                        "key": "description",
                        "value": "Error budget is burning too fast",
                    },
                ],
            },
            "slowburn": {
                "annotations": [
                    {
                        "key": "name",
                        "value": "SLO Burn Rate High",
                    },
                    {
                        "key": "description",
                        "value": "Error budget is burning too fast",
                    },
                ],
            },
        })
    
    package main
    
    import (
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    	"github.com/pulumiverse/pulumi-grafana/sdk/v2/go/grafana/slo"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := slo.NewSLO(ctx, "ratio", &slo.SLOArgs{
    			Name:        pulumi.String("Terraform Testing - Ratio Query"),
    			Description: pulumi.String("Terraform Description - Ratio Query"),
    			Queries: slo.SLOQueryArray{
    				&slo.SLOQueryArgs{
    					Ratio: &slo.SLOQueryRatioArgs{
    						SuccessMetric: pulumi.String("kubelet_http_requests_total{status!~\"5..\"}"),
    						TotalMetric:   pulumi.String("kubelet_http_requests_total"),
    						GroupByLabels: pulumi.StringArray{
    							pulumi.String("job"),
    							pulumi.String("instance"),
    						},
    					},
    					Type: pulumi.String("ratio"),
    				},
    			},
    			Objectives: slo.SLOObjectiveArray{
    				&slo.SLOObjectiveArgs{
    					Value:  pulumi.Float64(0.995),
    					Window: pulumi.String("30d"),
    				},
    			},
    			DestinationDatasource: &slo.SLODestinationDatasourceArgs{
    				Uid: pulumi.String("grafanacloud-prom"),
    			},
    			Labels: slo.SLOLabelArray{
    				&slo.SLOLabelArgs{
    					Key:   pulumi.String("slo"),
    					Value: pulumi.String("terraform"),
    				},
    			},
    			Alerting: &slo.SLOAlertingArgs{
    				Fastburn: &slo.SLOAlertingFastburnArgs{
    					Annotations: slo.SLOAlertingFastburnAnnotationArray{
    						&slo.SLOAlertingFastburnAnnotationArgs{
    							Key:   pulumi.String("name"),
    							Value: pulumi.String("SLO Burn Rate Very High"),
    						},
    						&slo.SLOAlertingFastburnAnnotationArgs{
    							Key:   pulumi.String("description"),
    							Value: pulumi.String("Error budget is burning too fast"),
    						},
    					},
    				},
    				Slowburn: &slo.SLOAlertingSlowburnArgs{
    					Annotations: slo.SLOAlertingSlowburnAnnotationArray{
    						&slo.SLOAlertingSlowburnAnnotationArgs{
    							Key:   pulumi.String("name"),
    							Value: pulumi.String("SLO Burn Rate High"),
    						},
    						&slo.SLOAlertingSlowburnAnnotationArgs{
    							Key:   pulumi.String("description"),
    							Value: pulumi.String("Error budget is burning too fast"),
    						},
    					},
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Grafana = Pulumiverse.Grafana;
    
    return await Deployment.RunAsync(() => 
    {
        var ratio = new Grafana.Slo.SLO("ratio", new()
        {
            Name = "Terraform Testing - Ratio Query",
            Description = "Terraform Description - Ratio Query",
            Queries = new[]
            {
                new Grafana.Slo.Inputs.SLOQueryArgs
                {
                    Ratio = new Grafana.Slo.Inputs.SLOQueryRatioArgs
                    {
                        SuccessMetric = "kubelet_http_requests_total{status!~\"5..\"}",
                        TotalMetric = "kubelet_http_requests_total",
                        GroupByLabels = new[]
                        {
                            "job",
                            "instance",
                        },
                    },
                    Type = "ratio",
                },
            },
            Objectives = new[]
            {
                new Grafana.Slo.Inputs.SLOObjectiveArgs
                {
                    Value = 0.995,
                    Window = "30d",
                },
            },
            DestinationDatasource = new Grafana.Slo.Inputs.SLODestinationDatasourceArgs
            {
                Uid = "grafanacloud-prom",
            },
            Labels = new[]
            {
                new Grafana.Slo.Inputs.SLOLabelArgs
                {
                    Key = "slo",
                    Value = "terraform",
                },
            },
            Alerting = new Grafana.Slo.Inputs.SLOAlertingArgs
            {
                Fastburn = new Grafana.Slo.Inputs.SLOAlertingFastburnArgs
                {
                    Annotations = new[]
                    {
                        new Grafana.Slo.Inputs.SLOAlertingFastburnAnnotationArgs
                        {
                            Key = "name",
                            Value = "SLO Burn Rate Very High",
                        },
                        new Grafana.Slo.Inputs.SLOAlertingFastburnAnnotationArgs
                        {
                            Key = "description",
                            Value = "Error budget is burning too fast",
                        },
                    },
                },
                Slowburn = new Grafana.Slo.Inputs.SLOAlertingSlowburnArgs
                {
                    Annotations = new[]
                    {
                        new Grafana.Slo.Inputs.SLOAlertingSlowburnAnnotationArgs
                        {
                            Key = "name",
                            Value = "SLO Burn Rate High",
                        },
                        new Grafana.Slo.Inputs.SLOAlertingSlowburnAnnotationArgs
                        {
                            Key = "description",
                            Value = "Error budget is burning too fast",
                        },
                    },
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.grafana.slo.SLO;
    import com.pulumi.grafana.slo.SLOArgs;
    import com.pulumi.grafana.slo.inputs.SLOQueryArgs;
    import com.pulumi.grafana.slo.inputs.SLOQueryRatioArgs;
    import com.pulumi.grafana.slo.inputs.SLOObjectiveArgs;
    import com.pulumi.grafana.slo.inputs.SLODestinationDatasourceArgs;
    import com.pulumi.grafana.slo.inputs.SLOLabelArgs;
    import com.pulumi.grafana.slo.inputs.SLOAlertingArgs;
    import com.pulumi.grafana.slo.inputs.SLOAlertingFastburnArgs;
    import com.pulumi.grafana.slo.inputs.SLOAlertingSlowburnArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var ratio = new SLO("ratio", SLOArgs.builder()
                .name("Terraform Testing - Ratio Query")
                .description("Terraform Description - Ratio Query")
                .queries(SLOQueryArgs.builder()
                    .ratio(SLOQueryRatioArgs.builder()
                        .successMetric("kubelet_http_requests_total{status!~\"5..\"}")
                        .totalMetric("kubelet_http_requests_total")
                        .groupByLabels(                    
                            "job",
                            "instance")
                        .build())
                    .type("ratio")
                    .build())
                .objectives(SLOObjectiveArgs.builder()
                    .value(0.995)
                    .window("30d")
                    .build())
                .destinationDatasource(SLODestinationDatasourceArgs.builder()
                    .uid("grafanacloud-prom")
                    .build())
                .labels(SLOLabelArgs.builder()
                    .key("slo")
                    .value("terraform")
                    .build())
                .alerting(SLOAlertingArgs.builder()
                    .fastburn(SLOAlertingFastburnArgs.builder()
                        .annotations(                    
                            SLOAlertingFastburnAnnotationArgs.builder()
                                .key("name")
                                .value("SLO Burn Rate Very High")
                                .build(),
                            SLOAlertingFastburnAnnotationArgs.builder()
                                .key("description")
                                .value("Error budget is burning too fast")
                                .build())
                        .build())
                    .slowburn(SLOAlertingSlowburnArgs.builder()
                        .annotations(                    
                            SLOAlertingSlowburnAnnotationArgs.builder()
                                .key("name")
                                .value("SLO Burn Rate High")
                                .build(),
                            SLOAlertingSlowburnAnnotationArgs.builder()
                                .key("description")
                                .value("Error budget is burning too fast")
                                .build())
                        .build())
                    .build())
                .build());
    
        }
    }
    
    resources:
      ratio:
        type: grafana:slo:SLO
        properties:
          name: Terraform Testing - Ratio Query
          description: Terraform Description - Ratio Query
          queries:
            - ratio:
                successMetric: kubelet_http_requests_total{status!~"5.."}
                totalMetric: kubelet_http_requests_total
                groupByLabels:
                  - job
                  - instance
              type: ratio
          objectives:
            - value: 0.995
              window: 30d
          destinationDatasource:
            uid: grafanacloud-prom
          labels:
            - key: slo
              value: terraform
          alerting:
            fastburn:
              annotations:
                - key: name
                  value: SLO Burn Rate Very High
                - key: description
                  value: Error budget is burning too fast
            slowburn:
              annotations:
                - key: name
                  value: SLO Burn Rate High
                - key: description
                  value: Error budget is burning too fast
    
    Example coming soon!
    

    Advanced

    import * as pulumi from "@pulumi/pulumi";
    import * as grafana from "@pulumiverse/grafana";
    
    const test = new grafana.slo.SLO("test", {
        name: "Terraform Testing",
        description: "Terraform Description",
        queries: [{
            freeform: {
                query: "sum(rate(apiserver_request_total{code!=\"500\"}[$__rate_interval])) / sum(rate(apiserver_request_total[$__rate_interval]))",
            },
            type: "freeform",
        }],
        objectives: [{
            value: 0.995,
            window: "30d",
        }],
        destinationDatasource: {
            uid: "grafanacloud-prom",
        },
        labels: [{
            key: "slo",
            value: "terraform",
        }],
        alerting: {
            fastburn: {
                annotations: [
                    {
                        key: "name",
                        value: "SLO Burn Rate Very High",
                    },
                    {
                        key: "description",
                        value: "Error budget is burning too fast",
                    },
                ],
                enrichments: [{
                    type: "assistantInvestigation",
                }],
            },
            slowburn: {
                annotations: [
                    {
                        key: "name",
                        value: "SLO Burn Rate High",
                    },
                    {
                        key: "description",
                        value: "Error budget is burning too fast",
                    },
                ],
                enrichments: [{
                    type: "assistantInvestigation",
                }],
            },
        },
    });
    
    import pulumi
    import pulumiverse_grafana as grafana
    
    test = grafana.slo.SLO("test",
        name="Terraform Testing",
        description="Terraform Description",
        queries=[{
            "freeform": {
                "query": "sum(rate(apiserver_request_total{code!=\"500\"}[$__rate_interval])) / sum(rate(apiserver_request_total[$__rate_interval]))",
            },
            "type": "freeform",
        }],
        objectives=[{
            "value": 0.995,
            "window": "30d",
        }],
        destination_datasource={
            "uid": "grafanacloud-prom",
        },
        labels=[{
            "key": "slo",
            "value": "terraform",
        }],
        alerting={
            "fastburn": {
                "annotations": [
                    {
                        "key": "name",
                        "value": "SLO Burn Rate Very High",
                    },
                    {
                        "key": "description",
                        "value": "Error budget is burning too fast",
                    },
                ],
                "enrichments": [{
                    "type": "assistantInvestigation",
                }],
            },
            "slowburn": {
                "annotations": [
                    {
                        "key": "name",
                        "value": "SLO Burn Rate High",
                    },
                    {
                        "key": "description",
                        "value": "Error budget is burning too fast",
                    },
                ],
                "enrichments": [{
                    "type": "assistantInvestigation",
                }],
            },
        })
    
    package main
    
    import (
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    	"github.com/pulumiverse/pulumi-grafana/sdk/v2/go/grafana/slo"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := slo.NewSLO(ctx, "test", &slo.SLOArgs{
    			Name:        pulumi.String("Terraform Testing"),
    			Description: pulumi.String("Terraform Description"),
    			Queries: slo.SLOQueryArray{
    				&slo.SLOQueryArgs{
    					Freeform: &slo.SLOQueryFreeformArgs{
    						Query: pulumi.String("sum(rate(apiserver_request_total{code!=\"500\"}[$__rate_interval])) / sum(rate(apiserver_request_total[$__rate_interval]))"),
    					},
    					Type: pulumi.String("freeform"),
    				},
    			},
    			Objectives: slo.SLOObjectiveArray{
    				&slo.SLOObjectiveArgs{
    					Value:  pulumi.Float64(0.995),
    					Window: pulumi.String("30d"),
    				},
    			},
    			DestinationDatasource: &slo.SLODestinationDatasourceArgs{
    				Uid: pulumi.String("grafanacloud-prom"),
    			},
    			Labels: slo.SLOLabelArray{
    				&slo.SLOLabelArgs{
    					Key:   pulumi.String("slo"),
    					Value: pulumi.String("terraform"),
    				},
    			},
    			Alerting: &slo.SLOAlertingArgs{
    				Fastburn: &slo.SLOAlertingFastburnArgs{
    					Annotations: slo.SLOAlertingFastburnAnnotationArray{
    						&slo.SLOAlertingFastburnAnnotationArgs{
    							Key:   pulumi.String("name"),
    							Value: pulumi.String("SLO Burn Rate Very High"),
    						},
    						&slo.SLOAlertingFastburnAnnotationArgs{
    							Key:   pulumi.String("description"),
    							Value: pulumi.String("Error budget is burning too fast"),
    						},
    					},
    					Enrichments: slo.SLOAlertingFastburnEnrichmentArray{
    						&slo.SLOAlertingFastburnEnrichmentArgs{
    							Type: pulumi.String("assistantInvestigation"),
    						},
    					},
    				},
    				Slowburn: &slo.SLOAlertingSlowburnArgs{
    					Annotations: slo.SLOAlertingSlowburnAnnotationArray{
    						&slo.SLOAlertingSlowburnAnnotationArgs{
    							Key:   pulumi.String("name"),
    							Value: pulumi.String("SLO Burn Rate High"),
    						},
    						&slo.SLOAlertingSlowburnAnnotationArgs{
    							Key:   pulumi.String("description"),
    							Value: pulumi.String("Error budget is burning too fast"),
    						},
    					},
    					Enrichments: slo.SLOAlertingSlowburnEnrichmentArray{
    						&slo.SLOAlertingSlowburnEnrichmentArgs{
    							Type: pulumi.String("assistantInvestigation"),
    						},
    					},
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Grafana = Pulumiverse.Grafana;
    
    return await Deployment.RunAsync(() => 
    {
        var test = new Grafana.Slo.SLO("test", new()
        {
            Name = "Terraform Testing",
            Description = "Terraform Description",
            Queries = new[]
            {
                new Grafana.Slo.Inputs.SLOQueryArgs
                {
                    Freeform = new Grafana.Slo.Inputs.SLOQueryFreeformArgs
                    {
                        Query = "sum(rate(apiserver_request_total{code!=\"500\"}[$__rate_interval])) / sum(rate(apiserver_request_total[$__rate_interval]))",
                    },
                    Type = "freeform",
                },
            },
            Objectives = new[]
            {
                new Grafana.Slo.Inputs.SLOObjectiveArgs
                {
                    Value = 0.995,
                    Window = "30d",
                },
            },
            DestinationDatasource = new Grafana.Slo.Inputs.SLODestinationDatasourceArgs
            {
                Uid = "grafanacloud-prom",
            },
            Labels = new[]
            {
                new Grafana.Slo.Inputs.SLOLabelArgs
                {
                    Key = "slo",
                    Value = "terraform",
                },
            },
            Alerting = new Grafana.Slo.Inputs.SLOAlertingArgs
            {
                Fastburn = new Grafana.Slo.Inputs.SLOAlertingFastburnArgs
                {
                    Annotations = new[]
                    {
                        new Grafana.Slo.Inputs.SLOAlertingFastburnAnnotationArgs
                        {
                            Key = "name",
                            Value = "SLO Burn Rate Very High",
                        },
                        new Grafana.Slo.Inputs.SLOAlertingFastburnAnnotationArgs
                        {
                            Key = "description",
                            Value = "Error budget is burning too fast",
                        },
                    },
                    Enrichments = new[]
                    {
                        new Grafana.Slo.Inputs.SLOAlertingFastburnEnrichmentArgs
                        {
                            Type = "assistantInvestigation",
                        },
                    },
                },
                Slowburn = new Grafana.Slo.Inputs.SLOAlertingSlowburnArgs
                {
                    Annotations = new[]
                    {
                        new Grafana.Slo.Inputs.SLOAlertingSlowburnAnnotationArgs
                        {
                            Key = "name",
                            Value = "SLO Burn Rate High",
                        },
                        new Grafana.Slo.Inputs.SLOAlertingSlowburnAnnotationArgs
                        {
                            Key = "description",
                            Value = "Error budget is burning too fast",
                        },
                    },
                    Enrichments = new[]
                    {
                        new Grafana.Slo.Inputs.SLOAlertingSlowburnEnrichmentArgs
                        {
                            Type = "assistantInvestigation",
                        },
                    },
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.grafana.slo.SLO;
    import com.pulumi.grafana.slo.SLOArgs;
    import com.pulumi.grafana.slo.inputs.SLOQueryArgs;
    import com.pulumi.grafana.slo.inputs.SLOQueryFreeformArgs;
    import com.pulumi.grafana.slo.inputs.SLOObjectiveArgs;
    import com.pulumi.grafana.slo.inputs.SLODestinationDatasourceArgs;
    import com.pulumi.grafana.slo.inputs.SLOLabelArgs;
    import com.pulumi.grafana.slo.inputs.SLOAlertingArgs;
    import com.pulumi.grafana.slo.inputs.SLOAlertingFastburnArgs;
    import com.pulumi.grafana.slo.inputs.SLOAlertingSlowburnArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var test = new SLO("test", SLOArgs.builder()
                .name("Terraform Testing")
                .description("Terraform Description")
                .queries(SLOQueryArgs.builder()
                    .freeform(SLOQueryFreeformArgs.builder()
                        .query("sum(rate(apiserver_request_total{code!=\"500\"}[$__rate_interval])) / sum(rate(apiserver_request_total[$__rate_interval]))")
                        .build())
                    .type("freeform")
                    .build())
                .objectives(SLOObjectiveArgs.builder()
                    .value(0.995)
                    .window("30d")
                    .build())
                .destinationDatasource(SLODestinationDatasourceArgs.builder()
                    .uid("grafanacloud-prom")
                    .build())
                .labels(SLOLabelArgs.builder()
                    .key("slo")
                    .value("terraform")
                    .build())
                .alerting(SLOAlertingArgs.builder()
                    .fastburn(SLOAlertingFastburnArgs.builder()
                        .annotations(                    
                            SLOAlertingFastburnAnnotationArgs.builder()
                                .key("name")
                                .value("SLO Burn Rate Very High")
                                .build(),
                            SLOAlertingFastburnAnnotationArgs.builder()
                                .key("description")
                                .value("Error budget is burning too fast")
                                .build())
                        .enrichments(SLOAlertingFastburnEnrichmentArgs.builder()
                            .type("assistantInvestigation")
                            .build())
                        .build())
                    .slowburn(SLOAlertingSlowburnArgs.builder()
                        .annotations(                    
                            SLOAlertingSlowburnAnnotationArgs.builder()
                                .key("name")
                                .value("SLO Burn Rate High")
                                .build(),
                            SLOAlertingSlowburnAnnotationArgs.builder()
                                .key("description")
                                .value("Error budget is burning too fast")
                                .build())
                        .enrichments(SLOAlertingSlowburnEnrichmentArgs.builder()
                            .type("assistantInvestigation")
                            .build())
                        .build())
                    .build())
                .build());
    
        }
    }
    
    resources:
      test:
        type: grafana:slo:SLO
        properties:
          name: Terraform Testing
          description: Terraform Description
          queries:
            - freeform:
                query: sum(rate(apiserver_request_total{code!="500"}[$__rate_interval])) / sum(rate(apiserver_request_total[$__rate_interval]))
              type: freeform
          objectives:
            - value: 0.995
              window: 30d
          destinationDatasource:
            uid: grafanacloud-prom
          labels:
            - key: slo
              value: terraform
          alerting:
            fastburn:
              annotations:
                - key: name
                  value: SLO Burn Rate Very High
                - key: description
                  value: Error budget is burning too fast
              enrichments:
                - type: assistantInvestigation
            slowburn:
              annotations:
                - key: name
                  value: SLO Burn Rate High
                - key: description
                  value: Error budget is burning too fast
              enrichments:
                - type: assistantInvestigation
    
    Example coming soon!
    

    Grafana Queries - Any supported datasource

    Grafana Queries use the grafanaQueries field. It expects a JSON string list of valid grafana query JSON objects, the same as you’ll find assigned to a Grafana Dashboard panel targets field.

    import * as pulumi from "@pulumi/pulumi";
    import * as grafana from "@pulumiverse/grafana";
    
    const test = new grafana.slo.SLO("test", {
        name: "Terraform Testing",
        description: "Terraform Description",
        queries: [{
            grafanaQueries: {
                grafanaQueries: JSON.stringify([
                    {
                        datasource: {
                            type: "graphite",
                            uid: "datasource-uid",
                        },
                        refId: "Success",
                        target: "groupByNode(perSecond(web.*.http.2xx_success.*.*), 3, 'avg')",
                    },
                    {
                        datasource: {
                            type: "graphite",
                            uid: "datasource-uid",
                        },
                        refId: "Total",
                        target: "groupByNode(perSecond(web.*.http.5xx_errors.*.*), 3, 'avg')",
                    },
                    {
                        datasource: {
                            type: "__expr__",
                            uid: "__expr__",
                        },
                        expression: "$Success / $Total",
                        refId: "Expression",
                        type: "math",
                    },
                ]),
            },
            type: "grafana_queries",
        }],
        destinationDatasource: {
            uid: "grafanacloud-prom",
        },
        objectives: [{
            value: 0.995,
            window: "30d",
        }],
        labels: [{
            key: "slo",
            value: "terraform",
        }],
        alerting: {
            fastburn: {
                annotations: [
                    {
                        key: "name",
                        value: "SLO Burn Rate Very High",
                    },
                    {
                        key: "description",
                        value: "Error budget is burning too fast",
                    },
                ],
            },
            slowburn: {
                annotations: [
                    {
                        key: "name",
                        value: "SLO Burn Rate High",
                    },
                    {
                        key: "description",
                        value: "Error budget is burning too fast",
                    },
                ],
            },
        },
    });
    
    import pulumi
    import json
    import pulumiverse_grafana as grafana
    
    test = grafana.slo.SLO("test",
        name="Terraform Testing",
        description="Terraform Description",
        queries=[{
            "grafana_queries": {
                "grafana_queries": json.dumps([
                    {
                        "datasource": {
                            "type": "graphite",
                            "uid": "datasource-uid",
                        },
                        "refId": "Success",
                        "target": "groupByNode(perSecond(web.*.http.2xx_success.*.*), 3, 'avg')",
                    },
                    {
                        "datasource": {
                            "type": "graphite",
                            "uid": "datasource-uid",
                        },
                        "refId": "Total",
                        "target": "groupByNode(perSecond(web.*.http.5xx_errors.*.*), 3, 'avg')",
                    },
                    {
                        "datasource": {
                            "type": "__expr__",
                            "uid": "__expr__",
                        },
                        "expression": "$Success / $Total",
                        "refId": "Expression",
                        "type": "math",
                    },
                ]),
            },
            "type": "grafana_queries",
        }],
        destination_datasource={
            "uid": "grafanacloud-prom",
        },
        objectives=[{
            "value": 0.995,
            "window": "30d",
        }],
        labels=[{
            "key": "slo",
            "value": "terraform",
        }],
        alerting={
            "fastburn": {
                "annotations": [
                    {
                        "key": "name",
                        "value": "SLO Burn Rate Very High",
                    },
                    {
                        "key": "description",
                        "value": "Error budget is burning too fast",
                    },
                ],
            },
            "slowburn": {
                "annotations": [
                    {
                        "key": "name",
                        "value": "SLO Burn Rate High",
                    },
                    {
                        "key": "description",
                        "value": "Error budget is burning too fast",
                    },
                ],
            },
        })
    
    package main
    
    import (
    	"encoding/json"
    
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    	"github.com/pulumiverse/pulumi-grafana/sdk/v2/go/grafana/slo"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		tmpJSON0, err := json.Marshal([]interface{}{
    			map[string]interface{}{
    				"datasource": map[string]interface{}{
    					"type": "graphite",
    					"uid":  "datasource-uid",
    				},
    				"refId":  "Success",
    				"target": "groupByNode(perSecond(web.*.http.2xx_success.*.*), 3, 'avg')",
    			},
    			map[string]interface{}{
    				"datasource": map[string]interface{}{
    					"type": "graphite",
    					"uid":  "datasource-uid",
    				},
    				"refId":  "Total",
    				"target": "groupByNode(perSecond(web.*.http.5xx_errors.*.*), 3, 'avg')",
    			},
    			map[string]interface{}{
    				"datasource": map[string]interface{}{
    					"type": "__expr__",
    					"uid":  "__expr__",
    				},
    				"expression": "$Success / $Total",
    				"refId":      "Expression",
    				"type":       "math",
    			},
    		})
    		if err != nil {
    			return err
    		}
    		json0 := string(tmpJSON0)
    		_, err = slo.NewSLO(ctx, "test", &slo.SLOArgs{
    			Name:        pulumi.String("Terraform Testing"),
    			Description: pulumi.String("Terraform Description"),
    			Queries: slo.SLOQueryArray{
    				&slo.SLOQueryArgs{
    					GrafanaQueries: &slo.SLOQueryGrafanaQueriesArgs{
    						GrafanaQueries: pulumi.String(pulumi.String(json0)),
    					},
    					Type: pulumi.String("grafana_queries"),
    				},
    			},
    			DestinationDatasource: &slo.SLODestinationDatasourceArgs{
    				Uid: pulumi.String("grafanacloud-prom"),
    			},
    			Objectives: slo.SLOObjectiveArray{
    				&slo.SLOObjectiveArgs{
    					Value:  pulumi.Float64(0.995),
    					Window: pulumi.String("30d"),
    				},
    			},
    			Labels: slo.SLOLabelArray{
    				&slo.SLOLabelArgs{
    					Key:   pulumi.String("slo"),
    					Value: pulumi.String("terraform"),
    				},
    			},
    			Alerting: &slo.SLOAlertingArgs{
    				Fastburn: &slo.SLOAlertingFastburnArgs{
    					Annotations: slo.SLOAlertingFastburnAnnotationArray{
    						&slo.SLOAlertingFastburnAnnotationArgs{
    							Key:   pulumi.String("name"),
    							Value: pulumi.String("SLO Burn Rate Very High"),
    						},
    						&slo.SLOAlertingFastburnAnnotationArgs{
    							Key:   pulumi.String("description"),
    							Value: pulumi.String("Error budget is burning too fast"),
    						},
    					},
    				},
    				Slowburn: &slo.SLOAlertingSlowburnArgs{
    					Annotations: slo.SLOAlertingSlowburnAnnotationArray{
    						&slo.SLOAlertingSlowburnAnnotationArgs{
    							Key:   pulumi.String("name"),
    							Value: pulumi.String("SLO Burn Rate High"),
    						},
    						&slo.SLOAlertingSlowburnAnnotationArgs{
    							Key:   pulumi.String("description"),
    							Value: pulumi.String("Error budget is burning too fast"),
    						},
    					},
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using System.Text.Json;
    using Pulumi;
    using Grafana = Pulumiverse.Grafana;
    
    return await Deployment.RunAsync(() => 
    {
        var test = new Grafana.Slo.SLO("test", new()
        {
            Name = "Terraform Testing",
            Description = "Terraform Description",
            Queries = new[]
            {
                new Grafana.Slo.Inputs.SLOQueryArgs
                {
                    GrafanaQueries = new Grafana.Slo.Inputs.SLOQueryGrafanaQueriesArgs
                    {
                        GrafanaQueries = JsonSerializer.Serialize(new[]
                        {
                            new Dictionary<string, object?>
                            {
                                ["datasource"] = new Dictionary<string, object?>
                                {
                                    ["type"] = "graphite",
                                    ["uid"] = "datasource-uid",
                                },
                                ["refId"] = "Success",
                                ["target"] = "groupByNode(perSecond(web.*.http.2xx_success.*.*), 3, 'avg')",
                            },
                            new Dictionary<string, object?>
                            {
                                ["datasource"] = new Dictionary<string, object?>
                                {
                                    ["type"] = "graphite",
                                    ["uid"] = "datasource-uid",
                                },
                                ["refId"] = "Total",
                                ["target"] = "groupByNode(perSecond(web.*.http.5xx_errors.*.*), 3, 'avg')",
                            },
                            new Dictionary<string, object?>
                            {
                                ["datasource"] = new Dictionary<string, object?>
                                {
                                    ["type"] = "__expr__",
                                    ["uid"] = "__expr__",
                                },
                                ["expression"] = "$Success / $Total",
                                ["refId"] = "Expression",
                                ["type"] = "math",
                            },
                        }),
                    },
                    Type = "grafana_queries",
                },
            },
            DestinationDatasource = new Grafana.Slo.Inputs.SLODestinationDatasourceArgs
            {
                Uid = "grafanacloud-prom",
            },
            Objectives = new[]
            {
                new Grafana.Slo.Inputs.SLOObjectiveArgs
                {
                    Value = 0.995,
                    Window = "30d",
                },
            },
            Labels = new[]
            {
                new Grafana.Slo.Inputs.SLOLabelArgs
                {
                    Key = "slo",
                    Value = "terraform",
                },
            },
            Alerting = new Grafana.Slo.Inputs.SLOAlertingArgs
            {
                Fastburn = new Grafana.Slo.Inputs.SLOAlertingFastburnArgs
                {
                    Annotations = new[]
                    {
                        new Grafana.Slo.Inputs.SLOAlertingFastburnAnnotationArgs
                        {
                            Key = "name",
                            Value = "SLO Burn Rate Very High",
                        },
                        new Grafana.Slo.Inputs.SLOAlertingFastburnAnnotationArgs
                        {
                            Key = "description",
                            Value = "Error budget is burning too fast",
                        },
                    },
                },
                Slowburn = new Grafana.Slo.Inputs.SLOAlertingSlowburnArgs
                {
                    Annotations = new[]
                    {
                        new Grafana.Slo.Inputs.SLOAlertingSlowburnAnnotationArgs
                        {
                            Key = "name",
                            Value = "SLO Burn Rate High",
                        },
                        new Grafana.Slo.Inputs.SLOAlertingSlowburnAnnotationArgs
                        {
                            Key = "description",
                            Value = "Error budget is burning too fast",
                        },
                    },
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.grafana.slo.SLO;
    import com.pulumi.grafana.slo.SLOArgs;
    import com.pulumi.grafana.slo.inputs.SLOQueryArgs;
    import com.pulumi.grafana.slo.inputs.SLOQueryGrafanaQueriesArgs;
    import com.pulumi.grafana.slo.inputs.SLODestinationDatasourceArgs;
    import com.pulumi.grafana.slo.inputs.SLOObjectiveArgs;
    import com.pulumi.grafana.slo.inputs.SLOLabelArgs;
    import com.pulumi.grafana.slo.inputs.SLOAlertingArgs;
    import com.pulumi.grafana.slo.inputs.SLOAlertingFastburnArgs;
    import com.pulumi.grafana.slo.inputs.SLOAlertingSlowburnArgs;
    import static com.pulumi.codegen.internal.Serialization.*;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var test = new SLO("test", SLOArgs.builder()
                .name("Terraform Testing")
                .description("Terraform Description")
                .queries(SLOQueryArgs.builder()
                    .grafanaQueries(SLOQueryGrafanaQueriesArgs.builder()
                        .grafanaQueries(serializeJson(
                            jsonArray(
                                jsonObject(
                                    jsonProperty("datasource", jsonObject(
                                        jsonProperty("type", "graphite"),
                                        jsonProperty("uid", "datasource-uid")
                                    )),
                                    jsonProperty("refId", "Success"),
                                    jsonProperty("target", "groupByNode(perSecond(web.*.http.2xx_success.*.*), 3, 'avg')")
                                ), 
                                jsonObject(
                                    jsonProperty("datasource", jsonObject(
                                        jsonProperty("type", "graphite"),
                                        jsonProperty("uid", "datasource-uid")
                                    )),
                                    jsonProperty("refId", "Total"),
                                    jsonProperty("target", "groupByNode(perSecond(web.*.http.5xx_errors.*.*), 3, 'avg')")
                                ), 
                                jsonObject(
                                    jsonProperty("datasource", jsonObject(
                                        jsonProperty("type", "__expr__"),
                                        jsonProperty("uid", "__expr__")
                                    )),
                                    jsonProperty("expression", "$Success / $Total"),
                                    jsonProperty("refId", "Expression"),
                                    jsonProperty("type", "math")
                                )
                            )))
                        .build())
                    .type("grafana_queries")
                    .build())
                .destinationDatasource(SLODestinationDatasourceArgs.builder()
                    .uid("grafanacloud-prom")
                    .build())
                .objectives(SLOObjectiveArgs.builder()
                    .value(0.995)
                    .window("30d")
                    .build())
                .labels(SLOLabelArgs.builder()
                    .key("slo")
                    .value("terraform")
                    .build())
                .alerting(SLOAlertingArgs.builder()
                    .fastburn(SLOAlertingFastburnArgs.builder()
                        .annotations(                    
                            SLOAlertingFastburnAnnotationArgs.builder()
                                .key("name")
                                .value("SLO Burn Rate Very High")
                                .build(),
                            SLOAlertingFastburnAnnotationArgs.builder()
                                .key("description")
                                .value("Error budget is burning too fast")
                                .build())
                        .build())
                    .slowburn(SLOAlertingSlowburnArgs.builder()
                        .annotations(                    
                            SLOAlertingSlowburnAnnotationArgs.builder()
                                .key("name")
                                .value("SLO Burn Rate High")
                                .build(),
                            SLOAlertingSlowburnAnnotationArgs.builder()
                                .key("description")
                                .value("Error budget is burning too fast")
                                .build())
                        .build())
                    .build())
                .build());
    
        }
    }
    
    resources:
      test:
        type: grafana:slo:SLO
        properties:
          name: Terraform Testing
          description: Terraform Description
          queries:
            - grafanaQueries:
                grafanaQueries:
                  fn::toJSON:
                    - datasource:
                        type: graphite
                        uid: datasource-uid
                      refId: Success
                      target: groupByNode(perSecond(web.*.http.2xx_success.*.*), 3, 'avg')
                    - datasource:
                        type: graphite
                        uid: datasource-uid
                      refId: Total
                      target: groupByNode(perSecond(web.*.http.5xx_errors.*.*), 3, 'avg')
                    - datasource:
                        type: __expr__
                        uid: __expr__
                      expression: $Success / $Total
                      refId: Expression
                      type: math
              type: grafana_queries
          destinationDatasource:
            uid: grafanacloud-prom
          objectives:
            - value: 0.995
              window: 30d
          labels:
            - key: slo
              value: terraform
          alerting:
            fastburn:
              annotations:
                - key: name
                  value: SLO Burn Rate Very High
                - key: description
                  value: Error budget is burning too fast
            slowburn:
              annotations:
                - key: name
                  value: SLO Burn Rate High
                - key: description
                  value: Error budget is burning too fast
    
    Example coming soon!
    

    For a complete list, see supported data sources.

    For additional help with SLOs, view our documentation.

    Create SLO Resource

    Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.

    Constructor syntax

    new SLO(name: string, args: SLOArgs, opts?: CustomResourceOptions);
    @overload
    def SLO(resource_name: str,
            args: SLOArgs,
            opts: Optional[ResourceOptions] = None)
    
    @overload
    def SLO(resource_name: str,
            opts: Optional[ResourceOptions] = None,
            description: Optional[str] = None,
            alerting: Optional[SLOAlertingArgs] = None,
            destination_datasource: Optional[SLODestinationDatasourceArgs] = None,
            folder_uid: Optional[str] = None,
            labels: Optional[Sequence[SLOLabelArgs]] = None,
            name: Optional[str] = None,
            objectives: Optional[Sequence[SLOObjectiveArgs]] = None,
            queries: Optional[Sequence[SLOQueryArgs]] = None,
            search_expression: Optional[str] = None,
            uuid: Optional[str] = None)
    func NewSLO(ctx *Context, name string, args SLOArgs, opts ...ResourceOption) (*SLO, error)
    public SLO(string name, SLOArgs args, CustomResourceOptions? opts = null)
    public SLO(String name, SLOArgs args)
    public SLO(String name, SLOArgs args, CustomResourceOptions options)
    
    type: grafana:slo:SLO
    properties: # The arguments to resource properties.
    options: # Bag of options to control resource's behavior.
    
    
    resource "grafana_slo_slo" "name" {
        # resource properties
    }

    Parameters

    name string
    The unique name of the resource.
    args SLOArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    resource_name str
    The unique name of the resource.
    args SLOArgs
    The arguments to resource properties.
    opts ResourceOptions
    Bag of options to control resource's behavior.
    ctx Context
    Context object for the current deployment.
    name string
    The unique name of the resource.
    args SLOArgs
    The arguments to resource properties.
    opts ResourceOption
    Bag of options to control resource's behavior.
    name string
    The unique name of the resource.
    args SLOArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    name String
    The unique name of the resource.
    args SLOArgs
    The arguments to resource properties.
    options CustomResourceOptions
    Bag of options to control resource's behavior.

    Constructor example

    The following reference example uses placeholder values for all input properties.

    var sloResource = new Grafana.Slo.SLO("sloResource", new()
    {
        Description = "string",
        Alerting = new Grafana.Slo.Inputs.SLOAlertingArgs
        {
            AdvancedOptions = new Grafana.Slo.Inputs.SLOAlertingAdvancedOptionsArgs
            {
                MinFailures = 0,
            },
            Annotations = new[]
            {
                new Grafana.Slo.Inputs.SLOAlertingAnnotationArgs
                {
                    Key = "string",
                    Value = "string",
                },
            },
            Fastburn = new Grafana.Slo.Inputs.SLOAlertingFastburnArgs
            {
                Annotations = new[]
                {
                    new Grafana.Slo.Inputs.SLOAlertingFastburnAnnotationArgs
                    {
                        Key = "string",
                        Value = "string",
                    },
                },
                Enrichments = new[]
                {
                    new Grafana.Slo.Inputs.SLOAlertingFastburnEnrichmentArgs
                    {
                        Type = "string",
                    },
                },
                Labels = new[]
                {
                    new Grafana.Slo.Inputs.SLOAlertingFastburnLabelArgs
                    {
                        Key = "string",
                        Value = "string",
                    },
                },
            },
            Labels = new[]
            {
                new Grafana.Slo.Inputs.SLOAlertingLabelArgs
                {
                    Key = "string",
                    Value = "string",
                },
            },
            Slowburn = new Grafana.Slo.Inputs.SLOAlertingSlowburnArgs
            {
                Annotations = new[]
                {
                    new Grafana.Slo.Inputs.SLOAlertingSlowburnAnnotationArgs
                    {
                        Key = "string",
                        Value = "string",
                    },
                },
                Enrichments = new[]
                {
                    new Grafana.Slo.Inputs.SLOAlertingSlowburnEnrichmentArgs
                    {
                        Type = "string",
                    },
                },
                Labels = new[]
                {
                    new Grafana.Slo.Inputs.SLOAlertingSlowburnLabelArgs
                    {
                        Key = "string",
                        Value = "string",
                    },
                },
            },
        },
        DestinationDatasource = new Grafana.Slo.Inputs.SLODestinationDatasourceArgs
        {
            Uid = "string",
        },
        FolderUid = "string",
        Labels = new[]
        {
            new Grafana.Slo.Inputs.SLOLabelArgs
            {
                Key = "string",
                Value = "string",
            },
        },
        Name = "string",
        Objectives = new[]
        {
            new Grafana.Slo.Inputs.SLOObjectiveArgs
            {
                Value = 0,
                Window = "string",
            },
        },
        Queries = new[]
        {
            new Grafana.Slo.Inputs.SLOQueryArgs
            {
                Type = "string",
                Freeform = new Grafana.Slo.Inputs.SLOQueryFreeformArgs
                {
                    Query = "string",
                },
                GrafanaQueries = new Grafana.Slo.Inputs.SLOQueryGrafanaQueriesArgs
                {
                    GrafanaQueries = "string",
                },
                Ratio = new Grafana.Slo.Inputs.SLOQueryRatioArgs
                {
                    SuccessMetric = "string",
                    TotalMetric = "string",
                    GroupByLabels = new[]
                    {
                        "string",
                    },
                },
            },
        },
        SearchExpression = "string",
        Uuid = "string",
    });
    
    example, err := slo.NewSLO(ctx, "sloResource", &slo.SLOArgs{
    	Description: pulumi.String("string"),
    	Alerting: &slo.SLOAlertingArgs{
    		AdvancedOptions: &slo.SLOAlertingAdvancedOptionsArgs{
    			MinFailures: pulumi.Int(0),
    		},
    		Annotations: slo.SLOAlertingAnnotationArray{
    			&slo.SLOAlertingAnnotationArgs{
    				Key:   pulumi.String("string"),
    				Value: pulumi.String("string"),
    			},
    		},
    		Fastburn: &slo.SLOAlertingFastburnArgs{
    			Annotations: slo.SLOAlertingFastburnAnnotationArray{
    				&slo.SLOAlertingFastburnAnnotationArgs{
    					Key:   pulumi.String("string"),
    					Value: pulumi.String("string"),
    				},
    			},
    			Enrichments: slo.SLOAlertingFastburnEnrichmentArray{
    				&slo.SLOAlertingFastburnEnrichmentArgs{
    					Type: pulumi.String("string"),
    				},
    			},
    			Labels: slo.SLOAlertingFastburnLabelArray{
    				&slo.SLOAlertingFastburnLabelArgs{
    					Key:   pulumi.String("string"),
    					Value: pulumi.String("string"),
    				},
    			},
    		},
    		Labels: slo.SLOAlertingLabelArray{
    			&slo.SLOAlertingLabelArgs{
    				Key:   pulumi.String("string"),
    				Value: pulumi.String("string"),
    			},
    		},
    		Slowburn: &slo.SLOAlertingSlowburnArgs{
    			Annotations: slo.SLOAlertingSlowburnAnnotationArray{
    				&slo.SLOAlertingSlowburnAnnotationArgs{
    					Key:   pulumi.String("string"),
    					Value: pulumi.String("string"),
    				},
    			},
    			Enrichments: slo.SLOAlertingSlowburnEnrichmentArray{
    				&slo.SLOAlertingSlowburnEnrichmentArgs{
    					Type: pulumi.String("string"),
    				},
    			},
    			Labels: slo.SLOAlertingSlowburnLabelArray{
    				&slo.SLOAlertingSlowburnLabelArgs{
    					Key:   pulumi.String("string"),
    					Value: pulumi.String("string"),
    				},
    			},
    		},
    	},
    	DestinationDatasource: &slo.SLODestinationDatasourceArgs{
    		Uid: pulumi.String("string"),
    	},
    	FolderUid: pulumi.String("string"),
    	Labels: slo.SLOLabelArray{
    		&slo.SLOLabelArgs{
    			Key:   pulumi.String("string"),
    			Value: pulumi.String("string"),
    		},
    	},
    	Name: pulumi.String("string"),
    	Objectives: slo.SLOObjectiveArray{
    		&slo.SLOObjectiveArgs{
    			Value:  pulumi.Float64(0),
    			Window: pulumi.String("string"),
    		},
    	},
    	Queries: slo.SLOQueryArray{
    		&slo.SLOQueryArgs{
    			Type: pulumi.String("string"),
    			Freeform: &slo.SLOQueryFreeformArgs{
    				Query: pulumi.String("string"),
    			},
    			GrafanaQueries: &slo.SLOQueryGrafanaQueriesArgs{
    				GrafanaQueries: pulumi.String("string"),
    			},
    			Ratio: &slo.SLOQueryRatioArgs{
    				SuccessMetric: pulumi.String("string"),
    				TotalMetric:   pulumi.String("string"),
    				GroupByLabels: pulumi.StringArray{
    					pulumi.String("string"),
    				},
    			},
    		},
    	},
    	SearchExpression: pulumi.String("string"),
    	Uuid:             pulumi.String("string"),
    })
    
    resource "grafana_slo_slo" "sloResource" {
      description = "string"
      alerting = {
        advanced_options = {
          min_failures = 0
        }
        annotations = [{
          "key"   = "string"
          "value" = "string"
        }]
        fastburn = {
          annotations = [{
            "key"   = "string"
            "value" = "string"
          }]
          enrichments = [{
            "type" = "string"
          }]
          labels = [{
            "key"   = "string"
            "value" = "string"
          }]
        }
        labels = [{
          "key"   = "string"
          "value" = "string"
        }]
        slowburn = {
          annotations = [{
            "key"   = "string"
            "value" = "string"
          }]
          enrichments = [{
            "type" = "string"
          }]
          labels = [{
            "key"   = "string"
            "value" = "string"
          }]
        }
      }
      destination_datasource = {
        uid = "string"
      }
      folder_uid = "string"
      labels {
        key   = "string"
        value = "string"
      }
      name = "string"
      objectives {
        value  = 0
        window = "string"
      }
      queries {
        type = "string"
        freeform = {
          query = "string"
        }
        grafana_queries = {
          grafana_queries = "string"
        }
        ratio = {
          success_metric  = "string"
          total_metric    = "string"
          group_by_labels = ["string"]
        }
      }
      search_expression = "string"
      uuid              = "string"
    }
    
    var sloResource = new SLO("sloResource", SLOArgs.builder()
        .description("string")
        .alerting(SLOAlertingArgs.builder()
            .advancedOptions(SLOAlertingAdvancedOptionsArgs.builder()
                .minFailures(0)
                .build())
            .annotations(SLOAlertingAnnotationArgs.builder()
                .key("string")
                .value("string")
                .build())
            .fastburn(SLOAlertingFastburnArgs.builder()
                .annotations(SLOAlertingFastburnAnnotationArgs.builder()
                    .key("string")
                    .value("string")
                    .build())
                .enrichments(SLOAlertingFastburnEnrichmentArgs.builder()
                    .type("string")
                    .build())
                .labels(SLOAlertingFastburnLabelArgs.builder()
                    .key("string")
                    .value("string")
                    .build())
                .build())
            .labels(SLOAlertingLabelArgs.builder()
                .key("string")
                .value("string")
                .build())
            .slowburn(SLOAlertingSlowburnArgs.builder()
                .annotations(SLOAlertingSlowburnAnnotationArgs.builder()
                    .key("string")
                    .value("string")
                    .build())
                .enrichments(SLOAlertingSlowburnEnrichmentArgs.builder()
                    .type("string")
                    .build())
                .labels(SLOAlertingSlowburnLabelArgs.builder()
                    .key("string")
                    .value("string")
                    .build())
                .build())
            .build())
        .destinationDatasource(SLODestinationDatasourceArgs.builder()
            .uid("string")
            .build())
        .folderUid("string")
        .labels(SLOLabelArgs.builder()
            .key("string")
            .value("string")
            .build())
        .name("string")
        .objectives(SLOObjectiveArgs.builder()
            .value(0.0)
            .window("string")
            .build())
        .queries(SLOQueryArgs.builder()
            .type("string")
            .freeform(SLOQueryFreeformArgs.builder()
                .query("string")
                .build())
            .grafanaQueries(SLOQueryGrafanaQueriesArgs.builder()
                .grafanaQueries("string")
                .build())
            .ratio(SLOQueryRatioArgs.builder()
                .successMetric("string")
                .totalMetric("string")
                .groupByLabels("string")
                .build())
            .build())
        .searchExpression("string")
        .uuid("string")
        .build());
    
    slo_resource = grafana.slo.SLO("sloResource",
        description="string",
        alerting={
            "advanced_options": {
                "min_failures": 0,
            },
            "annotations": [{
                "key": "string",
                "value": "string",
            }],
            "fastburn": {
                "annotations": [{
                    "key": "string",
                    "value": "string",
                }],
                "enrichments": [{
                    "type": "string",
                }],
                "labels": [{
                    "key": "string",
                    "value": "string",
                }],
            },
            "labels": [{
                "key": "string",
                "value": "string",
            }],
            "slowburn": {
                "annotations": [{
                    "key": "string",
                    "value": "string",
                }],
                "enrichments": [{
                    "type": "string",
                }],
                "labels": [{
                    "key": "string",
                    "value": "string",
                }],
            },
        },
        destination_datasource={
            "uid": "string",
        },
        folder_uid="string",
        labels=[{
            "key": "string",
            "value": "string",
        }],
        name="string",
        objectives=[{
            "value": float(0),
            "window": "string",
        }],
        queries=[{
            "type": "string",
            "freeform": {
                "query": "string",
            },
            "grafana_queries": {
                "grafana_queries": "string",
            },
            "ratio": {
                "success_metric": "string",
                "total_metric": "string",
                "group_by_labels": ["string"],
            },
        }],
        search_expression="string",
        uuid="string")
    
    const sloResource = new grafana.slo.SLO("sloResource", {
        description: "string",
        alerting: {
            advancedOptions: {
                minFailures: 0,
            },
            annotations: [{
                key: "string",
                value: "string",
            }],
            fastburn: {
                annotations: [{
                    key: "string",
                    value: "string",
                }],
                enrichments: [{
                    type: "string",
                }],
                labels: [{
                    key: "string",
                    value: "string",
                }],
            },
            labels: [{
                key: "string",
                value: "string",
            }],
            slowburn: {
                annotations: [{
                    key: "string",
                    value: "string",
                }],
                enrichments: [{
                    type: "string",
                }],
                labels: [{
                    key: "string",
                    value: "string",
                }],
            },
        },
        destinationDatasource: {
            uid: "string",
        },
        folderUid: "string",
        labels: [{
            key: "string",
            value: "string",
        }],
        name: "string",
        objectives: [{
            value: 0,
            window: "string",
        }],
        queries: [{
            type: "string",
            freeform: {
                query: "string",
            },
            grafanaQueries: {
                grafanaQueries: "string",
            },
            ratio: {
                successMetric: "string",
                totalMetric: "string",
                groupByLabels: ["string"],
            },
        }],
        searchExpression: "string",
        uuid: "string",
    });
    
    type: grafana:slo:SLO
    properties:
        alerting:
            advancedOptions:
                minFailures: 0
            annotations:
                - key: string
                  value: string
            fastburn:
                annotations:
                    - key: string
                      value: string
                enrichments:
                    - type: string
                labels:
                    - key: string
                      value: string
            labels:
                - key: string
                  value: string
            slowburn:
                annotations:
                    - key: string
                      value: string
                enrichments:
                    - type: string
                labels:
                    - key: string
                      value: string
        description: string
        destinationDatasource:
            uid: string
        folderUid: string
        labels:
            - key: string
              value: string
        name: string
        objectives:
            - value: 0
              window: string
        queries:
            - freeform:
                query: string
              grafanaQueries:
                grafanaQueries: string
              ratio:
                groupByLabels:
                    - string
                successMetric: string
                totalMetric: string
              type: string
        searchExpression: string
        uuid: string
    

    SLO Resource Properties

    To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.

    Inputs

    In Python, inputs that are objects can be passed either as argument classes or as dictionary literals.

    The SLO resource accepts the following input properties:

    Description string
    Description is a free-text field that can provide more context to an SLO.
    Alerting Pulumiverse.Grafana.Slo.Inputs.SLOAlerting
    Configures the alerting rules that will be generated for each time window associated with the SLO. Grafana SLOs can generate alerts when the short-term error budget burn is very high, the long-term error budget burn rate is high, or when the remaining error budget is below a certain threshold. Annotations and Labels support templating.
    DestinationDatasource Pulumiverse.Grafana.Slo.Inputs.SLODestinationDatasource
    Required. Destination Datasource sets the datasource defined for an SLO.
    FolderUid string
    UID for the SLO folder. Must be non-empty if set; omit the attribute entirely to associate the SLO with the default Grafana SLO folder.
    Labels List<Pulumiverse.Grafana.Slo.Inputs.SLOLabel>
    Additional labels that will be attached to all metrics generated from the query. These labels are useful for grouping SLOs in dashboard views that you create by hand. Labels must adhere to Prometheus label name schema - "^[a-zA-Z*][a-zA-Z0-9*]*$"
    Name string
    Name should be a short description of your indicator. Consider names like "API Availability"
    Objectives List<Pulumiverse.Grafana.Slo.Inputs.SLOObjective>
    Required. Over each rolling time window, the remaining error budget will be calculated, and separate alerts can be generated for each time window based on the SLO burn rate or remaining error budget.
    Queries List<Pulumiverse.Grafana.Slo.Inputs.SLOQuery>
    Required. Query describes the indicator that will be measured against the objective. Freeform Query types are currently supported.
    SearchExpression string
    The name of a search expression in Grafana Asserts. Must be non-empty if set; omit the attribute entirely to leave it unset. This is used in the SLO UI to open the Asserts RCA workbench and in alerts to link to the RCA workbench.
    Uuid string
    UUID for the SLO. Custom UUIDs can be set. If not provided, a random UUID will be generated by the API.
    Description string
    Description is a free-text field that can provide more context to an SLO.
    Alerting SLOAlertingArgs
    Configures the alerting rules that will be generated for each time window associated with the SLO. Grafana SLOs can generate alerts when the short-term error budget burn is very high, the long-term error budget burn rate is high, or when the remaining error budget is below a certain threshold. Annotations and Labels support templating.
    DestinationDatasource SLODestinationDatasourceArgs
    Required. Destination Datasource sets the datasource defined for an SLO.
    FolderUid string
    UID for the SLO folder. Must be non-empty if set; omit the attribute entirely to associate the SLO with the default Grafana SLO folder.
    Labels []SLOLabelArgs
    Additional labels that will be attached to all metrics generated from the query. These labels are useful for grouping SLOs in dashboard views that you create by hand. Labels must adhere to Prometheus label name schema - "^[a-zA-Z*][a-zA-Z0-9*]*$"
    Name string
    Name should be a short description of your indicator. Consider names like "API Availability"
    Objectives []SLOObjectiveArgs
    Required. Over each rolling time window, the remaining error budget will be calculated, and separate alerts can be generated for each time window based on the SLO burn rate or remaining error budget.
    Queries []SLOQueryArgs
    Required. Query describes the indicator that will be measured against the objective. Freeform Query types are currently supported.
    SearchExpression string
    The name of a search expression in Grafana Asserts. Must be non-empty if set; omit the attribute entirely to leave it unset. This is used in the SLO UI to open the Asserts RCA workbench and in alerts to link to the RCA workbench.
    Uuid string
    UUID for the SLO. Custom UUIDs can be set. If not provided, a random UUID will be generated by the API.
    description string
    Description is a free-text field that can provide more context to an SLO.
    alerting object
    Configures the alerting rules that will be generated for each time window associated with the SLO. Grafana SLOs can generate alerts when the short-term error budget burn is very high, the long-term error budget burn rate is high, or when the remaining error budget is below a certain threshold. Annotations and Labels support templating.
    destination_datasource object
    Required. Destination Datasource sets the datasource defined for an SLO.
    folder_uid string
    UID for the SLO folder. Must be non-empty if set; omit the attribute entirely to associate the SLO with the default Grafana SLO folder.
    labels list(object)
    Additional labels that will be attached to all metrics generated from the query. These labels are useful for grouping SLOs in dashboard views that you create by hand. Labels must adhere to Prometheus label name schema - "^[a-zA-Z*][a-zA-Z0-9*]*$"
    name string
    Name should be a short description of your indicator. Consider names like "API Availability"
    objectives list(object)
    Required. Over each rolling time window, the remaining error budget will be calculated, and separate alerts can be generated for each time window based on the SLO burn rate or remaining error budget.
    queries list(object)
    Required. Query describes the indicator that will be measured against the objective. Freeform Query types are currently supported.
    search_expression string
    The name of a search expression in Grafana Asserts. Must be non-empty if set; omit the attribute entirely to leave it unset. This is used in the SLO UI to open the Asserts RCA workbench and in alerts to link to the RCA workbench.
    uuid string
    UUID for the SLO. Custom UUIDs can be set. If not provided, a random UUID will be generated by the API.
    description String
    Description is a free-text field that can provide more context to an SLO.
    alerting SLOAlerting
    Configures the alerting rules that will be generated for each time window associated with the SLO. Grafana SLOs can generate alerts when the short-term error budget burn is very high, the long-term error budget burn rate is high, or when the remaining error budget is below a certain threshold. Annotations and Labels support templating.
    destinationDatasource SLODestinationDatasource
    Required. Destination Datasource sets the datasource defined for an SLO.
    folderUid String
    UID for the SLO folder. Must be non-empty if set; omit the attribute entirely to associate the SLO with the default Grafana SLO folder.
    labels List<SLOLabel>
    Additional labels that will be attached to all metrics generated from the query. These labels are useful for grouping SLOs in dashboard views that you create by hand. Labels must adhere to Prometheus label name schema - "^[a-zA-Z*][a-zA-Z0-9*]*$"
    name String
    Name should be a short description of your indicator. Consider names like "API Availability"
    objectives List<SLOObjective>
    Required. Over each rolling time window, the remaining error budget will be calculated, and separate alerts can be generated for each time window based on the SLO burn rate or remaining error budget.
    queries List<SLOQuery>
    Required. Query describes the indicator that will be measured against the objective. Freeform Query types are currently supported.
    searchExpression String
    The name of a search expression in Grafana Asserts. Must be non-empty if set; omit the attribute entirely to leave it unset. This is used in the SLO UI to open the Asserts RCA workbench and in alerts to link to the RCA workbench.
    uuid String
    UUID for the SLO. Custom UUIDs can be set. If not provided, a random UUID will be generated by the API.
    description string
    Description is a free-text field that can provide more context to an SLO.
    alerting SLOAlerting
    Configures the alerting rules that will be generated for each time window associated with the SLO. Grafana SLOs can generate alerts when the short-term error budget burn is very high, the long-term error budget burn rate is high, or when the remaining error budget is below a certain threshold. Annotations and Labels support templating.
    destinationDatasource SLODestinationDatasource
    Required. Destination Datasource sets the datasource defined for an SLO.
    folderUid string
    UID for the SLO folder. Must be non-empty if set; omit the attribute entirely to associate the SLO with the default Grafana SLO folder.
    labels SLOLabel[]
    Additional labels that will be attached to all metrics generated from the query. These labels are useful for grouping SLOs in dashboard views that you create by hand. Labels must adhere to Prometheus label name schema - "^[a-zA-Z*][a-zA-Z0-9*]*$"
    name string
    Name should be a short description of your indicator. Consider names like "API Availability"
    objectives SLOObjective[]
    Required. Over each rolling time window, the remaining error budget will be calculated, and separate alerts can be generated for each time window based on the SLO burn rate or remaining error budget.
    queries SLOQuery[]
    Required. Query describes the indicator that will be measured against the objective. Freeform Query types are currently supported.
    searchExpression string
    The name of a search expression in Grafana Asserts. Must be non-empty if set; omit the attribute entirely to leave it unset. This is used in the SLO UI to open the Asserts RCA workbench and in alerts to link to the RCA workbench.
    uuid string
    UUID for the SLO. Custom UUIDs can be set. If not provided, a random UUID will be generated by the API.
    description str
    Description is a free-text field that can provide more context to an SLO.
    alerting SLOAlertingArgs
    Configures the alerting rules that will be generated for each time window associated with the SLO. Grafana SLOs can generate alerts when the short-term error budget burn is very high, the long-term error budget burn rate is high, or when the remaining error budget is below a certain threshold. Annotations and Labels support templating.
    destination_datasource SLODestinationDatasourceArgs
    Required. Destination Datasource sets the datasource defined for an SLO.
    folder_uid str
    UID for the SLO folder. Must be non-empty if set; omit the attribute entirely to associate the SLO with the default Grafana SLO folder.
    labels Sequence[SLOLabelArgs]
    Additional labels that will be attached to all metrics generated from the query. These labels are useful for grouping SLOs in dashboard views that you create by hand. Labels must adhere to Prometheus label name schema - "^[a-zA-Z*][a-zA-Z0-9*]*$"
    name str
    Name should be a short description of your indicator. Consider names like "API Availability"
    objectives Sequence[SLOObjectiveArgs]
    Required. Over each rolling time window, the remaining error budget will be calculated, and separate alerts can be generated for each time window based on the SLO burn rate or remaining error budget.
    queries Sequence[SLOQueryArgs]
    Required. Query describes the indicator that will be measured against the objective. Freeform Query types are currently supported.
    search_expression str
    The name of a search expression in Grafana Asserts. Must be non-empty if set; omit the attribute entirely to leave it unset. This is used in the SLO UI to open the Asserts RCA workbench and in alerts to link to the RCA workbench.
    uuid str
    UUID for the SLO. Custom UUIDs can be set. If not provided, a random UUID will be generated by the API.
    description String
    Description is a free-text field that can provide more context to an SLO.
    alerting Property Map
    Configures the alerting rules that will be generated for each time window associated with the SLO. Grafana SLOs can generate alerts when the short-term error budget burn is very high, the long-term error budget burn rate is high, or when the remaining error budget is below a certain threshold. Annotations and Labels support templating.
    destinationDatasource Property Map
    Required. Destination Datasource sets the datasource defined for an SLO.
    folderUid String
    UID for the SLO folder. Must be non-empty if set; omit the attribute entirely to associate the SLO with the default Grafana SLO folder.
    labels List<Property Map>
    Additional labels that will be attached to all metrics generated from the query. These labels are useful for grouping SLOs in dashboard views that you create by hand. Labels must adhere to Prometheus label name schema - "^[a-zA-Z*][a-zA-Z0-9*]*$"
    name String
    Name should be a short description of your indicator. Consider names like "API Availability"
    objectives List<Property Map>
    Required. Over each rolling time window, the remaining error budget will be calculated, and separate alerts can be generated for each time window based on the SLO burn rate or remaining error budget.
    queries List<Property Map>
    Required. Query describes the indicator that will be measured against the objective. Freeform Query types are currently supported.
    searchExpression String
    The name of a search expression in Grafana Asserts. Must be non-empty if set; omit the attribute entirely to leave it unset. This is used in the SLO UI to open the Asserts RCA workbench and in alerts to link to the RCA workbench.
    uuid String
    UUID for the SLO. Custom UUIDs can be set. If not provided, a random UUID will be generated by the API.

    Outputs

    All input properties are implicitly available as output properties. Additionally, the SLO resource produces the following output properties:

    Id string
    The provider-assigned unique ID for this managed resource.
    Id string
    The provider-assigned unique ID for this managed resource.
    id string
    The provider-assigned unique ID for this managed resource.
    id String
    The provider-assigned unique ID for this managed resource.
    id string
    The provider-assigned unique ID for this managed resource.
    id str
    The provider-assigned unique ID for this managed resource.
    id String
    The provider-assigned unique ID for this managed resource.

    Look up Existing SLO Resource

    Get an existing SLO resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.

    public static get(name: string, id: Input<ID>, state?: SLOState, opts?: CustomResourceOptions): SLO
    @staticmethod
    def get(resource_name: str,
            id: str,
            opts: Optional[ResourceOptions] = None,
            alerting: Optional[SLOAlertingArgs] = None,
            description: Optional[str] = None,
            destination_datasource: Optional[SLODestinationDatasourceArgs] = None,
            folder_uid: Optional[str] = None,
            labels: Optional[Sequence[SLOLabelArgs]] = None,
            name: Optional[str] = None,
            objectives: Optional[Sequence[SLOObjectiveArgs]] = None,
            queries: Optional[Sequence[SLOQueryArgs]] = None,
            search_expression: Optional[str] = None,
            uuid: Optional[str] = None) -> SLO
    func GetSLO(ctx *Context, name string, id IDInput, state *SLOState, opts ...ResourceOption) (*SLO, error)
    public static SLO Get(string name, Input<string> id, SLOState? state, CustomResourceOptions? opts = null)
    public static SLO get(String name, Output<String> id, SLOState state, CustomResourceOptions options)
    resources:  _:    type: grafana:slo:SLO    get:      id: ${id}
    import {
      to = grafana_slo_slo.example
      id = "${id}"
    }
    
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    resource_name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    The following state arguments are supported:
    Alerting Pulumiverse.Grafana.Slo.Inputs.SLOAlerting
    Configures the alerting rules that will be generated for each time window associated with the SLO. Grafana SLOs can generate alerts when the short-term error budget burn is very high, the long-term error budget burn rate is high, or when the remaining error budget is below a certain threshold. Annotations and Labels support templating.
    Description string
    Description is a free-text field that can provide more context to an SLO.
    DestinationDatasource Pulumiverse.Grafana.Slo.Inputs.SLODestinationDatasource
    Required. Destination Datasource sets the datasource defined for an SLO.
    FolderUid string
    UID for the SLO folder. Must be non-empty if set; omit the attribute entirely to associate the SLO with the default Grafana SLO folder.
    Labels List<Pulumiverse.Grafana.Slo.Inputs.SLOLabel>
    Additional labels that will be attached to all metrics generated from the query. These labels are useful for grouping SLOs in dashboard views that you create by hand. Labels must adhere to Prometheus label name schema - "^[a-zA-Z*][a-zA-Z0-9*]*$"
    Name string
    Name should be a short description of your indicator. Consider names like "API Availability"
    Objectives List<Pulumiverse.Grafana.Slo.Inputs.SLOObjective>
    Required. Over each rolling time window, the remaining error budget will be calculated, and separate alerts can be generated for each time window based on the SLO burn rate or remaining error budget.
    Queries List<Pulumiverse.Grafana.Slo.Inputs.SLOQuery>
    Required. Query describes the indicator that will be measured against the objective. Freeform Query types are currently supported.
    SearchExpression string
    The name of a search expression in Grafana Asserts. Must be non-empty if set; omit the attribute entirely to leave it unset. This is used in the SLO UI to open the Asserts RCA workbench and in alerts to link to the RCA workbench.
    Uuid string
    UUID for the SLO. Custom UUIDs can be set. If not provided, a random UUID will be generated by the API.
    Alerting SLOAlertingArgs
    Configures the alerting rules that will be generated for each time window associated with the SLO. Grafana SLOs can generate alerts when the short-term error budget burn is very high, the long-term error budget burn rate is high, or when the remaining error budget is below a certain threshold. Annotations and Labels support templating.
    Description string
    Description is a free-text field that can provide more context to an SLO.
    DestinationDatasource SLODestinationDatasourceArgs
    Required. Destination Datasource sets the datasource defined for an SLO.
    FolderUid string
    UID for the SLO folder. Must be non-empty if set; omit the attribute entirely to associate the SLO with the default Grafana SLO folder.
    Labels []SLOLabelArgs
    Additional labels that will be attached to all metrics generated from the query. These labels are useful for grouping SLOs in dashboard views that you create by hand. Labels must adhere to Prometheus label name schema - "^[a-zA-Z*][a-zA-Z0-9*]*$"
    Name string
    Name should be a short description of your indicator. Consider names like "API Availability"
    Objectives []SLOObjectiveArgs
    Required. Over each rolling time window, the remaining error budget will be calculated, and separate alerts can be generated for each time window based on the SLO burn rate or remaining error budget.
    Queries []SLOQueryArgs
    Required. Query describes the indicator that will be measured against the objective. Freeform Query types are currently supported.
    SearchExpression string
    The name of a search expression in Grafana Asserts. Must be non-empty if set; omit the attribute entirely to leave it unset. This is used in the SLO UI to open the Asserts RCA workbench and in alerts to link to the RCA workbench.
    Uuid string
    UUID for the SLO. Custom UUIDs can be set. If not provided, a random UUID will be generated by the API.
    alerting object
    Configures the alerting rules that will be generated for each time window associated with the SLO. Grafana SLOs can generate alerts when the short-term error budget burn is very high, the long-term error budget burn rate is high, or when the remaining error budget is below a certain threshold. Annotations and Labels support templating.
    description string
    Description is a free-text field that can provide more context to an SLO.
    destination_datasource object
    Required. Destination Datasource sets the datasource defined for an SLO.
    folder_uid string
    UID for the SLO folder. Must be non-empty if set; omit the attribute entirely to associate the SLO with the default Grafana SLO folder.
    labels list(object)
    Additional labels that will be attached to all metrics generated from the query. These labels are useful for grouping SLOs in dashboard views that you create by hand. Labels must adhere to Prometheus label name schema - "^[a-zA-Z*][a-zA-Z0-9*]*$"
    name string
    Name should be a short description of your indicator. Consider names like "API Availability"
    objectives list(object)
    Required. Over each rolling time window, the remaining error budget will be calculated, and separate alerts can be generated for each time window based on the SLO burn rate or remaining error budget.
    queries list(object)
    Required. Query describes the indicator that will be measured against the objective. Freeform Query types are currently supported.
    search_expression string
    The name of a search expression in Grafana Asserts. Must be non-empty if set; omit the attribute entirely to leave it unset. This is used in the SLO UI to open the Asserts RCA workbench and in alerts to link to the RCA workbench.
    uuid string
    UUID for the SLO. Custom UUIDs can be set. If not provided, a random UUID will be generated by the API.
    alerting SLOAlerting
    Configures the alerting rules that will be generated for each time window associated with the SLO. Grafana SLOs can generate alerts when the short-term error budget burn is very high, the long-term error budget burn rate is high, or when the remaining error budget is below a certain threshold. Annotations and Labels support templating.
    description String
    Description is a free-text field that can provide more context to an SLO.
    destinationDatasource SLODestinationDatasource
    Required. Destination Datasource sets the datasource defined for an SLO.
    folderUid String
    UID for the SLO folder. Must be non-empty if set; omit the attribute entirely to associate the SLO with the default Grafana SLO folder.
    labels List<SLOLabel>
    Additional labels that will be attached to all metrics generated from the query. These labels are useful for grouping SLOs in dashboard views that you create by hand. Labels must adhere to Prometheus label name schema - "^[a-zA-Z*][a-zA-Z0-9*]*$"
    name String
    Name should be a short description of your indicator. Consider names like "API Availability"
    objectives List<SLOObjective>
    Required. Over each rolling time window, the remaining error budget will be calculated, and separate alerts can be generated for each time window based on the SLO burn rate or remaining error budget.
    queries List<SLOQuery>
    Required. Query describes the indicator that will be measured against the objective. Freeform Query types are currently supported.
    searchExpression String
    The name of a search expression in Grafana Asserts. Must be non-empty if set; omit the attribute entirely to leave it unset. This is used in the SLO UI to open the Asserts RCA workbench and in alerts to link to the RCA workbench.
    uuid String
    UUID for the SLO. Custom UUIDs can be set. If not provided, a random UUID will be generated by the API.
    alerting SLOAlerting
    Configures the alerting rules that will be generated for each time window associated with the SLO. Grafana SLOs can generate alerts when the short-term error budget burn is very high, the long-term error budget burn rate is high, or when the remaining error budget is below a certain threshold. Annotations and Labels support templating.
    description string
    Description is a free-text field that can provide more context to an SLO.
    destinationDatasource SLODestinationDatasource
    Required. Destination Datasource sets the datasource defined for an SLO.
    folderUid string
    UID for the SLO folder. Must be non-empty if set; omit the attribute entirely to associate the SLO with the default Grafana SLO folder.
    labels SLOLabel[]
    Additional labels that will be attached to all metrics generated from the query. These labels are useful for grouping SLOs in dashboard views that you create by hand. Labels must adhere to Prometheus label name schema - "^[a-zA-Z*][a-zA-Z0-9*]*$"
    name string
    Name should be a short description of your indicator. Consider names like "API Availability"
    objectives SLOObjective[]
    Required. Over each rolling time window, the remaining error budget will be calculated, and separate alerts can be generated for each time window based on the SLO burn rate or remaining error budget.
    queries SLOQuery[]
    Required. Query describes the indicator that will be measured against the objective. Freeform Query types are currently supported.
    searchExpression string
    The name of a search expression in Grafana Asserts. Must be non-empty if set; omit the attribute entirely to leave it unset. This is used in the SLO UI to open the Asserts RCA workbench and in alerts to link to the RCA workbench.
    uuid string
    UUID for the SLO. Custom UUIDs can be set. If not provided, a random UUID will be generated by the API.
    alerting SLOAlertingArgs
    Configures the alerting rules that will be generated for each time window associated with the SLO. Grafana SLOs can generate alerts when the short-term error budget burn is very high, the long-term error budget burn rate is high, or when the remaining error budget is below a certain threshold. Annotations and Labels support templating.
    description str
    Description is a free-text field that can provide more context to an SLO.
    destination_datasource SLODestinationDatasourceArgs
    Required. Destination Datasource sets the datasource defined for an SLO.
    folder_uid str
    UID for the SLO folder. Must be non-empty if set; omit the attribute entirely to associate the SLO with the default Grafana SLO folder.
    labels Sequence[SLOLabelArgs]
    Additional labels that will be attached to all metrics generated from the query. These labels are useful for grouping SLOs in dashboard views that you create by hand. Labels must adhere to Prometheus label name schema - "^[a-zA-Z*][a-zA-Z0-9*]*$"
    name str
    Name should be a short description of your indicator. Consider names like "API Availability"
    objectives Sequence[SLOObjectiveArgs]
    Required. Over each rolling time window, the remaining error budget will be calculated, and separate alerts can be generated for each time window based on the SLO burn rate or remaining error budget.
    queries Sequence[SLOQueryArgs]
    Required. Query describes the indicator that will be measured against the objective. Freeform Query types are currently supported.
    search_expression str
    The name of a search expression in Grafana Asserts. Must be non-empty if set; omit the attribute entirely to leave it unset. This is used in the SLO UI to open the Asserts RCA workbench and in alerts to link to the RCA workbench.
    uuid str
    UUID for the SLO. Custom UUIDs can be set. If not provided, a random UUID will be generated by the API.
    alerting Property Map
    Configures the alerting rules that will be generated for each time window associated with the SLO. Grafana SLOs can generate alerts when the short-term error budget burn is very high, the long-term error budget burn rate is high, or when the remaining error budget is below a certain threshold. Annotations and Labels support templating.
    description String
    Description is a free-text field that can provide more context to an SLO.
    destinationDatasource Property Map
    Required. Destination Datasource sets the datasource defined for an SLO.
    folderUid String
    UID for the SLO folder. Must be non-empty if set; omit the attribute entirely to associate the SLO with the default Grafana SLO folder.
    labels List<Property Map>
    Additional labels that will be attached to all metrics generated from the query. These labels are useful for grouping SLOs in dashboard views that you create by hand. Labels must adhere to Prometheus label name schema - "^[a-zA-Z*][a-zA-Z0-9*]*$"
    name String
    Name should be a short description of your indicator. Consider names like "API Availability"
    objectives List<Property Map>
    Required. Over each rolling time window, the remaining error budget will be calculated, and separate alerts can be generated for each time window based on the SLO burn rate or remaining error budget.
    queries List<Property Map>
    Required. Query describes the indicator that will be measured against the objective. Freeform Query types are currently supported.
    searchExpression String
    The name of a search expression in Grafana Asserts. Must be non-empty if set; omit the attribute entirely to leave it unset. This is used in the SLO UI to open the Asserts RCA workbench and in alerts to link to the RCA workbench.
    uuid String
    UUID for the SLO. Custom UUIDs can be set. If not provided, a random UUID will be generated by the API.

    Supporting Types

    SLOAlerting, SLOAlertingArgs

    AdvancedOptions Pulumiverse.Grafana.Slo.Inputs.SLOAlertingAdvancedOptions
    Advanced Options for Alert Rules
    Annotations List<Pulumiverse.Grafana.Slo.Inputs.SLOAlertingAnnotation>
    Annotations will be attached to all alerts generated by any of these rules.
    Fastburn Pulumiverse.Grafana.Slo.Inputs.SLOAlertingFastburn
    Alerting Rules generated for Fast Burn alerts
    Labels List<Pulumiverse.Grafana.Slo.Inputs.SLOAlertingLabel>
    Labels will be attached to all alerts generated by any of these rules.
    Slowburn Pulumiverse.Grafana.Slo.Inputs.SLOAlertingSlowburn
    Alerting Rules generated for Slow Burn alerts
    AdvancedOptions SLOAlertingAdvancedOptions
    Advanced Options for Alert Rules
    Annotations []SLOAlertingAnnotation
    Annotations will be attached to all alerts generated by any of these rules.
    Fastburn SLOAlertingFastburn
    Alerting Rules generated for Fast Burn alerts
    Labels []SLOAlertingLabel
    Labels will be attached to all alerts generated by any of these rules.
    Slowburn SLOAlertingSlowburn
    Alerting Rules generated for Slow Burn alerts
    advanced_options object
    Advanced Options for Alert Rules
    annotations list(object)
    Annotations will be attached to all alerts generated by any of these rules.
    fastburn object
    Alerting Rules generated for Fast Burn alerts
    labels list(object)
    Labels will be attached to all alerts generated by any of these rules.
    slowburn object
    Alerting Rules generated for Slow Burn alerts
    advancedOptions SLOAlertingAdvancedOptions
    Advanced Options for Alert Rules
    annotations List<SLOAlertingAnnotation>
    Annotations will be attached to all alerts generated by any of these rules.
    fastburn SLOAlertingFastburn
    Alerting Rules generated for Fast Burn alerts
    labels List<SLOAlertingLabel>
    Labels will be attached to all alerts generated by any of these rules.
    slowburn SLOAlertingSlowburn
    Alerting Rules generated for Slow Burn alerts
    advancedOptions SLOAlertingAdvancedOptions
    Advanced Options for Alert Rules
    annotations SLOAlertingAnnotation[]
    Annotations will be attached to all alerts generated by any of these rules.
    fastburn SLOAlertingFastburn
    Alerting Rules generated for Fast Burn alerts
    labels SLOAlertingLabel[]
    Labels will be attached to all alerts generated by any of these rules.
    slowburn SLOAlertingSlowburn
    Alerting Rules generated for Slow Burn alerts
    advanced_options SLOAlertingAdvancedOptions
    Advanced Options for Alert Rules
    annotations Sequence[SLOAlertingAnnotation]
    Annotations will be attached to all alerts generated by any of these rules.
    fastburn SLOAlertingFastburn
    Alerting Rules generated for Fast Burn alerts
    labels Sequence[SLOAlertingLabel]
    Labels will be attached to all alerts generated by any of these rules.
    slowburn SLOAlertingSlowburn
    Alerting Rules generated for Slow Burn alerts
    advancedOptions Property Map
    Advanced Options for Alert Rules
    annotations List<Property Map>
    Annotations will be attached to all alerts generated by any of these rules.
    fastburn Property Map
    Alerting Rules generated for Fast Burn alerts
    labels List<Property Map>
    Labels will be attached to all alerts generated by any of these rules.
    slowburn Property Map
    Alerting Rules generated for Slow Burn alerts

    SLOAlertingAdvancedOptions, SLOAlertingAdvancedOptionsArgs

    MinFailures int
    Minimum number of failed events to trigger an alert
    MinFailures int
    Minimum number of failed events to trigger an alert
    min_failures number
    Minimum number of failed events to trigger an alert
    minFailures Integer
    Minimum number of failed events to trigger an alert
    minFailures number
    Minimum number of failed events to trigger an alert
    min_failures int
    Minimum number of failed events to trigger an alert
    minFailures Number
    Minimum number of failed events to trigger an alert

    SLOAlertingAnnotation, SLOAlertingAnnotationArgs

    Key string
    Key for filtering and identification
    Value string
    Templatable value
    Key string
    Key for filtering and identification
    Value string
    Templatable value
    key string
    Key for filtering and identification
    value string
    Templatable value
    key String
    Key for filtering and identification
    value String
    Templatable value
    key string
    Key for filtering and identification
    value string
    Templatable value
    key str
    Key for filtering and identification
    value str
    Templatable value
    key String
    Key for filtering and identification
    value String
    Templatable value

    SLOAlertingFastburn, SLOAlertingFastburnArgs

    Annotations []SLOAlertingFastburnAnnotation
    Annotations to attach only to Fast Burn alerts.
    Enrichments []SLOAlertingFastburnEnrichment
    Enrichments to attach only to Fast Burn alerts.
    Labels []SLOAlertingFastburnLabel
    Labels to attach only to Fast Burn alerts.
    annotations list(object)
    Annotations to attach only to Fast Burn alerts.
    enrichments list(object)
    Enrichments to attach only to Fast Burn alerts.
    labels list(object)
    Labels to attach only to Fast Burn alerts.
    annotations List<SLOAlertingFastburnAnnotation>
    Annotations to attach only to Fast Burn alerts.
    enrichments List<SLOAlertingFastburnEnrichment>
    Enrichments to attach only to Fast Burn alerts.
    labels List<SLOAlertingFastburnLabel>
    Labels to attach only to Fast Burn alerts.
    annotations SLOAlertingFastburnAnnotation[]
    Annotations to attach only to Fast Burn alerts.
    enrichments SLOAlertingFastburnEnrichment[]
    Enrichments to attach only to Fast Burn alerts.
    labels SLOAlertingFastburnLabel[]
    Labels to attach only to Fast Burn alerts.
    annotations Sequence[SLOAlertingFastburnAnnotation]
    Annotations to attach only to Fast Burn alerts.
    enrichments Sequence[SLOAlertingFastburnEnrichment]
    Enrichments to attach only to Fast Burn alerts.
    labels Sequence[SLOAlertingFastburnLabel]
    Labels to attach only to Fast Burn alerts.
    annotations List<Property Map>
    Annotations to attach only to Fast Burn alerts.
    enrichments List<Property Map>
    Enrichments to attach only to Fast Burn alerts.
    labels List<Property Map>
    Labels to attach only to Fast Burn alerts.

    SLOAlertingFastburnAnnotation, SLOAlertingFastburnAnnotationArgs

    Key string
    Key for filtering and identification
    Value string
    Templatable value
    Key string
    Key for filtering and identification
    Value string
    Templatable value
    key string
    Key for filtering and identification
    value string
    Templatable value
    key String
    Key for filtering and identification
    value String
    Templatable value
    key string
    Key for filtering and identification
    value string
    Templatable value
    key str
    Key for filtering and identification
    value str
    Templatable value
    key String
    Key for filtering and identification
    value String
    Templatable value

    SLOAlertingFastburnEnrichment, SLOAlertingFastburnEnrichmentArgs

    Type string
    Type of the alert enrichment. Currently only "assistantInvestigation" is supported.
    Type string
    Type of the alert enrichment. Currently only "assistantInvestigation" is supported.
    type string
    Type of the alert enrichment. Currently only "assistantInvestigation" is supported.
    type String
    Type of the alert enrichment. Currently only "assistantInvestigation" is supported.
    type string
    Type of the alert enrichment. Currently only "assistantInvestigation" is supported.
    type str
    Type of the alert enrichment. Currently only "assistantInvestigation" is supported.
    type String
    Type of the alert enrichment. Currently only "assistantInvestigation" is supported.

    SLOAlertingFastburnLabel, SLOAlertingFastburnLabelArgs

    Key string
    Key for filtering and identification
    Value string
    Templatable value
    Key string
    Key for filtering and identification
    Value string
    Templatable value
    key string
    Key for filtering and identification
    value string
    Templatable value
    key String
    Key for filtering and identification
    value String
    Templatable value
    key string
    Key for filtering and identification
    value string
    Templatable value
    key str
    Key for filtering and identification
    value str
    Templatable value
    key String
    Key for filtering and identification
    value String
    Templatable value

    SLOAlertingLabel, SLOAlertingLabelArgs

    Key string
    Key for filtering and identification
    Value string
    Templatable value
    Key string
    Key for filtering and identification
    Value string
    Templatable value
    key string
    Key for filtering and identification
    value string
    Templatable value
    key String
    Key for filtering and identification
    value String
    Templatable value
    key string
    Key for filtering and identification
    value string
    Templatable value
    key str
    Key for filtering and identification
    value str
    Templatable value
    key String
    Key for filtering and identification
    value String
    Templatable value

    SLOAlertingSlowburn, SLOAlertingSlowburnArgs

    Annotations []SLOAlertingSlowburnAnnotation
    Annotations to attach only to Slow Burn alerts.
    Enrichments []SLOAlertingSlowburnEnrichment
    Enrichments to attach only to Slow Burn alerts.
    Labels []SLOAlertingSlowburnLabel
    Labels to attach only to Slow Burn alerts.
    annotations list(object)
    Annotations to attach only to Slow Burn alerts.
    enrichments list(object)
    Enrichments to attach only to Slow Burn alerts.
    labels list(object)
    Labels to attach only to Slow Burn alerts.
    annotations List<SLOAlertingSlowburnAnnotation>
    Annotations to attach only to Slow Burn alerts.
    enrichments List<SLOAlertingSlowburnEnrichment>
    Enrichments to attach only to Slow Burn alerts.
    labels List<SLOAlertingSlowburnLabel>
    Labels to attach only to Slow Burn alerts.
    annotations SLOAlertingSlowburnAnnotation[]
    Annotations to attach only to Slow Burn alerts.
    enrichments SLOAlertingSlowburnEnrichment[]
    Enrichments to attach only to Slow Burn alerts.
    labels SLOAlertingSlowburnLabel[]
    Labels to attach only to Slow Burn alerts.
    annotations Sequence[SLOAlertingSlowburnAnnotation]
    Annotations to attach only to Slow Burn alerts.
    enrichments Sequence[SLOAlertingSlowburnEnrichment]
    Enrichments to attach only to Slow Burn alerts.
    labels Sequence[SLOAlertingSlowburnLabel]
    Labels to attach only to Slow Burn alerts.
    annotations List<Property Map>
    Annotations to attach only to Slow Burn alerts.
    enrichments List<Property Map>
    Enrichments to attach only to Slow Burn alerts.
    labels List<Property Map>
    Labels to attach only to Slow Burn alerts.

    SLOAlertingSlowburnAnnotation, SLOAlertingSlowburnAnnotationArgs

    Key string
    Key for filtering and identification
    Value string
    Templatable value
    Key string
    Key for filtering and identification
    Value string
    Templatable value
    key string
    Key for filtering and identification
    value string
    Templatable value
    key String
    Key for filtering and identification
    value String
    Templatable value
    key string
    Key for filtering and identification
    value string
    Templatable value
    key str
    Key for filtering and identification
    value str
    Templatable value
    key String
    Key for filtering and identification
    value String
    Templatable value

    SLOAlertingSlowburnEnrichment, SLOAlertingSlowburnEnrichmentArgs

    Type string
    Type of the alert enrichment. Currently only "assistantInvestigation" is supported.
    Type string
    Type of the alert enrichment. Currently only "assistantInvestigation" is supported.
    type string
    Type of the alert enrichment. Currently only "assistantInvestigation" is supported.
    type String
    Type of the alert enrichment. Currently only "assistantInvestigation" is supported.
    type string
    Type of the alert enrichment. Currently only "assistantInvestigation" is supported.
    type str
    Type of the alert enrichment. Currently only "assistantInvestigation" is supported.
    type String
    Type of the alert enrichment. Currently only "assistantInvestigation" is supported.

    SLOAlertingSlowburnLabel, SLOAlertingSlowburnLabelArgs

    Key string
    Key for filtering and identification
    Value string
    Templatable value
    Key string
    Key for filtering and identification
    Value string
    Templatable value
    key string
    Key for filtering and identification
    value string
    Templatable value
    key String
    Key for filtering and identification
    value String
    Templatable value
    key string
    Key for filtering and identification
    value string
    Templatable value
    key str
    Key for filtering and identification
    value str
    Templatable value
    key String
    Key for filtering and identification
    value String
    Templatable value

    SLODestinationDatasource, SLODestinationDatasourceArgs

    Uid string
    UID for the Datasource
    Uid string
    UID for the Datasource
    uid string
    UID for the Datasource
    uid String
    UID for the Datasource
    uid string
    UID for the Datasource
    uid str
    UID for the Datasource
    uid String
    UID for the Datasource

    SLOLabel, SLOLabelArgs

    Key string
    Key for filtering and identification
    Value string
    Templatable value
    Key string
    Key for filtering and identification
    Value string
    Templatable value
    key string
    Key for filtering and identification
    value string
    Templatable value
    key String
    Key for filtering and identification
    value String
    Templatable value
    key string
    Key for filtering and identification
    value string
    Templatable value
    key str
    Key for filtering and identification
    value str
    Templatable value
    key String
    Key for filtering and identification
    value String
    Templatable value

    SLOObjective, SLOObjectiveArgs

    Value double
    Value between 0 and 1. If the value of the query is above the objective, the SLO is met.
    Window string
    A Prometheus-parsable time duration string like 24h, 60m. This is the time window the objective is measured over.
    Value float64
    Value between 0 and 1. If the value of the query is above the objective, the SLO is met.
    Window string
    A Prometheus-parsable time duration string like 24h, 60m. This is the time window the objective is measured over.
    value number
    Value between 0 and 1. If the value of the query is above the objective, the SLO is met.
    window string
    A Prometheus-parsable time duration string like 24h, 60m. This is the time window the objective is measured over.
    value Double
    Value between 0 and 1. If the value of the query is above the objective, the SLO is met.
    window String
    A Prometheus-parsable time duration string like 24h, 60m. This is the time window the objective is measured over.
    value number
    Value between 0 and 1. If the value of the query is above the objective, the SLO is met.
    window string
    A Prometheus-parsable time duration string like 24h, 60m. This is the time window the objective is measured over.
    value float
    Value between 0 and 1. If the value of the query is above the objective, the SLO is met.
    window str
    A Prometheus-parsable time duration string like 24h, 60m. This is the time window the objective is measured over.
    value Number
    Value between 0 and 1. If the value of the query is above the objective, the SLO is met.
    window String
    A Prometheus-parsable time duration string like 24h, 60m. This is the time window the objective is measured over.

    SLOQuery, SLOQueryArgs

    Type string
    Query type must be one of: "freeform", "query", "ratio", "grafanaQueries" or "threshold"
    Freeform Pulumiverse.Grafana.Slo.Inputs.SLOQueryFreeform
    Freeform query configuration.
    GrafanaQueries Pulumiverse.Grafana.Slo.Inputs.SLOQueryGrafanaQueries
    Array for holding a set of grafana queries
    Ratio Pulumiverse.Grafana.Slo.Inputs.SLOQueryRatio
    Ratio query configuration.
    Type string
    Query type must be one of: "freeform", "query", "ratio", "grafanaQueries" or "threshold"
    Freeform SLOQueryFreeform
    Freeform query configuration.
    GrafanaQueries SLOQueryGrafanaQueries
    Array for holding a set of grafana queries
    Ratio SLOQueryRatio
    Ratio query configuration.
    type string
    Query type must be one of: "freeform", "query", "ratio", "grafanaQueries" or "threshold"
    freeform object
    Freeform query configuration.
    grafana_queries object
    Array for holding a set of grafana queries
    ratio object
    Ratio query configuration.
    type String
    Query type must be one of: "freeform", "query", "ratio", "grafanaQueries" or "threshold"
    freeform SLOQueryFreeform
    Freeform query configuration.
    grafanaQueries SLOQueryGrafanaQueries
    Array for holding a set of grafana queries
    ratio SLOQueryRatio
    Ratio query configuration.
    type string
    Query type must be one of: "freeform", "query", "ratio", "grafanaQueries" or "threshold"
    freeform SLOQueryFreeform
    Freeform query configuration.
    grafanaQueries SLOQueryGrafanaQueries
    Array for holding a set of grafana queries
    ratio SLOQueryRatio
    Ratio query configuration.
    type str
    Query type must be one of: "freeform", "query", "ratio", "grafanaQueries" or "threshold"
    freeform SLOQueryFreeform
    Freeform query configuration.
    grafana_queries SLOQueryGrafanaQueries
    Array for holding a set of grafana queries
    ratio SLOQueryRatio
    Ratio query configuration.
    type String
    Query type must be one of: "freeform", "query", "ratio", "grafanaQueries" or "threshold"
    freeform Property Map
    Freeform query configuration.
    grafanaQueries Property Map
    Array for holding a set of grafana queries
    ratio Property Map
    Ratio query configuration.

    SLOQueryFreeform, SLOQueryFreeformArgs

    Query string
    Freeform Query Field - valid promQl
    Query string
    Freeform Query Field - valid promQl
    query string
    Freeform Query Field - valid promQl
    query String
    Freeform Query Field - valid promQl
    query string
    Freeform Query Field - valid promQl
    query str
    Freeform Query Field - valid promQl
    query String
    Freeform Query Field - valid promQl

    SLOQueryGrafanaQueries, SLOQueryGrafanaQueriesArgs

    GrafanaQueries string
    Query Object - Array of Grafana Query JSON objects
    GrafanaQueries string
    Query Object - Array of Grafana Query JSON objects
    grafana_queries string
    Query Object - Array of Grafana Query JSON objects
    grafanaQueries String
    Query Object - Array of Grafana Query JSON objects
    grafanaQueries string
    Query Object - Array of Grafana Query JSON objects
    grafana_queries str
    Query Object - Array of Grafana Query JSON objects
    grafanaQueries String
    Query Object - Array of Grafana Query JSON objects

    SLOQueryRatio, SLOQueryRatioArgs

    SuccessMetric string
    Counter metric for success events (numerator)
    TotalMetric string
    Metric for total events (denominator)
    GroupByLabels List<string>
    Defines Group By Labels used for per-label alerting. These appear as variables on SLO dashboards to enable filtering and aggregation. Labels must adhere to Prometheus label name schema - "^[a-zA-Z*][a-zA-Z0-9*]*$"
    SuccessMetric string
    Counter metric for success events (numerator)
    TotalMetric string
    Metric for total events (denominator)
    GroupByLabels []string
    Defines Group By Labels used for per-label alerting. These appear as variables on SLO dashboards to enable filtering and aggregation. Labels must adhere to Prometheus label name schema - "^[a-zA-Z*][a-zA-Z0-9*]*$"
    success_metric string
    Counter metric for success events (numerator)
    total_metric string
    Metric for total events (denominator)
    group_by_labels list(string)
    Defines Group By Labels used for per-label alerting. These appear as variables on SLO dashboards to enable filtering and aggregation. Labels must adhere to Prometheus label name schema - "^[a-zA-Z*][a-zA-Z0-9*]*$"
    successMetric String
    Counter metric for success events (numerator)
    totalMetric String
    Metric for total events (denominator)
    groupByLabels List<String>
    Defines Group By Labels used for per-label alerting. These appear as variables on SLO dashboards to enable filtering and aggregation. Labels must adhere to Prometheus label name schema - "^[a-zA-Z*][a-zA-Z0-9*]*$"
    successMetric string
    Counter metric for success events (numerator)
    totalMetric string
    Metric for total events (denominator)
    groupByLabels string[]
    Defines Group By Labels used for per-label alerting. These appear as variables on SLO dashboards to enable filtering and aggregation. Labels must adhere to Prometheus label name schema - "^[a-zA-Z*][a-zA-Z0-9*]*$"
    success_metric str
    Counter metric for success events (numerator)
    total_metric str
    Metric for total events (denominator)
    group_by_labels Sequence[str]
    Defines Group By Labels used for per-label alerting. These appear as variables on SLO dashboards to enable filtering and aggregation. Labels must adhere to Prometheus label name schema - "^[a-zA-Z*][a-zA-Z0-9*]*$"
    successMetric String
    Counter metric for success events (numerator)
    totalMetric String
    Metric for total events (denominator)
    groupByLabels List<String>
    Defines Group By Labels used for per-label alerting. These appear as variables on SLO dashboards to enable filtering and aggregation. Labels must adhere to Prometheus label name schema - "^[a-zA-Z*][a-zA-Z0-9*]*$"

    Import

    terraform import grafana_slo.name "{{ uuid }}"
    

    To learn more about importing existing cloud resources, see Importing resources.

    Package Details

    Repository
    grafana pulumiverse/pulumi-grafana
    License
    Apache-2.0
    Notes
    This Pulumi package is based on the grafana Terraform Provider.
    grafana logo
    Viewing docs for Grafana v2.29.1
    published on Tuesday, May 12, 2026 by pulumiverse
      Try Pulumi Cloud free. Your team will thank you.