

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Provisionar recursos do Grafana Alerting
<a name="v10-alerting-setup-provision"></a>

****  
Este tópico de documentação foi desenvolvido para espaços de trabalho do Grafana compatíveis com o **Grafana versão 10.x**.  
Para espaços de trabalho do Grafana compatíveis com o Grafana versão 9.x, consulte [Trabalhar no Grafana versão 9](using-grafana-v9.md).  
Para espaços de trabalho do Grafana compatíveis com o Grafana versão 8.x, consulte [Trabalhar no Grafana versão 8](using-grafana-v8.md).

A infraestrutura de alertas geralmente é complexa, com muitas partes do pipeline que geralmente residem em lugares diferentes. Escalar isso em várias equipes e organizações é uma tarefa especialmente desafiadora. O provisionamento do Grafana Alerting facilita esse processo, permitindo que você crie, gerencie e mantenha os dados de alerta da maneira mais adequada para a sua organização.

Existem duas opções de escolha:

1. Provisione os recursos de alerta usando a API HTTP de provisionamento de alerta.
**nota**  
Normalmente, você não pode editar regras de alerta provisionadas por API na interface de usuário do Grafana.  
Para ativar a edição, adicione o x-disable-provenance cabeçalho às seguintes solicitações ao criar ou editar suas regras de alerta na API:  

   ```
   POST /api/v1/provisioning/alert-rules
   PUT /api/v1/provisioning/alert-rules/{UID}
   ```

1. Provisione os recursos de alerta usando o Terraform.

**nota**  
Atualmente, o provisionamento do Grafana Alerting é compatível com regras de alerta, pontos de contato, tempos de desativação de áudio e modelos. Recursos de alerta provisionados usando o provisionamento de arquivos ou o Terraform só podem ser editados na fonte que os criou e não no Grafana ou em qualquer outra fonte. Por exemplo, se você provisionar os recursos de alerta usando arquivos do disco, não poderá editar os dados no Terraform ou no Grafana.

**Topics**
+ [Criar e gerenciar recursos de alertas usando o Terraform](v10-alerting-setup-provision-terraform.md)
+ [Visualizar recursos de alerta provisionados no Grafana](v10-alerting-setup-provision-view.md)

# Criar e gerenciar recursos de alertas usando o Terraform
<a name="v10-alerting-setup-provision-terraform"></a>

****  
Este tópico de documentação foi desenvolvido para espaços de trabalho do Grafana compatíveis com o **Grafana versão 10.x**.  
Para espaços de trabalho do Grafana compatíveis com o Grafana versão 9.x, consulte [Trabalhar no Grafana versão 9](using-grafana-v9.md).  
Para espaços de trabalho do Grafana compatíveis com o Grafana versão 8.x, consulte [Trabalhar no Grafana versão 8](using-grafana-v8.md).

Use o provedor do Grafana do Terraform para gerenciar os recursos de alerta e provisioná-los no sistema Grafana. A compatibilidade do provedor Terraform com o Grafana Alerting facilita a criação, o gerenciamento e a manutenção de toda a pilha do Grafana Alerting como código.

