
ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΡΡΠ°Π½Π° Π²Π°ΠΆΠ½Π° ΡΠ°ΡΡ ΠΎΡ Π½Π°ΡΠ°ΡΡΠ²Π°ΡΠΈΡΠ΅ ΠΎΠ±Π»Π°ΡΠ½ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ, Ρ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΠ° Π½Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΈ. Π’ΠΎΠΉ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Π·Π° ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΡΡ Π½ΠΎΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ ΡΠ° ΠΌΠ°ΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ, ΠΊΠΎΠΈΡΠΎ Π΄Π° ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΡΠ±Π΅ΡΠ°Ρ Π΄Π°Π½Π½ΠΈ ΠΎΡ Π²ΡΠΈΡΠΊΠΈ ΡΡΠ»ΡΠ³ΠΈ ΠΈ Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΈΡΠ΅ Π΅Π΄ΠΈΠ½Π΅Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Ρ Π°Π½Π°Π»ΠΈΠ· Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°, Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ, Π½Π°Π»ΠΈΡΠ½ΠΎΡΡ ΠΈ ΠΆΡΡΠ½Π°Π»ΠΈ.
Π’Π΅Π·ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΈ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΈ. Π ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π΄Π²Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ½ΠΈ ΡΡΠ΅ΠΊΠ°: EFK (Elasticsearch) ΠΈ PLG (Loki) ΠΈ ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΡΡΡ Π½Π°ΡΠ° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΈ ΡΠ°Π·Π»ΠΈΠΊΠΈ.
Π‘ΡΠ΅ΠΊ EFK
ΠΠΎΠΆΠ΅ Π±ΠΈ Π²Π΅ΡΠ΅ ΡΡΠ΅ ΡΡΠ»ΠΈ Π·Π° ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈΡ ELK ΠΈΠ»ΠΈ EFK. Π‘ΡΠ΅ΠΊΡΡ ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΡΠ°ΡΡΠΈ: Elasticsearch (ΠΎΠ±Π΅ΠΊΡΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅), Logstash ΠΈΠ»ΠΈ FluentD (ΡΡΠ±ΠΈΡΠ°Π½Π΅ ΠΈ Π°Π³ΡΠ΅Π³Π°ΡΠΈΡ Π½Π° ΠΆΡΡΠ½Π°Π»ΠΈ) ΠΈ Kibana Π·Π° Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ.
Π’ΠΈΠΏΠΈΡΠ½Π°ΡΠ° ΡΡ Π΅ΠΌΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡΠ°ΠΊΠ°:

