Π‘ΠΎΠ±ΠΈΡ€Π°ΡšΠ΅ Ρ‚Ρ€ΡƒΠΏΡ†ΠΈ ΠΎΠ΄ Π›ΠΎΠΊΠΈ

Π‘ΠΎΠ±ΠΈΡ€Π°ΡšΠ΅ Ρ‚Ρ€ΡƒΠΏΡ†ΠΈ ΠΎΠ΄ Π›ΠΎΠΊΠΈ

Π’ΠΎ Badoo, Π½ΠΈΠ΅ ΠΏΠΎΡΡ‚ΠΎΡ˜Π°Π½ΠΎ Π³ΠΈ слСдимС Π½ΠΎΠ²ΠΈΡ‚Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈ ΠΎΡ†Π΅Π½ΡƒΠ²Π°ΠΌΠ΅ Π΄Π°Π»ΠΈ Π²Ρ€Π΅Π΄ΠΈ Π΄Π° сС користат Π²ΠΎ Π½Π°ΡˆΠΈΠΎΡ‚ систСм. Π‘ΠΈ сакалС Π΄Π° сподСлимС Π΅Π΄Π½Π° ΠΎΠ΄ ΠΎΠ²ΠΈΠ΅ студии со Π·Π°Π΅Π΄Π½ΠΈΡ†Π°Ρ‚Π°. Вој Π΅ посвСтСн Π½Π° Π›ΠΎΠΊΠΈ, систСм Π·Π° Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΡ˜Π° Π½Π° Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈ.

Π›ΠΎΠΊΠΈ Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ ΠΈ ΠΏΡ€Π΅Π³Π»Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π»ΠΎΠ³ΠΎΠ²ΠΈ, Π° овој стСк ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° ΠΈ флСксибилСн систСм Π·Π° Π½ΠΈΠ²Π½Π° Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ ΠΈΡΠΏΡ€Π°ΡœΠ°ΡšΠ΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π΄ΠΎ ΠŸΡ€ΠΎΠΌΠ΅Ρ‚Π΅Ρ˜. Π’ΠΎ мај бСшС објавСно ΡƒΡˆΡ‚Π΅ Π΅Π΄Π½ΠΎ Π°ΠΆΡƒΡ€ΠΈΡ€Π°ΡšΠ΅, ΠΊΠΎΠ΅ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Π³ΠΎ ΠΏΡ€ΠΎΠΌΠΎΠ²ΠΈΡ€Π°Π°Ρ‚ ΠΊΡ€Π΅Π°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅. Π‘Π΅Π²ΠΌΠ΅ заинтСрСсирани Π·Π° Ρ‚ΠΎΠ° ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈ Loki, ΠΊΠ°ΠΊΠ²ΠΈ способности ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° ΠΈ Π΄ΠΎ кој стСпСн ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄Π΅Ρ˜ΡΡ‚Π²ΡƒΠ²Π° ΠΊΠ°ΠΊΠΎ Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° Π½Π° ELK, стСкот ΡˆΡ‚ΠΎ Π³ΠΎ користимС сСга.

Π¨Ρ‚ΠΎ Π΅ Π›ΠΎΠΊΠΈ

Grafana Loki Π΅ Π·Π±ΠΈΡ€ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π·Π° ΠΊΠΎΠΌΠΏΠ»Π΅Ρ‚Π΅Π½ систСм Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° со Ρ‚Ρ€ΡƒΠΏΡ†ΠΈ. Π—Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ слични систСми, Π›ΠΎΠΊΠΈ сС заснова Π½Π° ΠΈΠ΄Π΅Ρ˜Π°Ρ‚Π° Π·Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€Π°ΡšΠ΅ само ΠΌΠ΅Ρ‚Π°ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΎΠ΄ Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈ - Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ (исто ΠΊΠ°ΠΊΠΎ Π²ΠΎ ΠŸΡ€ΠΎΠΌΠ΅Ρ‚Π΅Ρ˜) ΠΈ ΠΊΠΎΠΌΠΏΡ€Π΅ΡΠΈΡ€Π°ΡšΠ΅ Π½Π° самитС Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈ Π²ΠΎ посСбни ΠΏΠ°Ρ€Ρ‡ΠΈΡšΠ°.

ΠŸΠΎΡ‡Π΅Ρ‚Π½Π° страница, GitHub

ΠŸΡ€Π΅Π΄ Π΄Π° Π²Π»Π΅Π·Π΅ΠΌΠ΅ Π²ΠΎ Ρ‚ΠΎΠ° ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ со Π›ΠΎΠΊΠΈ, сакам Π΄Π° Ρ€Π°Π·Ρ˜Π°ΡΠ½Π°ΠΌ ΡˆΡ‚ΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°ΠΌΠ΅ ΠΏΠΎΠ΄ β€žΠΈΠ΄Π΅Ρ˜Π°Ρ‚Π° Π·Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€Π°ΡšΠ΅ само ΠΌΠ΅Ρ‚Π°ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈβ€œ. АјдС Π΄Π° Π³ΠΎ спорСдимС пристапот Π½Π° Π›ΠΎΠΊΠΈ ΠΈ пристапот ΠΊΠΎΠ½ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€Π°ΡšΠ΅ Π²ΠΎ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΈΡ‚Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ˜Π° ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ Π΅ Elasticsearch, ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΡ‚ Π½Π° линија ΠΎΠ΄ Π΄Π½Π΅Π²Π½ΠΈΠΊΠΎΡ‚ nginx:

172.19.0.4 - - [01/Jun/2020:12:05:03 +0000] "GET /purchase?user_id=75146478&item_id=34234 HTTP/1.1" 500 8102 "-" "Stub_Bot/3.0" "0.001"

Π’Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΈΡ‚Π΅ систСми Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π°Ρ‚ Ρ†Π΅Π»ΠΈΠΎΡ‚ Ρ€Π΅Π΄, Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°Ρ˜ΡœΠΈ полиња со Π³ΠΎΠ»Π΅ΠΌ Π±Ρ€ΠΎΡ˜ ΡƒΠ½ΠΈΠΊΠ°Ρ‚Π½ΠΈ врСдности user_id ΠΈ item_id, ΠΈ складираат сè Π²ΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ индСкси. ΠŸΡ€Π΅Π΄Π½ΠΎΡΡ‚Π° Π½Π° овој пристап Π΅ ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π±Ρ€Π·ΠΎ Π΄Π° ΠΈΠ·Π²Ρ€ΡˆΠΈΡ‚Π΅ слоТСни ΠΏΡ€Π°ΡˆΠ°ΡšΠ°, бидСјќи скоро ситС ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ сС Π²ΠΎ индСксот. Но, ΠΎΠ²Π° ΠΈΠΌΠ° Ρ†Π΅Π½Π° со Ρ‚ΠΎΠ° ΡˆΡ‚ΠΎ индСксот станува Π³ΠΎΠ»Π΅ΠΌ, ΡˆΡ‚ΠΎ сС ΠΏΡ€Π΅Ρ‚Π²ΠΎΡ€Π° Π²ΠΎ Π±Π°Ρ€Π°ΡšΠ° Π·Π° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°. Како Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ°, индСксот Π½Π° Π΄Π½Π΅Π²Π½ΠΈΠΊΠΎΡ‚ Π½Π° цСлосниот тСкст Π΅ спорСдлив ΠΏΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π° со самитС Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈ. Π—Π° Π±Ρ€Π·ΠΎ ΠΏΡ€Π΅Π±Π°Ρ€ΡƒΠ²Π°ΡšΠ΅ Π½ΠΈΠ· Π½Π΅Π³ΠΎ, индСксот ΠΌΠΎΡ€Π° Π΄Π° сС Π²Ρ‡ΠΈΡ‚Π° Π²ΠΎ ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°Ρ‚Π°. И ΠΊΠΎΠ»ΠΊΡƒ повСќС Π»ΠΎΠ³ΠΎΠ²ΠΈ, Ρ‚ΠΎΠ»ΠΊΡƒ ΠΏΠΎΠ±Ρ€Π·ΠΎ растС индСксот ΠΈ Ρ‚ΠΎΠ»ΠΊΡƒ повСќС ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π° Ρ‚Ρ€ΠΎΡˆΠΈ.

ΠŸΡ€ΠΈΡΡ‚Π°ΠΏΠΎΡ‚ Π›ΠΎΠΊΠΈ Π±Π°Ρ€Π° само ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π΄Π° сС ΠΈΠ·Π²Π»Π΅Ρ‡Π°Ρ‚ ΠΎΠ΄ Π½ΠΈΠ·Π°, Ρ‡ΠΈΡ˜ Π±Ρ€ΠΎΡ˜ Π½Π° врСдности Π΅ ΠΌΠ°Π». На овој Π½Π°Ρ‡ΠΈΠ½ Π΄ΠΎΠ±ΠΈΠ²Π°ΠΌΠ΅ ΠΌΠ°Π» индСкс ΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π³ΠΈ ΠΏΡ€Π΅Π±Π°Ρ€ΡƒΠ²Π°ΠΌΠ΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅ со Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°ΡšΠ΅ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ ΠΈ ΠΏΠΎ индСксирани полиња, Π° ΠΏΠΎΡ‚ΠΎΠ° ΡΠΊΠ΅Π½ΠΈΡ€Π°ΡšΠ΅ Π½Π° останатитС со Ρ€Π΅Π³ΡƒΠ»Π°Ρ€Π½ΠΈ ΠΈΠ·Ρ€Π°Π·ΠΈ ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π±Π°Ρ€ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΏΠΎΠ΄Π½ΠΈΠ·ΠΈ. ΠŸΡ€ΠΎΡ†Π΅ΡΠΎΡ‚ Π½Π΅ ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΊΠ°ΠΊΠΎ Π½Π°Ρ˜Π±Ρ€Π·, Π½ΠΎ Π›ΠΎΠΊΠΈ Π³ΠΎ Π΄Π΅Π»ΠΈ Π±Π°Ρ€Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ Π΄Π΅Π»ΠΎΠ²ΠΈ ΠΈ Π³ΠΈ ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΎ, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΡƒΠ²Π°Ρ˜ΡœΠΈ Π³ΠΎΠ»Π΅ΠΌΠ° ΠΊΠΎΠ»ΠΈΡ‡ΠΈΠ½Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π·Π° ΠΊΡ€Π°Ρ‚ΠΊΠΎ Π²Ρ€Π΅ΠΌΠ΅. Π‘Ρ€ΠΎΡ˜ΠΎΡ‚ Π½Π° ΠΏΠ°Ρ€Ρ‡ΠΈΡšΠ° ΠΈ ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΈ Π±Π°Ρ€Π°ΡšΠ° Π²ΠΎ Π½ΠΈΠ² ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°; Ρ‚Π°ΠΊΠ°, ΠΊΠΎΠ»ΠΈΡ‡ΠΈΠ½Π°Ρ‚Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΡƒΠ²Π°Π°Ρ‚ ΠΏΠΎ Π΅Π΄ΠΈΠ½ΠΈΡ†Π° Π²Ρ€Π΅ΠΌΠ΅ зависи Π»ΠΈΠ½Π΅Π°Ρ€Π½ΠΎ ΠΎΠ΄ ΠΊΠΎΠ»ΠΈΡ‡ΠΈΠ½Π°Ρ‚Π° Π½Π° ΠΎΠ±Π΅Π·Π±Π΅Π΄Π΅Π½ΠΈΡ‚Π΅ рСсурси.

