Π›ΠΎΠ³ΠΈ Π² Kubernetes (ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ) сСгодня: оТидания ΠΈ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

Π›ΠΎΠ³ΠΈ Π² Kubernetes (ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ) сСгодня: оТидания ΠΈ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

Π¨Ρ‘Π» 2019 Π³ΠΎΠ΄, Π° Ρƒ нас всё Π΅Ρ‰Ρ‘ Π½Π΅Ρ‚ стандартного Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ Π»ΠΎΠ³ΠΎΠ² Π² Kubernetes. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ, ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ своими поисками, встрСчаСмыми ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΈ ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ.

Однако для Π½Π°Ρ‡Π°Π»Π° ΠΎΠ³ΠΎΠ²ΠΎΡ€ΡŽΡΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΈ ΠΏΠΎΠ΄ сбором Π»ΠΎΠ³ΠΎΠ² ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π°Π·Π½ΠΎΠ΅:

  • ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ security- ΠΈ audit-Π»ΠΎΠ³ΠΈ;
  • ΠΊΡ‚ΠΎ-Ρ‚ΠΎ β€” Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ всСй инфраструктуры;
  • Π° ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ достаточно ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π»ΠΎΠ³ΠΈ прилоТСния, ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, балансировщики.

О Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Π»ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Β«Ρ…ΠΎΡ‚Π΅Π»ΠΊΠΈΒ» ΠΈ с ΠΊΠ°ΠΊΠΈΠΌΠΈ трудностями ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ, β€” ΠΏΠΎΠ΄ ΠΊΠ°Ρ‚ΠΎΠΌ.

ВСория: ΠΎΠ± инструмСнтах для Π»ΠΎΠ³ΠΎΠ²

ΠŸΡ€Π΅Π΄Ρ‹ΡΡ‚ΠΎΡ€ΠΈΡ ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ… систСмы логирования

Π›ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡˆΠ»ΠΎ Π΄ΠΎΠ»Π³ΠΈΠΉ ΠΏΡƒΡ‚ΡŒ, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈΡΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ сбора ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° Π»ΠΎΠ³ΠΎΠ², Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈ примСняСм сСгодня. Π•Ρ‰Ρ‘ Π² 1950-Ρ… Π³ΠΎΠ΄Π°Ρ… Π² Fortran появился Π°Π½Π°Π»ΠΎΠ³ стандартных ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³Π°Π»ΠΈ программисту Π² ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Π΅ Π»ΠΎΠ³ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π»ΠΈ Тизнь программистам Ρ‚Π΅Ρ… Π²Ρ€Π΅ΠΌΠ΅Π½. На сСгодня ΠΌΡ‹ Π² Π½ΠΈΡ… Π²ΠΈΠ΄ΠΈΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ систСмы логирования β€” источник ΠΈΠ»ΠΈ Β«ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΒ» (producer) Π»ΠΎΠ³ΠΎΠ².

ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Π°Ρ Π½Π°ΡƒΠΊΠ° Π½Π΅ стояла Π½Π° мСстС: появились ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Π΅ сСти, ΠΏΠ΅Ρ€Π²Ρ‹Π΅ кластСры… Начали Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ слоТныС систСмы, состоящиС ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ². Π’Π΅ΠΏΠ΅Ρ€ΡŒ систСмныС администраторы Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Ρ‹ Π±Ρ‹Π»ΠΈ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈ с Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… машин, Π° Π² особых случаях ΠΌΠΎΠ³Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΈ сообщСния ядра ОБ Π½Π° случай, Ссли потрСбуСтся Ρ€Π°ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ систСмный сбой. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ систСмы Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ сбора Π»ΠΎΠ³ΠΎΠ², Π² Π½Π°Ρ‡Π°Π»Π΅ 2000-Ρ… Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ RFC 3164, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ стандартизовал remote_syslog. Π’Π°ΠΊ появился Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π²Π°ΠΆΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚: ΠΊΠΎΠ»Π»Π΅ΠΊΡ‚ΠΎΡ€ (сборщик) Π»ΠΎΠ³ΠΎΠ² ΠΈ ΠΈΡ… Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.

