Cenário B: Enviando Mensagens de Alarme ao Slack e SMS

Configure notificações automáticas para um canal do Slack e um número de telefone SMS quando alarmes forem acionados.

Este cenário envolve a configuração de um ponto final do Slack para um canal e a criação de um alarm que envia uma mensagem a esse canal e a um número de telefone SMS. Quando o alarme é ativado, o serviço Notifications envia a mensagem de alarme para o tópico de destino, que, em seguida, é distribuído para as inscrições do tópico. Neste cenário, as inscrições do tópico incluem o canal do Slack e o número de telefone SMS, bem como seu endereço de e-mail.

Esta imagem mostra o serviço Notifications no contexto de um cenário que envia mensagens de alarme ao Slack.

Política do Serviço IAM Obrigatória

Para usar o Oracle Cloud Infrastructure, um administrador deve ser membro de um grupo ao qual foi concedido acesso de segurança em uma política por um administrador da tenancy. Esse acesso será necessário se você estiver usando a Console ou a API REST com um SDK, uma CLI ou outra ferramenta. Se você receber uma mensagem informando que não tem permissão ou está não autorizado, verifique com o administrador da tenancy qual tipo de acesso você tem e qual compartimento seu acesso funciona.

Se você for membro do grupo Administradores, já terá o acesso necessário para executar esse cenário. Caso contrário, você precisará acessar os serviços Monitoring e Notifications.

Tarefa 1: Configurar seu ponto final do Slack

Crie um webhook de entrada para seu aplicativo Slack.

Exemplo de um webhook de entrada para um aplicativo Slack (equivalente ao ponto final do Slack para sua inscrição): https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX

Depois de configurar seu ponto final do Slack, você poderá concluir todas as outras etapas do cenário na Console. Como alternativa, você pode usar a CLI ou a API do Oracle Cloud Infrastructure, que permite que você mesmo execute as operações individuais.

Tarefa 2: Criar o Tópico

Para obter ajuda com o diagnóstico e a solução de problemas, consulte Diagnóstico e Solução de Problemas do Serviço Notifications.

  • Observação

    Outro workflow da Console para esse cenário envolve a criação de um novo tópico e da primeira assinatura quando você cria o alarme e, em seguida, cria assinaturas adicionais nesse tópico.
    1. Abra o painel Criar Tópico: Na página da lista Tópicos, selecione Criar Tópico. Se precisar de ajuda para localizar a página da lista, consulte Listando Tópicos.
    2. Para Nome, digite o seguinte: Tópico de Alarme
    3. Selecione Criar.
  • Use o comando oci ons topic create e os parâmetros necessários para criar um tópico:

    oci ons topic create --name <name> --compartment-id <compartment_OCID>

    Por exemplo:

    oci ons topic create --name "Alarm Topic" --compartment-id "<compartment_OCID>"

    Para obter uma lista completa de parâmetros e valores para comandos da CLI, consulte a Referência de Linha de Comando para Notificações.

  • Execute a operação CreateTopic para criar um tópico.

    Por exemplo:

    POST /20181201/topics
    Host: notification.us-phoenix-1.oraclecloud.com
    <authorization and other headers>
    {
      "name": "Alarm Topic",
      "compartmentId": "<compartment_OCID>"
    }

Tarefa 3: Criar as Assinaturas

