Как ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρ‹ pod’ΠΎΠ² Π² Kubernetes стали ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ простоя Π² Grafana Labs

ΠŸΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€Π΅Π².: ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΠ΅ΠΌ Π²Π°ΡˆΠ΅ΠΌΡƒ вниманию тСхничСскиС подробности ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°Ρ… Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ простоя Π² Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΎΠ±Π»Π°Ρ‡Π½ΠΎΠ³ΠΎ сСрвиса, обслуТиваСмого создатСлями Grafana. Π­Ρ‚ΠΎ классичСский ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ новая ΠΈ, казалось Π±Ρ‹, ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ полСзная Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, призванная ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ качСство инфраструктуры… ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Π²Ρ€Π΅Π΄ΠΈΡ‚ΡŒ, Ссли Π½Π΅ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ многочислСнныС Π½ΡŽΠ°Π½ΡΡ‹ Π΅Ρ‘ примСнСния Π² рСалиях production. Π—Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° своих ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ β€” Π² ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π΅ этого тСкста ΠΎΡ‚ Π²ΠΈΡ†Π΅-ΠΏΡ€Π΅Π·ΠΈΠ΄Π΅Π½Ρ‚Π° ΠΏΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρƒ ΠΈΠ· Grafana Labs.

Как ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρ‹ pod'ΠΎΠ² Π² Kubernetes стали ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ простоя Π² Grafana Labs

Π’ пятницу, 19 июля, сСрвис Hosted Prometheus Π² Grafana Cloud пСрСстал Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π½Π° 30 ΠΌΠΈΠ½ΡƒΡ‚. ΠŸΡ€ΠΈΠ½ΠΎΡˆΡƒ извинСния всСм ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ, ΠΏΠΎΡΡ‚Ρ€Π°Π΄Π°Π²ΡˆΠΈΠΌ ΠΎΡ‚ сбоя. Наша Π·Π°Π΄Π°Ρ‡Π° β€” ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹Π΅ инструмСнты для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°, ΠΈ ΠΌΡ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΡ… Π½Π΅Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ услоТняСт Π²Π°ΡˆΡƒ Тизнь. ΠœΡ‹ ΠΊΡ€Π°ΠΉΠ½Π΅ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎ относимся ΠΊ этому ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚Ρƒ. Π’ этой Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ΅ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ Π½Π° это ΠΎΡ‚Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ ΠΈ Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅ΠΌ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ большС Π½Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΠ»ΠΎΡΡŒ.

ΠŸΡ€Π΅Π΄Ρ‹ΡΡ‚ΠΎΡ€ΠΈΡ

БСрвис Grafana Cloud Hosted Prometheus основан Π½Π° Cortex β€” ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ CNCF ΠΏΠΎ созданию Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ, высокодоступного, ΠΌΡƒΠ»ΡŒΡ‚ΠΈΡ‚Π΅Π½Π°Π½Ρ‚Π½ΠΎΠ³ΠΎ (multi-tenant) сСрвиса Prometheus. АрхитСктура Cortex состоит ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… микросСрвисов, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… выполняСт свою Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ: Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡŽ, Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅, запросы ΠΈ Ρ‚.Π΄. Cortex Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ разрабатываСтся, Ρƒ Π½Π΅Π³ΠΎ постоянно ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹Π΅ возмоТности ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ΡΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. ΠœΡ‹ рСгулярно Π΄Π΅ΠΏΠ»ΠΎΠΈΠΌ Π½ΠΎΠ²Ρ‹Π΅ Ρ€Π΅Π»ΠΈΠ·Ρ‹ Cortex Π² кластСры, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ этими возмоТностями β€” Π±Π»Π°Π³ΠΎ, Cortex ΡƒΠΌΠ΅Π΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒΡΡ Π±Π΅Π· простоСв.