Elasticsearch β ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΎΠ±Π΅ΠΊΡΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Ρ ΡΡΡΡΠ΅Π½Π΅ ΠΈ Π°Π½Π°Π»ΠΈΡΠΈΠΊΠ° Π² ΡΠ΅Π°Π»Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅. ΠΡΠ»ΠΈΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π° ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΡΡΡΡΠΊΡΡΡΠΈΡΠ°Π½ΠΈ Π΄Π°Π½Π½ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΆΡΡΠ½Π°Π»ΠΈ. ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ° ΡΠ΅ Π·Π°ΠΏΠ°Π·Π²Π° ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° JSON Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈ, ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ° ΡΠ΅ Π² ΡΠ΅Π°Π»Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΈ ΡΠ΅ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Ρ ΠΏΠΎ Π²ΡΠ·Π»ΠΈΡΠ΅ Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠ°. ΠΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠ°Π½ ΠΈΠ½Π΄Π΅ΠΊΡ, ΠΊΠΎΠΉΡΠΎ ΡΡΠ΄ΡΡΠΆΠ° Π²ΡΠΈΡΠΊΠΈ ΡΠ½ΠΈΠΊΠ°Π»Π½ΠΈ Π΄ΡΠΌΠΈ ΠΈ ΡΠ²ΡΡΠ·Π°Π½ΠΈΡΠ΅ Ρ ΡΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΠΏΡΠ»Π½ΠΎΡΠ΅ΠΊΡΡΠΎΠ²ΠΎ ΡΡΡΡΠ΅Π½Π΅, ΠΎΡΠ½ΠΎΠ²Π°Π²Π°ΡΠΎ ΡΠ΅ Π½Π° ΡΡΡΡΠ°ΡΠΊΠ°ΡΠ° Apache Lucene.
FluentD β ΡΠΎΠ²Π° Π΅ ΡΡΠ±ΠΈΡΠ°Ρ Π½Π° Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΉΡΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ ΠΏΡΠΈ ΡΡΡ Π½ΠΎΡΠΎ ΡΡΠ±ΠΈΡΠ°Π½Π΅ ΠΈ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅. Π’ΠΎΠΉ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π° Π΄Π° ΠΏΠΎΠ΄ΡΠ΅Π΄ΠΈ Π΄Π°Π½Π½ΠΈΡΠ΅ Π² JSON, Π΄ΠΎΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠΠ΅Π³ΠΎΠ²Π°ΡΠ° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π΅ ΡΠ°Π·ΡΠΈΡΡΠ΅ΠΌΠ°, ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ Π½Π°Π΄ , ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈ ΠΎΡ ΠΎΠ±ΡΠ½ΠΎΡΡΡΠ°, Π·Π° Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ ΡΠ»ΡΡΠ°ΠΈ.
Kibana β ΡΡΠ΅Π΄ΡΡΠ²ΠΎ Π·Π° Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Π΄Π°Π½Π½ΠΈ Π·Π° Elasticsearch Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π°Π½Π°Π»ΠΈΠ· Π½Π° Π²ΡΠ΅ΠΌΠ΅Π²ΠΈ ΡΠ΅Π΄ΠΎΠ²Π΅, Π³ΡΠ°ΡΠΈ, ΠΌΠ°ΡΠΈΠ½Π½ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ Π΄ΡΡΠ³ΠΈ.
ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π½Π° Elasticsearch
ΠΠ°Π½Π½ΠΈΡΠ΅ Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Elasticsearch ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠΈΡΠΊΠΈ Π½Π΅Π³ΠΎΠ²ΠΈ Π²ΡΠ·Π»ΠΈ. ΠΠ»Π°ΡΡΠ΅ΡΡΡ ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π²ΡΠ·Π»ΠΈ Π·Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Π½Π΅ Π½Π° Π½Π°Π»ΠΈΡΠ½ΠΎΡΡΡΠ° ΠΈ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡΠ°. ΠΡΠ΅ΠΊΠΈ Π²ΡΠ·Π΅Π» ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° Π²ΡΠΈΡΠΊΠΈ ΡΠΎΠ»ΠΈ Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠ°, Π½ΠΎ Π² Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΌΠ°ΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΈ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π½Π° Π²ΡΠ·Π»ΠΈΡΠ΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ΅ Π½Π°Π·Π½Π°ΡΠ°Π²Π°Ρ ΠΎΡΠ΄Π΅Π»Π½ΠΈ Π·Π°Π΄Π°ΡΠΈ.
Π’ΠΈΠΏΠΎΠ²Π΅ Π²ΡΠ·Π»ΠΈ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ°:
- master node β ΡΠΏΡΠ°Π²Π»ΡΠ²Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠ°, Π½ΡΠΆΠ½ΠΎ Π΅ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΡΡΠΈ, Π΅Π΄ΠΈΠ½ Π΅ Π°ΠΊΡΠΈΠ²Π΅Π½ Π²ΠΈΠ½Π°Π³ΠΈ;
- data node β ΡΡΡ ΡΠ°Π½ΡΠ²Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ°Π½ΠΈ Π΄Π°Π½Π½ΠΈ ΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π·Π°Π΄Π°ΡΠΈ Ρ ΡΡΡ ;
- ingest node β ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠΈ Π·Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΏΡΠ΅Π΄ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ°Π½Π΅;
- coordinating node β ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ, Π½Π°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π·Π°ΡΠ° Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΡΡΡΠ΅Π½Π΅, ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΈΡ Π½Π° ΠΌΠ°ΡΠΎΠ²Π° ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΡ;
- alerting node β ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π·Π°Π΄Π°ΡΠΈ Π·Π° ΡΠ²Π΅Π΄ΠΎΠΌΡΠ²Π°Π½Π΅;
- machine learning node β ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π·Π°Π΄Π°ΡΠΈ Π·Π° ΠΌΠ°ΡΠΈΠ½Π½ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅.
ΠΠ° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ°ΡΠ° ΠΏΠΎ-Π΄ΠΎΠ»Ρ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΊΠ°ΠΊ Π΄Π°Π½Π½ΠΈΡΠ΅ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ ΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈΡΠ°Ρ ΠΏΠΎ Π²ΡΠ·Π»ΠΈ Π·Π° ΠΏΠΎΡΡΠΈΠ³Π°Π½Π΅ Π½Π° ΠΏΠΎ-Π²ΠΈΡΠΎΠΊΠ° Π½Π°Π»ΠΈΡΠ½ΠΎΡΡ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅.

