Todos os produtos
Search
Central de documentação

Managed Service for Prometheus:Gerencie regras de alerta como código com o Managed Service for Prometheus

Última atualização: Jul 05, 2026

Use o comando ruleup da ferramenta promtool do Managed Service for Prometheus para validar, enviar e gerenciar arquivos de configuração PrometheusRule em um diretório local.

Aplicável a:

  • Usuários que desejam gerenciar regras de alerta com Infraestrutura como Código (IaC).

  • Usuários que pretendem configurar um pipeline de CI para publicar regras de alerta.

Preparativos

  1. Baixe a ferramenta promtool

    curl -fsSL "https://o11y-addon-hangzhou-public.oss-cn-hangzhou.aliyuncs.com/share/promtool/install.sh" | bash
  2. Entenda o formato do arquivo de regras

    Os arquivos PrometheusRule devem seguir este formato:

    # Extended fields, data source configuration (required)
    datasources:
      - type: aliyun_prometheus #
        instance: <prometheus-instance-id>
        regionId: <region-id>
    
    # Rule group
    groups:
      - name: <group-name>
        interval: <evaluation-interval>  # Optional, such as "30s"
        rules:
          - alert: <alert-name>
            expr: <promql-expression>
            for: <duration>  # Optional, such as "5m"
            labels:
              severity: <severity-level>  # such as warning, critical, or info
              # Other labels...
            annotations:
              summary: <summary-text>
              description: <description-text>
              # Other annotations...

    Configuração da fonte de dados

    • type: Tipo da fonte de dados. Somente aliyun_prometheus é compatível.

    • instance: ID da instância do Managed Service for Prometheus.

    • regionId: ID da região do Alibaba Cloud, como cn-hangzhou ou cn-beijing.

    Mapeamento de nível de regra

    O campo labels.severity em uma regra corresponde ao campo level de uma regra de alerta do Managed Service for Prometheus:

    • warning → warning

    • critical → critical

    • info → info

    • Outros valores → warning (padrão)