Для бСспростойных ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ сСрвис Ingester Cortex’Π° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ€Π΅ΠΏΠ»ΠΈΠΊΡƒ Ingester’Π° Π²ΠΎ врСмя процСсса обновлСния. (ΠŸΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€Π΅Π².: Ingester β€” Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Cortex’Π°. Π•Π³ΠΎ Π·Π°Π΄Π°Ρ‡Π° β€” ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ постоянный ΠΏΠΎΡ‚ΠΎΠΊ sample’ΠΎΠ², Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² chunk’ΠΈ Prometheus ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Π²Ρ€ΠΎΠ΄Π΅ DynamoDB, BigTable ΠΈΠ»ΠΈ Cassandra.) Π­Ρ‚ΠΎ позволяСт старым Ingester’Π°ΠΌ ΠΏΠ΅Ρ€Π΅ΡΡ‹Π»Π°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ Π½ΠΎΠ²Ρ‹ΠΌ Ingester’Π°ΠΌ. Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ingester’Ρ‹ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ ΠΊ рСсурсам. Для ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΠΎ 4 ядра ΠΈ 15 Π“Π± памяти Π½Π° pod, Ρ‚.Π΅. 25 % процСссорной мощности ΠΈ памяти Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π² случаС Π½Π°ΡˆΠΈΡ… кластСрах Kubernetes. Π’ Ρ†Π΅Π»ΠΎΠΌ Ρƒ нас ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… рСсурсов Π² кластСрС, Π½Π΅ΠΆΠ΅Π»ΠΈ 4 ядра ΠΈ 15 Π“Π± памяти, поэтому ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ эти Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ingester’Ρ‹ Π²ΠΎ врСмя ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ.

Однако часто Π±Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ Π²ΠΎ врСмя Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½ΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· машин Π½Π΅Ρ‚ этих 25% нСвострСбованных рСсурсов. Π”Π° ΠΌΡ‹ ΠΈ Π½Π΅ стрСмимся: CPU ΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒ всСгда пригодятся для Π΄Ρ€ΡƒΠ³ΠΈΡ… процСссов. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Kubernetes Pod Priorities. ИдСя Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ Ingester’Π°ΠΌ Π±ΠΎΠ»Π΅Π΅ высокий ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚, Ρ‡Π΅ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠΌ (stateless) микросСрвисам. Когда Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ (N+1) Ingester, ΠΌΡ‹ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ вытСсняСм Π΄Ρ€ΡƒΠ³ΠΈΠ΅, мСньшиС pod’Ρ‹. Π­Ρ‚ΠΈ pod’Ρ‹ пСрСносятся Π² свободныС рСсурсы Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ…, оставляя достаточно Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Β«Π΄Ρ‹Ρ€ΡƒΒ» для запуска Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ingester’Π°.

Π’ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Π³, 18 июля, ΠΌΡ‹ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΠ»ΠΈ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π½ΠΎΠ²Ρ‹Ρ… уровня ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠ² Π² своих кластСрах: критичСский, высокий, срСдний ΠΈ Π½ΠΈΠ·ΠΊΠΈΠΉ. Они Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ Π½Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ кластСрС Π±Π΅Π· клиСнтского Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΎΠ΄Π½Ρƒ нСдСлю. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ pod’Ρ‹ Π±Π΅Π· Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π»ΠΈ срСдний ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚, для Ingester’ΠΎΠ² Π±Ρ‹Π» установлСн класс с высоким ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ. ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ Π±Ρ‹Π» Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½ для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° (Prometheus, Alertmanager, node-exporter, kube-state-metrics ΠΈ Ρ‚.Π΄.). Наш ΠΊΠΎΠ½Ρ„ΠΈΠ³ β€” ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ, ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ PR ΠΌΠΎΠΆΠ½ΠΎ здСсь.

Авария

Π’ пятницу, 19 июля, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ² запустил Π½ΠΎΠ²Ρ‹ΠΉ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ кластСр Cortex для ΠΊΡ€ΡƒΠΏΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. ΠšΠΎΠ½Ρ„ΠΈΠ³ для этого кластСра Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π» Π½ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρ‹ pod’ΠΎΠ², поэтому всСм Π½ΠΎΠ²Ρ‹ΠΌ pod’Π°ΠΌ присваивался ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ β€” срСдний.

Π’ кластСрС Kubernetes Π½Π΅ Ρ…Π²Π°Ρ‚ΠΈΠ»ΠΎ рСсурсов для Π½ΠΎΠ²ΠΎΠ³ΠΎ кластСра Cortex, Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ production-кластСр Cortex Π½Π΅ Π±Ρ‹Π» ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ (Ingester’Ρ‹ ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ Π±Π΅Π· высокого ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°). ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ingester’Ρ‹ Π½ΠΎΠ²ΠΎΠ³ΠΎ кластСра ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΠΌΠ΅Π»ΠΈ срСдний ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚, Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π² production pod’Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π±Π΅Π· ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°, Ingester’Ρ‹ Π½ΠΎΠ²ΠΎΠ³ΠΎ кластСра вытСснили Ingester ΠΈΠ· ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ production-кластСра Cortex.