ΠΠ°Π½Π½ΠΈΡΠ΅ Π½Π° Π²ΡΡΠΊΠ° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ° ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ Π² ΠΈΠ½Π²Π΅ΡΡΠΈΡΠ°Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡ, ΡΡ Π΅ΠΌΠ°ΡΠ° ΠΏΠΎ-Π΄ΠΎΠ»Ρ ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΊΠ°ΠΊ ΡΠΎΠ²Π° ΡΡΠ°Π²Π°:

ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅
ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ , ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ helm chart:
$ helm install efk-stack stable/elastic-stack --set logstash.enabled=false --set fluentd.enabled=true --set fluentd-elasticsPLG ΡΡΠ΅ΠΊ
ΠΠ΅ ΡΠ΅ ΡΡΡΠ΄Π²Π°ΠΉΡΠ΅, Π°ΠΊΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΡΠ°Π·ΠΈ Π°Π±ΡΠ΅Π²ΠΈΠ°ΡΡΡΠ°, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π΅ ΠΏΠΎ-ΠΈΠ·Π²Π΅ΡΡΠ½Π° ΠΊΠ°ΡΠΎ Grafana Loki. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, ΡΠΎΠ·ΠΈ ΡΡΠ΅ΠΊ Π½Π°Π±ΠΈΡΠ° ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡ, Π·Π°ΡΠΎΡΠΎ ΠΏΡΠΈΠ»Π°Π³Π° Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»Π½ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ°Π½ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ. ΠΠΎΠΆΠ΅ Π±ΠΈ Π²Π΅ΡΠ΅ ΡΡΠ΅ ΡΡΠ²Π°Π»ΠΈ Π·Π° Grafana, ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ. ΠΠ΅ΠΉΠ½ΠΈΡΠ΅ ΡΡΠ·Π΄Π°ΡΠ΅Π»ΠΈ, Π²Π΄ΡΡ Π½ΠΎΠ²ΡΠ²Π°ΠΉΠΊΠΈ ΡΠ΅ ΠΎΡ Prometheus, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΈΠ»ΠΈ Loki, Ρ ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»Π½ΠΎ ΠΌΠ°ΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠ° Π²ΠΈΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° Π°Π³ΡΠ΅Π³Π°ΡΠΈΡ Π½Π° Π»ΠΎΠ³ΠΎΠ²Π΅. Loki ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ° ΡΠ°ΠΌΠΎ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈ, Π° Π½Π΅ ΡΠ°ΠΌΠΈΡΠ΅ Π»ΠΎΠ³ΠΎΠ²Π΅, ΡΠΎΠ²Π° ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π΄Π° Π±ΡΠ΄Π΅ Π»Π΅ΡΠ΅Π½ Π·Π° Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠ°ΡΠΈΡ ΠΈ ΠΈΠΊΠΎΠ½ΠΎΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ·Π³ΠΎΠ΄Π΅Π½.
Promtail β Π°Π³Π΅Π½Ρ Π·Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° Π»ΠΎΠ³ΠΎΠ²Π΅ ΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π² ΠΊΠ»Π°ΡΡΡΠ° Π½Π° Loki. Grafana β ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ, ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ Loki.

