Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Переезжаем с Zabbix
на Prometheus
Озеров Василий
•2004
•DevOps (tapcore.com)
•Founder
• fevlake.com
• checkops.com
Немного о себе
Что случилось?
• Быстро росли
• Пропускали проблемы
• Не могли анализировать
• Используем Zabbix Agent
• Поддержка windows / linux
• Встроенные шаблоны
Zabbix. Системные метрики.
• Status Page
• Скрипт парсинга
• Zabbix Agent
• Template
Zabbix. Nginx.
Zabbix. Docker. LLD.
• Template
• Скрипт Discovery
• Docker API
Zabbix. Docker. Забираем метрики.
• Скрипт метрик
• Docker API
Zabbix. Docker. Zabbix Agent XXL.
• Zabbix Agent
• Template
• Profit!
Zabbix. Docker. Graphs.
Zabbix. Docker. Workaround.
• Grafana Datasource
• Grafana template
Zabbix. Финал.
• Много ручных действий
• Предопределенные графики
• Тяжело анализировать
• Быстродействие
• Подключение пр...
• Carbon
• Whisper
• Web
Graphite.
Graphite. Системные метрики и сервисы
• Иерархичная структура
• Statsd
• Много компонентов
• Оповещения
Graphite. Неудобства.
• Долговременное хранилище
• Функционал
• Поддержка
Graphite. Преимущества.
• Event based
• Быстрый (200k eps)
• Dashboard
• Много outputs
Riemann.
• Простая конфигурация
• Tags
• SQL-Like Запросы
• Быстрая
Riemann. InfluxDB.
(def influxBatchSender
(batch 100 1/10
(asyn...
• Clojure конфигурация
• OOM
• Кластерный InfluxDB
• InfluxDB 0.8/0.9
Riemann. InfluxDB. Проблемы.
[18228436.798056] Out o...
Prometheus. Архитектура.
Prometheus. Разворачиваем. Установка.
- apt_repository: repo=””
- apt_key: url=“” state=present
- apt: name=prometheus sta...
Prometheus. Разворачиваем. Конфигурация.
- job_name: "nginx”
static_configs:
- targets:
- "web.domain.com:9913"
labels:
en...
Prometheus. Разворачиваем. Конфигурация.
ALERT WorkerLoadAvg5
IF (node_load5{group="web"}) > 4
FOR 3m
LABELS { severity = ...
Prometheus. Разворачиваем. Конфигурация.
route:
receiver: 'default-receiver’
routes:
- receiver: 'Critical Events’
match:
...
Prometheus. Системные метрики.
• VTS Exporter
• Grafana
Prometheus. Nginx.
Prometheus. Docker. Cadvisor.
• > 100 dashboards
• > 100 exporters
• Jmx_exporter
Prometheus. Другие сервисы.
• Go
• Java
• Python
• Ruby
• Bash
Prometheus. Приложения.
1. cpuTemp = prometheus.NewGauge(prometheus.GaugeOpts{
Name: "c...
• Top5 docker containers by cpu
• topk(3, sum(rate(container_cpu_system_seconds_total[5m])) by (name))
• RPS for site acro...
Prometheus. HA & Scaling.
• Быстрый (80k eps, 6m/64gb)
• Nginx vts exporter
• Cadvisor
• Подключение приложений
Prometheus. В заключении.
Вопросы
Facebook: https://www.facebook.com/vasiliy.ozerov
Http: : https://fevlake.com, https://tapcore.com
Phone: +7 967 1...
Upcoming SlideShare
Loading in …5
×

Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)

2,127 views

Published on

РИТ++ 2017, Root Conf
Зал Пекин + Шанхай, 6 июня, 11:00

Тезисы:
http://rootconf.ru/2017/abstracts/2507

- Почему prometheus?
- быстрый (golang)
- time series database
- простота развертывания через scm (ansible/chef/puppet/salt)
- готовые exports & dashboars for grafana

- Внедряем
- переносим базовый мониторинг систем в prometheus (cpu/disk/net/mem)
- настраиваем discovery новых хостов и сервисов
- подключаем визуализацию
- настраиваем алертинг

- Дополнительно
- резервируем prometheus (alertmanager + prometheus instance)
- получаем информацию из собственных приложений
- получаем статистику из логов

- Заключение
- возможности масштабирования
- какую нагрузку держим

Published in: Engineering
  • Be the first to comment

Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)

  1. 1. Переезжаем с Zabbix на Prometheus Озеров Василий
  2. 2. •2004 •DevOps (tapcore.com) •Founder • fevlake.com • checkops.com Немного о себе
  3. 3. Что случилось? • Быстро росли • Пропускали проблемы • Не могли анализировать
  4. 4. • Используем Zabbix Agent • Поддержка windows / linux • Встроенные шаблоны Zabbix. Системные метрики.
  5. 5. • Status Page • Скрипт парсинга • Zabbix Agent • Template Zabbix. Nginx.
  6. 6. Zabbix. Docker. LLD. • Template • Скрипт Discovery • Docker API
  7. 7. Zabbix. Docker. Забираем метрики. • Скрипт метрик • Docker API
  8. 8. Zabbix. Docker. Zabbix Agent XXL. • Zabbix Agent • Template • Profit!
  9. 9. Zabbix. Docker. Graphs.
  10. 10. Zabbix. Docker. Workaround. • Grafana Datasource • Grafana template
  11. 11. Zabbix. Финал. • Много ручных действий • Предопределенные графики • Тяжело анализировать • Быстродействие • Подключение приложений
  12. 12. • Carbon • Whisper • Web Graphite.
  13. 13. Graphite. Системные метрики и сервисы
  14. 14. • Иерархичная структура • Statsd • Много компонентов • Оповещения Graphite. Неудобства.
  15. 15. • Долговременное хранилище • Функционал • Поддержка Graphite. Преимущества.
  16. 16. • Event based • Быстрый (200k eps) • Dashboard • Много outputs Riemann.
  17. 17. • Простая конфигурация • Tags • SQL-Like Запросы • Быстрая Riemann. InfluxDB. (def influxBatchSender (batch 100 1/10 (async-queue! :agg {:queue-size 1000 :core-pool-size 1 :max-pool-size 4 :keep-alive-time 60000 } (influxdb influxdb-creds))))
  18. 18. • Clojure конфигурация • OOM • Кластерный InfluxDB • InfluxDB 0.8/0.9 Riemann. InfluxDB. Проблемы. [18228436.798056] Out of memory: Kill process 7657 (influxdb) score 670 or sacrifice child [18228436.838105] Killed process 7657 (influxdb) total-vm:35068428kB, anon-rss:33083764kB, file-rss:880kB (streams (moving-time-window 600 (smap folds/mean (where (> metric 1000) (email "freezhan@mycompany.com")))))
  19. 19. Prometheus. Архитектура.
  20. 20. Prometheus. Разворачиваем. Установка. - apt_repository: repo=”” - apt_key: url=“” state=present - apt: name=prometheus state=latest - apt: name=alertmanager state=latest - template: src=prometheus.yml.j2 - copy: src=alert.rules - template: src=alertmanager.yml.j2 • Один бинарник • Одна конфигурация • Ansible/Chef/Puppet/Salt
  21. 21. Prometheus. Разворачиваем. Конфигурация. - job_name: "nginx” static_configs: - targets: - "web.domain.com:9913" labels: env: "prod" group: "web" • Services
  22. 22. Prometheus. Разворачиваем. Конфигурация. ALERT WorkerLoadAvg5 IF (node_load5{group="web"}) > 4 FOR 3m LABELS { severity = "critical" } ANNOTATIONS { summary = "High Load Average", description = "{{ $labels.instance }} LA > 4" } • Services • Alerts
  23. 23. Prometheus. Разворачиваем. Конфигурация. route: receiver: 'default-receiver’ routes: - receiver: 'Critical Events’ match: severity: critical receivers: - name: 'default-receiver’ - name: 'Critical Events’ pagerduty_configs: - service_key: ”88532kgk5463kn5j45HBkf” description: '{{.CommonAnnotations.description}}' • Services • Alerts • Notifications
  24. 24. Prometheus. Системные метрики.
  25. 25. • VTS Exporter • Grafana Prometheus. Nginx.
  26. 26. Prometheus. Docker. Cadvisor.
  27. 27. • > 100 dashboards • > 100 exporters • Jmx_exporter Prometheus. Другие сервисы.
  28. 28. • Go • Java • Python • Ruby • Bash Prometheus. Приложения. 1. cpuTemp = prometheus.NewGauge(prometheus.GaugeOpts{ Name: "cpu_temperature_celsius", Help: "Current temperature of the CPU.” }) 2. prometheus.MustRegister(cpuTemp) 3. cpuTemp.Set(65.3) 4. http.Handle("/metrics", promhttp.Handler()) log.Fatal(http.ListenAndServe(":8080", nil))
  29. 29. • Top5 docker containers by cpu • topk(3, sum(rate(container_cpu_system_seconds_total[5m])) by (name)) • RPS for site across all nginx nodes • sum(irate(nginx_server_requests{host="*"}[5m])) • Predict used space in some time • predict_linear(node_filesystem_free{}[1h], 3600) Prometheus. PromQL.
  30. 30. Prometheus. HA & Scaling.
  31. 31. • Быстрый (80k eps, 6m/64gb) • Nginx vts exporter • Cadvisor • Подключение приложений Prometheus. В заключении.
  32. 32. Вопросы Facebook: https://www.facebook.com/vasiliy.ozerov Http: : https://fevlake.com, https://tapcore.com Phone: +7 967 198 37 88, feel free to ping me

×