ReplicaSet для вытСснСнного Ingester’Π° Π² production-кластСрС ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ» вытСснСнный pod ΠΈ создал Π½ΠΎΠ²Ρ‹ΠΉ для поддСрТания Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ количСства ΠΊΠΎΠΏΠΈΠΉ. Новому pod’Ρƒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π±Ρ‹Π» присвоСн срСдний ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚, ΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ «старый» Ingester Π² production лишился рСсурсов. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ стал Π»Π°Π²ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹ΠΉ процСсс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ²Π΅Π» ΠΊ Π²Ρ‹Ρ‚Π΅ΡΠ½Π΅Π½ΠΈΡŽ всСх pod’ΠΎΠ² с Ingester для production-кластСров Cortex’Π°.

Ingester’Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ состояниС (stateful) ΠΈ хранят Π΄Π°Π½Π½Ρ‹Π΅ Π·Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ 12 часов. Π­Ρ‚ΠΎ позволяСт Π½Π°ΠΌ Π±ΠΎΠ»Π΅Π΅ эффСктивно ΡΠΆΠΈΠΌΠ°Ρ‚ΡŒ ΠΈΡ… ΠΏΠ΅Ρ€Π΅Π΄ записью Π² долгосрочноС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. Для этого Cortex ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ ΡˆΠ°Ρ€Π΄ΠΈΠ½Π³ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ сСриям, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ (Distributed Hash Table, DHT), ΠΈ Ρ€Π΅ΠΏΠ»ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΡΠ΅Ρ€ΠΈΡŽ Π½Π° Ρ‚Ρ€ΠΈ Ingester’Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ²ΠΎΡ€ΡƒΠΌΠ½ΠΎΠΉ согласованности Π² стилС Dynamo. Cortex Π½Π΅ ΠΏΠΈΡˆΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π² Ingester’Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° большоС число Ingester’ΠΎΠ² ΠΏΠΎΠΊΠΈΠ΄Π°ΡŽΡ‚ DHT, Cortex Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π΄ΠΎΡΡ‚Π°Ρ‚ΠΎΡ‡Π½ΡƒΡŽ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡŽ записСй, ΠΈ ΠΎΠ½ΠΈ Β«ΠΏΠ°Π΄Π°ΡŽΡ‚Β».

ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΈ устранСниС

НовыС увСдомлСния Prometheus Π½Π° основС Β«Π±ΡŽΠ΄ΠΆΠ΅Ρ‚Π° ошибок» (error-budget-based β€” подробности появятся Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅) стали Π±ΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅Π²ΠΎΠ³Ρƒ Ρ‡Π΅Ρ€Π΅Π· 4 ΠΌΠΈΠ½ΡƒΡ‚Ρ‹ с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π°Ρ‡Π°Π»Π° ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. Π’ Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ пяти ΠΌΠΈΠ½ΡƒΡ‚ ΠΌΡ‹ ΠΏΡ€ΠΎΠ²Π΅Π»ΠΈ диагностику ΠΈ нарастили Π½ΠΈΠΆΠ΅Π»Π΅ΠΆΠ°Ρ‰ΠΈΠΉ кластСр Kubernetes для размСщСния ΠΊΠ°ΠΊ Π½ΠΎΠ²ΠΎΠ³ΠΎ, Ρ‚Π°ΠΊ ΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… production-кластСров.

Π•Ρ‰Π΅ Ρ‡Π΅Ρ€Π΅Π· ΠΏΡΡ‚ΡŒ ΠΌΠΈΠ½ΡƒΡ‚ старыС Ingester’Ρ‹ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ записали свои Π΄Π°Π½Π½Ρ‹Π΅, Π° Π½ΠΎΠ²Ρ‹Π΅ β€” Π·Π°ΠΏΡƒΡΡ‚ΠΈΠ»ΠΈΡΡŒ, ΠΈ кластСры Cortex снова стали доступны.

Π•Ρ‰Π΅ 10 ΠΌΠΈΠ½ΡƒΡ‚ ΡƒΡˆΠ»ΠΎ Π½Π° диагностику ΠΈ исправлСниС out-of-memory (OOM) ошибок ΠΎΡ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Ρ… прокси-сСрвСров Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, располоТСнных ΠΏΠ΅Ρ€Π΅Π΄ Cortex. ООМ-ошибки Π±Ρ‹Π»ΠΈ Π²Ρ‹Π·Π²Π°Π½Ρ‹ дСсятикратным ростом QPS (ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, ΠΈΠ·-Π·Π° Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎ агрСссивных запросов с сСрвСров Prometheus ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°).