Оваа Ρ€Π°Π·ΠΌΠ΅Π½Π° ΠΏΠΎΠΌΠ΅Ρ“Ρƒ Π³ΠΎΠ»Π΅ΠΌ, Π±Ρ€Π· индСкс ΠΈ ΠΌΠ°Π», ΠΏΠ°Ρ€Π°Π»Π΅Π»Π΅Π½ индСкс Π½Π° Π±Ρ€ΡƒΡ‚Π°Π»Π½Π° сила ΠΌΡƒ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π½Π° Π›ΠΎΠΊΠΈ Π΄Π° ја ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π° Ρ†Π΅Π½Π°Ρ‚Π° Π½Π° систСмот. МоТС флСксибилно Π΄Π° сС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π° ΠΈ ΠΏΡ€ΠΎΡˆΠΈΡ€ΠΈ спорСд ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅.

Π‘Ρ‚Π°ΠΊΠΎΡ‚ Loki сС состои ΠΎΠ΄ Ρ‚Ρ€ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ: Promtail, Loki, Grafana. Promtail собира Π»ΠΎΠ³ΠΎΠ²ΠΈ, Π³ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΡƒΠ²Π° ΠΈ Π³ΠΈ ΠΈΡΠΏΡ€Π°ΡœΠ° Π΄ΠΎ Π›ΠΎΠΊΠΈ. Π›ΠΎΠΊΠΈ Π³ΠΈ Ρ‡ΡƒΠ²Π°. И Π“Ρ€Π°Ρ„Π°Π½Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±Π°Ρ€Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΎΠ΄ Π›ΠΎΠΊΠΈ ΠΈ Π΄Π° Π³ΠΈ ΠΏΡ€ΠΈΠΊΠ°ΠΆΠ΅. ΠžΠΏΡˆΡ‚ΠΎ Π·Π΅ΠΌΠ΅Π½ΠΎ, Loki ΠΌΠΎΠΆΠ΅ Π΄Π° сС користи Π½Π΅ само Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ Π½Π° Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈ ΠΈ ΠΏΡ€Π΅Π±Π°Ρ€ΡƒΠ²Π°ΡšΠ΅ Π½ΠΈΠ· Π½ΠΈΠ². Π¦Π΅Π»ΠΈΠΎΡ‚ оџак Π΄Π°Π²Π° ΠΎΠ΄Π»ΠΈΡ‡Π½ΠΈ моТности Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° Π΄ΠΎΡ˜Π΄ΠΎΠ²Π½ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Π³ΠΎ Π½Π°Ρ‡ΠΈΠ½ΠΎΡ‚ Π½Π° ΠŸΡ€ΠΎΠΌΠ΅Ρ‚Π΅Ρ˜.
МоТС Π΄Π° сС најдС опис Π½Π° процСсот Π½Π° ΠΈΠ½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Π° Ρ‚ΡƒΠΊΠ°.

ΠŸΡ€Π΅Π±Π°Ρ€ΡƒΠ²Π°ΡšΠ΅ ΠΏΠΎ Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈ

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΈ ΠΏΡ€Π΅Π±Π°Ρ€ΡƒΠ²Π°Ρ‚Π΅ Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈΡ‚Π΅ Π²ΠΎ посСбСн ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ Π½Π° Grafana - Explorer. ΠŸΡ€Π°ΡˆΠ°ΡšΠ°Ρ‚Π° Π³ΠΎ користат Ρ˜Π°Π·ΠΈΠΊΠΎΡ‚ LogQL, кој Π΅ ΠΌΠ½ΠΎΠ³Ρƒ сличСн со PromQL ΡˆΡ‚ΠΎ сС користи Π²ΠΎ Prometheus. Π’ΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ, ΠΌΠΎΠΆΠ΅ Π΄Π° сС смСта ΠΊΠ°ΠΊΠΎ дистрибуиран Π³Ρ€ΠΈΠΏ.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜ΡΠΎΡ‚ Π·Π° ΠΏΡ€Π΅Π±Π°Ρ€ΡƒΠ²Π°ΡšΠ΅ ΠΈΠ·Π³Π»Π΅Π΄Π° Π²Π°ΠΊΠ°:

Π‘ΠΎΠ±ΠΈΡ€Π°ΡšΠ΅ Ρ‚Ρ€ΡƒΠΏΡ†ΠΈ ΠΎΠ΄ Π›ΠΎΠΊΠΈ

Π‘Π°ΠΌΠΎΡ‚ΠΎ Π±Π°Ρ€Π°ΡšΠ΅ сС состои ΠΎΠ΄ Π΄Π²Π° Π΄Π΅Π»Π°: ΠΈΠ·Π±ΠΈΡ€Π°Ρ‡ ΠΈ Ρ„ΠΈΠ»Ρ‚Π΅Ρ€. Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ΠΎΡ‚ Π΅ ΠΏΡ€Π΅Π±Π°Ρ€ΡƒΠ²Π°ΡšΠ΅ со помош Π½Π° индСксирани ΠΌΠ΅Ρ‚Π°ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ (Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ) ΠΊΠΎΠΈ сС Π΄ΠΎΠ΄Π΅Π»Π΅Π½ΠΈ Π½Π° Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈ, Π° Ρ„ΠΈΠ»Ρ‚Π΅Ρ€ΠΎΡ‚ Π΅ Π½ΠΈΠ·Π° Π·Π° ΠΏΡ€Π΅Π±Π°Ρ€ΡƒΠ²Π°ΡšΠ΅ ΠΈΠ»ΠΈ regexp ΡˆΡ‚ΠΎ Π³ΠΈ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π° записитС Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ ΠΎΠ΄ ΠΈΠ·Π±ΠΈΡ€Π°Ρ‡ΠΎΡ‚. Π’ΠΎ Π΄Π°Π΄Π΅Π½ΠΈΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: Π’ΠΎ ΠΊΠ°Π΄Ρ€Π°Π²ΠΈΡ‚Π΅ Π·Π°Π³Ρ€Π°Π΄ΠΈ ΠΈΠΌΠ° ΠΈΠ·Π±ΠΈΡ€Π°Ρ‡, сè ΠΏΠΎΡ‚ΠΎΠ° Π΅ Ρ„ΠΈΠ»Ρ‚Π΅Ρ€.

{image_name="nginx.promtail.test"} |= "index"

ΠŸΠΎΡ€Π°Π΄ΠΈ Π½Π°Ρ‡ΠΈΠ½ΠΎΡ‚ Π½Π° кој Ρ€Π°Π±ΠΎΡ‚ΠΈ Π›ΠΎΠΊΠΈ, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° поставуватС ΠΏΡ€Π°ΡˆΠ°ΡšΠ° Π±Π΅Π· сСлСктор, Π½ΠΎ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈΡ‚Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΡ€Π°Π²Π°Ρ‚ Ρ‚ΠΎΠ»ΠΊΡƒ ΠΎΠΏΡˆΡ‚ΠΈ ΠΊΠΎΠ»ΠΊΡƒ ΡˆΡ‚ΠΎ сакатС.

Π˜Π·Π±ΠΈΡ€Π°Ρ‡ΠΎΡ‚ Π΅ ΠΊΠ»ΡƒΡ‡Π½Π° врСдност Π²ΠΎ ΠΊΠ°Π΄Ρ€Π°Π²Π° Π·Π°Π³Ρ€Π°Π΄Π°. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Ρ‚Π΅ ΠΈΠ·Π±ΠΈΡ€Π°Ρ‡ΠΈ ΠΈ Π΄Π° Π½Π°Π²Π΅Π΄Π΅Ρ‚Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ услови Π·Π° ΠΏΡ€Π΅Π±Π°Ρ€ΡƒΠ²Π°ΡšΠ΅ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Π³ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ =, != ΠΈΠ»ΠΈ Ρ€Π΅Π³ΡƒΠ»Π°Ρ€Π½ΠΈ ΠΈΠ·Ρ€Π°Π·ΠΈ:

{instance=~"kafka-[23]",name!="kafka-dev"} 
// Найдёт Π»ΠΎΠ³ΠΈ с Π»Π΅ΠΉΠ±Π»ΠΎΠΌ instance, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ kafka-2, kafka-3, ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ dev 

Π€ΠΈΠ»Ρ‚Π΅Ρ€ Π΅ тСкст ΠΈΠ»ΠΈ regexp ΡˆΡ‚ΠΎ ќС Π³ΠΈ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π° ситС ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π΄ΠΎΠ±ΠΈΠ΅Π½ΠΈ ΠΎΠ΄ ΠΈΠ·Π±ΠΈΡ€Π°Ρ‡ΠΎΡ‚.

МоТно Π΅ Π΄Π° сС Π΄ΠΎΠ±ΠΈΡ˜Π°Ρ‚ Π°Π΄-Ρ…ΠΎΠΊ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ½ΠΈ Π²Ρ€Π· основа Π½Π° Π΄ΠΎΠ±ΠΈΠ΅Π½ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π²ΠΎ Ρ€Π΅ΠΆΠΈΠΌ Π½Π° ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ°. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π΄ΠΎΠ·Π½Π°Π΅Ρ‚Π΅ ΠΊΠΎΠ»ΠΊΡƒ чСсто записот ΡˆΡ‚ΠΎ Π³ΠΎ содрТи индСксот Π½Π° стрингот сС ΠΏΠΎΡ˜Π°Π²ΡƒΠ²Π° Π²ΠΎ Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° nginx:

Π‘ΠΎΠ±ΠΈΡ€Π°ΡšΠ΅ Ρ‚Ρ€ΡƒΠΏΡ†ΠΈ ΠΎΠ΄ Π›ΠΎΠΊΠΈ

ЦСлосСн опис Π½Π° моТноститС ΠΌΠΎΠΆΠ΅ Π΄Π° сС најдС Π²ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° LogQL.

ΠŸΠ°Ρ€ΡΠΈΡ€Π°ΡšΠ΅ Π½Π° Π΄Π½Π΅Π²Π½ΠΈΠΊΠΎΡ‚

