This post is also available in English.
This post is also available in Romanian.
Las vacaciones invernales están cerca y mientras algunos de nosotros nos recogemos junto al fuego, o tal vez buscamos el aire fresco del mar, el importante es que tenemos algo en común: pasar las vacaciones con tranquilidad. Soy Site Reliability Engineer y entiendo perfectamente la necesidad de tener una guardia tranquila. Este articulo es mi regalo para aquellos de vosotros que empezáis a explorar la observabilidad Serverless, independientemente de si está ya implementada en vuestro entorno o aún no.
En unos artículos de nuestro blog Elastic, habéis podido ver como se despliega el Elastic Agent y cómo se integra con Kubernetes. Puede que habéis ido mas adelante y le ha interesado como se alerta en Kubernetes utilizando Elastic Observability. Enhorabuena! Ahora mi trabajo como SRE-duende es de iluminarle aun mas y ensenarle un truco: como alertar sobre la cola de los beats y desarrollar vuestra lista de alertas Serverless.
Probablemente queréis entrar en más profundidad en el reino de los beats y migrar a Elastic Agent. Un consejo: mucho cuidado cuando esas colas empiezan a apilar.
¿Por qué esas colas son tan importantes? Filebeat colecciona un snapshot de métrica sobre si mismo cada 30 segundos por defecto. Si este snapshot contiene alguna métrica, el snapshot sera serializado como JSON y emitido en los logs de Filbeat al nivelo de INFO.
Por ejemplo:
{"log.level":"info","@timestamp":"2023-07-14T12:50:36.811Z","log.logger":"monitoring","log.origin":{"file.name":"log/log.go","file.line":187},"message":"Non-zero metrics in the last 30s","service.name":"filebeat","monitoring":{"metrics":{"beat":{"cgroup":{"memory":{"mem":{"usage":{"bytes":0}}}},"cpu":{"system":{"ticks":692690,"time":{"ms":60}},"total":{"ticks":3167250,"time":{"ms":150},"value":3167250},"user":{"ticks":2474560,"time":{"ms":90}}},"handles":{"limit":{"hard":1048576,"soft":1048576},"open":32},"info":{"ephemeral_id":"2bab8688-34c0-4522-80af-db86948d547d","uptime":{"ms":617670096},"version":"8.6.2"},"memstats":{"gc_next":57189272,"memory_alloc":43589824,"memory_total":275281335792,"rss":183574528},"runtime":{"goroutines":212}},"filebeat":{"events":{"active":5,"added":52,"done":49},"harvester":{"open_files":6,"running":6,"started":1}},"libbeat":{"config":{"module":{"running":15}},"output":{"events":{"acked":48,"active":0,"batches":6,"total":48},"read":{"bytes":210},"write":{"bytes":26923}},"pipeline":{"clients":15,"events":{"active":5,"filtered":1,"published":51,"total":52},"queue":{"acked":48}}},"registrar":{"states":{"current":14,"update":49},"writes":{"success":6,"total":6}},"system":{"load":{"1":0.91,"15":0.37,"5":0.4,"norm":{"1":0.1138,"15":0.0463,"5":0.05}}}},"ecs.version":"1.6.0"}}
El siguiente campo .monitoring.metrics proporciona información específica sobre los objetos .beat, .libbeat o .filebeat. Para esta demostración, vamos a elegir el objeto .libbeat porque es el más común a todos los Beats y lo vamos a usar en nuestra definición de alerta Serverless.
El objeto .libbeat viene en varios sabores y nos ayudará a personalizar nuestras necesidades para esta alerta. Mi campo ganador que es .pipeline.events.active. En definitiva, este campo me enseñará que si el número de eventos continua creciendo, debería de prestar atención para que esta métrica no llegue al punto en el que alcanza la capacidad máxima de la cola. Cuando esto ocurra, Filebeat parará de ingerir temporalmente más eventos. No queremos esto. Vuestros SREs, y probablemente vuestro manager, serán mucho mas felices implementando la siguiente alerta.
La interfaz de usuario de Kibana ofrece el método mas rápido y sencillo para crear las alertas: he usado el campo monitoring.metrics.libbeat.pipeline.events.active con elastic-agent dentro de una agregación de tipo Log Threshold. Aquí el limite se puede ajustar como se estime oportuno, dependiendo del data stream y el input que estáis recibiendo.
Listo! Muy sencillo para desarrollar y por cierto, muy útil dentro y fuera del entorno Serverless. Antes de irnos, os invito a ver qué regalitos nos han traído mis compañeros de Elasticsearch en el lanzamiento 8.11. Hay una agregación muy guay dentro de las reglas de Observabilidad, Custom threshold que ya se puede aprovechar en vista previa técnica. No olvidéis de echar un vistazo al resto de actualizaciones de nuestro lanzamiento ¡y disfrutar el día de Navidad con mucha calma!