ΠŸΠΎΡΠ»Π΅Π΄ΡΡ‚Π²ΠΈΡ

ΠžΠ±Ρ‰Π°Ρ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ простоя составила 26 ΠΌΠΈΠ½ΡƒΡ‚. Π”Π°Π½Π½Ρ‹Π΅ Π½Π΅ Π±Ρ‹Π»ΠΈ потСряны. Ingester’Ρ‹ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ»ΠΈ всС in-memory-Π΄Π°Π½Π½Ρ‹Π΅ Π² Π΄ΠΎΠ»Π³ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. Π’ΠΎ врСмя ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Prometheus-сСрвСры ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² сохраняли Π² Π±ΡƒΡ„Π΅Ρ€ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Π΅ (remote) записи с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½ΠΎΠ²ΠΎΠ³ΠΎ API remote_write Π½Π° основС WAL (Π·Π° авторством Callum Styan ΠΈΠ· Grafana Labs) ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠ»ΠΈ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½Ρ‹Π΅ записи послС сбоя.

Как ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρ‹ pod'ΠΎΠ² Π² Kubernetes стали ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ простоя Π² Grafana Labs
ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ записи production-кластСра

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

Π’Π°ΠΆΠ½ΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΡƒΡ€ΠΎΠΊΠΈ ΠΈΠ· этого ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚Π° ΠΈ ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΌΠ΅Ρ€Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π΅Π³ΠΎ повторСния.

ΠžΠ³Π»ΡΠ΄Ρ‹Π²Π°ΡΡΡŒ Π½Π°Π·Π°Π΄, слСдуСт ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½Π΅ слСдовало Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ срСдний ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚, ΠΏΠΎΠΊΠ° всС Ingester’Ρ‹ Π² production Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ высокий ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, слСдовало Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΏΠΎΠ·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎΠ± ΠΈΡ… высоком ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π΅. Π’Π΅ΠΏΠ΅Ρ€ΡŒ всС исправлСно. НадССмся, Ρ‡Ρ‚ΠΎ наш ΠΎΠΏΡ‹Ρ‚ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΈΠΌ организациям, Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠ² pod’ов Π² Kubernetes.

ΠœΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ контроля Π·Π° Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ΠΌ Π»ΡŽΠ±Ρ‹Ρ… Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ для кластСра. Π’ΠΏΡ€Π΅Π΄ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ измСнСния Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ большим количСством людСй. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, модификация, которая ΠΏΡ€ΠΈΠ²Π΅Π»Π° ΠΊ сбою, ΡΡ‡ΠΈΡ‚Π°Π»Π°ΡΡŒ слишком Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ для ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° β€” ΠΎΠ½Π° ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»Π°ΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² GitHub issue. Π‘ этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° всС ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ измСнСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΎΠ² Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°Ρ‚ΡŒΡΡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ.

НаконСц, ΠΌΡ‹ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρƒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ прокси-сСрвСра Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ для прСдотвращСния ООМ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ΅, свидСтСлями Ρ‡Π΅Π³ΠΎ ΠΌΡ‹ стали, ΠΈ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Prometheus ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, связанныС с ΠΎΡ‚ΠΊΠ°Ρ‚ΠΎΠΌ ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, для прСдупрСТдСния Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

ΠŸΠ΅Ρ€Π΅ΠΆΠΈΡ‚Ρ‹ΠΉ сбой ΠΈΠΌΠ΅Π» ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·ΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ послСдствия: ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² Π² распоряТСниС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ рСсурсы, Cortex автоматичСски восстановился Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²ΠΌΠ΅ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π°. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Ρ†Π΅Π½Π½Ρ‹ΠΉ ΠΎΠΏΡ‹Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Grafana Loki β€” нашСй Π½ΠΎΠ²ΠΎΠΉ систСмой Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ Π»ΠΎΠ³ΠΎΠ², β€” которая ΠΏΠΎΠΌΠΎΠ³Π»Π° ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ всС Ingester’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠΎΠ²Π΅Π»ΠΈ сСбя Π²ΠΎ врСмя ΠΈ послС сбоя.

P.S. ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΠ°

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

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