Connexion Ă  Kubernetes: comment collecter, stocker, analyser et traiter les journaux

Nous analyserons les bases de la journalisation dans Docker et Kubernetes, puis examinerons deux outils pouvant être utilisés en toute sécurité en production: Grafana Loki et la pile EFK (Elasticsearch + Fluent Bit + Kibana).



Le matériel de l'article est un extrait de la conférence ouverte de l'école Slurm . Si vous le souhaitez, et plus encore pour un besoin de production, vous pouvez suivre une formation complète - inscrivez-vous à un cours sur l' infrastructure de surveillance et de journalisation dans Kubernetes .





Journalisation Docker



Au niveau de Kubernetes, les applications s'exécutent dans des pods, mais au niveau inférieur, elles s'exécutent généralement dans Docker. Par conséquent, vous devez configurer la journalisation de manière à collecter les journaux des conteneurs. Docker lance des conteneurs - vous devez donc comprendre comment la journalisation fonctionne au niveau Docker.



, : stdout/stderr, . Docker Daemon, , stdout/stderr. : ( Logrotate ), Docker Daemon .



Docker - . Docker Community Edition (CE) - , Docker Enterprise Edition (EE).





Docker EE : Southbridge Open Source , Docker EE .



- Docker CE:



local — Docker Daemon;

json-file — json-log ;

journald — journald.



Docker daemon.json.



“log-driver” , “log-opts” — . “json-file”, — “max-size”: “10m”; ( ) — “max-file”: “3”; , .





- . , -.



Docker:





: -, json-file, . (Rsyslog, Fluentd, Logagent ) Elastic, Sematext .



Kubernetes



Kubernetes : pod, , stdout/stderr. Docker , .





Kubernetes.



. . , , . Kubernetes --previous, Pod, .



. , . , .



, . (, Rsyslog), — Docker (, journal-bit - Docker journald). journal-bit — ( - Docker , journald), ( CentOS 7 systemd journald). , . , journal-bit , .



— . CentOS 7 (messages, audit, secure) var- . Docker json. , CentOS 7 Docker .



ELK Stack. : Elasticsearch, Logstash Kibana.



Elasticsearch , Logstash , Kibana , . ELK Stack , , , . , .



. , , , . , . , , , Pod , namespace . .



. , . , , . — .



, , — , «warning» «error». nginx ingress-, , 200. : - Nginx, .



, . , , . 200. — ingress-.



, : , , , .



. , Prometheus, .



: , — . , .



, Kubernetes :





, , -, ( — Logging Backend). , , Kubernetes.



.



Grafana Loki



Grafana Loki , . : , , Elasticsearch, TSDB (time series database). , Prometheus, . , Loki — «Prometheus ».



TSDB , : TSDB , , . - , .



Loki — Grafana. : Grafana , Loki, . .



Loki :





DaemonSet — Promtail Fluent Bit. . Loki TSDB. , : Pods, namespaces, .



Loki



Loki Grafana. Loki , LogQL — PromQL Prometheus. Loki , .



LogQL





Loki Grafana



, Loki (“400”, “404” ); ; , “error”. , .



Loki , , , . Loki .



Elastic + Fluent Bit + Kibana (EFK Stack)



EFK — , .



ELK (Elasticsearch + Logstash + Kibana), - Logstash. Fluentd, Fluent Bit — -.



, Fluent Bit , 100 , Fluentd: «, Fluentd 20 , Fluent Bit 150 » — . , Fluent Bit .



Fluent Bit , Fluentd, , Fluent Bit.



EFK: ( , DaemonSet, ) (Elasticsearch, PostgreSQL Kafka). Kibana .





Kibana -. , .





.





Fluent Bit



Fluent Bit, , , Logstash, . Fluent Bit 6 , , Fluent Bit.





Input , systemd tcp-socket ( endpoint, Fluent Bit ). , , .



tail ( ) systemd ( , ).



Parser . Nginx . JSON: . JSON , , .



Filter. . , “warning” . .



Buffer. Fluent Bit : . — , . , . , .



Routing/Output . , Elasticsearch, PostgreSQL , , Kafka.



, Fluent Bit Fluentd. , Fluentd, , , .



Elasticsearch…



, Elasticsearch .

  1. ElastAlert. . , , .
  2. Curator API Elasticsearch. Elastic, , . : - — , . - . , 5 . , , .


...



: , Kubernetes, Southbridge, .




All Articles