All streams
Search
Write a publication
Pull to refresh
15
0
Send message

Если вам нравится Zabbix, то советую посмотреть на Glaber — https://glaber.io/. Это забббикс с правильным хранилищем метрик

InfluxDB хорош, но лучше все-таки использовать VictoriaMetrics. Она быстрее, жрет намного меньше памяти, меньше глючит и поддерживает нормальный язык запросов — MetricsQL, обратно совместимый с PromQL, который подходит намного лучше для типичных запросов по временным рядам, чем InfluxQL и Flux. Например, попробуйте на Flux создать запрос, складывающий два fields из разных measurements. Если что, то в PromQL это выглядит как a + b.

Спасибо за дашборд!


В этом дашборде мне не хватает знаний в promql и postgresql.

Вот хорошая статья по promql — https://medium.com/@valyala/promql-tutorial-for-beginners-9ab455142085

Вот ссылка на видео этого доклада — https://youtu.be/MZ5P21j_HLE
Вот ссылка на слайды — https://docs.google.com/presentation/d/1k7OjHvxTHA7669MFwsNTCx8hII-a8lNvpmQetLxmrEU/edit?usp=sharing

Да, это простое и хорошее решение, которое работает в большинстве случаев. Оно может оказаться медленнее, чем использование map для удаления дублей, если размер слайса будет большим (например, миллион элементов и больше). Сортировка требует O(n*ln(n)) операций, где n — размер слайса, а хэшмэп — O(n) операций, т.е. при больших n хэшмэп будет выигрывать по скорости. Недостаток удаление дублей с помощью хэшмепа — он требует больше памяти и работает медленнее при небольшом количестве элементов в слайсе.

https://github.com/thanos-io/kube-thanos/

Расскажите, как поместить все компоненты Thanos, включая Thanos Sidecars, в один K8S кластер, если у вас много Prometheus'ов раскиданы по разным датацентрам?


У нас были похожие проблемы, они исчезли после перехода на remote write.

Неужели это решило проблемы с нехваткой оперативной памяти в Thanos Store Gateway?

Лишь показывает что вы не представляете как масштабировать Thanos. Зачем тогда упоминать его? Там кстати и шардировать можно.

Расскажите подробнее, как масштабировать Thanos, и сравните сложность масштабирования Thanos с масштабированием VictoriaMetrics. Про шардирование тоже расскажите, не забывая про открытые баги, связанные с шардированием.


Вы видимо не понимаете что именно делает thanos-compact. Компакшн файлов — это лишь малая часть, основная часть — это downsampling. Создаются усреднения для ренджей 5m и 1h, где каждая точка по сути содержит 5 значений (min, max, sum, count, avg) чтобы все функции продолжали работать на усредненных данных корректно. Далее когда вы делаете query за большой диапазон времени (например за месяц, год) thanos-store использует эти посчитанные данные. Т.е. raw данные не используются, даже если они у вас есть за годы назад. И основная отличительная черта Thanos — что можно настроить retention и хранить raw только за последние 2 недели, а 1h — бесконечно, что очень дешево на S3-IA.

Даунсемплинг в Thanos сложно назвать решением, готовым к production — см. открытые баги по даунсемплингу в Thanos.


При этом Thanos так же поддерживает remote-write Т.е. он может так же стоять в центре и получать данные, как и VictoriaMetrics и m3db.

У Thanos receiver есть небольшая проблемка — он не production-read.


Представьте ситуцию когда у вас несколько регионов в AWS. Вы можете в каждом регионе иметь свой prometheus который пишет данные в локальный S3. Вы приходите из центральной графаны за мизерным обьемом тех точек графиков на которые вы смотрите (ответы на PromQL запросы), а основные гигабайты остаются лежать локально. А в случае remote-write вы бы все время передавали эти гигабайты со всех регионов, без разницы смотрит на них кто-либо или нет, и платили за траффик.

Хороший пример. Такую же схему можно реализовать и на основе VictoriaMetrics — данные в каждом регионе записываются в локальный экземпляр VictoriaMetrics, для global querying view используем Promxy поверх всех экземпляров VictoriaMetrics.


https://www.robustperception.io/evaluating-performance-and-correctness
"Prometheus server's compression (which both Cortex and Thanos use) is slightly better by about 10% than VictoriaMetrics and that in addition VictoriaMetrics was not storing all the information that Prometheus does."
"This shows that Prometheus is faster in all cases, by ~2.0-4.4x."

Рекомендую почитать ответ на эту статью — https://medium.com/@valyala/evaluating-performance-and-correctness-victoriametrics-response-e27315627e87 .


Тогда уж стоит упомянуть и другой доклад с PromCon 2019, где говорится о проблемах VictoriaMetrics с ребалансом и потерей данных при rolling-reboot (нет auto-heal)

Не могу найти в этом докладе упоминания про проблемы с потерей данных при rolling update. Кластер VictoriaMetrics поддерживает rolling update всех компонент без потери данных.

Спасибо за хорошие вопросы. Вот ответы на них:


  • Репликации пока нет. Есть только равномерное распределение данных между нодами кластера. Рекомендуется записывать данные параллельно в несколько датацентров. См. инструкцию. Также рекомендуется использовать отказоустойчивые реплицируемые диски вроде GCP persistent disk. Вот тут подробности.
  • VictoriaMetrics поддерживает миграцию исторических данных. См. документацию.
  • Роллапа метрик пока нет. Вот тут пояснения.
  • Для организации записи/чтения в краткосрочное/долгосрочное хранилище можно поднять несколько инстансов ВМ с разными -retentionPeriod, и настроить переливку данных из одного в другое с помощью федерации. В общем случае данные рекомендуется хранить в одном долговременном хранилище — ВМ автоматически оптимизирует доступ к недавно записанным данным — они кэшируются в ОЗУ — в то время, как старые данные доступны с диска.

Если вы собираетесь добавлять тэги в ваши метрики, то советую посмотреть на VictoriaMetrics. Она поддерживает заливку данных по Graphite plaintext протоколу с поддержкой тэгов. Кроме этого, в нее можно записывать данные из Prometheus по remote_write API, из Telegraf'а по Influx line protocol и из OpenTSDB-агентов.

Было бы интересно посмотреть на результаты VictoriaMetrics для ваших данных. Возможно, вам придется отключить кэширование ответов с помощью опции -search.disableCache на время тестирования, т.к. оно не очень дружит с добавлением данных из прошлого aka back-filling. Если ваш тест пишет данные с текущими timestamp'ами, тогда эта опция не нужна.


Также было бы интересно узнать, сколько места занимают данные на диске после окончания записи.


См. сравнение производительности на наборе данных из бенчмарка tsbs — https://medium.com/@valyala/measuring-vertical-scalability-for-time-series-databases-in-google-cloud-92550d78d8ae .

Можете попробовать хранить данные в VictoriaMetrics вместо InfluxDB:



Вот тут можно почитать дополнительный материал по VictoriaMetrics — https://github.com/VictoriaMetrics/VictoriaMetrics/wiki/Articles

Кстати, netdata научилась записывать данные по Prometheus remote write протоколу — github.com/netdata/netdata/issues/5619. Это означает, что netdata может записывать данные в любой remote storage для Prometheus, в т.ч. и VictoriaMetrics. При этом сам Prometheus в данной схеме не нужен.
2

Information

Rating
Does not participate
Registered
Activity