Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Переезжаем с 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
(async-queue! :agg {:queue-size 1000
:core-pool-size 1
:max-pool-size 4
:keep-alive-time 60000
}
(influxdb influxdb-creds))))
• 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")))))
Prometheus. Архитектура.
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
Prometheus. Разворачиваем. Конфигурация.
- job_name: "nginx”
static_configs:
- targets:
- "web.domain.com:9913"
labels:
env: "prod"
group: "web"
• Services
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
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
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: "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))
• 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.
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 198 37 88, feel free to ping me

More Related Content

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