Analizaremos los conceptos básicos del registro en Docker y Kubernetes, y luego consideraremos dos herramientas que se pueden usar de manera segura en producción: Grafana Loki y la pila EFK (Elasticsearch + Fluent Bit + Kibana).
El material del artículo es un extracto de una conferencia abierta de la escuela Slurm . Si lo desea, y más aún para una necesidad de producción, puede completar una capacitación completa: inscríbase en un curso sobre Infraestructura de monitoreo y registro en Kubernetes .
Registro de Docker
En el nivel de Kubernetes, las aplicaciones se ejecutan en pods, pero en el nivel inferior, generalmente se ejecutan en Docker. Por lo tanto, debe configurar el registro de tal manera que recopile registros de contenedores. Los contenedores son lanzados por Docker, por lo que debe averiguar cómo funciona el registro en el nivel de 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 ».
Loki — Grafana. : Grafana , Loki, . .
Loki :
DaemonSet — Promtail Fluent Bit. . Loki TSDB. , : Pods, namespaces, .
Loki Grafana. Loki , LogQL — PromQL Prometheus. Loki , .
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 ). , , .
Parser . Nginx . JSON: . JSON , , .
Filter. . , “warning” . .
Buffer. Fluent Bit : . — , . , . , .
Routing/Output . , Elasticsearch, PostgreSQL , , Kafka.
, Fluent Bit Fluentd. , Fluentd, , , .
Elasticsearch…
, Elasticsearch .
- ElastAlert. . , , .
- Curator API Elasticsearch. Elastic, , . : - — , . - . , 5 . , , .
...
: , Kubernetes, Southbridge, .