Прометей конечной точки организации и управления - PullRequest
0 голосов
/ 06 апреля 2019

Моя задача - настроить мониторинг с помощью Prometheus.Идея следующая: каждый раз, когда Prometheus выполняет очистку с конечной точки (то есть делает запрос GET), на веб-сервере (сейчас это просто Tornado ) запускается соответствующий обработчик (скрипт Python), который выполняет работуи возвращает метрики, которые собирает Прометей.

Кажется, все в порядке, но проблема в том, что я использую Tornado из-за асинхронности, и это вызывает проблемы (ошибки, трудно обрабатывать исключения и т. д.), плюс тамне так много библиотек, которые хорошо работают с asyncio, поэтому чаще мои помощники не работают асинхронно, они просто запускают код в потоках.

Итак, что я хочу.Я хочу настроить свой веб-сервер для управления запросами Prometheus не асинхронно, а с использованием чего-то вроде многопроцессорной обработки.Я представляю каждый запрос от Прометея как отдельное соединение от пользователя, и я хочу обрабатывать его отдельно от чужих соединений (в идеале - в отдельном процессе интерпретатора).Я предполагаю, что это может быть достигнуто с помощью набора веб-сервера (nginx), сервера приложений Python (uWSGI) и веб-фреймворка (Flask, или другого).Как это выглядит:

  1. Прометей делает GET-запрос, скажем http://localhost/something_i_watch/metrics
  2. nginx направляет его на соответствующую конечную точку
  3. сервер приложений и веб-фреймворк выполняют работу и возвращаютметрики

Преимущество: каждый запрос обрабатывается отдельно (он разделяет процесс интерпретатора Python), у нас много возможностей для масштабирования, быстрые запросы не ждут медленных, код Python является синхронным.

Это хорошая идея для меня или может быть лучше?Может я что-то упустил?Извините за беспорядок, если он там и спасибо за ваши предложения.

1 Ответ

0 голосов
/ 08 апреля 2019

Найдите хороший ответ здесь (uWSGI, nginx)

...