Лучший способ получения статистики с нескольких компьютеров в локальной сети

#php #performance #sockets #monitoring #daemon

#php #Производительность #сокеты #мониторинг #демон

Вопрос:

итак, я создаю приложение, которое отслеживает устройства на основе rasp pi в сети. на устройствах запущена программа, которая предоставляет статистический массив о производительности устройств, который нам нужно зарегистрировать, вы можете получить доступ к этому массиву через сокет-соединение с устройством через порт. В настоящее время в сети насчитывается 100 таких устройств, но вскоре их число вырастет до нескольких сотен в одной сети.

В настоящее время приложение подошло к этому, развернув скрипт через ssh2_scp на каждое из устройств, затем приложение просматривает список локальных IP-адресов и использует stream_context_create amp;amp; get_file_contents для проверки файла мониторинга на удаленных устройствах. Файл мониторинга затем получает массив статистики с локального компьютера, а затем $ _ ОТПРАВЛЯЕТ данные обратно в приложение, которое сохраняет их в БД.

На данный момент это не совсем идеально, поскольку для записи im требуется около 1,45 минут, чтобы циклически проверять их IP-адреса (в режиме обмана с использованием счетчика $ i и while для циклического перебора диапазона чисел, а затем получения всех IP-адресов из базы данных, что необходимо будет сделать, когдадобавляются новые IP-адреса и новые местоположения) и извлекают результаты и вставляют их в БД, при этом задание cron настроено на запуск скрипта ping каждые 2 минуты, по мере увеличения количества устройств это приведет к периодическому разрыву в 2 минуты и начнет накапливаться накопление данных. Проблема с этим заключается в том, что на самом деле нет никакого способа проверить, извлекает ли stream get contexts какие-либо данные, или проверить, правильно ли работает это устройство из данных, отправленных обратно отдельно.

Сервер, на котором находится приложение, является огромным зверем, поэтому вычислительная мощность на этой стороне не является проблемой, но на устройствах rasp pi он работает id предпочитает, чтобы он не запускал какой-либо веб-сервер, в лучшем случае, возможно, встроенный веб-сервер php, но id предпочитает, чтобы они не запускали какой-либо веб-сервердля безопасности, а также из-за того, что их основной целью не является веб-сервер.

Я смотрел на запуск служб php daemon из командной строки и задавался вопросом, не лучше ли запускать приложение monitor в качестве служб-демонов для установления сокет-соединений непосредственно с машинами для получения данных взад и вперед. Если бы я пошел по этому пути, как бы я к этому подошел, создал бы я сценарий демона для отслеживаемых устройств, которые прослушивали порт и возвращали через него массив статистики, затем демон приложения мониторинга для установления соединений с каждым устройством и передачи данных?

Любой совет по наилучшему методу / наиболее эффективному способу сделать это высоко оценен

Ответ №1:

вы можете получить доступ к этому массиву через сокет-соединение с устройством через порт.

Я бы просто создал скрипт, который принимал диапазон хостов в качестве параметра, а затем нажал на этот порт с помощью netcat. Скрипт выполняет итерацию по указанным хостам и отправляет результаты в базу данных. Это облегчает любое выполнение на стороне rasp pi. Для масштабируемости просто запустите несколько скриптов, каждый с разными диапазонами устройств одновременно на вашем ужасном сервере.