Как лучше организовать сбор телеметрических данных с рабочих станций?
Здравствуйте!
Преамбула: в академических целях пишу приложение для учета заявок по обслуживанию, ремонту и т.п. парка оргтехники, также прикрутил инвентаризацию со складом. В качестве фреймворка выбрал фласк (хотя это не особо важно).
Хочу организовать сбор данных телеметрии с рабочих мест (Утилизация ЦП, температуры и т.п.).
Как это вижу я: на клиенте стоит небольшое приложение, данные получает с помощью Dll из LibreHardwareMinitor, передает их по команде с сервера через веб-сокет в Json формате, сервер периодически опрашивает всех и записывает полученное в БД.
Сам вопрос: подскажите, пожалуйста, в какую сторону смотреть - асинхронность, многопроцессность или многопоточность, может, пример какой-нибудь (не сочтите за наглость).
Зачем тут websocket'ы? Зачем асинхронность, многопроцессность или многопоточность? В описанном вами сценарии клиенты могут просто дёргать обычный синхронный web-сервис при изменении данных.
В мониторинге есть 2 способа: pull (Prometheus), push (influxdb). В первом случае каждая контролируемая станция выдает метрики через маленькую HTTP службу, которые собирает сервер мониторинга. Во втором, клиент на станции сам инициирует соединение с сервером мониторинга и передает метрики.
У обоих способов есть преимущества и недостатки.