Observações

  1. Segurança

    • Não insira informações confidenciais, como AccessKey IDs ou AccessKey secrets, diretamente na linha de comando.

    • Use variáveis de ambiente ou arquivos de configuração para gerenciar credenciais.

    • Garanta que os arquivos de regras não contenham dados sensíveis.

  2. Configuração da fonte de dados

    • As operações de envio e exclusão afetam todas as fontes de dados configuradas no arquivo de regras.

    • Verifique se a configuração da fonte de dados está correta antes de prosseguir.

  3. Sobrescrita de regras

    • O envio sobrescreve grupos de regras com o mesmo nome na fonte de dados de destino.

    • A exclusão remove todas as regras dos grupos especificados.

  4. Requisitos de rede

    • As operações de envio e exclusão exigem acesso às APIs do Alibaba Cloud.

    • Certifique-se de ter conectividade de rede estável e as permissões necessárias.

  5. Operações simultâneas

    • Não envie nem exclua regras do mesmo grupo simultaneamente.

    • Após concluir uma operação, aguarde um breve período antes de iniciar a próxima.

  6. Códigos de saída

    • 0: Operação bem-sucedida.

    • 1: Falha na operação devido a erro de validação, envio ou exclusão.

  7. Melhores práticas

    Envio de regras

    1. Valide o arquivo de regras: Valide o arquivo para verificar sua integridade e a sintaxe das expressões PromQL.

      promtool ruleup --dir /path/to/rules --check

      Exemplo de saída (validação bem-sucedida):

      Found 1 rule file(s) in directory: /path/to/rules
      
      File: /path/to/rules/prometheus-rules.yml
      Type: prometheus
      Validation: OK

      Exemplo de saída (falha na validação):

      Found 1 rule file(s) in directory: /path/to/rules
      
      File: /path/to/rules/prometheus-rules.yml
      Type: prometheus
      Validation errors:
        - group "system_resources": rule "HighCPUUsage": invalid PromQL expression: syntax error
        - group "application_services": rule "HighHTTPErrorRate": missing 'for' duration

      Se a validação falhar, o comando será encerrado com código de saída 1.

    2. Envie as regras: Após a validação, envie as regras para o Managed Service for Prometheus.

      promtool ruleup --dir /path/to/rules --upload --access-key-id YOUR_ACCESS_KEY_ID --access-key-secret YOUR_ACCESS_KEY_SECRET --user-id YOUR_USER_ID

      Confirmação interativa: O comando exibe a configuração de envio e solicita confirmação:

      === Upload Configuration ===
      User ID: 123456789
      Rule groups to upload: 5
        [1] system_resources (4 rules)
        [2] application_services (4 rules)
        [3] database (3 rules)
        [4] kubernetes (3 rules)
        [5] business_metrics (2 rules)
      Total rules to upload: 16
      Datasources: 2
        [1] Region: cn-hangzhou, Instance: rw-dfaa8e87409285b4b422b3c862ee
        [2] Region: cn-beijing, Instance: rw-abc123456789
      Workspace: will be automatically retrieved from instance
      
      Do you want to proceed with the upload? (yes/no): 

      Insira yes ou y para continuar. Qualquer outra entrada cancela o envio.

      Exemplo de resultado do envio:

      === Upload Result ===
      Total uploads: 10 (rule groups × datasources)
      Success: 10, Failed: 0
      
      Datasource [1]: Region=cn-hangzhou, Instance=rw-dfaa8e87409285b4b422b3c862ee
        Group: system_resources, Request ID: 12345678-1234-1234-1234-123456789abc
          Uploaded rules: 4
            - HighCPUUsage (ID: rule-001, Status: enabled, Level: warning)
            - HighMemoryUsage (ID: rule-002, Status: enabled, Level: warning)
            - HighDiskUsage (ID: rule-003, Status: enabled, Level: critical)
            - HighDiskIO (ID: rule-004, Status: enabled, Level: warning)
      
      Upload completed! 10 datasource(s) succeeded.

    Exclusão de regras do Managed Service for Prometheus

    Exclua grupos de regras específicos de uma instância do Managed Service for Prometheus. A mesma validação aplicada aos envios também ocorre antes da exclusão.

    promtool ruleup \
      --dir /path/to/rules \
      --delete \
      --access-key-id YOUR_ACCESS_KEY_ID \
      --access-key-secret YOUR_ACCESS_KEY_SECRET \
      --user-id YOUR_USER_ID

    Confirmação interativa: O comando exibe a configuração de exclusão e solicita confirmação.

    === Delete Configuration ===
    User ID: 123456789
    Rule groups to delete: 5
      [1] system_resources
      [2] application_services
      [3] database
      [4] kubernetes
      [5] business_metrics
    Datasources: 2
      [1] Region: cn-hangzhou, Instance: rw-dfaa8e87409285b4b422b3c862ee
      [2] Region: cn-beijing, Instance: rw-abc123456789
    
    WARNING: This will delete all rules in the specified groups from the datasources!
    Do you want to proceed with the deletion? (yes/no): 

    Exemplo de resultado da exclusão:

    === Delete Result ===
    Total deletions: 10 (rule groups × datasources)
    Success: 10, Failed: 0
    
    Datasource [1]: Region=cn-hangzhou, Instance=rw-dfaa8e87409285b4b422b3c862ee
      Group: system_resources deleted, Request ID: 12345678-1234-1234-1234-123456789abc
      All rules in group deleted successfully
    
    Deletion completed! 10 deletion(s) succeeded.

    Visualize informações básicas sobre arquivos de regras

    Visualize informações básicas sobre todos os arquivos de regras em um diretório, incluindo tipo de arquivo, quantidade de grupos de regras e contagem de fontes de dados.

    promtool ruleup --dir /path/to/rules

    Exemplo de saída:

    Found 2 rule file(s) in directory: /path/to/rules
    
    File: /path/to/rules/prometheus-rules.yml
    Type: prometheus
      PrometheusRule: 5 group(s), 2 datasource(s)
      Total rules: 15
    
    File: /path/to/rules/alertmanager.yml
    Type: alertmanager
      AlertManagerRule: 3 receiver(s)
      Route configured: yes

    Exemplo de fluxo de trabalho completo

    1. Valide as regras antes de enviá-las.

    2. Use versionamento:

      • Armazene os arquivos de regras em um sistema de controle de versão, como Git.

      • Faça backup da configuração existente antes de modificar regras.

    3. Gerencie por ambiente:

      • Use diretórios diferentes de arquivos de regras para ambientes distintos, como desenvolvimento, homologação e produção.

      • Adote configurações de fontes de dados distintas para diferenciar os ambientes.

    4. Siga convenções de nomenclatura de regras:

      • Use nomes significativos para grupos de regras, como system_resources e application_services.

      • Escolha nomes de alertas que descrevam claramente o problema, como HighCPUUsage e ServiceInstanceDown.

    5. Configure as fontes de dados:

      • Certifique-se de que os valores de instance e regionId na configuração da fonte de dados estejam corretos.

      • Verifique se o ID da instância existe e está acessível.

    6. Confirme antes de operações em lote:

      • Operações de envio e exclusão podem afetar múltiplas fontes de dados. Revise a configuração cuidadosamente antes de prosseguir.

      • Valide as operações em um ambiente de homologação antes de executá-las em produção.

    7. Exemplo de fluxo de trabalho completo

      # 1. View basic information about the rule file
      promtool ruleup --dir ./example/rule
      
      # 2. Validate the rule file
      promtool ruleup --dir ./example/rule --check
      
      # 3. Upload the rules to Alibaba Cloud (interactive confirmation required)
      promtool ruleup \
        --dir ./example/rule \
        --upload \
        --access-key-id $ALIYUN_ACCESS_KEY_ID \
        --access-key-secret $ALIYUN_ACCESS_KEY_SECRET \
        --user-id $ALIYUN_USER_ID
      
      # 4. Delete the rules (interactive confirmation required)
      promtool ruleup \
        --dir ./example/rule \
        --delete \
        --access-key-id $ALIYUN_ACCESS_KEY_ID \
        --access-key-secret $ALIYUN_ACCESS_KEY_SECRET \
        --user-id $ALIYUN_USER_ID
      Variáveis de ambiente
      export ALIYUN_ACCESS_KEY_ID="your-access-key-id"
      export ALIYUN_ACCESS_KEY_SECRET="your-access-key-secret"
      export ALIYUN_USER_ID="your-user-id"

      Erros comuns

      Nenhum arquivo de regra encontrado no diretório

      • Causa: Nenhum arquivo de regra foi localizado no diretório especificado.

      • Solução: Verifique se o caminho do diretório está correto. Certifique-se de que o diretório contém arquivos de regras YAML válidos.

      Nenhum arquivo PrometheusRule encontrado

      • Causa: Não foram encontrados arquivos do tipo PrometheusRule no diretório.

      • Solução: Garanta que pelo menos um arquivo contenha uma configuração PrometheusRule.

      Nenhum grupo de regras encontrado no PrometheusRule

      • Causa: Não há grupos de regras configurados no arquivo PrometheusRule.

      • Solução: Adicione pelo menos uma configuração de groups ao arquivo de regras.

      Nenhuma fonte de dados configurada no PrometheusRule

      • Causa: Nenhuma fonte de dados está configurada no arquivo de regras.

      • Solução: Inclua uma configuração de datasources no início do arquivo de regras.

      Fonte de dados [N] sem o campo instance

      • Causa: O campo instance está ausente ou vazio na configuração da fonte de dados.

      • Solução: Defina um valor válido para instance em cada fonte de dados.

      Fonte de dados [N] sem o campo regionId

      • Causa: O campo regionId está ausente ou vazio na configuração da fonte de dados.

      • Solução: Defina um valor válido para regionId em cada fonte de dados.

      Falha na validação da regra

      • Causa: A validação da regra falhou. Isso pode ocorrer devido a um erro de sintaxe PromQL ou à ausência de um campo obrigatório.

      • Solução: Use o parâmetro --check para visualizar mensagens detalhadas de erro de validação. Corrija os erros e tente novamente.

      --access-key-id é obrigatório quando --upload está definido

      • Causa: Nenhum AccessKey ID foi fornecido ao usar --upload.

      • Solução: Adicione o parâmetro --access-key-id.

      --user-id é obrigatório quando --upload está definido

      • Causa: Nenhum ID de usuário foi fornecido ao usar --upload.

      • Solução: Adicione o parâmetro --user-id.

      Referências

      Ajuda do comando ruleup

      Execute promtool ruleup --help para visualizar todos os parâmetros disponíveis.

      Parâmetro

      Tipo

      Valor padrão

      Descrição

      --dir

      string

      ""

      Caminho do diretório que contém os arquivos de regras YAML.

      --check

      bool

      false

      Verifica se a configuração é válida. Se um erro for encontrado, o comando encerra com um código de status diferente de zero.

      --upload

      bool

      false

      Envia o PrometheusRule para uma instância do Managed Service for Prometheus.

      --delete

      bool

      false

      Exclui o PrometheusRule de uma instância do Managed Service for Prometheus.

      --access-key-id

      string

      -

      AccessKey ID da sua conta Alibaba Cloud. Este parâmetro é obrigatório para envios ou exclusões.

      --access-key-secret

      string

      -

      AccessKey secret da sua conta Alibaba Cloud. Este parâmetro é obrigatório para envios ou exclusões.

      --user-id

      string

      -

      ID da sua conta Alibaba Cloud. Este parâmetro é obrigatório para envios ou exclusões.