Мониторинг и Kubernetes

93aef1d166a8a3536538eff713f80307?s=47 flant
May 28, 2018

Мониторинг и Kubernetes

Доклад технического директора компании «Флант» (http://flant.ru/) Дмитрия Столярова на RootConf 2018 (фестиваль РИТ++) про мониторинг кластеров Kubernetes с использованием Prometheus.

* Текстовый обзор доклада: https://habr.com/company/flant/blog/412901/
* Видео с выступления: https://youtu.be/zj6SlzzBRaA
* Анонс доклада на сайте конференции: http://rootconf.ru/moscow-rit/2018/abstracts/3507

93aef1d166a8a3536538eff713f80307?s=128

flant

May 28, 2018
Tweet

Transcript

  1. Дмитрий Столяров CTO & Co-founder v6.uncut Мониторинг и Kubernetes

  2. Bosun

  3. None
  4. None
  5. None
  6. История #1 Спидометр показывает скорость!

  7. None
  8. 20 + 20 + 40 + 80 + 50 +

    40 + 0 + 10 + 40 + 10 + 20 = 30 км/ч 11 Средняя скорость:
  9. 20 + 20 + 40 + 80 + 50 +

    40 + 0 + 10 + 40 + 10 + 20 = 30 км/ч 11 Средняя скорость: 30 км/ч × 11 минут = 5.5 км 60 Расстояние:
  10. 20 + 20 + 40 + 80 + 50 +

    40 + 0 + 10 + 40 + 10 + 20 = 30 км/ч 11 Средняя скорость: 30 км/ч × 11 минут = 5.5 км 60 Расстояние: Но как? По одометру же 7.2 км...
  11. None
  12. История #2 Больше, больше измерений!

  13. Как диагностировать заболевание?

  14. Как диагностировать заболевание?

  15. Как диагностировать заболевание?

  16. Как диагностировать заболевание?

  17. История #3 Алерты, алерты, алерты!

  18. None
  19. None
  20. Ложные срабатывания Слишком поздно

  21. None
  22. None
  23. None
  24. None
  25. Что такое мониторинг?

  26. Что такое мониторинг? ||

  27. Что такое мониторинг? ||

  28. Что такое мониторинг? Графики Алерты &

  29. Что такое мониторинг? Графики Алерты &

  30. Что такое мониторинг? Упреждение аварий

  31. Что такое мониторинг? Упреждение аварий Уведомление об аварии

  32. Что такое мониторинг? Упреждение аварий Уведомление об аварии Быстрая диагностика

  33. Что такое мониторинг? Упреждение аварий Уведомление об аварии Быстрая диагностика

    Точные данные
  34. Что такое мониторинг? Упреждение аварий Уведомление об аварии Быстрая диагностика

    Точные данные Полезные графики
  35. Что такое мониторинг? Упреждение аварий Уведомление об аварии Быстрая диагностика

    Точные данные Полезные графики Актуальные алерты
  36. Что такое мониторинг? Упреждение аварий Уведомление об аварии Быстрая диагностика

    Система мониторинга Точные данные Полезные графики Актуальные алерты
  37. А как там в Kubernetes?

  38. #1 Больше, быстрей!

  39. дни / недели часы / дни Железо

  40. дни / недели часы / дни секунды минуты / часы

    Железо Виртуалки x5
  41. дни / недели часы / дни секунды минуты / часы

    0 0 Железо Виртуалки Kubernetes x5 x50
  42. 0 0

  43. Нужно группировать 0 0

  44. Нужно группировать Service Discovery стал обязательным 0 0

  45. Нужно группировать Service Discovery стал обязательным Объем данных вырос 0

    0
  46. Нужно группировать Service Discovery стал обязательным Объем данных вырос Текучка

    метаданных 0 0
  47. #2 Параллельная реальность существует!

  48. Kubernetes Nodes

  49. Kubernetes Nodes ns/production

  50. Kubernetes Nodes ns/staging ns/production ns/testing ...

  51. Kubernetes Nodes ns/staging ns/production ns/testing ... deploy/backend

  52. Kubernetes Nodes ns/staging ns/production ns/testing ... deploy/backend

  53. Kubernetes Nodes ns/staging ns/production ns/testing ... deploy/backend

  54. Kubernetes Nodes ns/staging ns/production ns/testing ... deploy/backend

  55. Kubernetes Nodes ns/staging ns/production ns/testing ... deploy/backend deploy/frontend

  56. Kubernetes Nodes ns/staging ns/production ns/testing ... deploy/backend deploy/frontend deploy/redis

  57. ns/staging ns/production Kubernetes Nodes ... deploy/frontend deploy/backend deploy/redis ns/testing

  58. Kubernetes Nodes ns/staging ns/production ... deploy/frontend deploy/backend deploy/redis ns/testing

  59. Kubernetes Nodes ns/staging ns/production ... deploy/frontend deploy/backend deploy/redis ns/testing

  60. Kubernetes Nodes ns/staging ns/production ... deploy/frontend deploy/backend deploy/redis ns/testing

  61. Kubernetes Nodes ns/staging ns/production ... deploy/frontend deploy/backend deploy/redis ns/testing

  62. Kubernetes Nodes ns/staging ns/production ... deploy/frontend deploy/backend deploy/redis ns/testing

  63. Kubernetes Nodes ns/staging ns/production ... deploy/frontend deploy/backend deploy/redis ns/testing

  64. Kubernetes Nodes ns/staging ns/production ... deploy/frontend deploy/backend deploy/redis ns/testing

  65. Kubernetes Nodes ns/staging ns/production ... deploy/frontend deploy/backend deploy/redis ns/testing Redis

    node-3: master link down for more than 60 seconds.
  66. Kubernetes Nodes ns/staging ns/production ... deploy/frontend deploy/backend deploy/redis ns/testing Redis

    node-3: master link down for more than 60 seconds. Redis 10.14.26.82: master link down for more than 60 seconds.
  67. Kubernetes Nodes ns/staging ns/production ... deploy/frontend deploy/backend deploy/redis ns/testing Redis

    node-3: master link down for more than 60 seconds. Redis 10.14.26.82: master link down for more than 60 seconds. Redis k8s_POD_redis-redis-1453984535-9xz kj_production_e58492f3-02b9-11e8-8dd2-90 1b0ebb25f4_1 (on node node-3): master link down for more than 60 seconds.
  68. 55.7558, 37.6173 + 24 Пасмурно 7 м/c 53.1356, 32.5412 +

    30 Солнечно 2 м/c 59.0531, 33.9861 + 22 Пасмурно 5 м/c 53.1234, 35.9074 + 15 Гроза 23 м/c 50.8461, 37.3451 + 20 Пасмурно 15 м/c
  69. Kubernetes Nodes ns/staging ns/production ... deploy/frontend deploy/backend deploy/redis ns/testing Redis

    node-3: master link down for more than 60 seconds. Redis 10.14.26.82: master link down for more than 60 seconds. Redis k8s_POD_redis-redis-1453984535-9xz kj_production_e58492f3-02b9-11e8-8dd2-90 1b0ebb25f4_1 (on node node-3): master link down for more than 60 seconds.
  70. Kubernetes Nodes ns/staging ns/production ... deploy/frontend deploy/backend deploy/redis ns/testing Redis

    node-3: master link down for more than 60 seconds. Redis 10.14.26.82: master link down for more than 60 seconds. Redis production/redis (pod redis-145398 4535-9xzkj on node-3): master link down for more than 60 seconds. Redis k8s_POD_redis-redis-1453984535-9xz kj_production_e58492f3-02b9-11e8-8dd2-90 1b0ebb25f4_1 (on node node-3): master link down for more than 60 seconds.
  71. Kubernetes Nodes ns/staging ns/production ... deploy/frontend deploy/backend deploy/redis ns/testing Redis

    node-3: master link down for more than 60 seconds. Redis 10.14.26.82: master link down for more than 60 seconds. Redis k8s_POD_redis-redis-1453984535-9xz kj_production_e58492f3-02b9-11e8-8dd2-90 1b0ebb25f4_1 (on node node-3): master link down for more than 60 seconds. Redis production/redis (pod redis-145398 4535-9xzkj on node-3): master link down for more than 60 seconds.
  72. Kubernetes Nodes ns/staging ns/production ... deploy/frontend deploy/backend deploy/redis ns/testing Redis

    node-3: master link down for more than 60 seconds. Redis 10.14.26.82: master link down for more than 60 seconds. Redis k8s_POD_redis-redis-1453984535-9xz kj_production_e58492f3-02b9-11e8-8dd2-90 1b0ebb25f4_1 (on node node-3): master link down for more than 60 seconds. Redis production/redis (pod redis-145398 4535-9xzkj on node-3): master link down for more than 60 seconds.
  73. Нужно группировать Service Discovery стал обязательным Объем данных вырос Текучка

    метаданных
  74. Нужно группировать Service Discovery стал обязательным Объем данных вырос Текучка

    метаданных Использовать встроенные примитивы
  75. Нужно группировать Service Discovery стал обязательным Объем данных вырос Текучка

    метаданных Использовать встроенные примитивы Помнить, что “реальности” больше одной
  76. Нужно группировать Service Discovery стал обязательным Объем данных вырос Текучка

    метаданных Использовать встроенные примитивы Помнить, что “реальности” больше одной В одном кластере много окружений
  77. Почему именно ?

  78. Почему ? Самые популярные утилиты/сервисы для мониторинга кластеров Kubernetes Процентное

    соотношение опрошенных (включая тех, кто использует несколько утилит) Источник: результаты опроса «The New Stack 2017 Kubernetes User Experience» Заданный вопрос: «Какие инструменты, продукты и сервисы вы используете для мониторинга кластеров Kubernetes?». Количество ответивших: 208.
  79. Почему ? Самые популярные утилиты/сервисы для мониторинга кластеров Kubernetes Процентное

    соотношение опрошенных (включая тех, кто использует несколько утилит) Источник: результаты опроса «The New Stack 2017 Kubernetes User Experience» Заданный вопрос: «Какие инструменты, продукты и сервисы вы используете для мониторинга кластеров Kubernetes?». Количество ответивших: 208.
  80. Почему ? Источник: результаты опроса «The New Stack 2017 Kubernetes

    User Experience» Заданный вопрос: «Какие инструменты, продукты и сервисы вы используете для мониторинга кластеров Kubernetes?». Количество ответивших: 208. Процентное соотношение опрошенных (включая тех, кто использует несколько утилит) Самые популярные утилиты/сервисы для мониторинга кластеров Kubernetes
  81. Почему ? Источник: результаты опроса «The New Stack 2017 Kubernetes

    User Experience» Заданный вопрос: «Какие инструменты, продукты и сервисы вы используете для мониторинга кластеров Kubernetes?». Количество ответивших: 208. Процентное соотношение опрошенных (включая тех, кто использует несколько утилит) Самые популярные утилиты/сервисы для мониторинга кластеров Kubernetes
  82. Почему ? Самые популярные утилиты/сервисы для мониторинга кластеров Kubernetes Процентное

    соотношение опрошенных (включая тех, кто использует несколько утилит) Источник: результаты опроса «The New Stack 2017 Kubernetes User Experience» Заданный вопрос: «Какие инструменты, продукты и сервисы вы используете для мониторинга кластеров Kubernetes?». Количество ответивших: 208.
  83. Как устроен и как мы его готовим?

  84. None
  85. None
  86. None
  87. None
  88. Collector

  89. Collector Target #1 Target #2 Target #3 Targets 60 sec

    60 sec 60 sec foo=a foo=b foo=c
  90. Collector Target #1 Target #2 Target #3 Targets 60 sec

    60 sec 60 sec foo=a foo=b foo=c
  91. Collector Target #1 Target #2 Target #3 Targets 60 sec

    60 sec 60 sec foo=a foo=b foo=c
  92. Collector Target #1 Target #2 Target #3 Targets 60 sec

    60 sec 60 sec foo=a foo=b foo=c
  93. Target #1 Target #2 Target #3 Targets 60 sec 60

    sec 60 sec foo=a foo=b foo=c Collector my_metric{label=”a”} 1 my_metric{label=”b”} 6 my_metric{label=”c”} 42 ...
  94. Target #1 Target #2 Target #3 Targets 60 sec 60

    sec 60 sec foo=a foo=b foo=c my_metric{label=”a”} 1 my_metric{label=”b”} 6 my_metric{label=”c”} 42 Collector Название метрики Лейблы Значение
  95. Collector Target #1 Target #2 Target #3 Targets 60 sec

    60 sec 60 sec foo=a foo=b foo=c
  96. Collector Target #1 Target #2 Target #3 Targets 60 sec

    60 sec 60 sec foo=a foo=b foo=c TSDB
  97. Collector Target #1 Target #2 Target #3 Targets 60 sec

    60 sec 60 sec foo=a foo=b foo=c TSDB
  98. Target #1 Target #2 Target #3 Targets 60 sec 60

    sec 60 sec foo=a foo=b foo=c Collector TSDB
  99. Target #1 Target #2 Target #3 Targets 60 sec 60

    sec 60 sec foo=a foo=b foo=c my_metric{label=”a”} 1 my_metric{label=”b”} 6 my_metric{label=”c”} 42 ... Collector TSDB
  100. Target #1 Target #2 Target #3 Targets 60 sec 60

    sec 60 sec foo=a foo=b foo=c my_metric{label=”a”} 1 my_metric{label=”b”} 6 my_metric{label=”c”} 42 ... … T1 my_metric{label=”a”, foo=”a”} 1 my_metric{label=”b”, foo=”a”} 6 my_metric{label=”c”, foo=”a”} 42 … Collector TSDB
  101. Target #2 Target #3 Targets 60 sec 60 sec foo=b

    foo=c Target #1 60 sec foo=a my_metric{label=”a”} 1 my_metric{label=”b”} 6 my_metric{label=”c”} 42 ... … T1 my_metric{label=”a”, foo=”a”} 1 my_metric{label=”b”, foo=”a”} 6 my_metric{label=”c”, foo=”a”} 42 … Collector TSDB
  102. Target #2 Target #3 Targets 60 sec 60 sec foo=b

    foo=c my_metric{label=”a”} 1 my_metric{label=”b”} 6 my_metric{label=”c”} 42 ... … T1 my_metric{label=”a”, foo=”a”} 1 my_metric{label=”b”, foo=”a”} 6 my_metric{label=”c”, foo=”a”} 42 … Collector Target #1 60 sec foo=a TSDB
  103. Target #2 Target #3 Targets 60 sec 60 sec foo=b

    foo=c my_metric{label=”a”} 1 my_metric{label=”b”} 6 my_metric{label=”c”} 42 ... Collector Target #1 60 sec foo=a … T1 my_metric{label=”a”, foo=”a”} 1 my_metric{label=”b”, foo=”a”} 6 my_metric{label=”c”, foo=”a”} 42 … TSDB
  104. Target #2 Target #3 Targets 60 sec 60 sec foo=b

    foo=c my_metric{label=”a”} 1 my_metric{label=”b”} 6 my_metric{label=”c”} 42 ... Collector Target #1 60 sec foo=a … T1 my_metric{label=”a”, foo=”a”} 1 my_metric{label=”b”, foo=”a”} 6 my_metric{label=”c”, foo=”a”} 42 … TSDB my_metric{label=”a”} 4 my_metric{label=”b”} 8 my_metric{label=”c”} 13 ...
  105. Target #2 Target #3 Targets 60 sec 60 sec foo=b

    foo=c my_metric{label=”a”} 1 my_metric{label=”b”} 6 my_metric{label=”c”} 42 ... … T1 T2 my_metric{label=”a”, foo=”a”} 1 4 my_metric{label=”b”, foo=”a”} 6 8 my_metric{label=”c”, foo=”a”} 42 13 … Collector Target #1 60 sec foo=a TSDB my_metric{label=”a”} 4 my_metric{label=”b”} 8 my_metric{label=”c”} 13 ...
  106. Target #2 Target #3 Targets 60 sec 60 sec foo=b

    foo=c my_metric{label=”a”} 1 my_metric{label=”b”} 6 my_metric{label=”c”} 42 ... Collector … T1 T2 T3 my_metric{label=”a”, foo=”a”} 1 4 7 my_metric{label=”b”, foo=”a”} 6 8 2 my_metric{label=”c”, foo=”a”} 42 13 24 … Target #1 60 sec foo=a TSDB my_metric{label=”a”} 1 my_metric{label=”b”} 6 my_metric{label=”c”} 42 ... my_metric{label=”a”} 7 my_metric{label=”b”} 2 my_metric{label=”c”} 24 ...
  107. Collector Target #1 Target #2 Target #3 Targets 60 sec

    60 sec 60 sec foo=a foo=b foo=c TSDB
  108. Collector Target #1 Target #2 Target #3 Targets 60 sec

    60 sec 60 sec foo=a foo=b foo=c TSDB
  109. Collector Target #1 Target #2 Target #3 Targets 60 sec

    60 sec 60 sec foo=a foo=b foo=c TSDB
  110. Collector Target #1 Target #2 Target #3 Targets 60 sec

    60 sec 60 sec foo=a foo=b foo=c TSDB
  111. Collector Target #1 Target #2 Target #3 Targets 60 sec

    60 sec 60 sec foo=a foo=b foo=c TSDB
  112. Collector Target #1 Target #2 Target #3 Targets 60 sec

    60 sec 60 sec foo=a foo=b foo=c TSDB
  113. Collector Target #1 Target #2 Target #3 Targets 60 sec

    60 sec 60 sec foo=a foo=b foo=c TSDB
  114. Target #2 Target #3 Targets 60 sec 60 sec foo=b

    foo=c Collector Target #1 60 sec foo=a TSDB
  115. Target #2 Target #3 Targets 60 sec 60 sec foo=b

    foo=c Collector Target #1 60 sec foo=a ... ... ... TSDB Time based retention
  116. Target #2 Target #3 Targets 60 sec 60 sec foo=b

    foo=c Collector Target #1 60 sec foo=a ... ... ... TSDB Time based retention 1-2 bytes per sample
  117. Target #2 Target #3 Targets 60 sec 60 sec foo=b

    foo=c Collector Target #1 60 sec foo=a ... ... ... TSDB Time based retention 1-2 bytes per sample Хорошо переносит “Series Churn”
  118. Target #2 Target #3 Targets 60 sec 60 sec foo=b

    foo=c Collector Target #1 60 sec foo=a ... ... ... TSDB Time based retention 1-2 bytes per sample Хорошо переносит “Series Churn” Только локально, никакой кластеризации и репликации!
  119. Target #2 Target #3 Targets 60 sec 60 sec foo=b

    foo=c Collector Target #1 60 sec foo=a ... ... ... TSDB Time based retention 1-2 bytes per sample Хорошо переносит “Series Churn” Только локально, никакой кластеризации и репликации! Ultra IOPS-effective
  120. Collector Target #1 Target #2 Target #3 Targets 60 sec

    60 sec 60 sec foo=a foo=b foo=c TSDB
  121. Collector Target #1 Target #2 Target #3 Targets 60 sec

    60 sec 60 sec foo=a foo=b foo=c Service Discovery TSDB
  122. Collector Target #1 Target #2 Target #3 Targets 60 sec

    60 sec 60 sec foo=a foo=b foo=c Service Discovery API TSDB
  123. Collector Target #1 Target #2 Target #3 Targets 60 sec

    60 sec 60 sec foo=a foo=b foo=c Service Discovery API TSDB
  124. WE NEED TO GO DEEPER

  125. Targets Target #1 Target #2 Target #3 60 sec 60

    sec 60 sec foo=a foo=b foo=c
  126. Targets http://192.168.12.83:9121/metrics http://192.168.18.19:9121/metrics http://192.168.13.27:9121/metrics 60 sec 60 sec 60 sec

    foo=a foo=b foo=c
  127. Targets http://192.168.12.83:9121/metrics http://192.168.18.19:9121/metrics http://192.168.13.27:9121/metrics 60 sec 60 sec 60 sec

    foo=a foo=b foo=c
  128. Targets http://192.168.12.83:9121/metrics http://192.168.18.19:9121/metrics http://192.168.13.27:9121/metrics 30 sec 30 sec 30 sec

    foo=a foo=b foo=c
  129. http://192.168.12.83:9121/metrics http://192.168.18.19:9121/metrics http://192.168.13.27:9121/metrics Targets 30 sec 30 sec 30 sec

    foo=a foo=b foo=c
  130. Kubernetes Nodes ns/staging ns/production ... deploy/frontend deploy/backend deploy/redis ns/testing

  131. Kubernetes Nodes ns/staging ... ns/testing ns/production deploy/frontend deploy/backend deploy/redis

  132. Kubernetes Nodes ns/staging ... ns/testing ns/production deploy/frontend deploy/backend deploy/redis

  133. Kubernetes Nodes ns/staging ... ns/testing deploy/frontend deploy/backend deploy/redis ns/production 1

  134. Kubernetes Nodes ns/staging ... ns/testing deploy/frontend deploy/backend ns/production 1 deploy/redis

    2
  135. Kubernetes Nodes ns/staging ... ns/testing deploy/frontend deploy/backend ns/production 1 deploy/redis

    2 3
  136. Kubernetes Nodes ns/staging ... ns/testing deploy/frontend deploy/backend ns/production 1 deploy/redis

    2 3
  137. Kubernetes Nodes ns/staging ... ns/testing redis app==redis ns/production 1 3

    deploy/redis 2
  138. Kubernetes Nodes ns/staging ... ns/testing redis app==redis ns/production 1 3

    deploy/redis 2
  139. Kubernetes Nodes ns/staging ... ns/testing redis app==redis ns/production 1 3

    2 deploy/redis
  140. http://192.168.12.83:9121/metrics http://192.168.18.19:9121/metrics http://192.168.13.27:9121/metrics Targets 30 sec 30 sec 30 sec

    foo=c foo=b foo=a
  141. http://192.168.12.83:9121/metrics http://192.168.18.19:9121/metrics http://192.168.13.27:9121/metrics Targets 30 sec 30 sec 30 sec

    namespace=production namespace=production namespace=production
  142. http://192.168.12.83:9121/metrics http://192.168.18.19:9121/metrics http://192.168.13.27:9121/metrics Targets 30 sec 30 sec 30 sec

    namespace=production namespace=production namespace=production service=redis service=redis service=redis
  143. http://192.168.12.83:9121/metrics http://192.168.18.19:9121/metrics http://192.168.13.27:9121/metrics Targets 30 sec 30 sec 30 sec

    namespace=production namespace=production namespace=production service=redis pod=redis-84f78f6b56-qmm66 service=redis pod=redis-84f78f6b56-zqh2q service=redis pod=redis-84f78f6b56-s44hj
  144. http://192.168.12.83:9121/metrics http://192.168.18.19:9121/metrics http://192.168.13.27:9121/metrics Targets 30 sec 30 sec 30 sec

    namespace=production namespace=production namespace=production service=redis pod=redis-84f78f6b56-qmm66 service=redis pod=redis-84f78f6b56-zqh2q service=redis pod=redis-84f78f6b56-s44hj
  145. Targets Targets http://192.168.13.11:9121/metrics 30 sec namespace=production service=redis-cache pod=redis-7cd9d8dd49-2rgp8 http://192.168.12.83:9121/metrics http://192.168.18.19:9121/metrics

    http://192.168.13.27:9121/metrics 30 sec 30 sec 30 sec namespace=production namespace=production namespace=production service=redis pod=redis-84f78f6b56-qmm66 service=redis pod=redis-84f78f6b56-zqh2q service=redis pod=redis-84f78f6b56-s44hj
  146. Targets Targets http://192.168.13.11:9121/metrics 30 sec http://192.168.12.44:9121/metrics 30 sec namespace=production service=redis-cache

    pod=redis-7cd9d8dd49-2rgp8 namespace=staging pod=redis-79996bb447-jnqc6 service=redis http://192.168.12.83:9121/metrics http://192.168.18.19:9121/metrics http://192.168.13.27:9121/metrics 30 sec 30 sec 30 sec namespace=production namespace=production namespace=production service=redis pod=redis-84f78f6b56-qmm66 service=redis pod=redis-84f78f6b56-zqh2q service=redis pod=redis-84f78f6b56-s44hj
  147. http://192.168.12.83:9121/metrics http://192.168.18.19:9121/metrics http://192.168.13.27:9121/metrics Targets 30 sec 30 sec 30 sec

    YAML Конфиг namespace=production namespace=production namespace=production service=redis pod=redis-84f78f6b56-qmm66 service=redis pod=redis-84f78f6b56-zqh2q service=redis pod=redis-84f78f6b56-s44hj http://192.168.13.11:9121/metrics 30 sec namespace=production service=redis pod=redis-7cd9d8dd49-2rgp8 http://192.168.13.12:9121/metrics 30 sec namespace=production service=redis pod=redis-79996bb447-jnqc6
  148. http://192.168.12.83:9121/metrics http://192.168.18.19:9121/metrics http://192.168.13.27:9121/metrics Targets 30 sec 30 sec 30 sec

    scrape_configs: ... Конфиг namespace=production namespace=production namespace=production service=redis pod=redis-84f78f6b56-qmm66 service=redis pod=redis-84f78f6b56-zqh2q service=redis pod=redis-84f78f6b56-s44hj http://192.168.13.11:9121/metrics 30 sec namespace=production service=redis pod=redis-7cd9d8dd49-2rgp8 http://192.168.13.12:9121/metrics 30 sec namespace=production service=redis pod=redis-79996bb447-jnqc6
  149. http://192.168.12.83:9121/metrics http://192.168.18.19:9121/metrics http://192.168.13.27:9121/metrics Targets 30 sec 30 sec 30 sec

    scrape_configs: - job_name: redis ... Конфиг namespace=production namespace=production namespace=production service=redis pod=redis-84f78f6b56-qmm66 service=redis pod=redis-84f78f6b56-zqh2q service=redis pod=redis-84f78f6b56-s44hj http://192.168.13.11:9121/metrics 30 sec namespace=production service=redis pod=redis-7cd9d8dd49-2rgp8 http://192.168.13.12:9121/metrics 30 sec namespace=production service=redis pod=redis-79996bb447-jnqc6
  150. http://192.168.12.83:9121/metrics http://192.168.18.19:9121/metrics http://192.168.13.27:9121/metrics Targets 30 sec 30 sec 30 sec

    scrape_configs: - job_name: redis ..................... ..................... ..................... ..................... ..................... ..................... ..................... Конфиг namespace=production namespace=production namespace=production service=redis pod=redis-84f78f6b56-qmm66 service=redis pod=redis-84f78f6b56-zqh2q service=redis pod=redis-84f78f6b56-s44hj http://192.168.13.11:9121/metrics 30 sec namespace=production service=redis pod=redis-7cd9d8dd49-2rgp8 http://192.168.13.12:9121/metrics 30 sec namespace=production service=redis pod=redis-79996bb447-jnqc6
  151. http://192.168.12.83:9121/metrics http://192.168.18.19:9121/metrics http://192.168.13.27:9121/metrics Targets 30 sec 30 sec 30 sec

    scrape_configs: - job_name: redis ..................... ..................... ..................... ..................... ..................... ..................... ..................... Конфиг 1. Как подключиться к Kubernetes? namespace=production namespace=production namespace=production service=redis pod=redis-84f78f6b56-qmm66 service=redis pod=redis-84f78f6b56-zqh2q service=redis pod=redis-84f78f6b56-s44hj http://192.168.13.11:9121/metrics 30 sec namespace=production service=redis pod=redis-7cd9d8dd49-2rgp8 http://192.168.13.12:9121/metrics 30 sec namespace=production service=redis pod=redis-79996bb447-jnqc6
  152. http://192.168.12.83:9121/metrics http://192.168.18.19:9121/metrics http://192.168.13.27:9121/metrics Targets 30 sec 30 sec 30 sec

    scrape_configs: - job_name: redis ..................... ..................... ..................... ..................... ..................... ..................... ..................... Конфиг 1. Как подключиться к Kubernetes? 2. Какие объекты получать? namespace=production namespace=production namespace=production service=redis pod=redis-84f78f6b56-qmm66 service=redis pod=redis-84f78f6b56-zqh2q service=redis pod=redis-84f78f6b56-s44hj http://192.168.13.11:9121/metrics 30 sec namespace=production service=redis pod=redis-7cd9d8dd49-2rgp8 http://192.168.13.12:9121/metrics 30 sec namespace=production service=redis pod=redis-79996bb447-jnqc6
  153. http://192.168.12.83:9121/metrics http://192.168.18.19:9121/metrics http://192.168.13.27:9121/metrics Targets 30 sec 30 sec 30 sec

    scrape_configs: - job_name: redis ..................... ..................... ..................... ..................... ..................... ..................... ..................... Конфиг 1. Как подключиться к Kubernetes? 2. Какие объекты получать? 3. Как их отфильтровывать? namespace=production namespace=production namespace=production service=redis pod=redis-84f78f6b56-qmm66 service=redis pod=redis-84f78f6b56-zqh2q service=redis pod=redis-84f78f6b56-s44hj http://192.168.13.11:9121/metrics 30 sec namespace=production service=redis pod=redis-7cd9d8dd49-2rgp8 http://192.168.13.12:9121/metrics 30 sec namespace=production service=redis pod=redis-79996bb447-jnqc6
  154. http://192.168.12.83:9121/metrics http://192.168.18.19:9121/metrics http://192.168.13.27:9121/metrics Targets 30 sec 30 sec 30 sec

    scrape_configs: - job_name: redis ..................... ..................... ..................... ..................... ..................... ..................... ..................... Конфиг 1. Как подключиться к Kubernetes? 2. Какие объекты получать? 3. Как их отфильтровывать? 4. Какие лейблы “вытаскивать”? namespace=production namespace=production namespace=production service=redis pod=redis-84f78f6b56-qmm66 service=redis pod=redis-84f78f6b56-zqh2q service=redis pod=redis-84f78f6b56-s44hj http://192.168.13.11:9121/metrics 30 sec namespace=production service=redis pod=redis-7cd9d8dd49-2rgp8 http://192.168.13.12:9121/metrics 30 sec namespace=production service=redis pod=redis-79996bb447-jnqc6
  155. scrape_configs: - job_name: redis ..................... ..................... ..................... ..................... ..................... .....................

    ..................... Конфиг 1. Как подключиться к Kubernetes? 2. Какие объекты получать? 3. Как их отфильтровывать? 4. Какие лейблы “вытаскивать”? kind: Service apiVersion: v1 metadata: name: redis namespace: production spec: selector: app: redis ports: - protocol: TCP port: 6379 Kubernetes
  156. scrape_configs: - job_name: redis ..................... ..................... ..................... ..................... ..................... .....................

    ..................... Конфиг 1. Как подключиться к Kubernetes? 2. Какие объекты получать? 3. Как их отфильтровывать? 4. Какие лейблы “вытаскивать”? kind: Service apiVersion: v1 metadata: name: redis namespace: production spec: selector: app: redis ports: - protocol: TCP port: 6379 Kubernetes
  157. scrape_configs: - job_name: redis ..................... ..................... ..................... ..................... ..................... .....................

    ..................... Конфиг 1. Как подключиться к Kubernetes? 2. Какие объекты получать? 3. Как их отфильтровывать? 4. Какие лейблы “вытаскивать”? kind: Service apiVersion: v1 metadata: name: redis namespace: production spec: selector: app: redis ports: - protocol: TCP port: 6379 Kubernetes
  158. scrape_configs: - job_name: redis ..................... ..................... ..................... ..................... ..................... .....................

    ..................... Конфиг 1. Как подключиться к Kubernetes? 2. Какие объекты получать? 3. Как их отфильтровывать? 4. Какие лейблы “вытаскивать”? kind: Service apiVersion: v1 metadata: name: redis namespace: production spec: selector: app: redis ports: - protocol: TCP port: 6379 Kubernetes
  159. scrape_configs: - job_name: redis ..................... ..................... ..................... ..................... ..................... .....................

    ..................... Конфиг 1. Как подключиться к Kubernetes? 2. Какие объекты получать? 3. Как их отфильтровывать? 4. Какие лейблы “вытаскивать”? kind: Service apiVersion: v1 metadata: name: redis namespace: production labels: prometheus-target: redis spec: selector: app: redis ports: - protocol: TCP port: 6379 Kubernetes
  160. scrape_configs: - job_name: redis ..................... ..................... ..................... ..................... ..................... .....................

    ..................... Конфиг 1. Как подключиться к Kubernetes? 2. Какие объекты получать? 3. Как их отфильтровывать? 4. Какие лейблы “вытаскивать”? kind: Service apiVersion: v1 metadata: name: redis namespace: production labels: prometheus-target: redis spec: selector: app: redis ports: - protocol: TCP port: 6379 - protocol: TCP port: 9121 name: http-metrics Kubernetes
  161. scrape_configs: - job_name: redis ..................... ..................... ..................... ..................... ..................... .....................

    ..................... Конфиг 1. Как подключиться к Kubernetes? 2. Какие объекты получать? 3. Как их отфильтровывать? 4. Какие лейблы “вытаскивать”? kind: Service apiVersion: v1 metadata: name: redis namespace: production labels: prometheus-target: redis spec: selector: app: redis ports: - protocol: TCP port: 6379 - protocol: TCP port: 9121 name: http-metrics Kubernetes
  162. scrape_configs: - job_name: redis ..................... ..................... ..................... ..................... ..................... .....................

    ..................... Конфиг http://192.168.12.83:9121/metrics http://192.168.18.19:9121/metrics http://192.168.13.27:9121/metrics 30 sec 30 sec 30 sec namespace=production namespace=production namespace=production service=redis pod=redis-84f78f6b56-qmm66 service=redis pod=redis-84f78f6b56-zqh2q service=redis pod=redis-84f78f6b56-s44hj http://192.168.13.11:9121/metrics 30 sec namespace=production service=redis pod=redis-7cd9d8dd49-2rgp8 http://192.168.13.12:9121/metrics 30 sec namespace=production service=redis pod=redis-79996bb447-jnqc6 1. Как подключиться к Kubernetes? 2. Какие объекты получать? 3. Как их отфильтровывать? 4. Какие лейблы “вытаскивать”?
  163. scrape_configs: - job_name: redis ..................... ..................... ..................... ..................... ..................... .....................

    ..................... Конфиг http://192.168.12.83:9121/metrics http://192.168.18.19:9121/metrics http://192.168.13.27:9121/metrics Targets 30 sec 30 sec 30 sec namespace=production namespace=production namespace=production service=redis pod=redis-84f78f6b56-qmm66 service=redis pod=redis-84f78f6b56-zqh2q service=redis pod=redis-84f78f6b56-s44hj http://192.168.13.11:9121/metrics 30 sec namespace=production service=redis pod=redis-7cd9d8dd49-2rgp8 http://192.168.13.12:9121/metrics 30 sec namespace=production service=redis pod=redis-79996bb447-jnqc6
  164. scrape_configs: - job_name: redis ..................... ..................... ..................... ..................... ..................... .....................

    ..................... Конфиг http://192.168.12.83:9121/metrics http://192.168.18.19:9121/metrics http://192.168.13.27:9121/metrics Targets 30 sec 30 sec 30 sec namespace=production namespace=production namespace=production service=redis pod=redis-84f78f6b56-qmm66 service=redis pod=redis-84f78f6b56-zqh2q service=redis pod=redis-84f78f6b56-s44hj http://192.168.13.11:9121/metrics 30 sec namespace=production service=redis pod=redis-7cd9d8dd49-2rgp8 http://192.168.13.12:9121/metrics 30 sec namespace=production service=redis pod=redis-79996bb447-jnqc6
  165. scrape_configs: - job_name: redis ..................... ..................... ..................... ..................... ..................... .....................

    ..................... Конфиг http://192.168.12.83:9121/metrics http://192.168.18.19:9121/metrics http://192.168.13.27:9121/metrics Targets 30 sec 30 sec 30 sec redis namespace=production namespace=production namespace=production service=redis pod=redis-84f78f6b56-qmm66 service=redis pod=redis-84f78f6b56-zqh2q service=redis pod=redis-84f78f6b56-s44hj http://192.168.13.11:9121/metrics 30 sec namespace=production service=redis pod=redis-7cd9d8dd49-2rgp8 http://192.168.13.12:9121/metrics 30 sec namespace=production service=redis pod=redis-79996bb447-jnqc6
  166. http://192.168.12.83:9121/metrics http://192.168.18.19:9121/metrics http://192.168.13.27:9121/metrics Targets 30 sec 30 sec 30 sec

    redis namespace=production namespace=production namespace=production service=redis pod=redis-84f78f6b56-qmm66 service=redis pod=redis-84f78f6b56-zqh2q service=redis pod=redis-84f78f6b56-s44hj scrape_configs: - job_name: redis ... - job_name: php-fpm ... - job_name: mysql ... Конфиг http://192.168.13.11:9121/metrics 30 sec namespace=production service=redis pod=redis-7cd9d8dd49-2rgp8 http://192.168.13.12:9121/metrics 30 sec namespace=production service=redis pod=redis-79996bb447-jnqc6
  167. http://192.168.12.83:9121/metrics http://192.168.18.19:9121/metrics http://192.168.13.27:9121/metrics Targets 30 sec 30 sec 30 sec

    redis namespace=production namespace=production namespace=production service=redis pod=redis-84f78f6b56-qmm66 service=redis pod=redis-84f78f6b56-zqh2q service=redis pod=redis-84f78f6b56-s44hj scrape_configs: - job_name: redis ... - job_name: php-fpm ... - job_name: mysql ... Конфиг
  168. http://192.168.12.83:9121/metrics http://192.168.18.19:9121/metrics http://192.168.13.27:9121/metrics Targets 30 sec 30 sec 30 sec

    redis namespace=production namespace=production namespace=production service=redis pod=redis-84f78f6b56-qmm66 service=redis pod=redis-84f78f6b56-zqh2q service=redis pod=redis-84f78f6b56-s44hj scrape_configs: - job_name: redis ... - job_name: php-fpm ... - job_name: mysql ... Конфиг http://pod-ip:http-metrics/metrics 30 sec php-fpm namespace=production service=backend pod=backend-6b56d45859-gqnh9hj http://pod-ip:http-metrics/metrics 30 sec mysql namespace=staging service=mysql pod=mysql-5cf7d9cc67-h6r8d http://pod-ip:http-metrics/metrics 30 sec namespace=testing service=mysql pod=mysql-5566877785-fpszg
  169. Разобрались!

  170. Какие данные собирать в Kubernetes?

  171. Компоненты Kubernetes Kubernetes Master Kubernetes Софт Custom

  172. Компоненты Kubernetes redis http://pod-ip 30 sec kube-apiserver node= redis http://pod-ip

    30 sec kube-controller-manager node= redis http://pod-ip 30 sec kube-scheduler node= redis http://pod-ip 30 sec kube-etcd3 node= Kubernetes Master Kubernetes Софт Custom redis http://pod-ip 30 sec kube-etcd2 node=
  173. Kubernetes Master Kubernetes Софт Custom Компоненты Kubernetes

  174. http://pod-ip 30 sec kubelet node= Kubernetes Master Kubernetes Софт Custom

    Компоненты Kubernetes
  175. http://pod-ip 30 sec kubelet node= redis http://pod-ip 30 sec kube-state-metrics

    Kubernetes Master Kubernetes Софт Custom Компоненты Kubernetes
  176. http://pod-ip 30 sec kubelet node= redis http://pod-ip 30 sec kube-state-metrics

    redis http://pod-ip 30 sec node-exporter node= Kubernetes Master Kubernetes Софт Custom Компоненты Kubernetes
  177. Kubernetes Master Kubernetes Компоненты Kubernetes Софт Custom

  178. http://pod-ip 30 sec kube-prometheus-operator http://pod-ip 30 sec kube-prometheus pod= redis

    http://pod-ip 30 sec ingress-nginx-controller node= controller= Kubernetes Master Kubernetes Компоненты Kubernetes Софт Custom http://pod-ip 30 sec kube-dns pod=
  179. Kubernetes Master Kubernetes Компоненты Kubernetes Софт Custom

  180. Kubernetes Master Kubernetes Компоненты Kubernetes Софт Custom redis http://pod-ip 30

    sec elasticsearch http://pod-ip 30 sec mongodb http://pod-ip 30 sec nginx http://pod-ip 30 sec php-fpm http://pod-ip 30 sec rabbitmq http://pod-ip 30 sec redis redis http://pod-ip 30 sec uwsgi ns= svc= pod= ns= svc= pod= ns= svc= pod= ns= svc= pod= ns= svc= pod= ns= svc= pod= ns= svc= pod=
  181. Kubernetes Master Kubernetes Компоненты Kubernetes Софт Custom

  182. Компоненты Kubernetes Kubernetes Master Kubernetes Софт Custom kind: Service apiVersion:

    v1 metadata: name: backend namespace: production spec: selector: app: backend ports: - protocol: TCP port: 80 Kubernetes
  183. Компоненты Kubernetes Kubernetes Master Kubernetes Софт Custom kind: Service apiVersion:

    v1 metadata: name: backend namespace: production spec: selector: app: backend ports: - protocol: TCP port: 80 Kubernetes
  184. Компоненты Kubernetes Kubernetes Master Kubernetes Софт Custom kind: Service apiVersion:

    v1 metadata: name: backend namespace: production spec: selector: app: backend ports: - protocol: TCP port: 80 Kubernetes
  185. Компоненты Kubernetes Kubernetes Master Kubernetes Софт Custom kind: Service apiVersion:

    v1 metadata: name: backend namespace: production label: prometheus-custom-target: backend spec: selector: app: backend ports: - protocol: TCP port: 80 name: http-metrics Kubernetes
  186. Компоненты Kubernetes Kubernetes Master Kubernetes Софт Custom kind: Service apiVersion:

    v1 metadata: name: backend namespace: production label: prometheus-custom-target: backend spec: selector: app: backend ports: - protocol: TCP port: 80 name: http-metrics Kubernetes
  187. Компоненты Kubernetes Kubernetes Master Kubernetes Софт Custom kind: Service apiVersion:

    v1 metadata: name: backend namespace: production label: prometheus-custom-target: backend spec: selector: app: backend ports: - protocol: TCP port: 80 name: http-metrics Kubernetes
  188. Компоненты Kubernetes Kubernetes Master Kubernetes Софт Custom redis http://pod-ip 30

    sec custom-backend ns= svc= pod=
  189. Компоненты Kubernetes Kubernetes Master Kubernetes Софт Custom redis http://pod-ip 30

    sec custom-backend http://pod-ip 30 sec custom-foo http://pod-ip 30 sec custom-bar ns= svc= pod= ns= svc= pod= ns= svc= pod=
  190. None
  191. Collector Target #1 Target #2 Target #3 Targets 60 sec

    60 sec 60 sec foo=a foo=b foo=c Service Discovery API TSDB
  192. Collector Target #1 Target #2 Target #3 Targets 60 sec

    60 sec 60 sec foo=a foo=b foo=c Service Discovery API TSDB Графики
  193. Collector Target #1 Target #2 Target #3 Targets 60 sec

    60 sec 60 sec foo=a foo=b foo=c Service Discovery API TSDB Графики PromQL
  194. WE NEED TO GO DEEPER

  195. PromQL Execute

  196. PromQL Execute my_metric

  197. PromQL Execute my_metric T1 T2 T3 T4 my_metric{label=”a”} 1 3

    12 11 my_metric{label=”b”} 6 4 7 5 my_metric{label=”c”} 42 18 33 19 my_metric{label=”d”} 19 2 14 6
  198. PromQL Execute my_metric 60 sec T1 T2 T3 T4 my_metric{label=”a”}

    1 3 12 11 my_metric{label=”b”} 6 4 7 5 my_metric{label=”c”} 42 18 33 19 my_metric{label=”d”} 19 2 14 6 60 sec 60 sec 60 sec
  199. PromQL Execute my_metric{label=”a”} T1 T2 T3 T4 my_metric{label=”a”} 1 3

    12 11 my_metric{label=”b”} 6 4 7 5 my_metric{label=”c”} 42 18 33 19 my_metric{label=”d”} 19 2 14 6
  200. PromQL Execute my_metric{label=”a”} T1 T2 T3 T4 my_metric{label=”a”} 1 3

    12 11
  201. PromQL Execute my_metric{label=~”a|b”} T1 T2 T3 T4 my_metric{label=”a”} 1 3

    12 11
  202. PromQL Execute my_metric{label=~”a|b”} T1 T2 T3 T4 my_metric{label=”a”} 1 3

    12 11 my_metric{label=”b”} 6 4 7 5
  203. PromQL Execute my_metric{label=~”a|b”} × 8 T1 T2 T3 T4 my_metric{label=”a”}

    1 3 12 11 my_metric{label=”b”} 6 4 7 5
  204. T1 T2 T3 T4 my_metric{label=”a”} 1 3 12 11 my_metric{label=”b”}

    6 4 7 5 PromQL Execute my_metric{label=~”a|b”} × 8
  205. T1 T2 T3 T4 my_metric{label=”a”} 1 3 12 11 my_metric{label=”b”}

    6 4 7 5 ×8 PromQL Execute my_metric{label=~”a|b”} × 8
  206. T1 T2 T3 T4 my_metric{label=”a”} 1 3 12 11 my_metric{label=”b”}

    6 4 7 5 ×8 PromQL Execute my_metric{label=~”a|b”} × 8 T1 T2 T3 T4 my_metric{label=”a”} 1x8 3x8 12x8 11x8 my_metric{label=”b”} 6x8 4x8 7x8 5x8
  207. T1 T2 T3 T4 my_metric{label=”a”} 1 3 12 11 my_metric{label=”b”}

    6 4 7 5 ×8 PromQL Execute my_metric{label=~”a|b”} × 8 T1 T2 T3 T4 my_metric{label=”a”} 1x8 3x8 12x8 11x8 my_metric{label=”b”} 6x8 4x8 7x8 5x8 T1 T2 T3 T4 my_metric{label=”a”} 8 24 96 88 my_metric{label=”b”} 48 32 56 40
  208. T1 T2 T3 T4 my_metric{label=”a”} 1 3 12 11 my_metric{label=”b”}

    6 4 7 5 PromQL Execute my_metric{label=~”a|b”} > 4 >4 T1 T2 T3 T4 my_metric{label=”a”} 1>4 3>4 12>4 11>4 my_metric{label=”b”} 6>4 4>4 7>4 5>4
  209. T1 T2 T3 T4 my_metric{label=”a”} 1 3 12 11 my_metric{label=”b”}

    6 4 7 5 PromQL Execute my_metric{label=~”a|b”} > 4 >4 T1 T2 T3 T4 my_metric{label=”a”} 1>4 3>4 12>4 11>4 my_metric{label=”b”} 6>4 4>4 7>4 5>4 T1 T2 T3 T4 my_metric{label=”a”} nil nil 12 11 my_metric{label=”b”} 6 nil 7 5
  210. T1 T2 T3 T4 my_metric{label=”a”} 1 3 12 11 my_metric{label=”b”}

    6 4 7 5 PromQL Execute my_metric{label=~”a|b”} > 4 >4 T1 T2 T3 T4 my_metric{label=”a”} 1>4 3>4 12>4 11>4 my_metric{label=”b”} 6>4 4>4 7>4 5>4 T1 T2 T3 T4 my_metric{label=”a”} nil nil 12 11 my_metric{label=”b”} 6 nil 7 5
  211. PromQL Execute

  212. PromQL Execute http_requests_total{host=”bar.io”, status=”2xx”}

  213. PromQL Execute http_requests_total{host=”bar.io”, status=”2xx”} T1 T2 T3 T4 {host=”bar.io”, status=”2xx”}

    6 29 42 61
  214. PromQL Execute http_requests_total{host=”bar.io”, status=”2xx”} T1 T2 T3 T4 {host=”bar.io”, status=”2xx”}

    6 29 42 61 60 sec 60 sec 60 sec 60 sec
  215. PromQL Execute http_requests_total{host=”bar.io”, status=”2xx”}[2m] T1 T2 T3 T4 {host=”bar.io”, status=”2xx”}

    6 29 42 61 60 sec 60 sec 60 sec 60 sec
  216. PromQL Execute http_requests_total{host=”bar.io”, status=”2xx”}[2m] T1 T2 T3 T4 {host=”bar.io”, status=”2xx”}

    6 29 42 61 2 min 60 sec 60 sec 60 sec 60 sec
  217. 2 min PromQL Execute http_requests_total{host=”bar.io”, status=”2xx”}[2m] T1 T2 T3 T4

    {host=”bar.io”, status=”2xx”} 6 29 42 61 T1 T2 T3 T4 {host=”bar.io”, status=”2xx”} [42,61] 60 sec 60 sec 60 sec 60 sec
  218. 2 min PromQL Execute http_requests_total{host=”bar.io”, status=”2xx”}[2m] T1 T2 T3 T4

    {host=”bar.io”, status=”2xx”} 6 29 42 61 T1 T2 T3 T4 {host=”bar.io”, status=”2xx”} [29,42] [42,61] 60 sec 60 sec 60 sec 60 sec
  219. 2 min PromQL Execute http_requests_total{host=”bar.io”, status=”2xx”}[2m] T1 T2 T3 T4

    {host=”bar.io”, status=”2xx”} 6 29 42 61 T1 T2 T3 T4 {host=”bar.io”, status=”2xx”} [6,29] [29,42] [42,61] 60 sec 60 sec 60 sec 60 sec
  220. PromQL Execute http_requests_total{host=”bar.io”, status=”2xx”}[2m] T1 T2 T3 T4 {host=”bar.io”, status=”2xx”}

    6 29 42 61 T1 T2 T3 T4 {host=”bar.io”, status=”2xx”} [nil,6] [6,29] [29,42] [42,61] 60 sec 60 sec 60 sec 60 sec 2 min
  221. PromQL Execute http_requests_total{host=”bar.io”, status=”2xx”}[2m] T1 T2 T3 T4 {host=”bar.io”, status=”2xx”}

    6 29 42 61 T1 T2 T3 T4 {host=”bar.io”, status=”2xx”} [nil,6] [6,29] [29,42] [42,61] 60 sec 60 sec 60 sec 60 sec
  222. PromQL Execute http_requests_total{host=”bar.io”, status=”2xx”}[2m] T1 T2 T3 T4 {host=”bar.io”, status=”2xx”}

    6 29 42 61 T1 T2 T3 T4 {host=”bar.io”, status=”2xx”} [nil,6] [6,29] [29,42] [42,61] Range vector
  223. PromQL Execute increase(http_requests_total{host=”bar.io”, status=”2xx”}[2m]) T1 T2 T3 T4 {host=”bar.io”, status=”2xx”}

    6 29 42 61 T1 T2 T3 T4 {host=”bar.io”, status=”2xx”} [nil,6] [6,29] [29,42] [42,61] Range vector
  224. PromQL Execute increase(http_requests_total{host=”bar.io”, status=”2xx”}[2m]) T1 T2 T3 T4 {host=”bar.io”, status=”2xx”}

    6 29 42 61 T1 T2 T3 T4 {host=”bar.io”, status=”2xx”} [nil,6] [6,29] [29,42] [42,61] T1 T2 T3 T4 {host=”bar.io”, status=”2xx”} nil 23 13 19 Range vector
  225. PromQL Execute http_requests_total

  226. PromQL Execute http_requests_total T1 T2 T3 T4 {host=”foo.io”, status=”2xx”} 0

    1 3 12 {host=”foo.io”, status=”4xx”} 0 0 1 1 {host=”bar.io”, status=”2xx”} 6 29 42 61 {host=”bar.io”, status=”3xx”} 1 2 4 7 {host=”baz.io”, status=”1xx”} 1 1 2 3 {host=”baz.io”, status=”2xx”} 0 3 7 9 {host=”baz.io”, status=”5xx”} 0 0 0 1
  227. PromQL Execute increase(http_requests_total[2m]) T1 T2 T3 T4 {host=”foo.io”, status=”2xx”} nil

    1 2 9 {host=”foo.io”, status=”4xx”} nil 0 1 0 {host=”bar.io”, status=”2xx”} nil 23 13 19 {host=”bar.io”, status=”3xx”} nil 1 2 3 {host=”baz.io”, status=”1xx”} nil 0 1 1 {host=”baz.io”, status=”2xx”} nil 3 4 2 {host=”baz.io”, status=”5xx”} nil 0 0 1
  228. PromQL Execute sum(increase(http_requests_total[2m])) T1 T2 T3 T4 {host=”foo.io”, status=”2xx”} nil

    1 2 9 {host=”foo.io”, status=”4xx”} nil 0 1 0 {host=”bar.io”, status=”2xx”} nil 23 13 19 {host=”bar.io”, status=”3xx”} nil 1 2 3 {host=”baz.io”, status=”1xx”} nil 0 1 1 {host=”baz.io”, status=”2xx”} nil 3 4 2 {host=”baz.io”, status=”5xx”} nil 0 0 1
  229. T1 T2 T3 T4 {host=”foo.io”, status=”2xx”} nil 1 2 9

    {host=”foo.io”, status=”4xx”} nil 0 1 0 {host=”bar.io”, status=”2xx”} nil 23 13 19 {host=”bar.io”, status=”3xx”} nil 1 2 3 {host=”baz.io”, status=”1xx”} nil 0 1 1 {host=”baz.io”, status=”2xx”} nil 3 4 2 {host=”baz.io”, status=”5xx”} nil 0 0 1 PromQL Execute sum(increase(http_requests_total[2m]))
  230. T1 T2 T3 T4 {host=”foo.io”, status=”2xx”} nil 1 2 9

    {host=”foo.io”, status=”4xx”} nil 0 1 0 {host=”bar.io”, status=”2xx”} nil 23 13 19 {host=”bar.io”, status=”3xx”} nil 1 2 3 {host=”baz.io”, status=”1xx”} nil 0 1 1 {host=”baz.io”, status=”2xx”} nil 3 4 2 {host=”baz.io”, status=”5xx”} nil 0 0 1 PromQL Execute sum(increase(http_requests_total[2m])) T1 T2 T3 T4 {} nil 28 23 35
  231. T1 T2 T3 T4 {host=”foo.io”, status=”2xx”} nil 1 2 9

    {host=”foo.io”, status=”4xx”} nil 0 1 0 {host=”bar.io”, status=”2xx”} nil 23 13 19 {host=”bar.io”, status=”3xx”} nil 1 2 3 {host=”baz.io”, status=”1xx”} nil 0 1 1 {host=”baz.io”, status=”2xx”} nil 3 4 2 {host=”baz.io”, status=”5xx”} nil 0 0 1 PromQL Execute sum(increase(http_requests_total[2m])) T1 T2 T3 T4 {} nil 28 23 35
  232. PromQL Execute sum(increase(http_requests_total[2m])) by (host)

  233. PromQL Execute sum(increase(http_requests_total[2m])) by (host) T1 T2 T3 T4 {host=”foo.io”}

    nil 1 3 9 {host=”bar.io”} nil 24 15 22 {host=”baz.io”} nil 3 5 4
  234. PromQL Execute sum(increase(http_requests_total[2m])) by (host) T1 T2 T3 T4 {host=”foo.io”}

    nil 1 3 9 {host=”bar.io”} nil 24 15 22 {host=”baz.io”} nil 3 5 4
  235. PromQL Execute sum(increase(http_requests_total[2m])) by (status) T1 T2 T3 T4 {status=”1xx”}

    nil 0 1 1 {status=”2xx”} nil 27 19 30 {status=”3xx”} nil 1 2 3 {status=”4xx”} nil 0 1 0 {status=”5xx”} nil 0 0 1
  236. PromQL Execute sum(increase(http_requests_total[2m])) by (status) T1 T2 T3 T4 {status=”1xx”}

    nil 0 1 1 {status=”2xx”} nil 27 19 30 {status=”3xx”} nil 1 2 3 {status=”4xx”} nil 0 1 0 {status=”5xx”} nil 0 0 1
  237. PromQL Execute http_bytes_sent_total

  238. PromQL Execute http_bytes_sent_total T1 T2 T3 T4 {host=”foo.io”} 0 540

    1928 5980 {host=”bar.io”} 3451 16368 24334 27608 {host=”baz.io”} 505 2308 4752 6552
  239. PromQL Execute increase(http_bytes_sent_total[2m]) T1 T2 T3 T4 {host=”foo.io”} nil 540

    1388 4052 {host=”bar.io”} nil 12917 7966 3274 {host=”baz.io”} nil 1803 2444 1800
  240. PromQL Execute increase(http_bytes_sent_total[2m]) / sum(increase(http_requests_total[2m])) by (host) T1 T2 T3

    T4 {host=”foo.io”} nil 540 1388 4052 {host=”bar.io”} nil 12917 7966 3274 {host=”baz.io”} nil 1803 2444 1800
  241. PromQL Execute increase(http_bytes_sent_total[2m]) / sum(increase(http_requests_total[2m])) by (host) T1 T2 T3

    T4 {host=”foo.io”} nil 540 1388 4052 {host=”bar.io”} nil 12917 7966 3274 {host=”baz.io”} nil 1803 2444 1800 T1 T2 T3 T4 {host=”foo.io”} nil 1 3 9 {host=”bar.io”} nil 24 15 22 {host=”baz.io”} nil 3 5 4
  242. PromQL Execute increase(http_bytes_sent_total[2m]) / sum(increase(http_requests_total[2m])) by (host) T1 T2 T3

    T4 {host=”foo.io”} nil 540 1388 4052 {host=”bar.io”} nil 12917 7966 3274 {host=”baz.io”} nil 1803 2444 1800 T1 T2 T3 T4 {host=”foo.io”} nil 1 3 9 {host=”bar.io”} nil 24 15 22 {host=”baz.io”} nil 3 5 4 ÷
  243. PromQL Execute increase(http_bytes_sent_total[2m]) / sum(increase(http_requests_total[2m])) by (host) T1 T2 T3

    T4 {host=”foo.io”} nil 540 1388 4052 {host=”bar.io”} nil 12917 7966 3274 {host=”baz.io”} nil 1803 2444 1800 T1 T2 T3 T4 {host=”foo.io”} nil 1 3 9 {host=”bar.io”} nil 24 15 22 {host=”baz.io”} nil 3 5 4 T1 T2 T3 T4 {host=”foo.io”} nil 540/1 {host=”bar.io”} nil {host=”baz.io”} nil =
  244. PromQL Execute increase(http_bytes_sent_total[2m]) / sum(increase(http_requests_total[2m])) by (host) T1 T2 T3

    T4 {host=”foo.io”} nil 540 1388 4052 {host=”bar.io”} nil 12917 7966 3274 {host=”baz.io”} nil 1803 2444 1800 T1 T2 T3 T4 {host=”foo.io”} nil 1 3 9 {host=”bar.io”} nil 24 15 22 {host=”baz.io”} nil 3 5 4 T1 T2 T3 T4 {host=”foo.io”} nil 540/1 {host=”bar.io”} nil 12917/24 {host=”baz.io”} nil
  245. PromQL Execute increase(http_bytes_sent_total[2m]) / sum(increase(http_requests_total[2m])) by (host) T1 T2 T3

    T4 {host=”foo.io”} nil 540 1388 4052 {host=”bar.io”} nil 12917 7966 3274 {host=”baz.io”} nil 1803 2444 1800 T1 T2 T3 T4 {host=”foo.io”} nil 1 3 9 {host=”bar.io”} nil 24 15 22 {host=”baz.io”} nil 3 5 4 T1 T2 T3 T4 {host=”foo.io”} nil 540/1 1388/3 4052/9 {host=”bar.io”} nil 12917/24 7966/15 3274/22 {host=”baz.io”} nil 1803/3 2444/5 1800/4
  246. PromQL Execute metric_x + metric_y metric_x{host=”foo.io”} metric_x{host=”bar.io”} metric_x{host=”example.io”} metric_y{host=”foo.io”} metric_y{host=”bar.io”}

    metric_y{host=”unknown.io”} {host=”foo.io”} {host=”bar.io”}
  247. None
  248. Collector Target #1 Target #2 Target #3 Targets 30 sec

    30 sec 30 sec foo=a foo=b foo=c Service Discovery API TSDB Графики
  249. Collector Target #1 Target #2 Target #3 Targets foo=a foo=b

    foo=c Service Discovery API TSDB Графики Evaluator 30 sec 30 sec 30 sec
  250. Collector Target #1 Target #2 Target #3 Targets foo=a foo=b

    foo=c Service Discovery API TSDB Графики Evaluator 30 sec 30 sec 30 sec
  251. Collector Target #1 Target #2 Target #3 Targets foo=a foo=b

    foo=c Service Discovery API TSDB Графики Evaluator PromQL 30 sec 30 sec 30 sec
  252. Collector Target #1 Target #2 Target #3 Targets foo=a foo=b

    foo=c Service Discovery API TSDB Графики Evaluator PromQL 30 sec 30 sec 30 sec 30 sec
  253. Collector Target #1 Target #2 Target #3 Targets foo=a foo=b

    foo=c Service Discovery API TSDB Алерты Графики Alertmanager Evaluator PromQL 30 sec 30 sec 30 sec 30 sec
  254. Collector Target #1 Target #2 Target #3 Targets foo=a foo=b

    30 sec 30 sec 30 sec foo=c Service Discovery API Графики TSDB Алерты Alertmanager Evaluator PromQL 30 sec
  255. Collector Target #1 Target #2 Target #3 Targets foo=a foo=b

    foo=c Service Discovery API Графики 30 sec 30 sec 30 sec TSDB Алерты Alertmanager Evaluator PromQL alert: Http5xx expr: increase(http_requests_total{status=”5xx”}[2m]) for: 5m labels: severity: warning annotations: summary: host {{$labels.host}} has 5xx 30 sec
  256. Collector Target #1 Target #2 Target #3 Targets foo=a foo=b

    foo=c Service Discovery API Графики 30 sec 30 sec 30 sec TSDB Алерты Alertmanager Evaluator PromQL alert: Http5xx expr: increase(http_requests_total{status=”5xx”}[2m]) for: 5m labels: severity: warning annotations: summary: host {{$labels.host}} has 5xx 30 sec
  257. Collector Target #1 Target #2 Target #3 Targets foo=a foo=b

    foo=c Service Discovery API Графики 30 sec 30 sec 30 sec TSDB Алерты Alertmanager Evaluator PromQL alert: Http5xx expr: increase(http_requests_total{status=”5xx”}[2m]) for: 5m labels: severity: warning annotations: summary: host {{$labels.host}} has 5xx 30 sec
  258. Collector Target #1 Target #2 Target #3 Targets foo=a foo=b

    foo=c Service Discovery API Графики 30 sec 30 sec 30 sec TSDB Алерты Alertmanager Evaluator PromQL alert: Http5xx expr: increase(http_requests_total{status=”5xx”}[2m]) for: 5m labels: severity: warning annotations: summary: host {{$labels.host}} has 5xx 30 sec
  259. Collector Target #1 Target #2 Target #3 Targets foo=a foo=b

    foo=c Service Discovery API Графики 30 sec 30 sec 30 sec TSDB Алерты Alertmanager Evaluator PromQL alert: Http5xx expr: increase(http_requests_total{status=”5xx”}[2m]) for: 5m labels: severity: warning annotations: summary: host {{$labels.host}} has 5xx 30 sec
  260. Collector Target #1 Target #2 Target #3 Targets foo=a foo=b

    foo=c Service Discovery API TSDB Алерты Графики Alertmanager Evaluator 30 sec 30 sec 30 sec
  261. Картина в целом?

  262. ns/kube-prometheus

  263. ns/kube-prometheus

  264. ns/kube-prometheus

  265. ns/kube-prometheus 30 sec

  266. ns/kube-prometheus 30 sec Alertmanager

  267. ns/kube-prometheus 30 sec Alertmanager

  268. ns/kube-prometheus 30 sec Alertmanager

  269. ns/kube-prometheus 30 sec Alertmanager

  270. ns/kube-prometheus 30 sec Alertmanager

  271. ns/kube-prometheus 30 sec 30 sec Alertmanager

  272. ns/kube-prometheus 30 sec 30 sec 30 sec Alertmanager

  273. ns/kube-prometheus 30 sec N Alertmanager

  274. ns/kube-prometheus Alermanager 30 sec N Alertmanager Alertmanager

  275. ns/kube-prometheus 30 sec N Alertmanager N

  276. И чего же нам не хватает?

  277. None
  278. None
  279. None
  280. my_metric{label=”a”} 1 my_metric{label=”b”} 6 my_metric{label=”c”} 42 ...

  281. my_metric{label=”a”} 1 my_metric{label=”b”} 6 my_metric{label=”c”} 42 ... my_metric{label=”a”, foo=”a”} my_metric{label=”b”,

    foo=”a”} my_metric{label=”c”, foo=”a”} … aT1 1 6 42
  282. my_metric{label=”a”} 1 my_metric{label=”b”} 6 my_metric{label=”c”} 42 ... my_metric{label=”a”, foo=”a”} my_metric{label=”b”,

    foo=”a”} my_metric{label=”c”, foo=”a”} … other_metric{x=”a”} 22 other_metric{x=”b”} 17 other_metric{x=”c”} 8 ... aT1 1 6 42
  283. my_metric{label=”a”} 1 my_metric{label=”b”} 6 my_metric{label=”c”} 42 ... my_metric{label=”a”, foo=”a”} my_metric{label=”b”,

    foo=”a”} my_metric{label=”c”, foo=”a”} … other_metric{label=”a”, foo=”b”} other_metric{label=”b”, foo=”b”} other_metric{label=”c”, foo=”b”} other_metric{x=”a”} 22 other_metric{x=”b”} 17 other_metric{x=”c”} 8 ... aT1 1 6 42 bT1 22 17 8
  284. my_metric{label=”a”} 1 my_metric{label=”b”} 6 my_metric{label=”c”} 42 ... my_metric{label=”a”, foo=”a”} my_metric{label=”b”,

    foo=”a”} my_metric{label=”c”, foo=”a”} … other_metric{label=”a”, foo=”b”} other_metric{label=”b”, foo=”b”} other_metric{label=”c”, foo=”b”} … my_metric{label=”b”, foo=”c”} my_metric{label=”c”, foo=”c”} my_metric{label=”d”, foo=”c”} … other_metric{x=”a”} 22 other_metric{x=”b”} 17 other_metric{x=”c”} 8 ... aT1 1 6 42 bT1 22 17 8 cT1 12 3 7 my_metric{label=”b”} 12 my_metric{label=”c”} 3 my_metric{label=”d”} 7 ...
  285. my_metric{label=”a”} 1 my_metric{label=”b”} 6 my_metric{label=”c”} 42 ... my_metric{label=”a”, foo=”a”} my_metric{label=”b”,

    foo=”a”} my_metric{label=”c”, foo=”a”} … other_metric{label=”a”, foo=”b”} other_metric{label=”b”, foo=”b”} other_metric{label=”c”, foo=”b”} … my_metric{label=”b”, foo=”c”} my_metric{label=”c”, foo=”c”} my_metric{label=”d”, foo=”c”} … other_metric{x=”a”} 22 other_metric{x=”b”} 17 other_metric{x=”c”} 8 ... aT1 aT2 1 7 6 2 42 24 bT1 22 17 8 cT1 12 3 7 my_metric{label=”b”} 12 my_metric{label=”c”} 3 my_metric{label=”d”} 7 ... my_metric{label=”a”} 7 my_metric{label=”b”} 2 my_metric{label=”c”} 24 ...
  286. my_metric{label=”a”} 1 my_metric{label=”b”} 6 my_metric{label=”c”} 42 ... my_metric{label=”a”, foo=”a”} my_metric{label=”b”,

    foo=”a”} my_metric{label=”c”, foo=”a”} … other_metric{label=”a”, foo=”b”} other_metric{label=”b”, foo=”b”} other_metric{label=”c”, foo=”b”} … my_metric{label=”b”, foo=”c”} my_metric{label=”c”, foo=”c”} my_metric{label=”d”, foo=”c”} … other_metric{x=”a”} 22 other_metric{x=”b”} 17 other_metric{x=”c”} 8 ... aT1 aT2 1 7 6 2 42 24 bT1 bT2 22 34 17 5 8 19 cT1 12 3 7 my_metric{label=”b”} 12 my_metric{label=”c”} 3 my_metric{label=”d”} 7 ... other_metric{x=”a”} 34 other_metric{x=”b”} 5 other_metric{x=”c”} 19 ... my_metric{label=”a”} 7 my_metric{label=”b”} 2 my_metric{label=”c”} 24 ...
  287. my_metric{label=”a”} 1 my_metric{label=”b”} 6 my_metric{label=”c”} 42 ... my_metric{label=”a”, foo=”a”} my_metric{label=”b”,

    foo=”a”} my_metric{label=”c”, foo=”a”} … other_metric{label=”a”, foo=”b”} other_metric{label=”b”, foo=”b”} other_metric{label=”c”, foo=”b”} … my_metric{label=”b”, foo=”c”} my_metric{label=”c”, foo=”c”} my_metric{label=”d”, foo=”c”} … other_metric{x=”a”} 22 other_metric{x=”b”} 17 other_metric{x=”c”} 8 ... aT1 aT2 1 7 6 2 42 24 bT1 bT2 22 34 17 5 8 19 cT1 cT2 12 18 3 19 7 49 my_metric{label=”b”} 12 my_metric{label=”c”} 3 my_metric{label=”d”} 7 ... my_metric{label=”b”} 18 my_metric{label=”c”} 19 my_metric{label=”d”} 49 ... other_metric{x=”a”} 34 other_metric{x=”b”} 5 other_metric{x=”c”} 19 ... my_metric{label=”a”} 7 my_metric{label=”b”} 2 my_metric{label=”c”} 24 ...
  288. my_metric{label=”a”} 1 my_metric{label=”b”} 6 my_metric{label=”c”} 42 ... my_metric{label=”a”, foo=”a”} my_metric{label=”b”,

    foo=”a”} my_metric{label=”c”, foo=”a”} … other_metric{label=”a”, foo=”b”} other_metric{label=”b”, foo=”b”} other_metric{label=”c”, foo=”b”} … my_metric{label=”b”, foo=”c”} my_metric{label=”c”, foo=”c”} my_metric{label=”d”, foo=”c”} … other_metric{x=”a”} 22 other_metric{x=”b”} 17 other_metric{x=”c”} 8 ... aT1 aT2 aT3 1 7 4 6 2 8 42 24 13 bT1 bT2 22 34 17 5 8 19 cT1 cT2 12 18 3 19 7 49 my_metric{label=”b”} 12 my_metric{label=”c”} 3 my_metric{label=”d”} 7 ... my_metric{label=”b”} 18 my_metric{label=”c”} 19 my_metric{label=”d”} 49 ... other_metric{x=”a”} 34 other_metric{x=”b”} 5 other_metric{x=”c”} 19 ... my_metric{label=”a”} 7 my_metric{label=”b”} 2 my_metric{label=”c”} 24 ... my_metric{label=”a”} 4 my_metric{label=”b”} 8 my_metric{label=”c”} 13 ...
  289. my_metric{label=”a”} 1 my_metric{label=”b”} 6 my_metric{label=”c”} 42 ... my_metric{label=”a”, foo=”a”} my_metric{label=”b”,

    foo=”a”} my_metric{label=”c”, foo=”a”} … other_metric{label=”a”, foo=”b”} other_metric{label=”b”, foo=”b”} other_metric{label=”c”, foo=”b”} … my_metric{label=”b”, foo=”c”} my_metric{label=”c”, foo=”c”} my_metric{label=”d”, foo=”c”} … other_metric{x=”a”} 22 other_metric{x=”b”} 17 other_metric{x=”c”} 8 ... aT1 aT2 aT3 1 7 4 6 2 8 42 24 13 bT1 bT2 22 34 17 5 8 19 cT1 cT2 12 18 3 19 7 49 my_metric{label=”b”} 12 my_metric{label=”c”} 3 my_metric{label=”d”} 7 ... my_metric{label=”b”} 18 my_metric{label=”c”} 19 my_metric{label=”d”} 49 ... other_metric{x=”a”} 34 other_metric{x=”b”} 5 other_metric{x=”c”} 19 ... my_metric{label=”a”} 7 my_metric{label=”b”} 2 my_metric{label=”c”} 24 ... my_metric{label=”a”} 4 my_metric{label=”b”} 8 my_metric{label=”c”} 13 ...
  290. my_metric{label=”a”} 1 my_metric{label=”b”} 6 my_metric{label=”c”} 42 ... my_metric{label=”a”, foo=”a”} my_metric{label=”b”,

    foo=”a”} my_metric{label=”c”, foo=”a”} … other_metric{label=”a”, foo=”b”} other_metric{label=”b”, foo=”b”} other_metric{label=”c”, foo=”b”} … my_metric{label=”b”, foo=”c”} my_metric{label=”c”, foo=”c”} my_metric{label=”d”, foo=”c”} … other_metric{x=”a”} 22 other_metric{x=”b”} 17 other_metric{x=”c”} 8 ... aT1 aT2 aT3 1 7 4 6 2 8 42 24 13 bT1 bT2 22 34 17 5 8 19 cT1 cT2 12 18 3 19 7 49 my_metric{label=”b”} 12 my_metric{label=”c”} 3 my_metric{label=”d”} 7 ... my_metric{label=”b”} 18 my_metric{label=”c”} 19 my_metric{label=”d”} 49 ... other_metric{x=”a”} 34 other_metric{x=”b”} 5 other_metric{x=”c”} 19 ... my_metric{label=”a”} 7 my_metric{label=”b”} 2 my_metric{label=”c”} 24 ... my_metric{label=”a”} 4 my_metric{label=”b”} 8 my_metric{label=”c”} 13 ... my_metric{label=”a”, foo=”a”} 4 my_metric{label=”b”, foo=”a”} 8 my_metric{label=”c”, foo=”a”} 13 … other_metric{label=”a”, foo=”b”} 34 other_metric{label=”b”, foo=”b”} 5 other_metric{label=”c”, foo=”b”} 19 … my_metric{label=”b”, foo=”c”} 18 my_metric{label=”c”, foo=”c”} 19 my_metric{label=”d”, foo=”c”} 49 …
  291. my_metric{label=”a”} 1 my_metric{label=”b”} 6 my_metric{label=”c”} 42 ... my_metric{label=”a”, foo=”a”} my_metric{label=”b”,

    foo=”a”} my_metric{label=”c”, foo=”a”} … other_metric{label=”a”, foo=”b”} other_metric{label=”b”, foo=”b”} other_metric{label=”c”, foo=”b”} … my_metric{label=”b”, foo=”c”} my_metric{label=”c”, foo=”c”} my_metric{label=”d”, foo=”c”} … other_metric{x=”a”} 22 other_metric{x=”b”} 17 other_metric{x=”c”} 8 ... aT1 aT2 aT3 1 7 4 6 2 8 42 24 13 bT1 bT2 22 34 17 5 8 19 cT1 cT2 12 18 3 19 7 49 my_metric{label=”a”, foo=”a”} 4 my_metric{label=”b”, foo=”a”} 8 my_metric{label=”c”, foo=”a”} 13 … other_metric{label=”a”, foo=”b”} 34 other_metric{label=”b”, foo=”b”} 5 other_metric{label=”c”, foo=”b”} 19 … my_metric{label=”b”, foo=”c”} 18 my_metric{label=”c”, foo=”c”} 19 my_metric{label=”d”, foo=”c”} 49 … my_metric{label=”b”} 12 my_metric{label=”c”} 3 my_metric{label=”d”} 7 ... API GET /federate HTTP/1.0 my_metric{label=”b”} 18 my_metric{label=”c”} 19 my_metric{label=”d”} 49 ... other_metric{x=”a”} 34 other_metric{x=”b”} 5 other_metric{x=”c”} 19 ... my_metric{label=”a”} 7 my_metric{label=”b”} 2 my_metric{label=”c”} 24 ... my_metric{label=”a”} 4 my_metric{label=”b”} 8 my_metric{label=”c”} 13 ...
  292. Collector Targets Service Discovery API TSDB

  293. Collector Targets Service Discovery API TSDB Collector Targets Service Discovery

    TSDB
  294. Collector Targets Service Discovery API TSDB Collector Targets Service Discovery

    TSDB
  295. Collector Targets Service Discovery API TSDB Collector TSDB

  296. ns/kube-prometheus 30 sec N Alertmanager N

  297. ns/kube-prometheus 30 sec N Alertmanager N

  298. ns/kube-prometheus 30 sec N Alertmanager N

  299. ns/kube-prometheus 30 sec N Alertmanager N 5 m in

  300. ns/kube-prometheus 30 sec N Alertmanager N Longterm 5 m in

  301. ns/kube-prometheus 30 sec N Alertmanager N Longterm 5 m in

  302. ns/kube-prometheus 30 sec N Alertmanager N 5 m in Longterm

  303. ns/kube-prometheus 30 sec N Alertmanager N 5 m in Longterm

  304. ns/kube-prometheus 30 sec N Alertmanager N Longterm 5 m in

  305. Поговорим про графики!

  306. ns/project-b ns/project-a ns/project-c

  307. ns/project-b ns/project-a ns/project-c

  308. ns/project-b ns/project-a ns/project-c

  309. ns/project-b ns/project-a ns/project-c

  310. ns/project-b ns/project-a ns/project-c

  311. ns/project-b ns/project-a ns/project-c

  312. ns/project-b ns/project-c ns/project-a

  313. ns/project-a deploy/frontend deploy/backend deploy/redis

  314. ns/project-a deploy/frontend deploy/backend deploy/redis

  315. ns/project-a deploy/frontend deploy/backend deploy/redis

  316. ns/project-a deploy/frontend deploy/backend deploy/redis

  317. ns/project-a deploy/frontend deploy/backend deploy/redis

  318. ns/project-a deploy/frontend deploy/backend deploy/redis

  319. ns/project-a deploy/frontend deploy/backend deploy/redis

  320. ns/project-a deploy/frontend deploy/backend deploy/redis

  321. ns/project-a deploy/frontend deploy/backend deploy/redis

  322. ns/project-a deploy/frontend deploy/backend deploy/redis

  323. ns/project-a deploy/frontend deploy/backend deploy/redis

  324. ns/project-a deploy/frontend deploy/backend deploy/redis

  325. ns/project-a deploy/frontend deploy/backend deploy/redis

  326. namespace pod group pod container Drill down →

  327. Над чем мы работаем сейчас

  328. Над чем мы работаем сейчас PodPreset

  329. Над чем мы работаем сейчас PodPreset Еще одно измерение

  330. Над чем мы работаем сейчас Автоматический триаж PodPreset Еще одно

    измерение
  331. Над чем мы работаем сейчас Автоматический триаж Автоматизация root cause

    analysis PodPreset Еще одно измерение
  332. Итог?

  333. Что такое мониторинг? Упреждение аварий Уведомление об аварии Быстрая диагностика

    Система мониторинга Точные данные Полезные графики Актуальные алерты
  334. Нужно группировать Service Discovery стал обязательным Объем данных вырос Текучка

    метаданных Использовать встроенные примитивы Помнить, что “реальности” больше одной В одном кластере много окружений
  335. Нужно группировать Service Discovery стал обязательным Объем данных вырос Текучка

    метаданных Использовать встроенные примитивы Помнить, что “реальности” больше одной В одном кластере много окружений
  336. Наш рецепт мониторинга Kubernetes!

  337. Наш рецепт мониторинга Kubernetes! 1. Возьмите Prometheus

  338. Наш рецепт мониторинга Kubernetes! 1. Возьмите Prometheus 2. Приготовьте 2000

    часов
  339. Наш рецепт мониторинга Kubernetes! 1. Возьмите Prometheus 2. Приготовьте 2000

    часов 3. Помните, что содержимое важнее системы!
  340. Наш рецепт мониторинга Kubernetes! 1. Возьмите Prometheus 2. Приготовьте 2000

    часов 3. Помните, что содержимое важнее системы! 4. Сделайте мониторинг!
  341. 24×7×365 L1/L2/L3/+ DevOps SLA 30+

  342. 24×7×365 L1/L2/L3/+ DevOps SLA 30+ … и по доступной цене

  343. Лучшие практики Continuous Delivery с Docker RootConf 2016 Собираем Docker-

    образы быстро и удобно Highload 2016 Наш опыт с Kubernetes в небольших проектах RootConf 2017 Лучшие практики CI/CD с Kubernetes и GitLab Highload 2017 youtube.com/c/flant
  344. Наши Docker-проекты github.com/flant/dapp github.com/flant/loghouse Дмитрий Столяров dmitry.stolyarov@flant.ru linkedin.com/in/distol github.com/distol Всем

    спасибо! Наш блог на Хабрахабре habr.com/company/flant/ Наш youtube-канал youtube.com/c/flant