Π‘ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ объСма Π»ΠΎΠ³ΠΎΠ² ΠΈ повсСмСстным Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ΠΌ Π²Π΅Π±-Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ встал вопрос ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π»ΠΎΠ³ΠΈ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ. На смСну простым ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΌ инструмСнтам (awk/sed/grep) ΠΏΡ€ΠΈΡˆΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ просмотрщики Π»ΠΎΠ³ΠΎΠ² β€” Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚.

Π’ связи с ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ объСма Π»ΠΎΠ³ΠΎΠ² стало ясно ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅: Π»ΠΎΠ³ΠΈ Π½ΡƒΠΆΠ½Ρ‹, Π½ΠΎ Π½Π΅ всС. А Π΅Ρ‰Ρ‘ Ρ€Π°Π·Π½Ρ‹Π΅ Π»ΠΎΠ³ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Ρ€Π°Π·Π½ΠΎΠ³ΠΎ уровня сохранности: ΠΎΠ΄Π½ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· дСнь, Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ β€” Π½Π°Π΄ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ 5 Π»Π΅Ρ‚. Π’Π°ΠΊ Π² систСму логирования добавился ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΈ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… β€” Π½Π°Π·ΠΎΠ²Ρ‘ΠΌ Π΅Π³ΠΎ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠΌ.

Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Ρ‚ΠΎΠΆΠ΅ сдСлали ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹ΠΉ скачок: с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΠ΅Ρ€Π΅ΡˆΠ»ΠΈ Π½Π° рСляционныС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈ Π½Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Elasticsearch). Π’Π°ΠΊ ΠΎΡ‚ ΠΊΠΎΠ»Π»Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΎΡ‚Π΄Π΅Π»ΠΈΠ»ΠΎΡΡŒ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.

Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², само понятиС Π»ΠΎΠ³Π° Ρ€Π°ΡΡˆΠΈΡ€ΠΈΠ»ΠΎΡΡŒ Π΄ΠΎ Π½Π΅ΠΊΠΎΠ΅Π³ΠΎ абстрактного ΠΏΠΎΡ‚ΠΎΠΊΠ° событий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ для истории. А Ρ‚ΠΎΡ‡Π½Π΅Π΅ β€” Π½Π° Ρ‚ΠΎΡ‚ случай, ΠΊΠΎΠ³Π΄Π° потрСбуСтся провСсти расслСдованиС ΠΈΠ»ΠΈ ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ аналитичСский отчСт…

Π’ ΠΈΡ‚ΠΎΠ³Π΅, Π·Π° ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ нСбольшой ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, сбор Π»ΠΎΠ³ΠΎΠ² развился Π² Π²Π°ΠΆΠ½ΡƒΡŽ подсистСму, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΠΎ ΠΏΡ€Π°Π²Ρƒ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² Π² Big Data.

Π›ΠΎΠ³ΠΈ Π² Kubernetes (ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ) сСгодня: оТидания ΠΈ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ
Если ΠΊΠΎΠ³Π΄Π°-Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… print’ов ΠΌΠΎΠ³Π»ΠΎ Π±Ρ‹Ρ‚ΡŒ достаточно для «систСмы логирования», Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ситуация сильно измСнилась.

Kubernetes ΠΈ Π»ΠΎΠ³ΠΈ

Когда Π² инфраструктуру ΠΏΡ€ΠΈΡˆΡ‘Π» Kubernetes, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Π²ΡˆΠ°Ρ ΠΈ Π±Π΅Π· Ρ‚ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° сбора Π»ΠΎΠ³ΠΎΠ² Π½Π΅ обошла стороной ΠΈ Π΅Π³ΠΎ. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ смыслС ΠΎΠ½Π° стала Π΄Π°ΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½ΠΎΠΉ: ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ инфраструктурной ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ Π±Ρ‹Π»ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΎ, Π½ΠΎ ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ услоТнСно. МногиС старыС сСрвисы Π½Π°Ρ‡Π°Π»ΠΈ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡŽ Π½Π° микросСрвисныС Ρ€Π΅Π»ΡŒΡΡ‹. Π’ контСкстС Π»ΠΎΠ³ΠΎΠ² это Π²Ρ‹Ρ€Π°Π·ΠΈΠ»ΠΎΡΡŒ Π² растущСм числС источников Π»ΠΎΠ³ΠΎΠ², ΠΈΡ… особом ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅, ΠΈ нСобходимости ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Π»ΠΎΠ³ΠΈ взаимосвязи всСх ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² систСмы…