Loki Π΅ ΠΏΠΎΡΡΡΠΎΠ΅Π½ Π½Π° ΡΡΡΠΈΡΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈ, ΠΊΠ°ΠΊΡΠΎ Prometheus, ΡΠ°ΠΊΠ° ΡΠ΅ Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈ Π°Π½Π°Π»ΠΈΠ· Π½Π° Π»ΠΎΠ³ΠΎΠ²Π΅ ΠΎΡ Kubernetes.
ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π½Π° Loki
Loki ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΡΠ°ΡΡΠΈΡΠ°Π½ ΠΊΠ°ΠΊΡΠΎ Π² ΡΠ΅ΠΆΠΈΠΌ Π½Π° Π΅Π΄ΠΈΠ½ ΠΏΡΠΎΡΠ΅Ρ, ΡΠ°ΠΊΠ° ΠΈ ΠΊΠ°ΡΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΡΠ΅ΡΠΈ, ΠΊΠΎΠ΅ΡΠΎ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° Ρ ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»Π½ΠΎ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Π½Π΅.

Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΠΊΠ°ΠΊΡΠΎ ΠΊΠ°ΡΠΎ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΠ°ΠΊΠ° ΠΈ ΠΊΠ°ΡΠΎ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΠ·. Π‘ΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π² ΡΠ΅ΠΆΠΈΠΌ Π½Π° Π΅Π΄ΠΈΠ½ ΠΏΡΠΎΡΠ΅Ρ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π·Π° Π»ΠΎΠΊΠ°Π»Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΠ»ΠΈ Π·Π° ΠΌΠ°Π»ΡΠΊ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³. ΠΠ° ΠΏΡΠΎΠΌΠΈΡΠ»Π΅Π½ΠΎ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ ΠΈ ΠΌΠ°ΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠ° Π½Π°ΡΠΎΠ²Π°ΡΠ΅Π½ΠΎΡΡ ΡΠ΅ ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ²Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½ΠΈΡΡ Π²Π°ΡΠΈΠ°Π½Ρ. ΠΡΡΠΈΡΠ°ΡΠ° Π·Π° Π·Π°ΠΏΠΈΡ ΠΈ ΡΠ΅ΡΠ΅Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΡΠ° ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈ, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π½Π°ΡΡΡΠΎΠ΅Π½ΠΈ ΠΈ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Π½ΠΈ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡ.
ΠΠ΅ΠΊΠ° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° ΡΡΠ±ΠΈΡΠ°Π½Π΅ Π½Π° Π»ΠΎΠ³ΠΎΠ²Π΅ Π±Π΅Π· Π΄Π΅ΡΠ°ΠΉΠ»ΠΈ:

Π Π΅ΡΠΎ ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ (ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°):

