Pratique du plug-in d'alarme ELK-elastalert2, prend en charge la version elk8.0, mise en œuvre de l'alarme robot Qiwei

Je viens de terminer la production d'ELK, qui a également été présentée dans l'article précédent, puis j'ai pensé à démarrer la surveillance des journaux et les alarmes. En raison de problèmes de main-d'œuvre, je dois faire face à des problèmes de production ainsi qu'à certaines opérations et maintenance quotidiennes. travail, je dois donc faire quelques recherches sur la surveillance des journaux et les terminer le week-end.

Pour le dire simplement, l'état actuel de l'exploitation et de la maintenance est que le département d'exploitation et de maintenance est nouvellement créé. Avant, tout était R&D et autogéré, et chacun faisait ses propres choses, donc il y a beaucoup de problèmes et beaucoup de constructions non standard. En fait, c'est très pénible. , ce que j'ai fait récemment, c'est trier différents systèmes.

Il s'agit essentiellement d'une construction de 0 à 1. Lorsque je construisais des wapitis auparavant, j'ai en fait réfléchi à la manière d'effectuer un suivi ultérieur des journaux. L'idée originale était de l'écrire moi-même, mais je n'avais pas assez de temps et je n'avais pas beaucoup d'énergie. pour le faire. Faites ces choses.

Il y a longtemps, il y avait des plug-ins, elastalert et sentinl. Le premier n'a pas été mis à jour il y a longtemps. Le second n'est actuellement supporté que jusqu'à la version 7, j'ai donc vu elastalert2 et jeté un œil à la dernière mise à jour. était récent, et la documentation est également très complète, même si elle est entièrement en anglais.

elastalert2 Références :

文档:https://elastalert2.readthedocs.io/en/latest/index.htmlgithub地址:https://github.com/jertel/elastalert2

Ce plug-in prend en charge le déploiement de Docker et le déploiement sur K8. Les fichiers Docker et les fichiers helm pertinents sont fournis et peuvent essentiellement être utilisés immédiatement.

J'ai commencé ici directement en utilisant python local. Si vous avez besoin de docker ou de k8, vous pouvez le vérifier vous-même.

Logiciels et versions requis :

python 3.10opensll 1.1.1 (python 3.10需要)

Si vous installez Python, je n'entrerai pas dans les détails ici.

étapes d'installation :

pip install elastalert2 (可能会有setuptools版本低的情况,自行更新)git clone https://github.com/jertel/elastalert2.gitpython setup.py install

Deux fichiers de configuration :

La première est la configuration de base. Vous trouverez des configurations de base sous des exemples.

#必须配置项#告警规则目录rules_folder: examples/rulesrun_every:  minutes: 1buffer_time:  minutes: 15es_host: es ipes_port: 9200
#非必须配置#因为我是开启了鉴权的,所有需要开启ssl认证use_ssl: Truees_username: useres_password: passwdca_certs: ./http_ca.crt#会建立一个对应d的索引,后面可以直接去建立writeback_index: elastalert_status#retry window for failed alerts.alert_time_limit:  days: 2

Il y a ensuite la configuration des règles d'alarme.

La valeur par défaut se trouve dans le dossier des règles sous Exemples. Il existe déjà un certain nombre de configurations de base, qui peuvent être configurées selon les besoins. J'ai configuré un type de fréquence ici à titre de test.

Le type de fréquence est plus conforme aux mesures d'alarme quotidiennes. Des alertes précoces peuvent être émises en fonction du nombre d'occurrences dans une plage de temps.

Il prend en charge un certain nombre de canaux d'alarme. Vous pouvez lire l'introduction officielle. J'utilise le canal POST ici, puis je traite les données et l'alarme via le robot Qiwei. Le prometheus précédent a également utilisé cette alarme. Le format des données est différent. Faire traité .

Canaux d'alarme pris en charge :

Concernant la configuration des règles, vous pouvez voir :

#可以针对字段做一些添加,这个策略的话,就是30分钟内出现50次404就告警#query 也可以根据一些实际的需求进行调整#而且支持多个rule配置文件name: "Exemple  webhook alert"type: frequencyindex: ng*use_strftime_index: truefilter:- query:    query_string:      query: "status: 404"num_events: 50timeframe:  hours: 0.5realert:  minutes: 0include: ["time_local","fields.host_ip"]alert_text: "Alerts at {0} on the host {1}.\n```"alert_text_args: ["timestamp","status"]alert: posthttp_post_url: "http://192.168.200.9:5001"

Avant de commencer, vous devez initialiser l'index et l'exécuter directement :

Si l'authentification est activée, vous pouvez également faire un test pour voir si vous pouvez vous connecter à elasticsearch.

$elastalert-create-indexNew index name (Default elastalert_status)Name of existing index to copy (Default None)New index elastalert_status createdDone!

Une fois le fichier de configuration des règles prêt, vous pouvez également effectuer un test pour vérifier si le fichier de configuration est normal.

Cela peut être accompli avec la commande suivante :

#这个命令也可以通过 -h 然后帮助#这条命令只是检测配置文件是否正常#如果要确认是告警是否能触发的话,需要加 --alertelastalert-test-rule ./examples/rules/exemple_discord_any.yaml --config=./examples/config.yaml

En fait, lorsque je l'ai testé pour la première fois, il n'a cessé de signaler 0 hit. En fait, il y avait un problème avec la configuration de l'index. Vous pouvez le tester plusieurs fois par vous-même.

C'est la question, mais cette réponse n'est qu'une suggestion.

Lorsque vous ajoutez --alert pour tester, s'il y a une correspondance, une alarme peut être déclenchée, similaire à celle-ci

L'effet réel sur le robot Qiwei est le suivant :

Bien entendu, vous pouvez définir vous-même certains champs dans l'alarme. Ceci n'est qu'une première version et toute la route est claire.

Ce qui suit peut être des mots-clés de journal spécifiques, l'ajout de stratégies de récupération d'alarme, etc. Si j'ai le temps plus tard, je le mettrai à jour.

Je suppose que tu aimes

Origine blog.csdn.net/smallbird108/article/details/125462209
conseillé
Classement