X-Pack Watcher vous permet de déclencher des actions sur votre instance Alibaba Cloud Elasticsearch lorsque des conditions spécifiques sont remplies. Par exemple, vous pouvez configurer une règle de surveillance qui envoie automatiquement un message DingTalk lorsqu'un journal d'erreur apparaît dans votre index logs.
Présentation de la fonctionnalité
X-Pack Watcher se compose de quatre composants principaux : un déclencheur qui définit la fréquence d'exécution de la règle de surveillance, une entrée qui récupère les données du cluster, une condition qui évalue si les données atteignent le seuil d'alerte, et des actions qui s'exécutent lorsque la condition est remplie, comme l'envoi d'une notification webhook.
Prérequis
-
Vous avez créé une instance Alibaba Cloud Elasticsearch. Pour plus d'informations, consultez la rubrique Créer une instance Alibaba Cloud Elasticsearch.
RemarquePour l'ancienne architecture réseau, X-Pack Watcher prend uniquement en charge les instances Elasticsearch à zone de disponibilité unique. Les instances multi-zones de disponibilité ne sont pas prises en charge.
Pour la nouvelle architecture réseau, vous devez configurer une connexion PrivateLink pour l'instance afin de contourner les restrictions réseau. Pour plus d'informations, consultez la rubrique Configurer une connexion PrivateLink pour une instance.
Pour plus d'informations sur les architectures réseau, consultez la rubrique [[Avis] Ajustement de l'architecture réseau](t2521816.xdita#).
Vous avez activé X-Pack Watcher pour votre instance Elasticsearch. Pour plus d'informations, consultez la rubrique Configurer les paramètres YML.
-
Vous avez créé une instance ECS dans votre réseau privé virtuel (VPC). Pour plus d'informations, consultez la rubrique Créer une instance à l'aide de paramètres personnalisés.
RemarqueX-Pack Watcher dans Alibaba Cloud Elasticsearch ne peut pas accéder directement à Internet public. Il communique via le point de terminaison privé de votre instance au sein d'un VPC. Par conséquent, l'instance ECS de votre VPC doit disposer d'un accès à Internet public, soit en attribuant une adresse IP élastique (EIP), soit en configurant la traduction d'adresse source (SNAT). Pour plus d'informations, consultez les rubriques Associer une EIP ou Configurer SNAT.
Procédure
Étape 1 : Créer et configurer un bot DingTalk
Créez un groupe DingTalk pour recevoir les alertes.
Dans le coin supérieur droit du groupe, cliquez sur l'icône
. Dans le panneau Group Settings, cliquez sur Bot.Dans la boîte de dialogue Robot Management , cliquez sur Add Robot, sélectionnez Custom, puis cliquez sur Add.
-
Saisissez un Robot Name, sélectionnez Custom Keywords, puis saisissez vos mots-clés.
ImportantLes mots-clés doivent être inclus dans le message d'alerte que vous configurez.
Cochez la case I have read and agree to the "Custom Robot Service and Disclaimer Terms", puis cliquez sur Complete.
-
À côté de Webhook, cliquez sur Copy pour copier l'URL webhook du bot.
Conservez l'URL webhook en toute sécurité. La partager sur des sites web externes crée un risque de sécurité.
Étape 2 : Configurer le proxy NGINX et le groupe de sécurité ECS
-
Configurez le proxy NGINX sur votre instance ECS.
X-Pack Watcher envoie les alertes à un proxy NGINX sur votre instance ECS, qui les transfère ensuite vers DingTalk ou WeCom.
-
Installez NGINX sur l'instance ECS.
-
Configurez le fichier nginx.conf.
Remplacez la section
serverdu fichier nginx.conf par la configuration suivante.server { listen 8080;# Listener port server_name localhost;# Domain name index index.html index.htm index.php; root /usr/local/webserver/nginx/html;# Site 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; }Remplacez <Webhook URL> par l'URL webhook du bot DingTalk que vous avez copiée à l'étape 1.
-
Rechargez le fichier de configuration et redémarrez NGINX.
/usr/local/webserver/nginx/sbin/nginx -s reload # Reload the configuration file /usr/local/webserver/nginx/sbin/nginx -s reopen # Restart NGINX
-
-
Configurez le groupe de sécurité ECS.
Autorisez le trafic entrant depuis votre instance Alibaba Cloud Elasticsearch vers le proxy NGINX sur l'instance ECS.
Connectez-vous à la console Alibaba Cloud ECS.
Dans le volet de navigation de gauche, choisissez .
Sur la page Cluster, cliquez sur le nom de l'instance cible.
Cliquez sur l'onglet Security Group.
Sur l'onglet Security Groups, cliquez sur le nom du groupe de sécurité cible.
Sur l'onglet Inbound, cliquez sur Add Rule.
-
Configurez les paramètres.
Paramètre
Description
Action
Sélectionnez Permitted.
Priority
Conservez la valeur par défaut.
Protocol
Sélectionnez Custom TCP.
Access Source
Saisissez les adresses IP de tous les nœuds de votre instance Alibaba Cloud Elasticsearch.
RemarquePour obtenir les adresses IP des nœuds, consultez la rubrique Afficher les informations de base des nœuds.
Destination
Saisissez le port sur lequel NGINX est configuré pour écouter. Cette rubrique utilise le port 8080 à titre d'exemple.
Description
Saisissez une description pour la règle.
Cliquez sur OK.
Étape 3 : Configurer une alerte Watcher
-
Connectez-vous à la console Kibana de votre cluster Elasticsearch.
Pour obtenir des instructions, consultez la rubrique Se connecter à la console Kibana.
RemarqueLes exemples présentés ici utilisent Elasticsearch V6.7.0. Les opérations peuvent varier légèrement selon les versions.
Dans le menu de navigation de gauche, choisissez .
-
Dans la Console, exécutez la commande suivante pour créer une règle de surveillance.
L'exemple suivant crée une règle de surveillance nommée
log_error_watch. Elle interroge l'indexlogstoutes les 10 secondes pour rechercher les journaux contenanterror. Si plus de 0 journaux correspondants sont trouvés, une alerte est déclenchée.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://<yourAddress>:8080", "body" : "{\"msgtype\": \"text\", \"text\": { \"content\": \"An error log has appeared. Please handle it as soon as possible.\"}}" } } } }Tableau 1. Paramètres clés
Paramètre
Type de réseau
Configuration
urlNouvelle architecture réseau
Définissez ce paramètre sur le nom de domaine du point de terminaison. Pour obtenir le nom de domaine du point de terminaison, consultez la rubrique Configurer une connexion PrivateLink pour une instance Alibaba Cloud Elasticsearch.
Ancienne architecture réseau
Définissez ce paramètre sur l'une des adresses suivantes :
L'adresse IP du proxy NGINX : les requêtes sont transférées par le proxy NGINX dans le même VPC via Internet public.
L'URL webhook du bot DingTalk.
bodyNouvelle architecture réseau
Ancienne architecture réseau
Configurez ce paramètre en fonction des paramètres de sécurité du bot DingTalk.
Par exemple, à l'étape 1 : Créer et configurer un bot DingTalk, si vous définissez les Security Settings sur Custom Keywords et ajoutez le mot-clé personnalisé error, le bot DingTalk pousse les messages d'alerte uniquement si le champ content dans le body contient error.
RemarqueSi vous voyez l'erreur
No handler found for uri [/_xpack/watcher/watch/log_error_watch_2] and method [PUT]lors de l'exécution de la commande, cela signifie que X-Pack Watcher n'est pas activé pour votre instance Alibaba Cloud Elasticsearch. Vous devez l'activer, puis exécuter à nouveau la commande. Pour plus d'informations, consultez la rubrique Configurer les paramètres YML.
Étape 4 : Vérifier l'alerte
Une fois la configuration terminée, votre groupe DingTalk reçoit un message tel que An error log has appeared. Please handle it as soon as possible. chaque fois que la condition d'alerte de l'étape 3 est remplie.
Si vous n'avez plus besoin de la règle de surveillance, exécutez la commande suivante pour la supprimer.
DELETE _xpack/watcher/watch/log_error_watch