Π‘ΡΡΡΠ°Π²Π½ΠΈ ΡΠ°ΡΡΠΈ:
Promtail β Π°Π³Π΅Π½Ρ, ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ Π½Π° Π²ΡΠ·Π»ΠΈΡΠ΅ (ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° Π½Π°Π±ΠΎΡ ΠΎΡ ΡΡΠ»ΡΠ³ΠΈ), ΡΠΎΠΉ Π·Π°ΠΏΠΈΡΠ²Π° ΠΆΡΡΠ½Π°Π»ΠΈΡΠ΅ ΠΎΡ Π·Π°Π΄Π°ΡΠΈΡΠ΅ ΠΈ ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π° Ρ API Kubernetes Π·Π° ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈ, Ρ ΠΊΠΎΠΈΡΠΎ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΎΠ·Π½Π°ΡΠ°Π²Π°Π½ΠΈ ΠΆΡΡΠ½Π°Π»ΠΈΡΠ΅. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΠΎΠΉ ΠΈΠ·ΠΏΡΠ°ΡΠ° ΠΆΡΡΠ½Π°Π»Π° ΠΊΡΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡ Loki. ΠΠ° ΡΡΠΏΠΎΡΡΠ°Π²ΡΠ½Π΅ Π½Π° ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈΡΠ΅ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΡΡΡΠΈΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π° ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅, ΠΊΠ°ΠΊΡΠΎ Π² Prometheus.
ΠΠΈΡΡΡΠΈΠ±ΡΡΠΎΡ β ΡΠ΅ΡΠ²ΠΈΡ-Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΎΡ, ΡΠ°Π±ΠΎΡΠ΅Ρ ΠΊΠ°ΡΠΎ Π±ΡΡΠ΅Ρ. ΠΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΌΠΈΠ»ΠΈΠΎΠ½ΠΈ Π·Π°ΠΏΠΈΡΠΈ ΡΠΎΠΉ ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ° Π²Ρ ΠΎΠ΄ΡΡΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΌΠΏΡΠ΅ΡΠΈΡΠ°ΠΉΠΊΠΈ Π³ΠΈ Π½Π° Π±Π»ΠΎΠΊΠΎΠ²Π΅ ΠΏΠΎ ΠΌΡΡΠΊΠ° Π½Π° ΡΡΡ Π½ΠΎΡΠΎ ΠΏΠΎΡΡΡΠΏΠ²Π°Π½Π΅. Π Π°Π±ΠΎΡΡΡ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ° Π½Π° Π΄Π°Π½Π½ΠΈ, Π½ΠΎ ΠΆΡΡΠ½Π°Π»ΠΈΡΠ΅, ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΠΈ Π½Π° Π΅Π΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ ΠΎΡ Π²Ρ ΠΎΠ΄ΡΡΠΈ Π΄Π°Π½Π½ΠΈ, ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π½Π°ΠΌΠΈΡΠ°Ρ ΡΠ°ΠΌΠΎ Π² Π΅Π΄ΠΈΠ½ ΠΎΡ ΡΡΡ Π·Π° Π²ΡΠΈΡΠΊΠΈ Π½Π΅Π³ΠΎΠ²ΠΈ Π±Π»ΠΎΠΊΠΎΠ²Π΅. Π’ΠΎΠ²Π° Π΅ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½ΠΎ Π² Π²ΠΈΠ΄ Π½Π° ΠΊΡΡΠ³ Π½Π° ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΡΠΈΡΠ΅ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ Ρ Π΅ΡΠΈΡΠ°Π½Π΅. ΠΠ° ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡ ΠΈ ΠΈΠ·Π»ΠΈΡΠ½ΠΎΡΡ, ΡΠΎ ΡΠ΅ ΠΏΡΠ°Π²ΠΈ n ΠΏΡΡΠΈ (3, Π°ΠΊΠΎ Π½Π΅ Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ΠΎ).
Ingester β ΡΠ΅ΡΠ²ΠΈΡ-ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊ. ΠΠ»ΠΎΠΊΠΎΠ²Π΅ΡΠ΅ Π΄Π°Π½Π½ΠΈ ΠΈΠ΄Π²Π°Ρ ΠΊΠΎΠΌΠΏΡΠ΅ΡΠΈΡΠ°Π½ΠΈ Ρ Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈΡΠ΅ ΠΆΡΡΠ½Π°Π»ΠΈ. ΠΠ΅Π΄Π½Π°Π³Π° ΡΠΎΠΌ Π±Π»ΠΎΠΊΡΡ Π΄ΠΎΡΡΠΈΠ³Π½Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ΅Π½ ΡΠ°Π·ΠΌΠ΅Ρ, ΡΠΎΠΉ ΡΠ΅ Π·Π°ΠΏΠΈΡΠ²Π° Π² Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ. ΠΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈΡΠ΅ ΠΎΡΠΈΠ²Π°Ρ Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ°, Π° Π΄Π°Π½Π½ΠΈΡΠ΅ ΠΎΡ Π±Π»ΠΎΠΊΠ° Ρ ΠΆΡΡΠ½Π°Π»Π° ΠΏΠΎΠΏΠ°Π΄Π°Ρ Π² Chunks (ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠΎΠ²Π° Π΅ ΠΎΠ±Π΅ΠΊΡΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅). Π‘Π»Π΅Π΄ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ, ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊΡΡ ΡΡΠ·Π΄Π°Π²Π° Π½ΠΎΠ² Π±Π»ΠΎΠΊ, Π² ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΡΡ Π½ΠΎΠ²ΠΈ Π·Π°ΠΏΠΈΡΠΈ.