ЗабСгая Π²ΠΏΠ΅Ρ€Ρ‘Π΄, ΠΌΠΎΠ³Ρƒ ΠΊΠΎΠ½ΡΡ‚Π°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ сСйчас, ΠΊ соТалСнию, Π½Π΅Ρ‚ стандартизированного Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° логирования для Kubernetes, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹ Π²Ρ‹Π³ΠΎΠ΄Π½ΠΎ отличался ΠΎΡ‚ всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ…. НаиболСС популярныС Π² сообщСствС схСмы сводятся ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ:

  • ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ стСк EFK (Elasticsearch, Fluentd, Kibana);
  • ΠΊΡ‚ΠΎ-Ρ‚ΠΎ β€” ΠΏΡ€ΠΎΠ±ΡƒΠ΅Ρ‚ Π½Π΅Π΄Π°Π²Π½ΠΎ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ Loki ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Logging operator;
  • нас (Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нас?..) Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ устраиваСт собствСнная Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° β€” loghouse…

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ‚Π°ΠΊΠΈΠ΅ связки Π² K8s-кластСрах (для self-hosted-Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ):

Однако Π½Π΅ Π±ΡƒΠ΄Ρƒ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½Π° инструкциях ΠΏΠΎ ΠΈΡ… установкС ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. ВмСсто этого, ΡΡ„ΠΎΠΊΡƒΡΠΈΡ€ΡƒΡŽΡΡŒ Π½Π° ΠΈΡ… нСдостатках ΠΈ Π±ΠΎΠ»Π΅Π΅ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… Π²Ρ‹Π²ΠΎΠ΄Π°Ρ… ΠΏΠΎ ситуации с Π»ΠΎΠ³Π°ΠΌΠΈ Π² Ρ†Π΅Π»ΠΎΠΌ.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° с Π»ΠΎΠ³Π°ΠΌΠΈ Π² K8s

Π›ΠΎΠ³ΠΈ Π² Kubernetes (ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ) сСгодня: оТидания ΠΈ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

Β«ΠŸΠΎΠ²ΡΠ΅Π΄Π½Π΅Π²Π½Ρ‹Π΅ Π»ΠΎΠ³ΠΈΒ», сколько ΠΆΠ΅ вас?..

Π¦Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ сбор Π»ΠΎΠ³ΠΎΠ² с достаточно большой инфраструктуры Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π½Π΅ΠΌΠ°Π»Ρ‹Ρ… рСсурсов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΉΠ΄ΡƒΡ‚ Π½Π° сбор, Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π»ΠΎΠ³ΠΎΠ². Π’ Ρ…ΠΎΠ΄Π΅ эксплуатации Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΡ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ трСбованиями ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠΌΠΈ ΠΈΠ·-Π·Π° Π½ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ Π² эксплуатации.

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ClickHouse

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ довольно Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π»ΠΎΠ³ΠΈ: Π±ΠΎΠ»Π΅Π΅ 5000 строк Π² сСкунду. Начнём Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π΅Π³ΠΎ Π»ΠΎΠ³Π°ΠΌΠΈ, складывая ΠΈΡ… Π² ClickHouse.

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ потрСбуСтся ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ realtime, 4-ядСрный сСрвСр с ClickHouse ΡƒΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½ ΠΏΠΎ дисковой подсистСмС:

Π›ΠΎΠ³ΠΈ Π² Kubernetes (ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ) сСгодня: оТидания ΠΈ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ связан с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ пытаСмся максимально быстро ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² ClickHouse. И Π½Π° это Π‘Π” Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½ΠΎΠΉ дисковой Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ, ΠΈΠ·-Π·Π° Ρ‡Π΅Π³ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ошибки:

DB::Exception: Too many parts (300). Merges are processing significantly slower than inserts

Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ MergeTree-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² ClickHouse (Π² Π½ΠΈΡ… Π»Π΅ΠΆΠ°Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π»ΠΎΠ³ΠΎΠ²) ΠΈΠΌΠ΅ΡŽΡ‚ свои слоТности ΠΏΡ€ΠΈ опСрациях записи. ВставляСмыС Π² Π½ΠΈΡ… Π΄Π°Π½Π½Ρ‹Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡŽ, которая ΠΏΠΎΡ‚ΠΎΠΌ сливаСтся с основной Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅, запись получаСтся ΠΎΡ‡Π΅Π½ΡŒ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊ диску, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π° Π½Π΅Ρ‘ распространяСтся ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅, ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅: Π² 1 сСкунду ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ»ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 300 субпартиций (фактичСски это 300 insert’ов Π² сСкунду).

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ повСдСния, слСдуСт ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² ClickHouse ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ большими кусками ΠΈ Π½Π΅ Ρ‡Π°Ρ‰Π΅ 1 Ρ€Π°Π·Π° Π² 2 сСкунды. Однако запись большими ΠΏΠ°Ρ‡ΠΊΠ°ΠΌΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π΅ΠΆΠ΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² ClickHouse. Π­Ρ‚ΠΎ, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ Π±ΡƒΡ„Π΅Ρ€Π° ΠΈ ΠΊ ΠΏΠΎΡ‚Π΅Ρ€Π΅ Π»ΠΎΠ³ΠΎΠ². РСшСниС β€” ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π±ΡƒΡ„Π΅Ρ€ Fluentd, Π½ΠΎ Ρ‚ΠΎΠ³Π΄Π° увСличится ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Другая проблСмная сторона нашСго Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ с ClickHouse Π±Ρ‹Π»Π° связана с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² нашСм случаС (loghouse) Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Ρ‡Π΅Ρ€Π΅Π· внСшниС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, связанныС Merge-Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€ΠΊΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ² трСбуСтся излишняя опСративная ΠΏΠ°ΠΌΡΡ‚ΡŒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΠ΅Ρ‚Π°Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚ всС ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ β€” Π΄Π°ΠΆΠ΅ Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ Π½Π΅ содСрТат Π½ΡƒΠΆΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, сСйчас Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ смСло ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ для Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… вСрсий ClickHouse (c 18.16).

Π’ ΠΈΡ‚ΠΎΠ³Π΅, становится ясно, Ρ‡Ρ‚ΠΎ для сбора Π»ΠΎΠ³ΠΎΠ² Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² ClickHouse Ρ…Π²Π°Ρ‚ΠΈΡ‚ рСсурсов Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (Ρ‚ΠΎΡ‡Π½Π΅Π΅, ΠΈΡ… распрСдСлСниС Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ цСлСсообразным). ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, потрСбуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ аккумулятор, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΌΡ‹ Π΅Ρ‰Ρ‘ вСрнёмся. ΠžΠΏΠΈΡΡ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Π²Ρ‹ΡˆΠ΅ случай β€” Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ. И Π½Π° Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΡ‹ Π½Π΅ смогли ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ΅ ΠΈ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±Ρ‹ устраивало Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ° ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π±Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈ с минимальной задСрТкой…

А Elasticsearch?

Π˜Π·Π²Π΅ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ Elasticsearch справляСтся с большими Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ°ΠΌΠΈ. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π΅Π³ΠΎ Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π›ΠΎΠ³ΠΈ Π² Kubernetes (ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ) сСгодня: оТидания ΠΈ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

