Recientemente completé la producción de ELK, que también se presentó en el artículo anterior, y luego estaba pensando en comenzar a monitorear y alarmar registros. Debido a problemas de mano de obra, tengo que lidiar con problemas de producción, así como con algunas operaciones y mantenimiento diarios. trabajo, así que tengo que investigar un poco sobre el monitoreo de registros y terminarlo el fin de semana.
En pocas palabras, el estado actual de operación y mantenimiento es que el departamento de operación y mantenimiento es de reciente creación. Antes, todo era I + D y autogestionado, y cada uno hacía lo suyo, por lo que hay muchos problemas y Hay mucha construcción no estándar. De hecho, esto es muy doloroso. Lo que estoy haciendo recientemente es clasificar diferentes sistemas.
Es básicamente una construcción de 0 a 1. Cuando estaba construyendo alces antes, realmente pensé en cómo hacer el monitoreo de registros posterior. La idea original era escribirlo yo mismo, pero no tenía suficiente tiempo ni tanta energía. para hacerlo Haz estas cosas.
Hace mucho tiempo, hubo algunos complementos, elastalert y sentinl. El primero no se actualizó hace mucho tiempo. El segundo actualmente solo es compatible con la versión 7, así que vi elastalert2 y eché un vistazo a la última actualización. Fue reciente, y la documentación también es muy completa, aunque está toda en inglés.
elastalert2 Referencias:
文档:https://elastalert2.readthedocs.io/en/latest/index.html
github地址:https://github.com/jertel/elastalert2
Este complemento admite la implementación de Docker y la implementación en K8. Se proporcionan los archivos Docker y Helm relevantes y, básicamente, están listos para usar de inmediato.
Lo inicié directamente con Python local. Si necesita Docker o K8, puede comprobarlo usted mismo.
Software y versiones requeridos:
python 3.10
opensll 1.1.1 (python 3.10需要)
Si instala Python, no entraré en detalles aquí.
Pasos de instalación:
pip install elastalert2 (可能会有setuptools版本低的情况,自行更新)
git clone https://github.com/jertel/elastalert2.git
python setup.py install
Dos archivos de configuración:
Una es la configuración básica, hay una configuración básica en los ejemplos.
#必须配置项
#告警规则目录
rules_folder: examples/rules
run_every:
minutes: 1
buffer_time:
minutes: 15
es_host: es ip
es_port: 9200
#非必须配置
#因为我是开启了鉴权的,所有需要开启ssl认证
use_ssl: True
es_username: user
es_password: passwd
ca_certs: ./http_ca.crt
#会建立一个对应d的索引,后面可以直接去建立
writeback_index: elastalert_status
#retry window for failed alerts.
alert_time_limit:
days: 2
Luego está la configuración de las reglas de alarma.
El valor predeterminado está en la carpeta de reglas en ejemplos. Ya hay bastantes configuraciones básicas, que se pueden configurar según sea necesario. Configuré un tipo de frecuencia aquí como prueba.
El tipo de frecuencia está más en línea con una medida de alerta diaria, y la alerta temprana se puede dar de acuerdo con el número de ocurrencias dentro del rango de tiempo.
Admite bastantes canales de alarma. Puede leer la introducción oficial. Utilizo el canal POST aquí y luego proceso los datos y la alarma a través del robot Qiwei. El Prometheus anterior también usaba esta alarma. El formato de datos es diferente. .
Canales de alarma soportados:
En cuanto a la configuración de reglas, puedes ver:
#可以针对字段做一些添加,这个策略的话,就是30分钟内出现50次404就告警
#query 也可以根据一些实际的需求进行调整
#而且支持多个rule配置文件
name: "Exemple webhook alert"
type: frequency
index: ng*
use_strftime_index: true
filter:
- query:
query_string:
query: "status: 404"
num_events: 50
timeframe:
hours: 0.5
realert:
minutes: 0
include: ["time_local","fields.host_ip"]
alert_text: "Alerts at {0} on the host {1}.\n```"
alert_text_args: ["timestamp","status"]
alert: post
http_post_url: "http://192.168.200.9:5001"
Antes de comenzar, debe inicializar el índice y ejecutar directamente:
Si la autenticación está habilitada, también puedes hacer una prueba para ver si puedes conectarte a elasticsearch.
$elastalert-create-index
New index name (Default elastalert_status)
Name of existing index to copy (Default None)
New index elastalert_status created
Done!
El archivo de configuración de reglas está listo, también puede hacer una prueba para verificar si el archivo de configuración es normal
Esto se puede lograr con el siguiente comando:
#这个命令也可以通过 -h 然后帮助
#这条命令只是检测配置文件是否正常
#如果要确认是告警是否能触发的话,需要加 --alert
elastalert-test-rule ./examples/rules/exemple_discord_any.yaml --config=./examples/config.yaml
De hecho, al comienzo de mi prueba, seguía informando 0 resultados. De hecho, hay un problema con la configuración del índice. Puede probarlo varias veces usted mismo.
Esa es la pregunta, pero la respuesta es sólo una sugerencia.
Cuando agrega --alert a la prueba, si hay una coincidencia, puede activar una alarma, como esta
El efecto real sobre Qiwei Robot es el siguiente:
Por supuesto, usted mismo puede definir algunos campos en la alarma. Esta es solo la primera versión y el camino es claro.
Para este último, pueden ser algunas palabras clave de registro específicas, agregar una estrategia de recuperación de alarma, etc. Si hay tiempo más tarde, lo actualizaré.