Para obter ajuda com o diagnóstico e a solução de problemas, consulte Diagnóstico e Solução de Problemas do Serviço Notifications.

    1. Selecione o tópico criado anteriormente (o nome do exemplo era Tópico de Alarme): Na página da lista Tópicos, selecione o tópico com o qual você deseja trabalhar. Se precisar de ajuda para encontrar a página da lista ou o tópico, consulte Listando Tópicos.
    2. Crie a assinatura do Slack.
      1. Abra o painel Criar Assinatura: na página de detalhes do tópico, selecione Criar Assinatura.
        O painel Criar Inscrição é aberto.
      2. Para Protocolo, selecione Slack.
      3. Preencha os campos restantes.
        Campo Descrição
        URL

        Digite (ou copie e cole) o ponto final do Slack criado anteriormente. Inclua o token do webhook.

        Exemplo de ponto final:

        https://hooks.slack.com/services/<webhook-token>
      4. Selecione Criar.
      5. Confirmar a nova inscrição do Slack: Navegue até o URL de confirmação que foi enviado para o Slack.
    3. Crie a assinatura de SMS.
      1. Abra o painel Criar Assinatura: na página de detalhes do tópico, selecione Criar Assinatura.
        O painel Criar Inscrição é aberto.
      2. Para Protocolo, selecione SMS.
      3. Preencha os campos restantes.
        Campo Descrição
        País Selecione o país do número de telefone. Consulte Antes de Começar.
        Número de Telefone Digite o número de telefone usando o formato E.164.
      4. Selecione Criar.
      5. Confirme a nova assinatura de SMS: siga as instruções recebidas no telefone.
    4. Crie a assinatura de e-mail.
      1. Abra o painel Criar Assinatura: na página de detalhes do tópico, selecione Criar Assinatura.
        O painel Criar Inscrição é aberto.
      2. Para Protocolo, selecione E-mail.
      3. Preencha os campos restantes.
        Campo Descrição
        E-mail Digite um endereço de e-mail.
      4. Selecione Criar.
      5. Confirmar a nova assinatura de e-mail: Abra o e-mail e navegue até o URL de confirmação.
  • Observação

    Depois de criar as assinaturas, confirme-as.

    Use o comando oci ons subscription create e os parâmetros necessários para criar cada assinatura:

    oci ons subscription create --protocol <subscription_type> --subscription-endpoint <endpoint> --compartment-id <compartment_OCID> --topic-id <topic_OCID>

    Exemplo de assinatura do Slack:

    oci ons subscription create --protocol "SLACK" --subscription-endpoint "<slack-endpoint>" --compartment-id "<compartment_OCID>" --topic-id "<topic_OCID>"

    Exemplo de assinatura SMS:

    oci ons subscription create --protocol "SMS" --subscription-endpoint "<sms-endpoint>" --compartment-id "<compartment_OCID>" --topic-id "<topic_OCID>"

    Exemplo de inscrição de e-mail:

    oci ons subscription create --protocol "EMAIL" --subscription-endpoint "john.smith@example.com" --compartment-id "<compartment_OCID>" --topic-id "<topic_OCID>"

    Para obter uma lista completa de parâmetros e valores para comandos da CLI, consulte a Referência de Linha de Comando para Notificações.

  • Observação

    Depois de criar as assinaturas, confirme-as.

    Execute a operação CreateSubscription para criar cada assinatura.

    Exemplo de assinatura do Slack:

    POST /20181201/subscriptions
    Host: notification.us-phoenix-1.oraclecloud.com
    <authorization and other headers>
    {
      "topicId": "<topic_OCID>",
      "compartmentId": "<compartment_OCID>",
      "protocol": "SLACK",
      "endpoint": "<slack-endpoint>"
    }

    Exemplo de assinatura SMS:

    POST /20181201/subscriptions
    Host: notification.us-phoenix-1.oraclecloud.com
    <authorization and other headers>
    {
      "topicId": "<topic_OCID>",
      "compartmentId": "<compartment_OCID>",
      "protocol": "SMS",
      "endpoint": "<sms-endpoint>"
    }

    Exemplo de inscrição de e-mail:

    POST /20181201/subscriptions
    Host: notification.us-phoenix-1.oraclecloud.com
    <authorization and other headers>
    {
      "topicId": "<topic_OCID>",
      "compartmentId": "<compartment_OCID>",
      "protocol": "EMAIL",
      "endpoint": "john.smith@example.com"
    }

Tarefa 4: Criar o Alarme

Para obter ajuda com o diagnóstico e a solução de problemas, consulte Diagnóstico e Solução de Problemas do Serviço Notifications.

    1. Abra a página Criar Alarme.
      1. Abra o menu de navegação e selecione Observabilidade e Gerenciamento. Em Monitoramento, selecione Definições de Alarme.
      2. Selecione Criar Alarme.

    2. Para Nome do alarme, digite o seguinte: Alarme de Utilização
    3. Em Descrição da métrica, selecione a métrica, o intervalo e a estatística.

      Campo Valor de exemplo para este cenário
      Compartimento Selecione o compartimento que contém a instância que você deseja monitorar para alta utilização da CPU.
      Namespace da métrica oci_computeagent
      Nome da métrica CpuUtilization
      Intervalo 1m
      Estatística Contagem
    4. Em Regra de acionamento, configure o limite de alarme.

      Campo Valor de exemplo para este cenário
      Operador superior a
      Valor 90
      Minutos de atraso do trigger 1
    5. Em Notificações, Destinos, selecione o tópico que você criou anteriormente.
      Campo Valor de exemplo para este cenário
      Serviço de Destino Notifications Service
      Compartimento Selecione o compartimento que contém o tópico que você criou anteriormente.
      Tópico Selecione o tópico que você criou anteriormente.
    6. Selecione Salvar alarme.

  • Use o comando oci monitoring alarm create e os parâmetros obrigatórios para criar um alarme:

    oci monitoring alarm create --display-name <name> --compartment-id <compartment_OCID> --metric-compartment-id <compartment_OCID> --namespace <metric_namespace> --query-text <mql_expression> --severity <level> --destinations <file_or_text> --is-enabled <true_or_false>

    Por exemplo:

    oci monitoring alarm create --display-name "Utilization Alarm" --compartment-id "<compartment_OCID>" --metric-compartment-id "<compartment_OCID>" --namespace "oci_computeagent" --query-text "CpuUtilization[1m].count() > 90" --severity "CRITICAL" --destinations "<topic_OCID>" --is-enabled true

    Para obter uma lista completa de parâmetros e valores para comandos da CLI, consulte a Referência de Linha de Comando para o Serviço Monitoring.

  • Execute a operação CreateAlarm para criar um alarme.

    Por exemplo:

    POST /20180401/alarms
    Host: telemetry.us-phoenix-1.oraclecloud.com
    <authorization and other headers>
    {
      "displayName": "Utilization Alarm",
      "compartmentId": "<compartment_OCID>",
      "metricCompartmentId": "<compartment_OCID>",
      "namespace": "oci_computeagent",
      "query": "CpuUtilization[1m].count() > 90",
      "severity": "CRITICAL",
      "destinations":
      [
        "<topic_OCID>"
      ],
      "isEnabled": true
    }