Para obter mais informações sobre como gerenciar os recursos de alerta usando o Terraform, consulte a documentação do [provedor do Grafana](https://registry.terraform.io/providers/grafana/grafana/latest/docs) na documentação do Terraform.

Conclua as tarefas a seguir para criar e gerenciar os recursos de alerta usando o Terraform.

1. Crie uma chave de API para provisionamento.

1. Configure o provedor do Terraform.

1. Defina os recursos de alerta no Terraform.

1. Execute `terraform apply` para provisionar os recursos de alerta.

## Pré-requisitos
<a name="v10-alerting-setup-provision-tf-prerequisites"></a>
+ Certifique-se de ter o [provedor grafana/grafana Terraform](https://registry.terraform.io/providers/grafana/grafana/1.28.0) 1.27.0 ou superior.
+ Certifique-se de usar o Grafana 9.1 ou superior. Se você criou a instância do Amazon Managed Grafana com o Grafana versão 9, isso será válido.

## Criar uma chave de API para provisionamento
<a name="v10-alerting-setup-provision-tf-apikey"></a>

Você pode [criar uma chave de API normal do Grafana](Using-Grafana-APIs.md) para autenticar o Terraform com o Grafana. A maioria das ferramentas existentes que usam chaves de API deve funcionar automaticamente com o novo suporte do Grafana Alerting. Para obter informações específicas sobre a criação de chaves para uso com o Terraform, consulte [Using Terraform for Amazon Managed Grafana automation](https://aws-observability.github.io/observability-best-practices/recipes/recipes/amg-automation-tf/).

**Para criar uma chave de API para provisionamento**

1. Crie uma nova conta de serviço para o pipeline de CI.

1. Atribua o perfil “Acessar as regras de alerta da API de provisionamento”.

1. Criar um token de conta de serviço.

1. Nomeie e salve o token para uso no Terraform.

Como alternativa, você pode usar uma autenticação básica. Para ver todos os formatos de autenticação compatíveis, consulte [Autenticação do Grafana](https://registry.terraform.io/providers/grafana/grafana/latest/docs#authentication) na documentação do Terraform.

## Configurar o provedor do Terraform
<a name="v10-alerting-setup-provision-tf-configure"></a>

O suporte ao Grafana Alerting está incluído como parte do [provedor do Grafana do Terraform](https://registry.terraform.io/providers/grafana/grafana/latest/docs).

Veja a seguir um exemplo que você pode usar para configurar o provedor do Terraform.

```
terraform {
    required_providers {
        grafana = {
            source = "grafana/grafana"
            version = ">= 1.28.2"
        }
    }
}

provider "grafana" {
    url = <YOUR_GRAFANA_URL>
    auth = <YOUR_GRAFANA_API_KEY>
}
```

## Provisionar pontos de contato e modelos
<a name="v10-alerting-setup-provision-tf-contacts"></a>

Os pontos de contato conectam uma pilha de alertas ao mundo exterior. Eles dizem ao Grafana como se conectar aos sistemas externos e onde entregar notificações. Há mais de quinze [integrações](https://registry.terraform.io/providers/grafana/grafana/latest/docs/resources/contact_point#optional) diferentes para você escolher. Este exemplo usa um ponto de contato do Slack.

**Para provisionar pontos de contato e modelos**

1. Copie esse bloco de código em um arquivo .tf na máquina local. *<slack-webhook-url>*Substitua pelo URL do webhook do Slack (ou outros detalhes do ponto de contato).

   Este exemplo cria um ponto de contato que envia notificações de alerta para o Slack.

   ```
   resource "grafana_contact_point" "my_slack_contact_point" {
       name = "Send to My Slack Channel"
   
       slack {
           url = <slack-webhook-url>
           text = <<EOT
   {{ len .Alerts.Firing }} alerts are firing!
   
   Alert summaries:
   {{ range .Alerts.Firing }}
   {{ template "Alert Instance Template" . }}
   {{ end }}
   EOT
       }
   }
   ```

1. Insira texto para a notificação no campo de texto.

   O campo `text` é compatível com [modelos no estilo Go](https://pkg.go.dev/text/template). Isso possibilita que você gerencie os modelos de notificação do Grafana Alerting diretamente no Terraform.

1. Execute o comando `terraform apply`.

1. Acesse a interface de usuário do Grafana e verifique os detalhes do ponto de contato.

   Você não pode editar os recursos provisionados via Terraform na interface de usuário. Isso garante que a pilha de alertas esteja sempre sincronizada com o código.

1. Clique em **Testar** para verificar se o ponto de contato funciona corretamente.

**nota**  
Você pode reutilizar os mesmos modelos em vários pontos de contato. No exemplo acima, um modelo compartilhado é incorporado usando a instrução `{{ template "Alert Instance Template" . }}`  
Esse fragmento pode então ser gerenciado separadamente no Terraform:  

```
resource "grafana_message_template" "my_alert_template" {
    name = "Alert Instance Template"

    template = <<EOT
{{ define "Alert Instance Template" }}
Firing: {{ .Labels.alertname }}
Silence: {{ .SilenceURL }}
{{ end }}
EOT
}
```

## Provisionar políticas de notificação e roteamento
<a name="v10-alerting-setup-provision-tf-notifications"></a>

As políticas de notificação dizem ao Grafana como rotear instâncias de alerta, e não para onde. Elas conectam alertas disparados aos seus pontos de contato previamente definidos usando um sistema de rótulos e matchers.

**Para provisionar políticas de notificação e roteamento**

1. Copie esse bloco de código em um arquivo .tf na máquina local.

   Neste exemplo, os alertas são agrupados por `alertname`, o que significa que todas as notificações provenientes de alertas que compartilham o mesmo nome são agrupadas na mesma mensagem do Slack.

   Se quiser rotear notificações específicas de forma diferente, você pode adicionar subpolíticas. As subpolíticas permitem que você aplique o roteamento a diferentes alertas com base na correspondência de rótulos. Neste exemplo, aplicamos um tempo de desativação de áudio a todos os alertas com o rótulo a=b.

   ```
   resource "grafana_notification_policy" "my_policy" {
       group_by = ["alertname"]
       contact_point = grafana_contact_point.my_slack_contact_point.name
   
       group_wait = "45s"
       group_interval = "6m"
       repeat_interval = "3h"
   
       policy {
           matcher {
               label = "a"
               match = "="
               value = "b"
           }
           group_by = ["..."]
           contact_point = grafana_contact_point.a_different_contact_point.name
           mute_timings = [grafana_mute_timing.my_mute_timing.name]
   
           policy {
               matcher {
                   label = "sublabel"
                   match = "="
                   value = "subvalue"
               }
               contact_point = grafana_contact_point.a_third_contact_point.name
               group_by = ["..."]
           }
       }
   }
   ```

1. No campo mute\$1timings, vincule um tempo de desativação de áudio à política de notificação.

1. Execute o comando `terraform apply`.

1. Acesse a interface de usuário do Grafana e verifique os detalhes da política de notificação.
**nota**  
Você não pode editar recursos provisionados do Terraform na interface de usuário. Isso garante que a pilha de alertas esteja sempre sincronizada com o código.

1. Clique em **Testar** para verificar se o ponto de notificação está funcionando corretamente.

## Estipular tempos de desativação de áudio
<a name="v10-alerting-setup-provision-tf-mutetiming"></a>

Os tempos de desativação de áudio possibilitam desativar o áudio das notificações de alerta por períodos de tempo definidos.

**Para estipular tempos de desativação de áudio**

1. Copie esse bloco de código em um arquivo .tf na máquina local.

   Neste exemplo, as notificações de alerta têm o áudio desativado nos finais de semana.

   ```
   resource "grafana_mute_timing" "my_mute_timing" {
       name = "My Mute Timing"
   
       intervals {
           times {
             start = "04:56"
             end = "14:17"
           }
           weekdays = ["saturday", "sunday", "tuesday:thursday"]
           months = ["january:march", "12"]
           years = ["2025:2027"]
       }
   }
   ```

1. Execute o comando `terraform apply`.

1. Acesse a interface de usuário do Grafana e verifique os detalhes do tempo de desativação de áudio.

1. Referencie o tempo de desativação de áudio recém-criado em uma política de notificação usando o campo `mute_timings`. Isso aplicará seu tempo de desativação de áudio a algumas ou a todas as notificações.
**nota**  
Você não pode editar recursos provisionados do Terraform na interface de usuário. Isso garante que a pilha de alertas esteja sempre sincronizada com o código.

1. Clique em **Testar** para verificar se o tempo de desativação de áudio está funcionando corretamente.

## Provisionar regras de alerta
<a name="v10-alerting-setup-provision-tf-rules"></a>

As [regras de alerta](v10-alerting-configure.md) permitem que você alerte sobre qualquer fonte de dados Grafana. Isso pode ser uma fonte de dados que você já configurou, ou você pode [definir as fontes de dados no Terraform](https://registry.terraform.io/providers/grafana/grafana/latest/docs/resources/data_source) junto com as regras de alerta.

**Para provisionar regras de alerta**

1. Crie uma fonte de dados para consultar e uma pasta para armazenar as regras.

   Neste exemplo, a fonte de dados [Configurar uma fonte de TestData dados para testes](testdata-data-source.md) é usada.

   Os alertas podem ser definidos em relação a qualquer fonte de dados de backend no Grafana.

   ```
   resource "grafana_data_source" "testdata_datasource" {
       name = "TestData"
       type = "testdata"
   }
   
   resource "grafana_folder" "rule_folder" {
       title = "My Rule Folder"
   }
   ```

1. Defina uma regra de alerta.

   Para obter mais informações sobre as regras de alerta, consulte [How to create Grafana-managed alerts](https://grafana.com/blog/2022/08/01/grafana-alerting-video-how-to-create-alerts-in-grafana-9/).

1. Crie um grupo de regras contendo uma ou mais regras.

   Neste exemplo, o grupo de recursos `grafana_rule_group` é usado.

   ```
   resource "grafana_rule_group" "my_rule_group" {
       name = "My Alert Rules"
       folder_uid = grafana_folder.rule_folder.uid
       interval_seconds = 60
       org_id = 1
   
       rule {
           name = "My Random Walk Alert"
           condition = "C"
           for = "0s"
   
           // Query the datasource.
           data {
               ref_id = "A"
               relative_time_range {
                   from = 600
                   to = 0
               }
               datasource_uid = grafana_data_source.testdata_datasource.uid
               // `model` is a JSON blob that sends datasource-specific data.
               // It's different for every datasource. The alert's query is defined here.
               model = jsonencode({
                   intervalMs = 1000
                   maxDataPoints = 43200
                   refId = "A"
               })
           }
   
           // The query was configured to obtain data from the last 60 seconds. Let's alert on the average value of that series using a Reduce stage.
           data {
               datasource_uid = "__expr__"
               // You can also create a rule in the UI, then GET that rule to obtain the JSON.
               // This can be helpful when using more complex reduce expressions.
               model = <<EOT
   {"conditions":[{"evaluator":{"params":[0,0],"type":"gt"},"operator":{"type":"and"},"query":{"params":["A"]},"reducer":{"params":[],"type":"last"},"type":"avg"}],"datasource":{"name":"Expression","type":"__expr__","uid":"__expr__"},"expression":"A","hide":false,"intervalMs":1000,"maxDataPoints":43200,"reducer":"last","refId":"B","type":"reduce"}
   EOT
               ref_id = "B"
               relative_time_range {
                   from = 0
                   to = 0
               }
           }
   
           // Now, let's use a math expression as our threshold.
           // We want to alert when the value of stage "B" above exceeds 70.
           data {
               datasource_uid = "__expr__"
               ref_id = "C"
               relative_time_range {
                   from = 0
                   to = 0
               }
               model = jsonencode({
                   expression = "$B > 70"
                   type = "math"
                   refId = "C"
               })
           }
       }
   }
   ```

1. Acesse a interface de usuário do Grafana e verifique a regra de alerta.

   Você pode ver se a regra de alerta está disparando. Você também pode verificar uma visualização de cada um dos estágios de consulta da regra de alerta.

   Quando o alerta é disparado, o Grafana roteia uma notificação por meio da política que você definiu.

   Por exemplo, se você escolheu o Slack como ponto de contato, o [Alertmanager](https://github.com/prometheus/alertmanager) incorporado do Grafana publica automaticamente uma mensagem no Slack.

# Visualizar recursos de alerta provisionados no Grafana
<a name="v10-alerting-setup-provision-view"></a>

****  
Este tópico de documentação foi desenvolvido para espaços de trabalho do Grafana compatíveis com o **Grafana versão 10.x**.  
Para espaços de trabalho do Grafana compatíveis com o Grafana versão 9.x, consulte [Trabalhar no Grafana versão 9](using-grafana-v9.md).  
Para espaços de trabalho do Grafana compatíveis com o Grafana versão 8.x, consulte [Trabalhar no Grafana versão 8](using-grafana-v8.md).

Você pode verificar se os recursos de alerta foram criados no Grafana.

**Para visualizar os recursos provisionados no Grafana**

1. Abra a instância do Grafana.

1. Navegue até Alertas.

1. Clique em uma pasta de recursos de alerta, por exemplo, Regras de alerta.

   Os recursos provisionados são rotulados como **Provisionados**, para que fique claro que eles não foram criados manualmente.

**nota**  
Você não pode editar recursos provisionados do Grafana. Você só pode alterar as propriedades do recurso alterando o arquivo de provisionamento e reiniciando o Grafana ou realizando uma recarga dinâmica. Isso evita que sejam feitas alterações no recurso que seriam substituídas se um arquivo fosse provisionado novamente ou se uma recarga dinâmica fosse realizada.