Je suis en train de mettre à jour mon monitoring. Par. la même occasion je prepare un article pour mon blog et j’ai eu un problème intéressant. Les messages étaient bien récoltés et envoyés à Elasticsearch mais impossible de supprimer ceux devant des sous-modules. Mon objectif était d’éviter de recevoir toutes les requêtes faites par Kubernetes pour le liveness/readyness.
Mon exemple, avec le module Nginx et Kubernetes
- type: kubernetes
templates:
- condition:
- contains:
kubernetes.labels.k8s-app: nginx
config:
- module: nginx
access:
input:
type: container
paths:
- /var/log/containers/*-${data.kubernetes.container.id}.log
exclude_lines: ["^\\s+[\\-`('.|_]"]
processors:
- add_locale: ~
- drop_event.when.regexp.message: "kube-probe"
error:
input:
type: container
paths:
- /var/log/containers/*-${data.kubernetes.container.id}.log
exclude_lines: ["^\\s+[\\-`('.|_]"]
Je sais que potentiellement je vais rater des erreurs venant des vérification intégrées à Kubernetes mais cet événement est rare. De plus, en cas de problème, Kubernetes redémarrera automatiquement le pod et le module Filebeat associé détectera l’erreur.