Elasticsearch смог ΠΏΠ΅Ρ€Π΅Π²Π°Ρ€ΠΈΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠ΄Π½Π°ΠΊΠΎ запись ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… объСмов Π² Π½Π΅Π³ΠΎ сильно ΡƒΡ‚ΠΈΠ»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ CPU. Π­Ρ‚ΠΎ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ кластСра. Чисто тСхничСски это Π½Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΎΠ΄Π½Π°ΠΊΠΎ получится, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ систСмы сбора Π»ΠΎΠ³ΠΎΠ² ΠΌΡ‹ ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠΊΠΎΠ»ΠΎ 8 ядСр ΠΈ ΠΈΠΌΠ΅Π΅ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ высоконагруТСнный ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π² систСмС…

Π˜Ρ‚ΠΎΠ³: Ρ‚Π°ΠΊΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π°Π²Π΄Π°Π½, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ большой ΠΈ Π΅Π³ΠΎ руководство Π³ΠΎΡ‚ΠΎΠ²ΠΎ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹Π΅ рСсурсы Π½Π° систСму Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ логирования.

Π’ΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π·Π°ΠΊΠΎΠ½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ вопрос:

КакиС Π»ΠΎΠ³ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½Ρ‹?

Π›ΠΎΠ³ΠΈ Π² Kubernetes (ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ) сСгодня: оТидания ΠΈ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ сам ΠΏΠΎΠ΄Ρ…ΠΎΠ΄: Π»ΠΎΠ³ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ, ΠΈ Π½Π΅ ΠΏΠΎΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ событиС Π² систСмС.

Допустим, Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΏΡ€Π΅ΡƒΡΠΏΠ΅Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΌΠ°Π³Π°Π·ΠΈΠ½. КакиС Π»ΠΎΠ³ΠΈ Π²Π°ΠΆΠ½Ρ‹? Π‘ΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ максимум ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с ΠΏΠ»Π°Ρ‚Ρ‘ΠΆΠ½ΠΎΠ³ΠΎ шлюза β€” отличная идСя. А Π²ΠΎΡ‚ ΠΎΡ‚ сСрвиса Π½Π°Ρ€Π΅Π·ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² Π½Π°ΠΌ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹ Π½Π΅ всС Π»ΠΎΠ³ΠΈ: Ρ…Π²Π°Ρ‚ΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ошибок ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ 500-Ρ… ошибок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ этот ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚).

Π’ΠΎΡ‚ ΠΌΡ‹ ΠΈ ΠΏΡ€ΠΈΡˆΠ»ΠΈ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΡ€Π°Π²Π΄Π°Π½ΠΎ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ всСгда. ΠžΡ‡Π΅Π½ΡŒ часто ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Ρ…ΠΎΡ‡Π΅Ρ‚ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ всС Π»ΠΎΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС, хотя Π½Π° самом Π΄Π΅Π»Π΅ ΠΈΠ· всСго Π»ΠΎΠ³Π° трСбуСтся лишь условныС 5% сообщСний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹ для бизнСса:

  • Иногда достаточно Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ, скаТСм, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π»ΠΎΠ³Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΈ сборщик ошибок (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Sentry).
  • Для расслСдования ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ΠΎΠ² Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ оповСщСния ΠΎΠ± ошибкС ΠΈ собствСнно большого локального Π»ΠΎΠ³Π°.
  • Π£ нас Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈ вовсС ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ тСстами ΠΈ систСмами сбора ошибок. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Π½Π΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΈΡΡŒ Π»ΠΎΠ³ΠΈ ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ²Ρ‹Π΅ β€” ΠΎΠ½ΠΈ всё Π²ΠΈΠ΄Π΅Π»ΠΈ ΠΏΠΎ трСйсам ошибок.

Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΈΠ· ΠΆΠΈΠ·Π½ΠΈ

Π₯ΠΎΡ€ΠΎΡˆΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ другая история. К Π½Π°ΠΌ ΠΏΡ€ΠΈΡˆΡ‘Π» запрос ΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ бСзопасников ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡƒΠΆΠ΅ использовалось коммСрчСскоС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ Π·Π°Π΄ΠΎΠ»Π³ΠΎ Π΄ΠΎ внСдрСния Kubernetes.

ΠŸΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ Β«ΠΏΠΎΠ΄Ρ€ΡƒΠΆΠΈΡ‚ΡŒΒ» систСму Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ сбора Π»ΠΎΠ³ΠΎΠ² с ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ сСнсором обнаруТСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ β€” QRadar. Π­Ρ‚Π° систСма ΡƒΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈ ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ syslog, Π·Π°Π±ΠΈΡ€Π°Ρ‚ΡŒ c FTP. Однако ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Ρ‘ с ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ remote_syslog для fluentd сразу Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ (ΠΊΠ°ΠΊ оказалось, ΠΌΡ‹ Π½Π΅ ΠΎΠ΄Π½ΠΈ Ρ‚Π°ΠΊΠΈΠ΅). ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с настройкой QRadar оказались Π½Π° сторонС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ бСзопасников ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅, Ρ‡Π°ΡΡ‚ΡŒ Π»ΠΎΠ³ΠΎΠ², ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Ρ… для бизнСса, Π²Ρ‹Π³Ρ€ΡƒΠΆΠ°Π»Π°ΡΡŒ Π½Π° FTP QRadar, Π° другая Ρ‡Π°ΡΡ‚ΡŒ β€” ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»ΡΠ»Π°ΡΡŒ Ρ‡Π΅Ρ€Π΅Π· remote syslog Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ с ΡƒΠ·Π»ΠΎΠ². Для этого ΠΌΡ‹ Π΄Π°ΠΆΠ΅ написали простой chart β€” Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠ½ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΡƒΡŽ задачу… Благодаря ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠ΅ΠΉΡΡ схСмС, сам ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Π» ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π» ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Π΅ Π»ΠΎΠ³ΠΈ (с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ своСго любимого инструмСнтария), Π° ΠΌΡ‹ смогли ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ расходы Π½Π° систСму логирования, сохраняя лишь послСдний мСсяц.

Π•Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ довольно ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅Π½ Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ слСдуСт. Один ΠΈΠ· Π½Π°ΡˆΠΈΡ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ события, ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰Π΅Π³ΠΎ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π΄Π΅Π»Π°Π» многострочный нСструктурированный Π²Ρ‹Π²ΠΎΠ΄ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Π»ΠΎΠ³. Как Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΠ³Π°Π΄Π°Ρ‚ΡŒΡΡ, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Π»ΠΎΠ³ΠΈ Π±Ρ‹Π»ΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ, ΠΈ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ.

ΠšΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ для Π»ΠΎΠ³ΠΎΠ²

ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ подводят ΠΊ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΊΡ€ΠΎΠΌΠ΅ Π²Ρ‹Π±ΠΎΡ€Π° систСмы сбора Π»ΠΎΠ³ΠΎΠ² Π½Π°Π΄ΠΎ ΡΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΈ сами Π»ΠΎΠ³ΠΈ! КакиС здСсь трСбования?

  • Π›ΠΎΠ³ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π² ΠΌΠ°ΡˆΠΈΠ½ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, JSON).
  • Π›ΠΎΠ³ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΌΠΈ ΠΈ с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ измСнСния стСпСни логирования, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π»Π°Π΄ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. ΠŸΡ€ΠΈ этом Π² production-окруТСниях слСдуСт Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ систСмы с ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ логирования Π²Ρ€ΠΎΠ΄Π΅ Warning ΠΈΠ»ΠΈ Error.
  • Π›ΠΎΠ³ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ Π»ΠΎΠ³Π° всС строки Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ поля.

НСструктурированныС Π»ΠΎΠ³ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ с Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ Π»ΠΎΠ³ΠΎΠ² Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΈ ΠΏΠΎΠ»Π½ΠΎΠΉ остановкой ΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π’ качСствС ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ β€” ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с ошибкой 400, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ‚ΠΎΡ‡Π½ΠΎ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ Π² Π»ΠΎΠ³Π°Ρ… fluentd:

2019-10-29 13:10:43 +0000 [warn]: dump an error event: error_class=Fluent::Plugin::ElasticsearchErrorHandler::ElasticsearchError error="400 - Rejected by Elasticsearch"

