Registro no Kubernetes: como coletar, armazenar, analisar e processar registros

Analisaremos os conceitos båsicos de registro no Docker e Kubernetes e, em seguida, consideraremos duas ferramentas que podem ser usadas com segurança na produção: Grafana Loki e a pilha EFK (Elasticsearch + Fluent Bit + Kibana).



O material do artigo Ă© um extrato da palestra aberta da escola Slurm . Se houver um desejo, e mais ainda para uma necessidade de produção, vocĂȘ pode concluir um treinamento completo - inscreva-se em um curso sobre infraestrutura de monitoramento e registro no Kubernetes .





Registro do Docker



No nĂ­vel do Kubernetes, os aplicativos sĂŁo executados em pods, mas no nĂ­vel abaixo eles geralmente sĂŁo executados no Docker. Portanto, vocĂȘ precisa configurar o registro de forma a coletar os registros dos contĂȘineres. Os contĂȘineres sĂŁo iniciados pelo Docker - entĂŁo vocĂȘ precisa descobrir como o registro funciona no nĂ­vel do 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