ΠŸΠΎΡΡ‚ΠΎΡ˜Π°Ρ‚ Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ Π½Π°Ρ‡ΠΈΠ½ΠΈ Π·Π° ΡΠΎΠ±ΠΈΡ€Π°ΡšΠ΅ Ρ‚Ρ€ΡƒΠΏΡ†ΠΈ:

  • ΠšΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° Promtail, стандардна ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π½Π° ΠΎΡŸΠ°ΠΊΠΎΡ‚ Π·Π° ΡΠΎΠ±ΠΈΡ€Π°ΡšΠ΅ Π»ΠΎΠ³ΠΎΠ²ΠΈ.
  • Π”ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΠ΄ Π΄ΠΎΠΊΠ΅Ρ€ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΎΡ‚ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Π’ΠΎΠ·Π°Ρ‡ Π·Π° сСча Π½Π° Loki Docker.
  • ΠšΠΎΡ€ΠΈΡΡ‚Π΅Ρ‚Π΅ Fluentd ΠΈΠ»ΠΈ Fluent Bit, ΠΊΠΎΠΈ ΠΌΠΎΠΆΠ°Ρ‚ Π΄Π° ΠΈΡΠΏΡ€Π°ΡœΠ°Π°Ρ‚ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π΄ΠΎ Loki. Π—Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΎΠ΄ Promtail, Ρ‚ΠΈΠ΅ ΠΈΠΌΠ°Π°Ρ‚ Π³ΠΎΡ‚ΠΎΠ²ΠΈ парсСри Π·Π° рСчиси сСкаков Π²ΠΈΠ΄ Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈ ΠΈ ΠΌΠΎΠΆΠ°Ρ‚ Π΄Π° Ρ€Π°ΠΊΡƒΠ²Π°Π°Ρ‚ ΠΈ со повСќСлиниски Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈ.

ΠžΠ±ΠΈΡ‡Π½ΠΎ Promtail сС користи Π·Π° ΠΏΠ°Ρ€ΡΠΈΡ€Π°ΡšΠ΅. ΠŸΡ€Π°Π²ΠΈ Ρ‚Ρ€ΠΈ Ρ€Π°Π±ΠΎΡ‚ΠΈ:

  • Наоѓа ΠΈΠ·Π²ΠΎΡ€ΠΈ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ.
  • Π—Π°ΠΊΠ°Ρ‡ΡƒΠ²Π° Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ Π·Π° Π½ΠΈΠ².
  • Π˜ΡΠΏΡ€Π°ΡœΠ° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π΄ΠΎ Π›ΠΎΠΊΠΈ.

Π’ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ² Promtail ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ‡ΠΈΡ‚Π° Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈ ΠΎΠ΄ Π»ΠΎΠΊΠ°Π»Π½ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ ΠΈ ΠΎΠ΄ систСмски Π΄Π½Π΅Π²Π½ΠΈΠΊ. ΠœΠΎΡ€Π° Π΄Π° сС инсталира Π½Π° сСкоја машина ΠΎΠ΄ која сС собираат Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈΡ‚Π΅.

Има ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ˜Π° со Kubernetes: Promtail автоматски, ΠΏΡ€Π΅ΠΊΡƒ Kubernetes REST API, ја ΠΏΡ€Π΅ΠΏΠΎΠ·Π½Π°Π²Π° ΡΠΎΡΡ‚ΠΎΡ˜Π±Π°Ρ‚Π° Π½Π° кластСрот ΠΈ собира Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈ ΠΎΠ΄ јазол, услуга ΠΈΠ»ΠΈ pod, вСднаш ΠΎΠ±Ρ˜Π°Π²ΡƒΠ²Π°Ρ˜ΡœΠΈ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ Π²Ρ€Π· основа Π½Π° ΠΌΠ΅Ρ‚Π°ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΎΠ΄ Kubernetes (ΠΈΠΌΠ΅ Π½Π° pod, ΠΈΠΌΠ΅ Π½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°, ΠΈΡ‚Π½.) .

ΠœΠΎΠΆΠ΅Ρ‚Π΅ исто Ρ‚Π°ΠΊΠ° Π΄Π° обСсуватС Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ Π²Ρ€Π· основа Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΎΠ΄ Π΄Π½Π΅Π²Π½ΠΈΠΊΠΎΡ‚ со помош Π½Π° Pipeline. Pipeline Promtail ΠΌΠΎΠΆΠ΅ Π΄Π° сС состои ΠΎΠ΄ Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈ Ρ‚ΠΈΠΏΠ° Π½Π° Ρ„Π°Π·ΠΈ. ПовСќС Π΄Π΅Ρ‚Π°Π»ΠΈ Π²ΠΎ ΠΎΡ„ΠΈΡ†ΠΈΡ˜Π°Π»Π½Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°, вСднаш ќС Π·Π°Π±Π΅Π»Π΅ΠΆΠ°ΠΌ Π½Π΅ΠΊΠΎΠΈ нијанси.

  1. Π€Π°Π·ΠΈ Π½Π° ΠΏΠ°Ρ€ΡΠΈΡ€Π°ΡšΠ΅. Ова Π΅ Ρ„Π°Π·Π°Ρ‚Π° RegEx ΠΈ JSON. Π’ΠΎ ΠΎΠ²Π°Π° Ρ„Π°Π·Π°, Π½ΠΈΠ΅ ΠΈΠ·Π²Π»Π΅ΠΊΡƒΠ²Π°ΠΌΠ΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΎΠ΄ Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈΡ‚Π΅ Π²ΠΎ Ρ‚Π°ΠΊΠ°Π½Π°Ρ€Π΅Ρ‡Π΅Π½Π°Ρ‚Π° ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π° ΠΊΠ°Ρ€Ρ‚Π°. МоТСмС Π΄Π° ΠΈΠ·Π²Π»Π΅Ρ‡Π΅ΠΌΠ΅ ΠΎΠ΄ JSON со Сдноставно ΠΊΠΎΠΏΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΏΠΎΠ»ΠΈΡšΠ°Ρ‚Π° ΡˆΡ‚ΠΎ Π½ΠΈ сС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ Π²ΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚Π° ΠΈΠ»ΠΈ ΠΏΡ€Π΅ΠΊΡƒ Ρ€Π΅Π³ΡƒΠ»Π°Ρ€Π½ΠΈ ΠΈΠ·Ρ€Π°Π·ΠΈ (RegEx), ΠΊΠ°Π΄Π΅ ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π½ΠΈΡ‚Π΅ Π³Ρ€ΡƒΠΏΠΈ сС β€žΠΌΠ°ΠΏΠΈΡ€Π°Π°Ρ‚β€œ Π²ΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚Π°. Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½Π°Ρ‚Π° ΠΌΠ°ΠΏΠ° Π΅ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ Π·Π° врСдност Π½Π° ΠΊΠ»ΡƒΡ‡Π΅Π²ΠΈ, ΠΊΠ°Π΄Π΅ ΡˆΡ‚ΠΎ ΠΊΠ»ΡƒΡ‡ΠΎΡ‚ Π΅ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΏΠΎΠ»Π΅Ρ‚ΠΎ, Π° врСдноста Π΅ Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° врСдност ΠΎΠ΄ Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈΡ‚Π΅.
  2. Π’Ρ€Π°Π½ΡΡ„ΠΎΡ€ΠΌΠΈΡ€Π°Ρ˜Ρ‚Π΅ Ρ„Π°Π·ΠΈ. Оваа Ρ„Π°Π·Π° ΠΈΠΌΠ° Π΄Π²Π΅ ΠΎΠΏΡ†ΠΈΠΈ: Ρ‚Ρ€Π°Π½ΡΡ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π°, ΠΊΠ°Π΄Π΅ ΡˆΡ‚ΠΎ Π³ΠΈ поставувамС ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° Π·Π° Ρ‚Ρ€Π°Π½ΡΡ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π° ΠΈ ΠΈΠ·Π²ΠΎΡ€ - ΠΈΠ·Π²ΠΎΡ€ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π·Π° Ρ‚Ρ€Π°Π½ΡΡ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π° ΠΎΠ΄ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚Π°. Π”ΠΎΠΊΠΎΠ»ΠΊΡƒ Π½Π΅ΠΌΠ° Ρ‚Π°ΠΊΠ²ΠΎ ΠΏΠΎΠ»Π΅ Π²ΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚Π°, Ρ‚Π°Π° ќС сС ΠΊΡ€Π΅ΠΈΡ€Π°. На овој Π½Π°Ρ‡ΠΈΠ½ Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° сС ΠΊΡ€Π΅ΠΈΡ€Π°Π°Ρ‚ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ ΠΊΠΎΠΈ Π½Π΅ сС Π±Π°Π·ΠΈΡ€Π°Π°Ρ‚ Π½Π° ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚Π°. Π’ΠΎ ΠΎΠ²Π°Π° Ρ„Π°Π·Π° ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€Π°ΠΌΠ΅ со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅ Π²ΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚Π° ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎ моќСн Π¨Π°Π±Π»ΠΎΠ½ Π“ΠΎΠ»Π°Π½Π³. ΠŸΠΎΠΊΡ€Π°Ρ˜ Ρ‚ΠΎΠ°, ΠΌΠΎΡ€Π°ΠΌΠ΅ Π΄Π° Π·Π°ΠΏΠΎΠΌΠ½ΠΈΠΌΠ΅ Π΄Π΅ΠΊΠ° ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚Π° Π΅ цСлосно Π²Ρ‡ΠΈΡ‚Π°Π½Π° Π·Π° Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΏΠ°Ρ€ΡΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ, ΡˆΡ‚ΠΎ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π°, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄Π° сС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈ врСдноста Π²ΠΎ Π½Π΅Π°: β€ž{{Π°ΠΊΠΎ .tag}врСдноста Π½Π° ΠΎΠ·Π½Π°ΠΊΠ°Ρ‚Π° постои{ΠΊΡ€Π°Ρ˜}}β€œ. Π¨Π°Π±Π»ΠΎΠ½ΠΎΡ‚ ΠΏΠΎΠ΄Π΄Ρ€ΠΆΡƒΠ²Π° услови, јамки ΠΈ Π½Π΅ΠΊΠΎΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° Π½ΠΈΠ·Π° ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС Replace ΠΈ Trim.
  3. Π€Π°Π·ΠΈ Π½Π° Π°ΠΊΡ†ΠΈΡ˜Π°. Π’ΠΎ овој ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Π½Π΅ΡˆΡ‚ΠΎ со ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π°Ρ‚Π° содрТина:
    • НаправСтС ΠΎΠ·Π½Π°ΠΊΠ° ΠΎΠ΄ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ, ΠΊΠΎΠΈ ќС Π±ΠΈΠ΄Π°Ρ‚ индСксирани ΠΎΠ΄ Π›ΠΎΠΊΠΈ.
    • ΠŸΡ€ΠΎΠΌΠ΅Π½Π΅Ρ‚Π΅ Π³ΠΎ ΠΈΠ»ΠΈ поставСтС Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° настанот ΠΎΠ΄ Π΄Π½Π΅Π²Π½ΠΈΠΊΠΎΡ‚.
    • ΠŸΡ€ΠΎΠΌΠ΅Π½Π΅Ρ‚Π΅ Π³ΠΈ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅ (тСкст Π½Π° Π΄Π½Π΅Π²Π½ΠΈΠΊΠΎΡ‚) ΡˆΡ‚ΠΎ ќС ΠΎΠ΄Π°Ρ‚ Π²ΠΎ Π›ΠΎΠΊΠΈ.
    • Π‘ΠΎΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ°.
  4. Π€Π°Π·ΠΈ Π½Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°ΡšΠ΅. Π€Π°Π·Π° Π½Π° Π½Π°Ρ‚ΠΏΡ€Π΅Π²Π°Ρ€, ΠΊΠ°Π΄Π΅ ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ΠΌΠ΅ ΠΈΠ»ΠΈ Π΄Π° испратимС записи ΡˆΡ‚ΠΎ Π½Π΅ Π½ΠΈ Ρ‚Ρ€Π΅Π±Π°Π°Ρ‚ Π΄Π° Π³ΠΈ /dev/null ΠΈΠ»ΠΈ Π΄Π° Π³ΠΈ прослСдимС Π·Π° ΠΏΠΎΠ½Π°Ρ‚Π°ΠΌΠΎΡˆΠ½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°.

ΠšΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Ρ€Π΅Π΄ΠΎΠ²Π½ΠΈ Π»ΠΎΠ³ΠΎΠ²ΠΈ Π½Π° nginx, ќС ΠΏΠΎΠΊΠ°ΠΆΠ°ΠΌ ΠΊΠ°ΠΊΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈΡ‚Π΅ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Promtail.

Π—Π° тСстот, Π΄Π° Π·Π΅ΠΌΠ΅ΠΌΠ΅ ΠΊΠ°ΠΊΠΎ nginx-proxy ΠΈΠ·ΠΌΠ΅Π½Π΅Ρ‚Π° слика nginx jwilder/nginx-proxy:alpine ΠΈ ΠΌΠ°Π» Π΄Π΅ΠΌΠΎΠ½ ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π·Π°ΠΏΡ€Π°ΡˆΠ° ΠΏΡ€Π΅ΠΊΡƒ HTTP. Π”Π΅ΠΌΠΎΠ½ΠΎΡ‚ ΠΈΠΌΠ° Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ ΠΊΡ€Π°Ρ˜Π½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ, Π½Π° ΠΊΠΎΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€ΠΈ со Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π³ΠΎΠ»Π΅ΠΌΠΈΠ½ΠΈ, со Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ HTTP статуси ΠΈ со Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΎΠ΄Π»ΠΎΠΆΡƒΠ²Π°ΡšΠ°.

ЌС собирамС Ρ‚Ρ€ΡƒΠΏΡ†ΠΈ ΠΎΠ΄ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈ Π·Π° Π΄ΠΎΠΊΠ΅Ρ€, ΠΊΠΎΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°Ρ˜Π΄Π°Ρ‚ ΠΏΠΎ ΠΏΠ°Ρ‚Π΅ΠΊΠ°Ρ‚Π° /var/lib/docker/containers/ / -json.log

Π’ΠΎ docker-compose.yml Π³ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΠΌΠ΅ Promtail ΠΈ ја ΠΎΠ΄Ρ€Π΅Π΄ΡƒΠ²Π°ΠΌΠ΅ ΠΏΠ°Ρ‚Π΅ΠΊΠ°Ρ‚Π° Π΄ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π°Ρ‚Π°:

promtail:
  image: grafana/promtail:1.4.1
 // ...
 volumes:
   - /var/lib/docker/containers:/var/lib/docker/containers:ro
   - promtail-data:/var/lib/promtail/positions
   - ${PWD}/promtail/docker.yml:/etc/promtail/promtail.yml
 command:
   - '-config.file=/etc/promtail/promtail.yml'
 // ...

Π”ΠΎΠ΄Π°Ρ˜Ρ‚Π΅ ја ΠΏΠ°Ρ‚Π΅ΠΊΠ°Ρ‚Π° Π΄ΠΎ Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° promtail.yml (ΠΈΠΌΠ° ΠΎΠΏΡ†ΠΈΡ˜Π° β€ždockerβ€œ Π²ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π°Ρ‚Π°, која Π³ΠΎ ΠΏΡ€Π°Π²ΠΈ истото Π²ΠΎ Π΅Π΄Π½Π° линија, Π½ΠΎ Π½Π΅ Π±ΠΈ Π±ΠΈΠ»ΠΎ Ρ‚ΠΎΠ»ΠΊΡƒ јасно):