ΠΠ½Π΄Π΅ΠΊΡ β Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ, DynamoDB, Cassandra, Google BigTable ΠΈ Π΄Ρ.
Chunks β Π±Π»ΠΎΠΊΠΎΠ²Π΅ Π½Π° ΠΆΡΡΠ½Π°Π»ΠΈΡΠ΅ Π² ΠΊΠΎΠΌΠΏΡΠ΅ΡΠΈΡΠ°Π½ Π²ΠΈΠ΄, ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Π½ΠΈ Π² ΠΎΠ±Π΅ΠΊΡΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, S3.
ΠΠ°ΠΏΠΈΡΠ²Π°Ρ β ΠΏΡΡ Π·Π° ΡΠ΅ΡΠ΅Π½Π΅, ΠΊΠΎΠΉΡΠΎ Π²ΡΡΡΠΈ ΡΡΠ»Π°ΡΠ° ΡΠ΅ΡΠ½Π° ΡΠ°Π±ΠΎΡΠ°. Π’ΠΎΠΉ ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π° Π²ΡΠ΅ΠΌΠ΅Π²ΠΈΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΈ Π΅ΡΠΈΠΊΠ΅ΡΠΈΡΠ΅, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π° ΠΈΠ½Π΄Π΅ΠΊΡΠ° Π·Π° ΡΡΡΡΠ΅Π½Π΅ Π½Π° ΡΡΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ΡΠ΅ Π±Π»ΠΎΠΊΠΎΠ²Π΅ΡΠ΅ Π΄Π°Π½Π½ΠΈ ΠΈ Π³ΠΈ ΡΠΈΠ»ΡΡΠΈΡΠ° Π·Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ.
Π ΡΠ΅Π³Π° Π½Π΅ΠΊΠ° Π²ΠΈΠ΄ΠΈΠΌ Π²ΡΠΈΡΠΊΠΎ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅.
ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅
ΠΠ° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π² Kubernetes Π΅ Π½Π°ΠΉ-Π»Π΅ΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° helm. ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π° ΡΠ΅, ΡΠ΅ Π²Π΅ΡΠ΅ ΡΡΠ΅ Π³ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π»ΠΈ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π»ΠΈ ( ΠΏΡΠΈΠΌ. ΠΏΡΠ΅Π²ΠΎΠ΄Π°ΡΠ°)
ΠΠΎΠ±Π°Π²ΡΠΌΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈ ΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌΠ΅ ΡΡΠ΅ΠΊΠ°.
$ helm repo add loki https://grafana.github.io/loki/charts
$ helm repo update
$ helm upgrade --install loki loki/loki-stack --set grafana.enabled=true,prometheus.enabled=true,prometheus.alertmanager.persistentVolume.enabled=false,prometheus.server.persistentVolume.enabled=falseΠΠΎ-Π΄ΠΎΠ»Ρ Π΅ ΠΏΡΠΈΠΌΠ΅Ρ Π½Π° ΡΠ°Π±Π»ΠΎΡΠΎ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, Π½Π° ΠΊΠΎΠ΅ΡΠΎ ΡΠ° ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈ Π΄Π°Π½Π½ΠΈΡΠ΅ ΠΎΡ Prometheus Π·Π° ΠΌΠ΅ΡΡΠΈΠΊΠΈΡΠ΅ Etcd ΠΈ Loki Π·Π° ΠΆΡΡΠ½Π°Π»ΠΈΡΠ΅ Π½Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅ΡΠ΅ Etcd.

