Мониторинг Squid в Zabbix


Один из моих читателей спросил меня, как можно по-быстрому настроить мониторинг прокси-сервера. Первый запрос в 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]

Настройка элемента данных Squid в Zabbix

И создаем на этот Item связанный Trigger. Тут поле Expression имеет следующее значение:

{Template_Gateway:system.run[/usr/local/etc/zabbix/proxy.sh].regexp(HTTP/1.0 200 OK)}#1

Настройка триггера Squid в Zabbix

Вот и все! В случае проблем с прокси-сервером вы получите предупреждение “Check Squid process and internet connection!”, которое придет вам в веб-интерфейс, на почту, Jabber или по SMS.

Похожие статьи

4 thoughts on “Мониторинг Squid в Zabbix”

  1. Как в этот скрипт можно добавить данные авторизации на прокси?

  2. proxy-user: not found

    Поясню немного: Авторизация на прокси керберос(Ldap)

  3. Вот так заработало
    /usr/bin/curl -#SI -m $TIMEOUT -x $PROXY –proxy-user User:Password $1 | head -n1

Leave a Reply

Your email address will not be published. Required fields are marked *