scrape_configs:
 - job_name: containers

   static_configs:
       labels:
         job: containerlogs
         __path__: /var/lib/docker/containers/*/*log  # for linux only

Кога ΠΎΠ²Π°Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° Π΅ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½Π°, Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈΡ‚Π΅ ΠΎΠ΄ ситС ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈ ќС Π±ΠΈΠ΄Π°Ρ‚ испратСни Π΄ΠΎ Loki. Π—Π° Π΄Π° Π³ΠΎ ΠΈΠ·Π±Π΅Π³Π½Π΅ΠΌΠ΅ ΠΎΠ²Π°, Π³ΠΈ ΠΌΠ΅Π½ΡƒΠ²Π°ΠΌΠ΅ поставкитС Π½Π° тСстот nginx Π²ΠΎ docker-compose.yml - Π΄ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΏΠΎΠ»Π΅ Π·Π° ΠΎΠ·Π½Π°ΠΊΠ° Π·Π° Π΅Π²ΠΈΠ΄Π΅Π½Ρ†ΠΈΡ˜Π°:

proxy:
 image: nginx.test.v3
//…
 logging:
   driver: "json-file"
   options:
     tag: "{{.ImageName}}|{{.Name}}"

Π£Ρ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° promtail.yml ΠΈ ΠΏΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° Pipeline. Π’Π»Π΅Π·ΠΎΡ‚ Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π° Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈ ΠΎΠ΄ слСдниов Ρ‚ΠΈΠΏ:

{"log":"u001b[0;33;1mnginx.1    | u001b[0mnginx.test 172.28.0.3 - - [13/Jun/2020:23:25:50 +0000] "GET /api/index HTTP/1.1" 200 0 "-" "Stub_Bot/0.1" "0.096"n","stream":"stdout","attrs":{"tag":"nginx.promtail.test|proxy.prober"},"time":"2020-06-13T23:25:50.66740443Z"}
{"log":"u001b[0;33;1mnginx.1    | u001b[0mnginx.test 172.28.0.3 - - [13/Jun/2020:23:25:50 +0000] "GET /200 HTTP/1.1" 200 0 "-" "Stub_Bot/0.1" "0.000"n","stream":"stdout","attrs":{"tag":"nginx.promtail.test|proxy.prober"},"time":"2020-06-13T23:25:50.702925272Z"}

Π€Π°Π·Π° Π½Π° гасоводот:

 - json:
     expressions:
       stream: stream
       attrs: attrs
       tag: attrs.tag

Π“ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΡƒΠ²Π°ΠΌΠ΅ ΠΏΠΎΠ»ΠΈΡšΠ°Ρ‚Π° stream, attrs, attrs.tag (Π°ΠΊΠΎ ΠΏΠΎΡΡ‚ΠΎΡ˜Π°Ρ‚) ΠΎΠ΄ Π΄ΠΎΡ˜Π΄ΠΎΠ²Π½ΠΈΠΎΡ‚ JSON ΠΈ Π³ΠΈ ставамС Π²ΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚Π°.

 - regex:
     expression: ^(?P<image_name>([^|]+))|(?P<container_name>([^|]+))$
     source: "tag"

Ако успСавмС Π΄Π° Π³ΠΎ ставимС ΠΏΠΎΠ»Π΅Ρ‚ΠΎ Π·Π° ΠΎΠ·Π½Π°ΠΊΠ° Π²ΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚Π°, Ρ‚ΠΎΠ³Π°Ρˆ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ regexp Π³ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΡƒΠ²Π°ΠΌΠ΅ ΠΈΠΌΠΈΡšΠ°Ρ‚Π° Π½Π° сликата ΠΈ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΎΡ‚.

 - labels:
     image_name:
     container_name:

НиС Π΄ΠΎΠ΄Π΅Π»ΡƒΠ²Π°ΠΌΠ΅ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ. Ако Π²ΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ сС Π½Π°Ρ˜Π΄Π°Ρ‚ ΠΊΠΎΠΏΡ‡ΠΈΡšΠ°Ρ‚Π° image_name ΠΈ container_name, Ρ‚ΠΎΠ³Π°Ρˆ Π½ΠΈΠ²Π½ΠΈΡ‚Π΅ врСдности ќС Π±ΠΈΠ΄Π°Ρ‚ Π΄ΠΎΠ΄Π΅Π»Π΅Π½ΠΈ Π½Π° соодвСтнитС ΠΎΠ·Π½Π°ΠΊΠΈ.

 - match:
     selector: '{job="docker",container_name="",image_name=""}'
     action: drop

Π“ΠΈ ΠΎΡ‚Ρ„Ρ€Π»Π°ΠΌΠ΅ ситС Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈ ΠΊΠΎΠΈ Π½Π΅ΠΌΠ°Π°Ρ‚ инсталирани Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ image_name ΠΈ container_name.

  - match:
     selector: '{image_name="nginx.promtail.test"}'
     stages:
       - json:
           expressions:
             row: log

Π—Π° ситС Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈ Ρ‡ΠΈΠ΅ ΠΈΠΌΠ΅_ΠΈΠΌΠ΅ Π΅ nginx.promtail.test, ΠΈΠ·Π²Π°Π΄Π΅Ρ‚Π΅ Π³ΠΎ ΠΏΠΎΠ»Π΅Ρ‚ΠΎ Π·Π° Π΄Π½Π΅Π²Π½ΠΈΠΊ ΠΎΠ΄ ΠΈΠ·Π²ΠΎΡ€Π½ΠΈΠΎΡ‚ Π΄Π½Π΅Π²Π½ΠΈΠΊ ΠΈ ставСтС Π³ΠΎ Π²ΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚Π° со ΠΊΠΎΠΏΡ‡Π΅Ρ‚ΠΎ Π·Π° Ρ€Π΅Π΄.

  - regex:
         # suppress forego colors
         expression: .+nginx.+|.+[0m(?P<virtual_host>[a-z_.-]+) +(?P<nginxlog>.+)
         source: logrow

Ја Π±Ρ€ΠΈΡˆΠ΅ΠΌΠ΅ Π»ΠΈΠ½ΠΈΡ˜Π°Ρ‚Π° Π·Π° Π²Π½Π΅ΡΡƒΠ²Π°ΡšΠ΅ со Ρ€Π΅Π΄ΠΎΠ²Π½ΠΈ ΠΈΠ·Ρ€Π°Π·ΠΈ ΠΈ Π³ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΡƒΠ²Π°ΠΌΠ΅ Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈΠΎΡ‚ домаќин nginx ΠΈ Π»ΠΈΠ½ΠΈΡ˜Π°Ρ‚Π° nginx log.

     - regex:
         source: nginxlog
         expression: ^(?P<ip>[w.]+) - (?P<user>[^ ]*) [(?P<timestamp>[^ ]+).*] "(?P<method>[^ ]*) (?P<request_url>[^ ]*) (?P<request_http_protocol>[^ ]*)" (?P<status>[d]+) (?P<bytes_out>[d]+) "(?P<http_referer>[^"]*)" "(?P<user_agent>[^"]*)"( "(?P<response_time>[d.]+)")?

ΠΠ½Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ˜ Π³ΠΎ Π΄Π½Π΅Π²Π½ΠΈΠΊΠΎΡ‚ Π½Π° nginx ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Ρ€Π΅Π³ΡƒΠ»Π°Ρ€Π½ΠΈ ΠΈΠ·Ρ€Π°Π·ΠΈ.

    - regex:
           source: request_url
           expression: ^.+.(?P<static_type>jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|pdf|txt|tar|wav|bmp|rtf|js|flv|swf|html|htm)$
     - regex:
           source: request_url
           expression: ^/photo/(?P<photo>[^/?.]+).*$
       - regex:
           source: request_url
           expression: ^/api/(?P<api_request>[^/?.]+).*$

АјдС Π΄Π° Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ request_url. ΠšΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ regexp, ја ΠΎΠ΄Ρ€Π΅Π΄ΡƒΠ²Π°ΠΌΠ΅ Ρ†Π΅Π»Ρ‚Π° Π½Π° Π±Π°Ρ€Π°ΡšΠ΅Ρ‚ΠΎ: Π½Π° статични ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ, Π½Π° Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ, Π½Π° API ΠΈ Π³ΠΎ поставувамС соодвСтниот ΠΊΠ»ΡƒΡ‡ Π²ΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚Π°.

       - template:
           source: request_type
           template: "{{if .photo}}photo{{else if .static_type}}static{{else if .api_request}}api{{else}}other{{end}}"

ΠšΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ условни ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ Π²ΠΎ Π¨Π°Π±Π»ΠΎΠ½, Π³ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡƒΠ²Π°ΠΌΠ΅ инсталиранитС полиња Π²ΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚Π° ΠΈ Π³ΠΈ поставувамС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈΡ‚Π΅ врСдности Π·Π° ΠΏΠΎΠ»Π΅Ρ‚ΠΎ request_type: Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ˜Π°, статика, API. Π”ΠΎΠ΄Π΅Π»Π΅Ρ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΈ Π°ΠΊΠΎ Π½Π΅ успСС. request_type сСга Π³ΠΎ содрТи Ρ‚ΠΈΠΏΠΎΡ‚ Π½Π° Π±Π°Ρ€Π°ΡšΠ΅.

       - labels:
           api_request:
           virtual_host:
           request_type:
           status:

Π“ΠΈ поставивмС ΠΎΠ·Π½Π°ΠΊΠΈΡ‚Π΅ api_request, virtual_host, request_type ΠΈ status (HTTP статус) Π²Ρ€Π· основа Π½Π° ΠΎΠ½Π° ΡˆΡ‚ΠΎ успСавмС Π΄Π° Π³ΠΎ ставимС Π²ΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚Π°.

       - output:
           source: nginx_log_row

ΠŸΡ€ΠΎΠΌΠ΅Π½Π΅Ρ‚Π΅ Π³ΠΎ ΠΈΠ·Π»Π΅Π·ΠΎΡ‚. Π‘Π΅Π³Π° исчистСниот Π΄Π½Π΅Π²Π½ΠΈΠΊ Π½Π° nginx ΠΎΠ΄ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π°Ρ‚Π° ΠΌΠ°ΠΏΠ° ΠΎΠ΄ΠΈ Π½Π° Π›ΠΎΠΊΠΈ.

Π‘ΠΎΠ±ΠΈΡ€Π°ΡšΠ΅ Ρ‚Ρ€ΡƒΠΏΡ†ΠΈ ΠΎΠ΄ Π›ΠΎΠΊΠΈ

ΠžΡ‚ΠΊΠ°ΠΊΠΎ ќС ја ΠΈΠ·Π²Ρ€ΡˆΠΈΡ‚Π΅ Π³ΠΎΡ€Π½Π°Ρ‚Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π΄Π΅ΠΊΠ° Π½Π° сСкој запис ΠΌΡƒ сС Π΄ΠΎΠ΄Π΅Π»ΡƒΠ²Π°Π°Ρ‚ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ Π²Ρ€Π· основа Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅ ΠΎΠ΄ Π΄Π½Π΅Π²Π½ΠΈΠΊΠΎΡ‚.

Π•Π΄Π½ΠΎ Π½Π΅ΡˆΡ‚ΠΎ ΡˆΡ‚ΠΎ Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС ΠΈΠΌΠ° Π½Π° ΡƒΠΌ Π΅ Π΄Π΅ΠΊΠ° ΠΏΡ€Π΅Π·Π΅ΠΌΠ°ΡšΠ΅Ρ‚ΠΎ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ со Π³ΠΎΠ»Π΅ΠΌ Π±Ρ€ΠΎΡ˜ врСдности (кардиналност) ΠΌΠΎΠΆΠ΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄Π° Π³ΠΎ Π·Π°Π±Π°Π²ΠΈ Π›ΠΎΠΊΠΈ. Π’ΠΎΠ° Π΅, Π½Π΅ Ρ‚Ρ€Π΅Π±Π° Π΄Π° ставатС, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, user_id Π²ΠΎ индСксот. ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ˜Ρ‚Π΅ повСќС Π·Π° ΠΎΠ²Π° Π²ΠΎ ΡΡ‚Π°Ρ‚ΠΈΡ˜Π°Ρ‚Π° β€œΠšΠ°ΠΊΠΎ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈΡ‚Π΅ Π²ΠΎ Loki ΠΌΠΎΠΆΠ°Ρ‚ Π΄Π° Π³ΠΈ Π½Π°ΠΏΡ€Π°Π²Π°Ρ‚ Π±Π°Ρ€Π°ΡšΠ°Ρ‚Π° Π·Π° Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈ ΠΏΠΎΠ±Ρ€Π·ΠΈ ΠΈ полСсни" Но, Ρ‚ΠΎΠ° Π½Π΅ Π·Π½Π°Ρ‡ΠΈ Π΄Π΅ΠΊΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€Π΅Π±Π°Ρ€ΡƒΠ²Π°Ρ‚Π΅ ΠΏΠΎ user_id Π±Π΅Π· индСкси. Π’Ρ€Π΅Π±Π° Π΄Π° користитС Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ ΠΊΠΎΠ³Π° ΠΏΡ€Π΅Π±Π°Ρ€ΡƒΠ²Π°Ρ‚Π΅ (β€žΠ·Π³Ρ€Π°ΠΏΡ‡Π΅Ρ‚Π΅β€œ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ), Π° индСксот ΠΎΠ²Π΄Π΅ Π΄Π΅Π»ΡƒΠ²Π° ΠΊΠ°ΠΊΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½Π° ΠΏΠΎΡ‚ΠΎΠΊ.

Π’ΠΈΠ·ΡƒΠ΅Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Π½Π° Ρ‚Ρ€ΡƒΠΏΡ†ΠΈ

Π‘ΠΎΠ±ΠΈΡ€Π°ΡšΠ΅ Ρ‚Ρ€ΡƒΠΏΡ†ΠΈ ΠΎΠ΄ Π›ΠΎΠΊΠΈ

Π›ΠΎΠΊΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄Π΅Ρ˜ΡΡ‚Π²ΡƒΠ²Π° ΠΊΠ°ΠΊΠΎ ΠΈΠ·Π²ΠΎΡ€ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π·Π° Π³Ρ€Π°Ρ„ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° Π“Ρ€Π°Ρ„Π°Π½Π° ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ LogQL. Π‘Π»Π΅Π΄Π½ΠΈΠ²Π΅ карактСристики сС ΠΏΠΎΠ΄Π΄Ρ€ΠΆΠ°Π½ΠΈ:

  • стапка - Π±Ρ€ΠΎΡ˜ Π½Π° записи Π²ΠΎ сСкунда;
  • Π±Ρ€ΠΎΠΈ со Ρ‚Π΅ΠΊΠΎΡ‚ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ β€” Π±Ρ€ΠΎΡ˜ΠΎΡ‚ Π½Π° записи Π²ΠΎ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΎΡ‚ опсСг.

ΠŸΠΎΡΡ‚ΠΎΡ˜Π°Ρ‚ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΡ˜Π° Sum, Avg ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΡ‚Π΅ доста слоТСни Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ½ΠΈ, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ½ Π·Π° Π±Ρ€ΠΎΡ˜ΠΎΡ‚ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π²ΠΎ HTTP:

Π‘ΠΎΠ±ΠΈΡ€Π°ΡšΠ΅ Ρ‚Ρ€ΡƒΠΏΡ†ΠΈ ΠΎΠ΄ Π›ΠΎΠΊΠΈ

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Π΄Π½ΠΈΠΎΡ‚ ΠΈΠ·Π²ΠΎΡ€ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Loki Π΅ ΠΌΠ°Π»ΠΊΡƒ Π½Π°ΠΌΠ°Π»Π΅Π½ Π²ΠΎ функционалноста Π²ΠΎ спорСдба со ΠΈΠ·Π²ΠΎΡ€ΠΎΡ‚ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Prometheus (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ја ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π»Π΅Π³Π΅Π½Π΄Π°Ρ‚Π°), Π½ΠΎ Loki ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΠΎΠ²Ρ€Π·Π΅ ΠΊΠ°ΠΊΠΎ ΠΈΠ·Π²ΠΎΡ€ со Ρ‚ΠΈΠΏΠΎΡ‚ Prometheus. НС сум сигурСн Π΄Π°Π»ΠΈ ΠΎΠ²Π° Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΎ ΠΎΠ΄Π½Π΅ΡΡƒΠ²Π°ΡšΠ΅, Π½ΠΎ ΡΡƒΠ΄Π΅Ρ˜ΡœΠΈ спорСд ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€ΠΎΡ‚ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ β€œΠšΠ°ΠΊΠΎ Π΄Π° Π³ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚Π΅ Π›ΠΎΠΊΠΈ ΠΊΠ°ΠΊΠΎ ΠΈΠ·Π²ΠΎΡ€ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π½Π° ΠŸΡ€ΠΎΠΌΠ΅Ρ‚Π΅Ρ˜? Β· Π‘Ρ€ΠΎΡ˜ #1222 Β· Π³Ρ€Π°Ρ„Π°Π½Π°/Π»ΠΎΠΊΠΈβ€œ, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΅ цСлосно Π»Π΅Π³Π°Π»Π΅Π½, Π° Loki Π΅ цСлосно ΠΊΠΎΠΌΠΏΠ°Ρ‚ΠΈΠ±ΠΈΠ»Π΅Π½ со PromQL.

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ Loki ΠΊΠ°ΠΊΠΎ ΠΈΠ·Π²ΠΎΡ€ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ со Ρ‚ΠΈΠΏ Prometheus ΠΈ Π΄ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ URL /loki:

Π‘ΠΎΠ±ΠΈΡ€Π°ΡšΠ΅ Ρ‚Ρ€ΡƒΠΏΡ†ΠΈ ΠΎΠ΄ Π›ΠΎΠΊΠΈ

И ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ΠΏΡ€Π°Π²ΠΈΠΌΠ΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ½ΠΈ, ΠΊΠ°ΠΊΠΎ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌΠ΅ со ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ° ΠΎΠ΄ ΠŸΡ€ΠΎΠΌΠ΅Ρ‚Π΅Ρ˜:

Π‘ΠΎΠ±ΠΈΡ€Π°ΡšΠ΅ Ρ‚Ρ€ΡƒΠΏΡ†ΠΈ ΠΎΠ΄ Π›ΠΎΠΊΠΈ

Мислам Π΄Π΅ΠΊΠ° нСусогласСноста Π²ΠΎ функционалноста Π΅ ΠΏΡ€ΠΈΠ²Ρ€Π΅ΠΌΠ΅Π½Π° ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ ќС Π³ΠΎ ΠΏΠΎΠΏΡ€Π°Π²Π°Ρ‚ Ρ‚ΠΎΠ° Π²ΠΎ ΠΈΠ΄Π½ΠΈΠ½Π°.

Π‘ΠΎΠ±ΠΈΡ€Π°ΡšΠ΅ Ρ‚Ρ€ΡƒΠΏΡ†ΠΈ ΠΎΠ΄ Π›ΠΎΠΊΠΈ

ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠ°

Π›ΠΎΠΊΠΈ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° моТност Π·Π° ΠΈΠ·Π²Π»Π΅ΠΊΡƒΠ²Π°ΡšΠ΅ Π½Π° Π½ΡƒΠΌΠ΅Ρ€ΠΈΡ‡ΠΊΠΈ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΎΠ΄ Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈ ΠΈ Π½ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΡ€Π°ΡœΠ°ΡšΠ΅ Π΄ΠΎ ΠŸΡ€ΠΎΠΌΠ΅Ρ‚Π΅Ρ˜. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄Π½Π΅Π²Π½ΠΈΠΊΠΎΡ‚ Π½Π° nginx Π³ΠΎ содрТи Π±Ρ€ΠΎΡ˜ΠΎΡ‚ Π½Π° Π±Π°Ρ˜Ρ‚ΠΈ ΠΏΠΎ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€, ΠΊΠ°ΠΊΠΎ ΠΈ, со ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½Π° ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Π½Π° стандардниот Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π½Π° Π΄Π½Π΅Π²Π½ΠΈΠΊΠΎΡ‚, Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π²ΠΎ сСкунди ΡˆΡ‚ΠΎ Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ Π·Π° Π΄Π° сС ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€ΠΈ. ОвиС ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·Π²Π»Π΅Ρ‡Π°Ρ‚ ΠΈ Π΄Π° сС испратат Π΄ΠΎ ΠŸΡ€ΠΎΠΌΠ΅Ρ‚Π΅Ρ˜.

Π”ΠΎΠ΄Π°Ρ˜Ρ‚Π΅ Π΄Ρ€ΡƒΠ³ Π΄Π΅Π» Π²ΠΎ promtail.yml:

- match:
   selector: '{request_type="api"}'
   stages:
     - metrics:
         http_nginx_response_time:
           type: Histogram
           description: "response time ms"
           source: response_time
           config:
             buckets: [0.010,0.050,0.100,0.200,0.500,1.0]
- match:
   selector: '{request_type=~"static|photo"}'
   stages:
     - metrics:
         http_nginx_response_bytes_sum:
           type: Counter
           description: "response bytes sum"
           source: bytes_out
           config:
             action: add
         http_nginx_response_bytes_count:
           type: Counter
           description: "response bytes count"
           source: bytes_out
           config:
             action: inc

ΠžΠΏΡ†ΠΈΡ˜Π°Ρ‚Π° Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Ρ‚Π΅ ΠΈ Π°ΠΆΡƒΡ€ΠΈΡ€Π°Ρ‚Π΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ° Π²Ρ€Π· основа Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅ ΠΎΠ΄ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚Π°. ОвиС ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ Π½Π΅ сС ΠΈΡΠΏΡ€Π°ΡœΠ°Π°Ρ‚ Π΄ΠΎ Loki - Ρ‚ΠΈΠ΅ сС ΠΏΠΎΡ˜Π°Π²ΡƒΠ²Π°Π°Ρ‚ Π²ΠΎ ΠΊΡ€Π°Ρ˜Π½Π°Ρ‚Π° Ρ‚ΠΎΡ‡ΠΊΠ° Promtail /metrics. ΠŸΡ€ΠΎΠΌΠ΅Ρ‚Π΅Ρ˜ ΠΌΠΎΡ€Π° Π΄Π° Π±ΠΈΠ΄Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ Π΄Π° Π³ΠΈ ΠΏΡ€ΠΈΠΌΠ° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅ Π΄ΠΎΠ±ΠΈΠ΅Π½ΠΈ Π²ΠΎ ΠΎΠ²Π°Π° Ρ„Π°Π·Π°. Π’ΠΎ Π³ΠΎΡ€Π½ΠΈΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π° request_type=β€žapiβ€œ собирамС ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ° Π½Π° хистограм. Π‘ΠΎ овој Ρ‚ΠΈΠΏ Π½Π° ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ° Π΅ ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎ Π΄Π° сС Π΄ΠΎΠ±ΠΈΡ˜Π°Ρ‚ ΠΏΠ΅Ρ€Ρ†Π΅Π½Ρ‚ΠΈΠ»ΠΈ. Π—Π° статични ΠΈ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ, Π³ΠΎ собирамС Π·Π±ΠΈΡ€ΠΎΡ‚ Π½Π° Π±Π°Ρ˜Ρ‚ΠΈ ΠΈ Π±Ρ€ΠΎΡ˜ΠΎΡ‚ Π½Π° Ρ€Π΅Π΄ΠΎΠ²ΠΈ Π²ΠΎ ΠΊΠΎΠΈ смС Π΄ΠΎΠ±ΠΈΠ»Π΅ Π±Π°Ρ˜Ρ‚ΠΈ Π·Π° Π΄Π° Π³ΠΎ прСсмСтамС просСкот.

ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ˜Ρ‚Π΅ повСќС Π·Π° ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ° Ρ‚ΡƒΠΊΠ°.

ΠžΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ ја ΠΏΠΎΡ€Ρ‚Π°Ρ‚Π° Π½Π° Promtail:

promtail:
     image: grafana/promtail:1.4.1
     container_name: monitoring.promtail
     expose:
       - 9080
     ports:
       - "9080:9080"

ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ Π΄Π°Π»ΠΈ сС ΠΏΠΎΡ˜Π°Π²ΡƒΠ²Π°Π°Ρ‚ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ° со прСфиксот promtail_custom:

Π‘ΠΎΠ±ΠΈΡ€Π°ΡšΠ΅ Ρ‚Ρ€ΡƒΠΏΡ†ΠΈ ΠΎΠ΄ Π›ΠΎΠΊΠΈ

ΠŸΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠŸΡ€ΠΎΠΌΠ΅Ρ‚Π΅Ρ˜. Π”ΠΎΠ΄Π°Ρ˜Ρ‚Π΅ ΠΏΡ€ΠΎΠΌΠΎΡ‚ΠΈΠ²Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π·Π° Ρ€Π°Π±ΠΎΡ‚Π°:

- job_name: 'promtail'
 scrape_interval: 10s
 static_configs:
   - targets: ['promtail:9080']

И Π½ΠΈΠ΅ Ρ†Ρ€Ρ‚Π°ΠΌΠ΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ½:

Π‘ΠΎΠ±ΠΈΡ€Π°ΡšΠ΅ Ρ‚Ρ€ΡƒΠΏΡ†ΠΈ ΠΎΠ΄ Π›ΠΎΠΊΠΈ

На овој Π½Π°Ρ‡ΠΈΠ½ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΈ Π΄ΠΎΠ·Π½Π°Π΅Ρ‚Π΅, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈΡ‚Π΅ најбавни ΠΏΡ€Π°ΡˆΠ°ΡšΠ°. ΠœΠΎΠΆΠ΅Ρ‚Π΅ исто Ρ‚Π°ΠΊΠ° Π΄Π° поставитС ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π·Π° ΠΎΠ²ΠΈΠ΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ.

Π‘ΠΊΠ°Π»ΠΈΡ€Π°ΡšΠ΅

Π›ΠΎΠΊΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ ΠΈΠ»ΠΈ Π²ΠΎ Π΅Π΄ΠΈΠ½Π΅Ρ‡Π΅Π½ Π±ΠΈΠ½Π°Ρ€Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ ΠΈΠ»ΠΈ Π²ΠΎ ΡΠΊΡ€ΡˆΠ΅Π½ Ρ€Π΅ΠΆΠΈΠΌ (Ρ…ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»Π½ΠΎ-скалабилСн Ρ€Π΅ΠΆΠΈΠΌ). Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΈΠΎΡ‚ ΡΠ»ΡƒΡ‡Π°Ρ˜, ΠΌΠΎΠΆΠ΅ Π΄Π° Π·Π°Ρ‡ΡƒΠ²Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π²ΠΎ ΠΎΠ±Π»Π°ΠΊΠΎΡ‚, Π° Π΄Π΅Π»ΠΎΠ²ΠΈΡ‚Π΅ ΠΈ индСксот сС складираат ΠΎΠ΄Π΄Π΅Π»Π½ΠΎ. Π’Π΅Ρ€Π·ΠΈΡ˜Π°Ρ‚Π° 1.5 Π²ΠΎΠ²Π΅Π΄ΡƒΠ²Π° моТност Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ Π½Π° Π΅Π΄Π½ΠΎ мСсто, Π½ΠΎ сè ΡƒΡˆΡ‚Π΅ Π½Π΅ Π΅ ΠΏΡ€Π΅ΠΏΠΎΡ€Π°Ρ‡Π»ΠΈΠ²ΠΎ Π΄Π° сС користи Π²ΠΎ производството.

Π‘ΠΎΠ±ΠΈΡ€Π°ΡšΠ΅ Ρ‚Ρ€ΡƒΠΏΡ†ΠΈ ΠΎΠ΄ Π›ΠΎΠΊΠΈ

ΠŸΠ°Ρ€Ρ‡ΠΈΡšΠ°Ρ‚Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС складираат Π²ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ ΡˆΡ‚ΠΎ Π΅ ΠΊΠΎΠΌΠΏΠ°Ρ‚ΠΈΠ±ΠΈΠ»Π½ΠΎ со S3, Π° Ρ…ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»Π½ΠΎ скалабилнитС Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС користат Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ Π½Π° индСкси: Cassandra, BigTable ΠΈΠ»ΠΈ DynamoDB. Π”Ρ€ΡƒΠ³ΠΈΡ‚Π΅ Π΄Π΅Π»ΠΎΠ²ΠΈ Π½Π° Loki - ДистрибутСри (Π·Π° ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅) ΠΈ Querier (Π·Π° ΠΏΡ€Π°ΡˆΠ°ΡšΠ°) - сС Π±Π΅Π· Π΄Ρ€ΠΆΠ°Π²Ρ˜Π°Π½ΡΡ‚Π²ΠΎ, Π° исто Ρ‚Π°ΠΊΠ° сС скалираат Ρ…ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»Π½ΠΎ.

На ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΡ˜Π°Ρ‚Π° DevOpsDays Vancouver 2019, Π΅Π΄Π΅Π½ ΠΎΠ΄ учСсницитС ΠšΠ°Π»ΡƒΠΌ Π‘Ρ‚Ρ˜Π°Π½ објави Π΄Π΅ΠΊΠ° со Π›ΠΎΠΊΠΈ Π½Π΅Π³ΠΎΠ²ΠΈΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈΠΌΠ° ΠΏΠ΅Ρ‚Π°Π±Π°Ρ˜Ρ‚ΠΈ Π»ΠΎΠ³ΠΎΠ²ΠΈ со индСкс ΠΏΠΎΠΌΠ°Π» ΠΎΠ΄ 1% ΠΎΠ΄ Π²ΠΊΡƒΠΏΠ½Π°Ρ‚Π° Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°:Како Π›ΠΎΠΊΠΈ Π³ΠΈ ΠΏΠΎΠ²Ρ€Π·ΡƒΠ²Π° ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈΡ‚Π΅ ΠΈ Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈΡ‚Π΅ - ΠΈ Π²ΠΈ Π·Π°ΡˆΡ‚Π΅Π΄ΡƒΠ²Π° ΠΏΠ°Ρ€ΠΈ".

Π‘ΠΏΠΎΡ€Π΅Π΄Π±Π° Π½Π° Π›ΠΎΠΊΠΈ ΠΈ Π•Π›Πš

Π“ΠΎΠ»Π΅ΠΌΠΈΠ½Π° Π½Π° индСкс

Π—Π° Π΄Π° ја тСстирам Π΄ΠΎΠ±ΠΈΠ΅Π½Π°Ρ‚Π° Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π° Π½Π° индСксот, Π·Π΅Π΄ΠΎΠ² Π»ΠΎΠ³ΠΎΠ²ΠΈ ΠΎΠ΄ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΎΡ‚ nginx Π·Π° кој бСшС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ гасоводот ΠΏΠΎΠ³ΠΎΡ€Π΅. Π”Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Π·Π° Π΅Π²ΠΈΠ΄Π΅Π½Ρ†ΠΈΡ˜Π° ΡΠΎΠ΄Ρ€ΠΆΠ΅ΡˆΠ΅ 406 Π»ΠΈΠ½ΠΈΠΈ со Π²ΠΊΡƒΠΏΠ΅Π½ Π²ΠΎΠ»ΡƒΠΌΠ΅Π½ ΠΎΠ΄ 624 MB. Π”Π½Π΅Π²Π½ΠΈΡ†ΠΈΡ‚Π΅ Π±Π΅Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½ΠΈ Π²ΠΎ Ρ€ΠΎΠΊ ΠΎΠ΄ Π΅Π΄Π΅Π½ час, ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ½ΠΎ 109 записи Π²ΠΎ сСкунда.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° Π΄Π²Π΅ Π»ΠΈΠ½ΠΈΠΈ ΠΎΠ΄ Π΄Π½Π΅Π²Π½ΠΈΠΊΠΎΡ‚:

Π‘ΠΎΠ±ΠΈΡ€Π°ΡšΠ΅ Ρ‚Ρ€ΡƒΠΏΡ†ΠΈ ΠΎΠ΄ Π›ΠΎΠΊΠΈ

Кога сС индСксира ΠΎΠ΄ ELK, ΠΎΠ²Π° Π΄Π°Π΄Π΅ Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π° Π½Π° индСкс ΠΎΠ΄ 30,3 MB:

Π‘ΠΎΠ±ΠΈΡ€Π°ΡšΠ΅ Ρ‚Ρ€ΡƒΠΏΡ†ΠΈ ΠΎΠ΄ Π›ΠΎΠΊΠΈ

Π’ΠΎ ΡΠ»ΡƒΡ‡Π°Ρ˜ΠΎΡ‚ Π½Π° Loki, ΠΎΠ²Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚ΠΈΡ€Π°ΡˆΠ΅ со ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ½ΠΎ 128 KB индСкс ΠΈ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ½ΠΎ 3,8 MB ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π²ΠΎ ΠΏΠ°Ρ€Ρ‡ΠΈΡšΠ°. Π’Ρ€Π΅Π΄ΠΈ Π΄Π° сС Π½Π°ΠΏΠΎΠΌΠ΅Π½Π΅ Π΄Π΅ΠΊΠ° Π΄Π½Π΅Π²Π½ΠΈΠΊΠΎΡ‚ бСшС Π²Π΅ΡˆΡ‚Π°Ρ‡ΠΊΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½ ΠΈ нСмашС Π³ΠΎΠ»Π΅ΠΌΠ° разновидност Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ. ЕдноставСн gzip Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΠΎΡ‚ Π΄Π½Π΅Π²Π½ΠΈΠΊ Π½Π° Docker JSON со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π΄Π°Π΄Π΅ ΠΊΠΎΠΌΠΏΡ€Π΅ΡΠΈΡ˜Π° ΠΎΠ΄ 95,4%, Π° зСмајќи Π³ΠΎ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ Ρ„Π°ΠΊΡ‚ΠΎΡ‚ Π΄Π΅ΠΊΠ° само исчистСниот Π΄Π½Π΅Π²Π½ΠΈΠΊ Π½Π° nginx бСшС испратСн Π΄ΠΎ самиот Loki, Ρ€Π°Π·Π±ΠΈΡ€Π»ΠΈΠ²Π° Π΅ ΠΊΠΎΠΌΠΏΡ€Π΅ΡΠΈΡ˜Π° Π΄ΠΎ 4 MB. Π’ΠΊΡƒΠΏΠ½ΠΈΠΎΡ‚ Π±Ρ€ΠΎΡ˜ Π½Π° ΡƒΠ½ΠΈΠΊΠ°Ρ‚Π½ΠΈ врСдности Π·Π° Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈΡ‚Π΅ Π›ΠΎΠΊΠΈ бСшС 35, ΡˆΡ‚ΠΎ ја ΠΎΠ±Ρ˜Π°ΡΠ½ΡƒΠ²Π° ΠΌΠ°Π»Π°Ρ‚Π° Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π° Π½Π° индСксот. Π—Π° Π•Π›Πš ΠΈ Π΄Π½Π΅Π²Π½ΠΈΠΊΠΎΡ‚ Π΅ исчистСн. Π’Π°ΠΊΠ°, Π›ΠΎΠΊΠΈ Π³ΠΈ компрСсира ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π·Π° 96%, Π° ELK Π·Π° 70%.

ΠŸΠΎΡ‚Ρ€ΠΎΡˆΡƒΠ²Π°Ρ‡ΠΊΠ° Π½Π° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°

Π‘ΠΎΠ±ΠΈΡ€Π°ΡšΠ΅ Ρ‚Ρ€ΡƒΠΏΡ†ΠΈ ΠΎΠ΄ Π›ΠΎΠΊΠΈ

Ако Π³ΠΎ спорСдимС Ρ†Π΅Π»ΠΈΠΎΡ‚ оџак ΠŸΡ€ΠΎΠΌΠ΅Ρ‚Π΅Ρ˜ ΠΈ Π•Π›Πš, Ρ‚ΠΎΠ³Π°Ρˆ Π›ΠΎΠΊΠΈ β€žΡ˜Π°Π΄Π΅β€œ Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ ΠΏΠ°Ρ‚ΠΈ ΠΏΠΎΠΌΠ°Π»ΠΊΡƒ. Јасно Π΅ Π΄Π΅ΠΊΠ° услугата Go Ρ‚Ρ€ΠΎΡˆΠΈ ΠΏΠΎΠΌΠ°Π»ΠΊΡƒ ΠΎΠ΄ Java услугата, Π° ΡΠΏΠΎΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°Ρ‚Π° Π½Π° JVM Heap Elasticsearch ΠΈ Π΄ΠΎΠ΄Π΅Π»Π΅Π½Π°Ρ‚Π° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π° Π·Π° Loki Π΅ Π½Π΅Ρ‚ΠΎΡ‡Π½ΠΎ, Π½ΠΎ сСпак Π²Ρ€Π΅Π΄ΠΈ Π΄Π° сС Π½Π°ΠΏΠΎΠΌΠ΅Π½Π΅ Π΄Π΅ΠΊΠ° Loki користи ΠΌΠ½ΠΎΠ³Ρƒ ΠΏΠΎΠΌΠ°Π»ΠΊΡƒ ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°. НСговата прСдност Π½Π° процСсорот Π½Π΅ Π΅ Ρ‚ΠΎΠ»ΠΊΡƒ ΠΎΡ‡ΠΈΠ³Π»Π΅Π΄Π½Π°, Π½ΠΎ исто Ρ‚Π°ΠΊΠ° Π΅ присутна.

Π‘Ρ€Π·ΠΈΠ½Π°

Π›ΠΎΠΊΠΈ ΠΏΠΎΠ±Ρ€Π·ΠΎ Π³ΠΈ β€žΠ³ΠΎΠ»Ρ‚Π°β€œ Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈΡ‚Π΅. Π‘Ρ€Π·ΠΈΠ½Π°Ρ‚Π° зависи ΠΎΠ΄ ΠΌΠ½ΠΎΠ³Ρƒ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈ - ΠΊΠ°ΠΊΠ²ΠΈ сС Π»ΠΎΠ³ΠΎΠ²ΠΈ, ΠΊΠΎΠ»ΠΊΡƒ смС софистицирани Π²ΠΎ Π½ΠΈΠ²Π½ΠΎΡ‚ΠΎ ΠΏΠ°Ρ€ΡΠΈΡ€Π°ΡšΠ΅, ΠΌΡ€Π΅ΠΆΠ°, диск ΠΈΡ‚Π½. - Π½ΠΎ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ‚ΠΈΠ²Π½ΠΎ Π΅ ΠΏΠΎΠ³ΠΎΠ»Π΅ΠΌΠ° ΠΎΠ΄ ELK (Π²ΠΎ ΠΌΠΎΡ˜ΠΎΡ‚ тСст - ΠΎΠΊΠΎΠ»Ρƒ двојно повСќС). Ова сС ΠΎΠ±Ρ˜Π°ΡΠ½ΡƒΠ²Π° со Ρ„Π°ΠΊΡ‚ΠΎΡ‚ Π΄Π΅ΠΊΠ° Π›ΠΎΠΊΠΈ става ΠΌΠ½ΠΎΠ³Ρƒ ΠΏΠΎΠΌΠ°Π»ΠΊΡƒ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π²ΠΎ индСксот ΠΈ, соодвСтно, Ρ‚Ρ€ΠΎΡˆΠΈ ΠΏΠΎΠΌΠ°Π»ΠΊΡƒ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€Π°ΡšΠ΅. Π‘ΠΎ Π±Ρ€Π·ΠΈΠ½Π°Ρ‚Π° Π½Π° ΠΏΡ€Π΅Π±Π°Ρ€ΡƒΠ²Π°ΡšΠ΅, ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π΅ спротивна: Loki Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ успорува Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΏΠΎΠ³ΠΎΠ»Π΅ΠΌΠΈ ΠΎΠ΄ Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ Π³ΠΈΠ³Π°Π±Π°Ρ˜Ρ‚ΠΈ, Π΄ΠΎΠ΄Π΅ΠΊΠ° Π±Ρ€Π·ΠΈΠ½Π°Ρ‚Π° Π½Π° ΠΏΡ€Π΅Π±Π°Ρ€ΡƒΠ²Π°ΡšΠ΅ Π½Π° ELK Π½Π΅ зависи ΠΎΠ΄ Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°Ρ‚Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅.

ΠŸΡ€Π΅Π±Π°Ρ€ΡƒΠ²Π°ΡšΠ΅ ΠΏΠΎ Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈ

Π›ΠΎΠΊΠΈ Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΈΠ½Ρ„Π΅Ρ€ΠΈΠΎΡ€Π΅Π½ Π²ΠΎ однос Π½Π° ELK Π²ΠΎ однос Π½Π° моТноститС Π·Π° ΠΏΡ€Π΅Π±Π°Ρ€ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈ. Grep со Ρ€Π΅Π³ΡƒΠ»Π°Ρ€Π½ΠΈ ΠΈΠ·Ρ€Π°Π·ΠΈ Π΅ моќСн, Π½ΠΎ Π΅ ΠΈΠ½Ρ„Π΅Ρ€ΠΈΠΎΡ€Π΅Π½ Π²ΠΎ однос Π½Π° Π·Ρ€Π΅Π»Π° Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ. НСдостатокот Π½Π° ΠΏΡ€Π°ΡˆΠ°ΡšΠ° Π·Π° опсСг, Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΡ˜Π° само ΠΏΠΎ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ, нСмоТноста Π·Π° ΠΏΡ€Π΅Π±Π°Ρ€ΡƒΠ²Π°ΡšΠ΅ Π±Π΅Π· Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ - сСто Ρ‚ΠΎΠ° Π½Γ¨ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΡƒΠ²Π° Π²ΠΎ Π±Π°Ρ€Π°ΡšΠ΅Ρ‚ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ΄ интСрСс Π²ΠΎ Π›ΠΎΠΊΠΈ. Ова Π½Π΅ Π·Π½Π°Ρ‡ΠΈ Π΄Π΅ΠΊΠ° Π½ΠΈΡˆΡ‚ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС најдС со ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° Loki, Π½ΠΎ Π³ΠΎ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π° Ρ‚Π΅ΠΊΠΎΡ‚ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° со Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈ ΠΊΠΎΠ³Π° ΠΏΡ€Π²ΠΎ ќС Π½Π°Ρ˜Π΄Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π²ΠΎ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ½ΠΈΡ‚Π΅ Π½Π° Prometheus, Π° ΠΏΠΎΡ‚ΠΎΠ° Π³ΠΈ користитС ΠΎΠ²ΠΈΠ΅ ΠΎΠ·Π½Π°ΠΊΠΈ Π·Π° Π΄Π° ΠΏΠΎΠ±Π°Ρ€Π°Ρ‚Π΅ ΡˆΡ‚ΠΎ сС случило Π²ΠΎ Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈΡ‚Π΅.

ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ

Како ΠΏΡ€Π²ΠΎ, ΡƒΠ±Π°Π²ΠΎ Π΅ (ΠΈΠ·Π²ΠΈΠ½ΠΈ, Π½Π΅ ΠΌΠΎΠΆΠ΅Π² Π΄Π° ΠΎΠ΄ΠΎΠ»Π΅Π°ΠΌ). Grafana ΠΈΠΌΠ° ΡƒΠ±Π°Π² ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ, Π½ΠΎ Kibana Π΅ ΠΌΠ½ΠΎΠ³Ρƒ ΠΏΠΎΠ±ΠΎΠ³Π°Ρ‚ со Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π”ΠΎΠ±Ρ€ΠΈΡ‚Π΅ ΠΈ Π»ΠΎΡˆΠΈΡ‚Π΅ страни Π½Π° Π›ΠΎΠΊΠΈ

Π•Π΄Π½Π° ΠΎΠ΄ прСдноститС Π΅ ΡˆΡ‚ΠΎ Π›ΠΎΠΊΠΈ сС ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π° со ΠŸΡ€ΠΎΠΌΠ΅Ρ‚Π΅Ρ˜, Ρ‚Π°ΠΊΠ° ΡˆΡ‚ΠΎ Π΄ΠΎΠ±ΠΈΠ²Π°ΠΌΠ΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ° ΠΈ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π½Π°Π΄Π²ΠΎΡ€ ΠΎΠ΄ ΠΊΡƒΡ‚ΠΈΡ˜Π°Ρ‚Π°. Погодно Π΅ Π·Π° ΡΠΎΠ±ΠΈΡ€Π°ΡšΠ΅ Ρ‚Ρ€ΡƒΠΏΡ†ΠΈ ΠΈ Π½ΠΈΠ²Π½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ ΠΎΠ΄ Kubernetes Pods, бидСјќи ΠΈΠΌΠ° ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°ΡšΠ΅ Π½Π° услуги наслСдСно ΠΎΠ΄ ΠŸΡ€ΠΎΠΌΠ΅Ρ‚Π΅Ρ˜ ΠΈ автоматски ΠΏΡ€ΠΈΠΊΠ°Ρ‡ΡƒΠ²Π° Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ.

НСгативна страна Π΅ слабата Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°. НСкои Ρ€Π°Π±ΠΎΡ‚ΠΈ, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, карактСристикитС ΠΈ моТноститС Π½Π° Promtail, Π³ΠΈ ΠΎΡ‚ΠΊΡ€ΠΈΠ² само Π²ΠΎ процСсот Π½Π° ΠΏΡ€ΠΎΡƒΡ‡ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΊΠΎΠ΄ΠΎΡ‚, Π·Π° ΡΡ€Π΅ΡœΠ° Ρ‚ΠΎΡ˜ Π΅ со ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄. Π”Ρ€ΡƒΠ³ нСдостаток сС слабитС способности Π·Π° ΠΏΠ°Ρ€ΡΠΈΡ€Π°ΡšΠ΅. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Loki Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π° повСќСлиниски Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈ. Π”Ρ€ΡƒΠ³ нСдостаток Π΅ Ρ‚ΠΎΠ° ΡˆΡ‚ΠΎ Loki Π΅ Ρ€Π΅Π»Π°Ρ‚ΠΈΠ²Π½ΠΎ ΠΌΠ»Π°Π΄Π° Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡ˜Π° (ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Ρ‚ΠΎ 1.0 бСшС Π²ΠΎ Π½ΠΎΠ΅ΠΌΠ²Ρ€ΠΈ 2019 Π³ΠΎΠ΄ΠΈΠ½Π°).

Π—Π°ΠΊΠ»ΡƒΡ‡ΠΎΠΊ

Loki Π΅ 100% интСрСсна Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡ˜Π° која Π΅ ΠΏΠΎΠ³ΠΎΠ΄Π½Π° Π·Π° ΠΌΠ°Π»ΠΈ ΠΈ срСдни ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ, ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π°Ρ˜ΡœΠΈ Π²ΠΈ Π΄Π° Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΠΌΠ½ΠΎΠ³Ρƒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π½Π° Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΡ˜Π° Π½Π° Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈ, ΠΏΡ€Π΅Π±Π°Ρ€ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈ, слСдСњС ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈ.

НС користимС Loki Π²ΠΎ Badoo Π·Π°Ρ‚ΠΎΠ° ΡˆΡ‚ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ ELK стСк ΡˆΡ‚ΠΎ Π½ΠΈ ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π° ΠΈ кој Π΅ обраснат со Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ сопствСни Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ˜Π° со Ρ‚Π΅ΠΊΠΎΡ‚ Π½Π° Π³ΠΎΠ΄ΠΈΠ½ΠΈΡ‚Π΅. Π—Π° нас ΠΊΠ°ΠΌΠ΅Π½ Π½Π° ΡΠΎΠΏΠ½ΡƒΠ²Π°ΡšΠ΅ Π΅ ΠΏΡ€Π΅Π±Π°Ρ€ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½ΠΈΠ· Ρ‚Ρ€ΡƒΠΏΡ†ΠΈΡ‚Π΅. Π‘ΠΎ рСчиси 100 GB Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈ Π΄Π½Π΅Π²Π½ΠΎ, Π·Π° нас Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° најдСмС сè ΠΈ ΠΌΠ°Π»ΠΊΡƒ повСќС ΠΈ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌΠ΅ Ρ‚ΠΎΠ° Π±Ρ€Π·ΠΎ. Π—Π° Ρ†Ρ€Ρ‚Π°ΡšΠ΅ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ користимС Π΄Ρ€ΡƒΠ³ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ˜Π° ΠΊΠΎΠΈ сС ΠΏΡ€ΠΈΠ»Π°Π³ΠΎΠ΄Π΅Π½ΠΈ Π½Π° Π½Π°ΡˆΠΈΡ‚Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈ ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½ΠΈ Π΅Π΄Π½ΠΈ со Π΄Ρ€ΡƒΠ³ΠΈ. Π›ΠΎΠΊΠΈ ΠΎΡŸΠ°ΠΊΠΎΡ‚ ΠΈΠΌΠ° ΠΎΠΏΠΈΠΏΠ»ΠΈΠ²ΠΈ ΠΏΡ€ΠΈΠ΄ΠΎΠ±ΠΈΠ²ΠΊΠΈ, Π½ΠΎ Π½Π΅ΠΌΠ° Π΄Π° Π½ΠΈ Π΄Π°Π΄Π΅ повСќС ΠΎΡ‚ΠΊΠΎΠ»ΠΊΡƒ ΡˆΡ‚ΠΎ вСќС ΠΈΠΌΠ°ΠΌΠ΅, Π° Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ΄ΠΎΠ±ΠΈΠ²ΠΊΠΈ сигурно Π½Π΅ΠΌΠ° Π΄Π° Π³ΠΈ Π½Π°Π΄ΠΌΠΈΠ½Π°Ρ‚ Ρ‚Ρ€ΠΎΡˆΠΎΡ†ΠΈΡ‚Π΅ Π·Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡ˜Π°.

И ΠΈΠ°ΠΊΠΎ ΠΏΠΎ ΠΈΡΡ‚Ρ€Π°ΠΆΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ стана јасно Π΄Π΅ΠΊΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π³ΠΎ користимС Π›ΠΎΠΊΠΈ, сС Π½Π°Π΄Π΅Π²Π°ΠΌΠ΅ Π΄Π΅ΠΊΠ° овој пост ќС Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π²ΠΎ ΠΈΠ·Π±ΠΎΡ€ΠΎΡ‚.

Π‘Π΅ Π½Π°ΠΎΡ“Π° ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅Ρ‚ΠΎ со ΠΊΠΎΠ΄ΠΎΡ‚ ΡˆΡ‚ΠΎ сС користи Π²ΠΎ ΡΡ‚Π°Ρ‚ΠΈΡ˜Π°Ρ‚Π° Ρ‚ΡƒΠΊΠ°.

Π˜Π·Π²ΠΎΡ€: www.habr.com

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€