Π ΡΠ΅Π³Π° Π½Π΅ΠΊΠ° ΠΎΠ±ΡΡΠ΄ΠΈΠΌ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° Π½Π° Π΄Π²Π΅ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΈ Π΄Π° ΡΡΠ°Π²Π½ΠΈΠΌ ΡΠ΅Ρ Π½ΠΈΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈ.
Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅
ΠΠ·ΠΈΠΊ Π½Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡΡΠ°
Π Elasticsearch ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Query DSL ΠΈ Lucene query language, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΏΡΠ»Π½ΠΎΡΠ΅ΠΊΡΡΠΎΠ²ΠΎ ΡΡΡΡΠ΅Π½Π΅. Π’ΠΎΠ²Π° Π΅ ΡΡΠ²ΡΡΠ΄Π΅Π½ ΠΌΠΎΡΠ΅Π½ ΡΡΡΡΠ°Ρ, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΡΠΈΡΠΎΠΊΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ. Π‘ Π½Π΅Π³ΠΎΠ²Π° ΠΏΠΎΠΌΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΡΡΡΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΈ Π΄Π° ΡΠ΅ ΡΠΎΡΡΠΈΡΠ° ΠΏΠΎ ΡΠ΅Π»Π΅Π²Π°Π½ΡΠ½ΠΎΡΡ.
ΠΠ° Π΄ΡΡΠ³Π°ΡΠ° ΡΡΡΠ°Π½Π° Π½Π° ΡΠΈΠ½Π³Π° Π΅ LogQL, ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠΌ Π² Loki, Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊ Π½Π° PromQL (Prometheus query language). Π’ΠΎΠΉ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΌΠ΅ΡΠΊΠΈ Π½Π° ΠΆΡΡΠ½Π°Π»ΠΈΡΠ΅ Π·Π° ΡΠΈΠ»ΡΡΠΈΡΠ°Π½Π΅ ΠΈ ΠΈΠ·Π±ΠΎΡΠ° Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ ΠΆΡΡΠ½Π°Π»ΠΈΡΠ΅. ΠΠΌΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π½ΡΠΊΠΎΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ ΠΈ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠ°, ΠΊΠ°ΠΊΡΠΎ Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΎ , Π½ΠΎ ΠΏΠΎ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈΠ·ΠΎΡΡΠ°Π²Π° ΠΎΡ Elastic language.
Π’ΡΠΉ ΠΊΠ°ΡΠΎ Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ Π² Loki ΡΠ° ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΌΠ΅ΡΠΊΠΈΡΠ΅, ΡΠ΅ Π»Π΅ΡΠ½ΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΌΠ΅ΡΡΠΈΠΊΠΈ, Π² ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΠΊΠΎΠ΅ΡΠΎ Π΅ ΠΏΠΎ-Π»Π΅ΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠ΅.
ΠΠ°ΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡ
Π Π΄Π²Π°ΡΠ° ΡΡΠ΅ΠΊΠ° ΡΠ° Ρ ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»Π½ΠΎ ΠΌΠ°ΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΈ, Π½ΠΎ Ρ Loki ΡΠΎΠ²Π° Π΅ ΠΏΠΎ-Π»Π΅ΡΠ½ΠΎ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π° Ρ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈ ΠΏΡΡΠΈΡΠ° Π·Π° ΡΠ΅ΡΠ΅Π½Π΅ ΠΈ Π·Π°ΠΏΠΈΡ Π½Π° Π΄Π°Π½Π½ΠΈ, Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΈΠΌΠ° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΠ·Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°. Loki ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π½Π°ΡΡΡΠΎΠ΅Π½ Π² ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ Π²Π°ΡΠΈΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½ΠΎΡΡΠΈ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΎΠ±Π΅ΠΌΠΈ Π΄Π°Π½Π½ΠΈ ΠΎΡ ΠΆΡΡΠ½Π°Π»ΠΈΡΠ΅.
ΠΡΠ»ΡΠΈΠ°ΡΠ΅Π½Π΄Π½ΠΎΡΡ
ΠΡΠ»ΡΠΈΠ°ΡΠ΅Π½Π΄Π½ΠΎΡΡΡΠ° Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ° Π΅ ΠΎΠ±ΡΠ° ΡΠ΅ΠΌΠ° Π·Π° Π½Π°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅ Π½Π° OPEX, ΠΈ Π΄Π²Π°ΡΠ° ΡΡΠ΅ΠΊΠ° ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΠΌΡΠ»ΡΠΈΠ°ΡΠ΅Π½Π΄Π½ΠΎΡΡ. ΠΠ° Elasticsearch ΠΈΠΌΠ° Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π·Π° ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅: ΠΎΡΠ΄Π΅Π»Π΅Π½ ΠΈΠ½Π΄Π΅ΠΊΡ Π·Π° Π²ΡΠ΅ΠΊΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ, ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π±Π°Π·Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΡΠ½ΠΈΠΊΠ°Π»Π½ΠΈ ΠΏΠΎΠ»Π΅ΡΠ° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΡΡΡΡΠ΅ΡΠΈ ΡΠΈΠ»ΡΡΠΈ. Π Loki ΠΈΠΌΠ° ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ HTTP Π·Π°Π³Π»Π°Π²ΠΊΠ° X-Scope-OrgID.
Π¦Π΅Π½Π°
Loki Π΅ ΠΈΠΊΠΎΠ½ΠΎΠΌΠΈΡΠ΅ΡΠΊΠΈ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π΅Π½, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π½Π΅ ΠΈΠ½Π΄Π΅ΠΊΡira Π΄Π°Π½Π½ΠΈ, Π° ΡΠ°ΠΌΠΎ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈ. ΠΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½ ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π° ΠΈ ΠΏΠ°ΠΌΠ΅Ρ (ΠΊΠ΅Ρ), ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΎΠ±Π΅ΠΊΡΠ½ΠΎΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π΅ ΠΏΠΎ-Π΅Π²ΡΠΈΠ½ΠΎ ΠΎΡ Π±Π»ΠΎΡΠ½ΠΎΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΊΠ»ΡΡΡΠ΅ΡΠΈ Π½Π° Elasticsearch.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π‘ΡΠ΅ΠΊΡΡ EFK ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠ΅Π»ΠΈ, ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΠ° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½Π° Π³ΡΠ²ΠΊΠ°Π²ΠΎΡΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π΅Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Kibana Π·Π° Π°Π½Π°Π»ΠΈΠ·ΠΈ, Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ. Π’ΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΠΈ Π·Π° ΠΌΠ°ΡΠΈΠ½Π½ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅.
Π‘ΡΠ΅ΠΊΡΡ Loki Π΅ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π² Π΅ΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π½Π° Kubernetes Π·Π°ΡΠ°Π΄ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° ΠΎΡΠΊΡΠΈΡΠΈΠ΅ Π½Π° ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈ. ΠΠ΅ΡΠ½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΡΠΏΠΎΡΡΠ°Π²ΡΡ Π΄Π°Π½Π½ΠΈ Π·Π° Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠ΅, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° Π²ΡΠ΅ΠΌΠ΅Π²ΠΈ ΡΠ΅Π΄ΠΎΠ²Π΅ Π² Grafana ΠΈ ΠΆΡΡΠ½Π°Π»ΠΈΡΠ΅.
ΠΠΎΠ³Π°ΡΠΎ ΡΡΠ°Π²Π° Π²ΡΠΏΡΠΎΡ Π·Π° ΡΠ°Π·Ρ ΠΎΠ΄ΠΈΡΠ΅ ΠΈ Π΄ΡΠ»Π³ΠΎΡΡΠΎΡΠ½ΠΎΡΠΎ ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΆΡΡΠ½Π°Π»ΠΈΡΠ΅, Loki Π΅ ΠΎΡΠ»ΠΈΡΠ΅Π½ ΠΈΠ·Π±ΠΎΡ Π·Π° Π²Ρ ΠΎΠ΄ Π² ΠΎΠ±Π»Π°ΡΠ½ΠΈΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ.
ΠΠ° ΠΏΠ°Π·Π°ΡΠ° ΠΈΠΌΠ° ΠΏΠΎΠ²Π΅ΡΠ΅ Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²ΠΈ β Π½ΡΠΊΠΎΠΈ ΠΎΡ ΡΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ° ΠΏΠΎ-Π΄ΠΎΠ±ΡΠΈ Π·Π° Π²Π°Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° GKE ΠΈΠΌΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Stackdriver, ΠΊΠΎΡΡΠΎ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π° ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³. ΠΠΈΠ΅ Π½Π΅ Π³ΠΈ Π²ΠΊΠ»ΡΡΠΈΡ ΠΌΠ΅ Π² Π½Π°ΡΠΈΡ Π°Π½Π°Π»ΠΈΠ· Π² ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ.
ΠΡΡΠ·ΠΊΠΈ:
Π‘ΡΠ°ΡΠΈΡΡΠ° Π΅ ΠΏΡΠ΅Π²Π΅Π΄Π΅Π½Π° ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½Π° Π·Π° Π₯Π°Π±ΡΠ° ΠΎΡ ΡΠ»ΡΠΆΠΈΡΠ΅Π»ΠΈΡΠ΅ Π½Π° β ΠΈΠ½ΡΠ΅Π½Π·ΠΈΠ²Π½ΠΈ ΠΊΡΡΡΠΎΠ²Π΅, Π²ΠΈΠ΄Π΅ΠΎΡΡΠΎΡΠΈ ΠΈ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΡ ΠΏΡΠ°ΠΊΡΠΈΠΊΡΠ²Π°ΡΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΈ (Kubernetes, DevOps, Docker, Ansible, Ceph, SRE, Agile)
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
