Каков наилучший способ непрерывного мониторинга веб-сервера (HTTP) и загрузки новых добавленных файлов с минимальной задержкой (в идеале < 1 мин.)?
решение1
Мониторинг
Прежде всего, для мониторинга я рекомендую вам использоватьНагиос, исходный код ядра бесплатный, но если вам нужен графический интерфейс, вам придется за него заплатить, но это того стоит.
Вы также можете использоватьИсинга,ПРТГ, или что вам больше подходит.
Collectd (Collection Daemon) также является бесплатным инструментом мониторинга, который вы можете загрузить, используя yum
на производных RHEL или apt-get
на Debian. Вы можете прочитатьЭта бумагаесли вы хотите использовать Collectd.
Задача выполняется каждые x < 1 минуты
Что касается второй части вашего вопроса, для выполнения задания каждые x раз, где x составляет менее минуты, периодически, как вы знаете, вы не можете использовать Cronjobs, поскольку вы можете использовать некоторые приемы, описанныеЖиль в этом вопроседелать то, что хочешь.
Лучше иметь скрипт для того, что вам нужно, и запускать его вечно, даже при загрузке, если вам это нужно. Вы можете иметь простой синтаксис, как показано ниже:
while true; do yourJob; sleep someTime; done
Или вы можете использовать более сложные сценарии в зависимости от того, что вам нужно.
Вы также можете использовать watch
команду. Например:
watch -n1 command
Он будет управлять вами command
каждую секунду и вечно.
Как вы могли догадаться, вы также можете запустить свой скрипт оболочки с помощью , watch
если вам нужен простой скрипт, запускаемый каждые x раз менее чем за минуту, а не сложный.
Выбор ваш.
решение2
Это зависит от нескольких факторов.
Если у вас есть контроль над веб-сервером, проще всего установить (RESTful?) службу, предоставляющую количество файлов, измененных с момента последней проверки или загрузки. Это минимизирует как передачу данных, так и нагрузку как на клиента, так и на сервер. Еще лучше, если загрузку/изменение файлов на сервере можно отслеживать напрямую, например, в скрипте загрузки, а не полагаться на файловую систему.
В последнем случае я бы рассмотрел какое-нибудь решение для мониторинга файлов, например famd
.
Если у вас нет контроля над сервером, то вам придется получить модификации, прежде чем вы сможете их загрузить. Самый простой способ — использовать некоторыевеб-зеркалированиеутилиты, такие как w3mir, поскольку они уже заботятся о проверке/предоставлении заголовков ETag и Last-Modified / If-Modified-Since. Это означает, что вам придется делать меньше вызовов, и, следовательно, вы сможете запускать утилиту чаще.
Относительнокакдля запуска утилиты, это зависит от того, где она запущена. Вы можете использовать задание cron на машине Unix или просто запустить его в цикле.
Однако, если вы сделаете первый вариант, вам будет полезно установить какой-нибудь семафор, чтобы предотвратить запуск процесса зеркалирования до завершения предыдущего экземпляра. Это может быть так просто, как создать файл блокировки:
if [ -r /tmp/mirror.lock ]; then
echo "lock file found" | logger -t webmirror
exit 0
fi
touch /tmp/mirror.lock
...whatever...
rm /tmp/mirror.lock
Но вам также придется реагировать на catch
любые сигналы, которые могут завершить ваш скрипт, в противном случае в случае временной ошибки файл блокировки может остаться там и помешать запуску всех последующих экземпляров даже после устранения ошибки.
Или вы можете убедиться, что файл блокировки не старше некоторого разумного срока, и удалить его, если это так, или проверить, сколько экземпляров скрипта обнаружено ps
(обычно один, текущий; если больше, текущий лучше прервать), и вообще обойтись без файла блокировки.
решение3
Вы можете выполнить простую curl
команду в задании cron, но я рекомендую вам начать использовать решение для мониторинга с возможностями веб-мониторинга. Их много бесплатно, просто загуглите "Open Source web monitoring solutions" и вы получите их много!
решение4
Как сказал FarazX, существует несколько решений для мониторинга, таких как Nagios,Пандора ФМС,... Но, возможно, эти инструменты слишком велики для ваших целей. Возможно,Uptimerobotвам этого достаточно.
Ознакомьтесь с предложениями и выберите лучшее для себя, но помните, что решение для мониторинга с большим количеством опций дает вам больше возможностей для вашей среды.