Один из моих читателей спросил меня, как можно по-быстрому настроить мониторинг прокси-сервера. Первый запрос в Google “squid zabbix” ведет на страницу Monitoring a Squid web cache/proxyx, но у нас стоит задача настроить простой мониторинг в духе “работает/не работает”, а это решение уж слишком детальное. Итак, под катом инструкция по быстрой и простой настройке мониторинга прокси-сервера, на примере Squid.
Мониторить мы будем по-простому – а именно, каждые 30 секунд будем обращаться через прокси-сервер на какой-либо ресурс. Для себя я выбрал http://www.google.ru/. Если ресурс не отвечает в течение 5 секунд, значит доступ до него потерян, и нужно что-то делать, например звонить провайдеру, тестить DNS и т.п.
Сначала напишем скрипт, который проводит подобную проверку, а затем прикрутим его в систему мониторинга Zabbix. Вот текст скрипта, назовем его proxy.sh:
#!/bin/sh PROXY=127.0.0.1:3128 TIMEOUT=5 http_query() { /usr/local/bin/curl -#SI -m $TIMEOUT -x $PROXY $1 | head -n1 } output() { OUT=`http_query $1 2>&1` echo $OUT | sed -e 's/ 0,0% //g' } output http://www.google.ru/
Параметры здесь не особо замысловатые: PROXY – это адрес и порт вашего прокси-сервера. В нашем случае скрипт будет запускаться на самом прокси-сервере, так что адрес локальный (127.0.0.1), порт стандартный (3128). TIMEOUT – допустимая задержка ответа ресурса (в секундах). Если время ответа превышает TIMEOUT секунд, значит ресурс недоступен.
При нормальном функционировании прокси-сервера должен вернуться ответ HTTP/1.0 200 OK. В других случаях возможны варианты, например при неполадках на стороне провайдера я часто могу встретить ответ curl: (28) Operation timed out after 5020 milliseconds with 0 bytes received.
Также можно потестировать этот скрипт, поигравшись с последней его строчкой. Просто подставьте следующие варианты и посмотрите на вывод скрипта.
#output http://google.ru/ # 301 #output http://www.google.ru/nonexistent # 404 #output http://nonexistent-host/ # 503 #output http://10.0.0.1/ # operation time out #PROXY=127.0.0.1:3138 && output http://www.google.ru # couldn't connect to host
Теперь, убедившись, что наш скрипт действительно показывает работоспособность прокси-сервера, настало время прикрутить его к мониторингу. Копируем скрипт в каталог /usr/local/etc/zabbix. Дальше все очень просто – создаем в нашем шаблоне или хосте новый Item, приводим его к следующему виду. Для самых ленивых – поле Key содержит текст:
system.run[/usr/local/etc/zabbix/proxy.sh]
И создаем на этот Item связанный Trigger. Тут поле Expression имеет следующее значение:
{Template_Gateway:system.run[/usr/local/etc/zabbix/proxy.sh].regexp(HTTP/1.0 200 OK)}#1
Вот и все! В случае проблем с прокси-сервером вы получите предупреждение “Check Squid process and internet connection!”, которое придет вам в веб-интерфейс, на почту, Jabber или по SMS.
Как в этот скрипт можно добавить данные авторизации на прокси?
Попробуйте ключ –proxy-user USERNAME:PASSWORD
proxy-user: not found
Поясню немного: Авторизация на прокси керберос(Ldap)
Вот так заработало
/usr/bin/curl -#SI -m $TIMEOUT -x $PROXY –proxy-user User:Password $1 | head -n1