Ошибка ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ отправляСтС Π² индСкс с Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌ mapping’ом ΠΏΠΎΠ»Π΅, Ρ‚ΠΈΠΏ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ нСстабилСн. ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” ΠΏΠΎΠ»Π΅ Π² Π»ΠΎΠ³Π΅ nginx с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ $upstream_status. Π’ Π½Ρ‘ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ число, Ρ‚Π°ΠΊ ΠΈ строка. НапримСр:

{ "ip": "1.2.3.4", "http_user": "-", "request_id": "17ee8a579e833b5ab9843a0aca10b941", "time": "29/Oct/2019:16:18:57 +0300", "method": "GET", "uri": "/staffs/265.png", "protocol": "HTTP/1.1", "status": "200", "body_size": "906", "referrer": "https://example.com/staff", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36", "request_time": "0.001", "cache_status": "-", "upstream_response_time": "0.001, 0.007", "upstream_addr": "127.0.0.1:9000", "upstream_status": "200", "upstream_response_length": "906", "location": "staff"}
{ "ip": "1.2.3.4", "http_user": "-", "request_id": "47fe42807f2a7d8d5467511d7d553a1b", "time": "29/Oct/2019:16:18:57 +0300", "method": "GET", "uri": "/staff", "protocol": "HTTP/1.1", "status": "200", "body_size": "2984", "referrer": "-", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36", "request_time": "0.010", "cache_status": "-", "upstream_response_time": "0.001, 0.007", "upstream_addr": "10.100.0.10:9000, 10.100.0.11:9000", "upstream_status": "404, 200", "upstream_response_length": "0, 2984", "location": "staff"}

Π’ Π»ΠΎΠ³Π°Ρ… Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ сСрвСр 10.100.0.10 ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» 404-ΠΉ ошибкой ΠΈ запрос ΡƒΡˆΠ΅Π» Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅, Π² Π»ΠΎΠ³Π°Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ стало Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΠΌ:

"upstream_response_time": "0.001, 0.007"

Данная ситуация Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ распространённая, Ρ‡Ρ‚ΠΎ ΡƒΠ΄ΠΎΡΡ‚ΠΎΠΈΠ»Π°ΡΡŒ Π΄Π°ΠΆΠ΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ упоминания Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

А Ρ‡Ρ‚ΠΎ с Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ?

Π‘Ρ‹Π²Π°ΡŽΡ‚ случаи, ΠΊΠΎΠ³Π΄Π° ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ всС Π»ΠΎΠ³ΠΈ Π±Π΅Π· ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. И с этим Ρƒ Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… схСм сбора Π»ΠΎΠ³ΠΎΠ² для K8s, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ…/рассматриваСмых Π²Ρ‹ΡˆΠ΅, ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

НапримСр, fluentd Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈ с ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΆΠΈΠ²ΡƒΡ‰ΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ². Π’ ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π½Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ с ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… ΠΆΠΈΠ» ΠΌΠ΅Π½Π΅Π΅ 4-Ρ… сСкунд, Π° Π·Π°Ρ‚Π΅ΠΌ удалялся β€” согласно ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ:

"helm.sh/hook-delete-policy": hook-succeeded

Из-Π·Π° этого Π»ΠΎΠ³ выполнСния ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°Π» Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. ΠŸΠΎΠΌΠΎΡ‡ΡŒ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° before-hook-creation.

Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” ротация Π»ΠΎΠ³ΠΎΠ² Docker. Допустим, Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΏΠΈΡˆΠ΅Ρ‚ Π² Π»ΠΎΠ³ΠΈ. Π’ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… условиях ΠΌΡ‹ успСваСм ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ всС Π»ΠΎΠ³ΠΈ, Π½ΠΎ ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ появляСтся ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΊ Π±Ρ‹Π»Π° описана Π²Ρ‹ΡˆΠ΅ с Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ, β€” ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° останавливаСтся, Π° Docker Ρ€ΠΎΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ». Π˜Ρ‚ΠΎΠ³ β€” ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ потСряны ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Π΅ для бизнСса Π»ΠΎΠ³ΠΈ.

ИмСнно поэтому Π²Π°ΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π»ΠΎΠ³ΠΎΠ², встраивая ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ†Π΅Π½Π½Ρ‹Ρ… Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΈΡ… ΡΠΎΡ…Ρ€Π°Π½Π½ΠΎΡΡ‚ΡŒ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ лишним созданиС Π½Π΅ΠΊΠΎΠ΅Π³ΠΎ «аккумулятора» Π»ΠΎΠ³ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ смоТСт ΠΏΠ΅Ρ€Π΅ΠΆΠΈΡ‚ΡŒ ΠΊΡ€Π°Ρ‚ΠΊΡƒΡŽ Π½Π΅Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΏΡ€ΠΈ сохранСнии ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Ρ… сообщСний.

НаконСц, Π½Π΅ Π½Π°Π΄ΠΎ Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π»ΡŽΠ±ΡƒΡŽ подсистСму Π²Π°ΠΆΠ½ΠΎ качСствСнно ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ. Π˜Π½Π°Ρ‡Π΅ Π»Π΅Π³ΠΊΠΎ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ с ситуациСй, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ fluentd находится Π² состоянии CrashLoopBackOff ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ отправляСт, Π° это сулит ΠΏΠΎΡ‚Π΅Ρ€Π΅ΠΉ Π²Π°ΠΆΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Π’Ρ‹Π²ΠΎΠ΄Ρ‹

Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Π½Π΅ рассматриваСм SaaS-Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π²Ρ€ΠΎΠ΄Π΅ Datadog. МногиС ΠΈΠ· описанных здСсь ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Ρ‚Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅ ΡƒΠΆΠ΅ Ρ€Π΅ΡˆΠ΅Π½Ρ‹ коммСрчСскими компаниями, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌΠΈΡΡ Π½Π° сборС Π»ΠΎΠ³ΠΎΠ², Π½ΠΎ Π½Π΅ всС ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ SaaS ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ (основныС β€” это ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈ соблюдСниС 152-Π€Π—).

Π¦Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ сбор Π»ΠΎΠ³ΠΎΠ² сначала выглядит простой Π·Π°Π΄Π°Ρ‡Π΅ΠΉ, Π½ΠΎ вовсС Ρ‚Π°ΠΊΠΎΠ²ΠΎΠΉ Π½Π΅ являСтся. Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ:

  • Π›ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ стоит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Π° для ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… систСм ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΈ сбор ошибок.
  • Π›ΠΎΠ³ΠΈ Π² production стоит Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π΄Π°Π²Π°Ρ‚ΡŒ лишнюю Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ.
  • Π›ΠΎΠ³ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ°ΡˆΠΈΠ½ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌΠΈ, Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΈΠΌΠ΅Ρ‚ΡŒ строгий Ρ„ΠΎΡ€ΠΌΠ°Ρ‚.
  • Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Π΅ Π»ΠΎΠ³ΠΈ стоит ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»Ρ‘Π½ ΠΎΡ‚ основных.
  • Π‘Ρ‚ΠΎΠΈΡ‚ ΠΏΡ€ΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ аккумулятор Π»ΠΎΠ³ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ спасти ΠΎΡ‚ всплСсков высокой Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ сдСлаСт Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΉ.

Π›ΠΎΠ³ΠΈ Π² Kubernetes (ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ) сСгодня: оТидания ΠΈ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ
Π­Ρ‚ΠΈ простыС ΠΏΡ€Π°Π²ΠΈΠ»Π°, Ссли ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π²Π΅Π·Π΄Π΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΈ Π±Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ описанным Π²Ρ‹ΡˆΠ΅ схСмам β€” Π΄Π°ΠΆΠ΅ нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² Π½ΠΈΡ… Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² (аккумулятора). Если ΠΆΠ΅ Π½Π΅ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ², Π·Π°Π΄Π°Ρ‡Π° с Π»Ρ‘Π³ΠΊΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ вас ΠΈ инфраструктуру ΠΊ Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎΠΌΡƒ высоконагруТСнному (ΠΈ Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя малоэффСктивному) ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ систСмы.

P.S.

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Π² нашСм Π±Π»ΠΎΠ³Π΅:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com