Комментарии 5
Следующая проблема, которую вам нужно будет решить - наполнение ValueCache.
ClickHouse очень латентен при выполнении запросов.
И будет проблема - старт будет еще хуже, чем у ванильного заббикса.
В разы хуже. Если айтемов хотя бы 1-2млн, то стагнация на час или больше.
Как только пойдут первые данные, начнут считаться триггеры, триггерам нужны еще данные, а их в кеше нет, и в итоге все процессы history_syncer будут ожидать медленных ответов клика, так как он их будет наполнять по одному айтему.
Поточностью тоже не решить - очень быстро, примерно на 40-70 спрашивающих потоках на ноду Клика, суммарная скорость ответов только деградирует
Дальше есть три варианта действий:
Заранее наполнить весь ValueCache сделав на старте один массовый запрос. Недостаток - неизвестно заранее, сколько метрик с какой глубиной нужно в кеше, и вообще, нужна ли метрика в кеше. В заббиксе в ValueCache хранятся только те метрики, которые в триггерах и в calculated значениях использовались.
Иногда сохранять ValueCache, чтобы обеспечить холодный запуск. Идея рабочая, нам здорово помогает
Сделать watchdog в момент записи истории: в случае, если сервер тратит слишком много времени на ожидание чтения - не читать такие данные, возвращать ошибку. Это самый простой и действенный способ - требуется буквально 4ре строчки в реализации истории, получаете мнгновенный страт. С таким решением сервер в первые 20 минут работы при такой реализации пропускает через себя примерно на 2 порядка (в 100-200раз!) больше данных и считает триггеров, чем если бы он не пропускал операции чтения из кеша.
Можно получить полный код реализации?
Интегрируем Clickhouse в Zabbix