Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
technique:monitoring:monitoring_es:utilisation:alerting [2020/05/27 12:01] – qduchemi | txs:infra:monitoring_p20:monitoring_es:utilisation:alerting [2020/11/08 22:50] (Version actuelle) – ↷ Page déplacée de txs:infra:monitoring_p17:monitoring_es:utilisation:alerting à txs:infra:monitoring_p20:monitoring_es:utilisation:alerting qduchemi | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{indexmenu_n> | ||
+ | # Alerting | ||
+ | |||
+ | L' | ||
+ | |||
+ | La solution pour l' | ||
+ | |||
+ | Elastalert propose un plugin permettant de gérer directement la création et la modification des règles depuis Kibana. Il marche par la création de fichiers de règles. Chaque fichier de règle correspond à une alerte spécifique. | ||
+ | |||
+ | * Attention: | ||
+ | Il est possible qu'à l' | ||
+ | |||
+ | |||
+ | ## Créer une règle: | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | Pour créer une règle, on peut utiliser le module elastalert directement présent sur kibana. Ce module permet à la fois d' | ||
+ | |||
+ | *Note: il est possible de créer une règle directement sur la machine dans le dossier rules du docker elasalert. il faut toutefois faire ensuite un POST pour que cette règle soit chargée par l' | ||
+ | |||
+ | On crée une nouvelle règle en cliquant sur create rule. On peut alors nommer la règle (veiller à donner des noms Linux friendly). Le corps de la règle peut alors être créer (cf partie suivante). | ||
+ | En cliquant sur save, la règle est ajoutée, et immédiatement utilisée. | ||
+ | |||
+ | En sélectionnant cette règle, on peut soit l' | ||
+ | |||
+ | ### Le corps d'une règle | ||
+ | |||
+ | |||
+ | Le corps d'une règle est divisé en plusieurs partie. (index, type, filter, alert) | ||
+ | |||
+ | #### index: | ||
+ | |||
+ | c'est l' | ||
+ | |||
+ | ``` | ||
+ | index: metricbeat-* | ||
+ | ``` | ||
+ | |||
+ | #### Les types: | ||
+ | |||
+ | |||
+ | Ils permettent de définir le type de l' | ||
+ | Par exemple, on peut repérer des pics d' | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | Ils permettent de choisir quand une règle va être envoyé, par exemple, | ||
+ | |||
+ | Par exemple pour tester si l' | ||
+ | |||
+ | ``` | ||
+ | index: metricbeat-* | ||
+ | type: flatline | ||
+ | threshold: 10 | ||
+ | timeframe: | ||
+ | seconds: 10 | ||
+ | ``` | ||
+ | |||
+ | #### Les filtres: | ||
+ | |||
+ | |||
+ | A la différence des types, qui permettent de définir une règle général sur ce qui est surveillé, les filtres permettent d' | ||
+ | [[https:// | ||
+ | |||
+ | Syntax: | ||
+ | ``` | ||
+ | filter: | ||
+ | - query: | ||
+ | query_string: | ||
+ | query: " | ||
+ | - query: | ||
+ | query_string: | ||
+ | query: " | ||
+ | - query: | ||
+ | query_string: | ||
+ | query: " | ||
+ | - query: | ||
+ | query_string: | ||
+ | | ||
+ | ``` | ||
+ | |||
+ | Par exemple, voici le filtre le plus simple, qui match un champs de l' | ||
+ | |||
+ | ``` | ||
+ | filter: | ||
+ | - term: | ||
+ | name_field: " | ||
+ | - term: | ||
+ | _type: " | ||
+ | ``` | ||
+ | |||
+ | Un filtre intéressant peu aussi être le range, qui permet définir la plage a partir de laquelle une alerte va être levé, pour un champs numérique: | ||
+ | ``` | ||
+ | filter: | ||
+ | - range: | ||
+ | status_code: | ||
+ | from: 500 | ||
+ | to: 599 | ||
+ | ``` | ||
+ | |||
+ | note: Le type any permet d' | ||
+ | |||
+ | Pour plus de filtres, se reporter à la documentation officielle. | ||
+ | |||
+ | #### Les alertes: | ||
+ | |||
+ | Ce champ permet dedéfinir la méthode pour alerter. La seule méthode testé pour le moment est l' | ||
+ | |||
+ | ``` | ||
+ | alert: | ||
+ | - " | ||
+ | |||
+ | from_addr: " | ||
+ | email: | ||
+ | - " | ||
+ | - " | ||
+ | smtp_host: " | ||
+ | smtp_port: 587 | ||
+ | smtp_auth_file: | ||
+ | ``` | ||
+ | |||
+ | le champ " | ||
+ | |||
+ | Le champ email (le second), permet de définir les mails auquels seront envoyés l' | ||
+ | |||
+ | Le champ " | ||
+ | |||
+ | note: si le TLS est activé sur le serveur mail, il faut ajouter smtp_ssl: true | ||
+ | |||
+ | (a tester $ref pour renvoyer vers un fichier de mail) | ||
+ | |||
+ | ## Tester les rules elastalert | ||
+ | |||
+ | Normalement, | ||
+ | |||
+ | `python -m elastalert.elastalert --config / | ||
+ | |||
+ | |||
+ | Note: --debug permet d' | ||
+ | |||
+ | Le lancement de ce test peut se faire via un docker exec par exemple. | ||
+ | |||