Каков наилучший и эффективный способ отслеживания работоспособности веб-сервера Apache?

Признаюсь, я не вполне понимаю ваши намерения. Тем не менее, у меня может быть решение.

Во-первых, "Dec", "Jan",... обычно восходят к заголовку системного журнала тогда и только тогда, когда это традиционный системный журнал RFC3164. В более новых системах такой индикации нет. Кроме того, многие системы нарушают стандарт системного журнала, и вы также можете не найти эти строки внутри сообщения.

Если предположить, что они присутствуют, а также предположить, что они находятся в заголовке системного журнала :, тогда они НЕ являются частью $msg или $fromhost. Чтобы сделать это гладко и легко, вы можете просто проверить $rawmsg, который является сообщением, которое было замечено в сети. Это в неразобранной форме, и это худший способ справиться с такими вещами, но хорошо, что он работает без полного понимания теории.

Так что можно сказать:

$template mynets,"/scratch/network/%HOSTNAME%/messages.log"
if $rawmsg contains 'Dec ' then -?mynets
& stop

Обратите внимание, что я добавил по крайней мере пробел после «Dec», потому что в противном случае он будет соответствовать всему, что содержит эту строку (, например. «Десятичный» ).

Вероятно, это работает, но зависит от ряда вещей, которые вы не должны принимать как должное. Гораздо лучший способ, например. чтобы проверить, отличается ли IP-адрес $fromhost -от локального хоста. Или, что еще лучше, создать специальный набор правил для удаленных журналов. Но это не относится к первоначальным вопросам, так что давайте опустим это.

0
07.02.2021, 13:03
2 ответа

Зная, что сервер работает. Недостаточно знать, что он выполняет свою службу. Поэтому забудьте проверить, что процесс запущен. Вместо этого посмотрите, сможете ли вы заставить его работать.

Т.е. Запросите веб-страницу с него.

4
18.03.2021, 22:32

Это зависит от того, какой уровень вы хотите знать.

Чтобы действительно проверить, работает ли это, используйте

if curl --output /dev/null --silent --head --fail "$url"; then
  echo yes
else
  echo no
fi

Если вас не интересуют определенные страницы, вы можете просто:

if curl -s url ; then 
    echo jes
else 
    echo no
fi

Если вы хотите знать, что apache прослушивает порт,

sudo lsof -i -P -n | grep LISTEN

дает вам эту информацию.

Если вы хотите узнать, запущен ли процесс,

if ps -aux | grep 'http[d]' ; then
    echo yes
else 
    echo no
fi

должно помочь.

2
18.03.2021, 22:32

Теги

Похожие вопросы