O X-Pack Watcher para Alibaba Cloud Elasticsearch executa ações quando condições específicas são atendidas. Por exemplo, você pode configurar o sistema para enviar automaticamente uma mensagem no DingTalk sempre que um log de erro aparecer no índice de logs. Este tópico descreve como configurar um chatbot do DingTalk para receber alertas do X-Pack Watcher.
Visão geral
O X-Pack Watcher consiste em quatro componentes: Trigger (gatilho agendado que define a frequência de monitoramento), Input (entrada de dados que recupera informações de monitoramento do cluster), Condition (condições de acionamento que determinam se os limiares de alerta foram atingidos) e Actions (ações de alerta que definem os métodos de notificação quando as condições são satisfeitas, como Webhook).
Pré-requisitos
-
Crie uma instância do Alibaba Cloud Elasticsearch. Para mais informações, consulte Criar um cluster do Alibaba Cloud Elasticsearch.
NotaNa arquitetura de rede antiga, o X-Pack Watcher oferece suporte apenas a instâncias do Elasticsearch de zona única, não sendo compatível com instâncias multizona.
Na nova arquitetura de rede, configure uma conexão PrivateLink para a instância a fim de contornar restrições de rede. Para mais informações, consulte Configurar uma conexão PrivateLink para uma instância.
Para mais detalhes sobre arquiteturas de rede, consulte [[Aviso] Ajuste na arquitetura de rede](t2521816.xdita#).
Ative o recurso X-Pack Watcher na sua instância do Elasticsearch. Para mais informações, consulte Configurar parâmetros YML.
-
Crie uma instância ECS na sua Virtual Private Cloud (VPC). Para mais informações, consulte Criar uma instância usando o método de compra personalizada.
NotaO X-Pack Watcher do Alibaba Cloud Elasticsearch não se comunica diretamente com a internet pública. Ele precisa estabelecer comunicação por meio do endpoint privado da instância dentro de uma Virtual Private Cloud (VPC). Portanto, a instância ECS na sua VPC deve ter um endereço IP público ou usar tradução de endereços de rede de origem (SNAT) para acessar a internet pública. Para mais informações, consulte Associar um elastic IP address (EIP) ou Configurar SNAT.
Procedimento
Etapa 1: Criar e configurar um chatbot do DingTalk
Crie um grupo no DingTalk para receber os alertas.
No canto superior direito do grupo, clique em
. No painel Group Settings, clique em Robot.Na caixa de diálogo Robot Management , clique em Add Bot, selecione Custom e clique em Add.
-
Insira um Bot Name, selecione Custom Keywords e insira as palavras-chave.
ImportanteAs palavras-chave devem estar incluídas na mensagem de alerta configurada.
Leia e selecione Custom Robot Services and Disclaimers e clique em Complete.
-
Clique em Webhook ao lado de Copy para copiar a URL do webhook do chatbot.
Mantenha a URL do webhook segura. Não a compartilhe publicamente para evitar riscos de segurança.
Etapa 2: Configurar o proxy Nginx e o grupo de segurança
-
Configure o proxy Nginx na instância ECS.
O proxy Nginx encaminha mensagens de alerta. O serviço X-Pack Watcher envia essas mensagens para o Nginx, que as redireciona para serviços como DingTalk ou WeCom.
-
Instale o Nginx na instância ECS.
-
Configure o arquivo nginx.conf.
Substitua a seção
serverno arquivo nginx.conf pelo seguinte conteúdo:server { listen 8080;# The listening port. server_name localhost;# The domain name. index index.html index.htm index.php; root /usr/local/webserver/nginx/html;# The website directory. location ~ .*\.(php|php5)?$ { #fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$ { expires 30d; # access_log off; } location / { proxy_pass <Webhook_URL>; } location ~ .*\.(js|css)?$ { expires 15d; # access_log off; } access_log off; }Substitua <Webhook_URL> pela URL do webhook do chatbot do DingTalk.
-
Recarregue o arquivo de configuração modificado e reinicie o Nginx.
/usr/local/webserver/nginx/sbin/nginx -s reload # Reload the configuration file. /usr/local/webserver/nginx/sbin/nginx -s reopen # Restart Nginx.
-
-
Configure o grupo de segurança da instância ECS.
Permita que o proxy Nginx na instância ECS receba mensagens de alerta da instância do Elasticsearch.
Faça login no console do Alibaba Cloud ECS.
No painel de navegação à esquerda, escolha .
Na página Cluster, clique em Security Group List.
Clique em Security Group.
Na aba Security Group List, clique em Inbound.
Na aba Inbound, clique em Add Rule.
-
Defina os seguintes parâmetros.
Parâmetro
Descrição
Action
Selecione Permitted.
Priority
Mantenha o valor padrão.
Protocol
Selecione Custom TCP.
Source
Adicione os endereços IP de todos os nós da sua instância do Alibaba Cloud Elasticsearch.
NotaPara obter os endereços IP dos nós, consulte Visualizar as informações básicas de um nó.
Destination
Insira a porta de escuta configurada no Nginx. Neste exemplo, a porta é 8080.
Description
Insira uma descrição para a regra.
Clique em OK.
Etapa 3: Configurar um alerta do Watcher
-
Faça login no console Kibana do seu cluster Elasticsearch.
Para instruções, consulte Fazer login no console Kibana.
NotaOs exemplos aqui utilizam o Elasticsearch V6.7.0. As operações podem variar ligeiramente em outras versões.
No menu de navegação à esquerda, escolha .
-
No Console, execute o seguinte comando para criar um watch.
Neste exemplo, cria-se um documento log_error_watch. A cada 10s, o documento consulta o índice logs em busca de logs de error e dispara um alarme se a contagem de logs for maior que 0.
PUT _xpack/watcher/watch/log_error_watch { "trigger": { "schedule": { "interval": "10s" } }, "input": { "search": { "request": { "indices": ["logs"], "body": { "query": { "match": { "message": "error" } } } } } }, "condition": { "compare": { "ctx.payload.hits.total": { "gt": 0 } } }, "actions" : { "test_issue" : { "webhook" : { "method" : "POST", "url" : "http://<your_ECS_IP_address>:8080", "body" : "{\"msgtype\": \"text\", \"text\": { \"content\": \"An error log is found. Please handle it as soon as possible.\"}}" } } } }Tabela 1. Descrição dos principais parâmetros
Parâmetro
Arquitetura de rede
Descrição
url
Nova arquitetura de rede
Defina este parâmetro como o nome de domínio do endpoint. Para obter o nome de domínio do endpoint, consulte Configurar comunicação privada para uma instância do Alibaba Cloud Elasticsearch.
Arquitetura de rede antiga
Defina este parâmetro com o seguinte endereço:
-
O endereço IP privado da instância ECS onde o proxy Nginx está em execução.
-
A URL pública do webhook do chatbot do DingTalk não tem suporte nesta arquitetura.
body
-
Nova arquitetura de rede
-
Arquitetura de rede antiga
Configure este parâmetro com base nas configurações de segurança do seu chatbot do DingTalk.
Por exemplo, se você definir as Security Settings como Custom Keywords e adicionar a palavra-chave personalizada error na Etapa 1: Criar e configurar um chatbot do DingTalk, o campo content no body deve conter error para que o chatbot do DingTalk aceite e exiba o alerta.
NotaSe você receber o erro
No handler found for uri [/_xpack/watcher/watch/log_error_watch_2] and method [PUT]ao executar o comando, isso indica que o X-Pack Watcher não está ativado na sua instância do Alibaba Cloud Elasticsearch. Ative esse recurso e execute o comando novamente. Para mais informações, consulte Configurar parâmetros YML. -
Etapa 4: Verificar os resultados
Se a configuração estiver correta, você receberá uma mensagem de alerta como An error log is found. Please handle it as soon as possible. no seu grupo do DingTalk quando os dados do cluster atenderem às condições definidas na Etapa 3.
Caso não precise mais do watch, execute o seguinte comando para excluí-lo.
DELETE _xpack/watcher/watch/log_error_watch