Простой мониторинг веб-сервера (живой)

8

Любой совет о программном обеспечении для мониторинга, если веб-сервер работает и работает на Linux? Он должен быть в состоянии работать, не зная ничего, кроме URL. И он должен иметь функцию отправки оповещения по электронной почте, когда сайт закрывается. Не должно быть сложно написать сценарий для этого сам, но кажется бессмысленным, если там уже есть что-то хорошее.

Обратите внимание, что я собираюсь контролировать внутренние серверы, поэтому это должен быть инструмент, который работает на моем компьютере в той же сети, а не внешние веб-службы.

И обратите внимание, что небольшие и простые решения являются предпочтительными.

Обновление : в конце концов я создал небольшой скрипт на python, который сейчас использую для этого, его можно найти здесь .

Zitrax
источник
См. Также: serverfault.com/questions/44/… - эта тема широко освещалась на высоком уровне.
Уорнер

Ответы:

12

Вы можете использовать wget в таком скрипте

wget --timeout=3 --tries=1 --spider --no-check-certificate http://serverfault.com

if [ $? -ne 0 ];then
  echo "Site Down" | mail -s "Site Down" admin@yourdomain.com
fi

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

Установите задание cron для запуска скрипта каждые несколько минут.

Есть много других альтернатив, но это, вероятно, самый простой для установки с нуля.

Ричард Холлоуэй
источник
7
до тех пор, пока вы не запускаете его на сервере, который отслеживает его - вы не представляете, как часто я видел, как это делается ;-)
Герайнт Джонс
Спасибо. Кроме того, я обнаружил, что --spider также является полезной опцией, поскольку позволяет избежать фактического сохранения страницы на диск.
Цитракс
2
И без установки 'postfix' команда mail просто молча не может отправить.
Цитракс
3
@Zitrax: И без установки wget вы получите ошибку. Если сеть не работает, wget потерпит неудачу. Без выполнения скрипта задание cron не будет выполнено и так далее. Также у меня не установлен 'postfix', и он отлично работает для меня, потому что я использую exim.
Ричард Холлоуэй
1
Почему то --no-check-certificate? Получение предупреждений о нарушении развертывания TLS также является ценной информацией.
Авамандер
7

У вас есть много вариантов, я дам вам два.

  • Nagios - это полноценное приложение для мониторинга, способное контролировать намного больше, чем http, но оно также справляется с этим. Он также может создавать всевозможные отчеты («Скажите мне процент времени безотказной работы нашего сервера / службы X на этой неделе / ​​месяц / год ...»)

  • Монит это еще один популярный выбор. Может быть, не так полно, как Nagios, но, тем не менее, это приятно.

Янне Пиккарайнен
источник
Я искал что-то маленькое и простое, поэтому monit кажется ближе к этому.
Цитракс
1

Хорошо, если вы хотите что-то запустить самостоятельно.

Вот некоторые варианты:

Или, если вы хотите управляемое решение:

Лично я думаю, что Zabbix и Zenoss излишни, если вы просто хотите следить за состоянием веб-сервера. Но если вы также планируете контролировать что-то еще, у них больше возможностей, чем вам когда-либо понадобится;)

Wolph
источник
Я предполагаю, что pingdom и uptrends не могут отслеживать сайты в моей внутренней сети.
Цитракс
@Zitrax: нет, они не могут. Я перечитал эту часть.
Вольф
1

Я проголосовал за ответ Ричарда и Джанна, но если вы хотите получить более подробную информацию о том, что ваш веб-сервер отправляет и получает, первые пара глав книги О'Рейли "Программирование веб-клиента на Perl" Клинтона Вонга дает отличный обзор протокола HTTP. Если вы хотите более подробный мониторинг, чем просто вверх / вниз и хотите включить коды ответов и т. Д., То это хорошее место для начала.

Книга старая, но все еще в силе. О'Рейли, опубликованный в 1997 году, бесплатно разместил содержание книги в Интернете по адресу http://oreilly.com/openbook/webclient/ в рамках своей инициативы OpenBook.

gWaldo
источник
0

Я бы проголосовал за ответ Янне, если бы у меня был представитель.

Важное замечание о Nagios, тот факт, что он полноценный, не означает, что это сложная и долгая установка, он довольно прост и удобен.

Во-вторых, вы должны действительно проверить, что может предложить ваш поставщик оборудования. Например, я использую HP Proliants, и у них действительно хорошие обороты, которые помогают.

bangolio
источник
0

Если вам нравится то, что делает Nagios, но вы не хотите вникать во внутренности, вы также можете проверить Opsview . Это Nagios и пара других инструментов, но реализованные через приятный графический интерфейс. Это довольно хорошая отправная точка.

SystemParadox
источник
0

Я согласен, что Nagios - отличное программное обеспечение, но если вам нужна бесплатная программа, я бы посоветовал вам взглянуть на AppPerfect Agentless Monitor . Мониторинг сервера Linux с помощью AppPerfect чрезвычайно легок и добавляет незначительные издержки целевой системе во время мониторинга. С помощью этого инструмента вы можете отслеживать всю важную статистику, связанную с процессором, диском, сетью и памятью. Установка очень проста, а программа очень проста в использовании. Четкая документация и учебное пособие также доступны здесь для мониторинга сервера Linux

Стив Янг
источник
0

Одно из решений, которое я использовал, - консул HashiCorp .

Это, конечно, больше, чем простой скрипт с выводом электронной почты, но настроить вид мониторинга, о котором вы говорите, все еще очень легко (несколько строк YAML или JSON).

Скорее всего, вы создадите шаблон, но мониторинг одного сервера может быть выполнен следующим образом:

{
  "service": {
    "name": "web", 
    "tags": ["production"], 
    "port": 80,
    "check": {
      "id": "front-end",
      "name": "HTTP front-end for web service",
      "http": "http://web.domain.tld",
      "interval": "10s",
      "timeout": "1s"
    }
  }
}

Одна из причин, по которой это можно сделать, заключается в том, что он позволяет вам выйти за рамки мониторинга «просто» веб-интерфейса, если вы хотите, а также позволяет группировать проверки по службам (например, ваша report_serverслужба может иметь проверку для веб-интерфейса). конец, один для веб-серверной части и один для основной БД, все из которых будут обеспечивать оповещения, связанные с этой одной службой).

iwaseatenbyagrue
источник