Назад | Перейти на главную страницу

Инструмент мониторинга с настраиваемыми представлениями / шаблонами?

В настоящее время я ищу решение для мониторинга с открытым исходным кодом, такое как zabbix и icinga. Хотя оба они кажутся очень мощными для мониторинга общего состояния аппаратного и программного обеспечения, мне не хватает информации - для меня - важных функций, или я не мог понять, как это может работать, просто читая их документацию.

Я хотел бы интегрировать некоторую очередь заданий в такой инструмент мониторинга. С одной стороны, мне нужно знать сводную информацию об очереди, такую ​​как общая доступность и т. Д., Которую не составит труда интегрировать с одним из этих инструментов. С другой стороны, хотелось бы получить дополнительную подробную информацию о том, что происходит в очередях.

Я хотел бы разработать плагин, который мог бы возвращать произвольное количество подробных данных - например, информацию о каждом задании, хранящемся в очереди, - которые я мог бы заполнить в настраиваемом представлении / шаблоне, который я мог бы легко интегрировать в один из этих мониторинга инструменты.

Возможно ли это с помощью zabbix, icinga или любого другого решения для мониторинга с открытым исходным кодом?

Вы думали о Nagios? Это позволяет писать плагины (на любом языке) и, как правило, легко интегрировать их в структуру мониторинга. Фактически, вполне возможно, что когда все пользователи будут запускать Nagios, может появиться плагин, который сделает то, что вы хотите.

Чтобы сохранить более конкретную информацию о задании или конкретном содержимом в очереди, вы можете подумать о создании некоторых простых сценариев Web CGI с использованием агента сбора Nagios для получения необходимых данных с сервера.

Поскольку Nagios работает под управлением Apache, это может быть возможным подходом.

Поскольку вы добавили nagios tag, я привожу вам пример с ним и NRPE.

Во-первых, напишите свой собственный плагин на любимом языке. Запомните коды возврата:

0 - OK
1 - WARNING
2 - CRITICAL
3 - UNKNOWN

Вот фрагмент сценария оболочки для отслеживания длины списка в Redis:

#!/bin/sh

help()
{
    echo "Usage: $0 <host> <port> <key> -w <warning> -c <critical>"
}

case "$1" in
    --help)
        help
        exit
        ;;
esac

if [ $# -eq 0 ]; then
    help
    exit 3
fi
if [ $# -ne "7" ]; then
    help
    exit 4
fi
if [ $4 !="-w" -o $6 !="-c" ]; then
    help
    exit 5
fi

REDIS_CLI="/usr/local/bin/redis-cli"
LLEN=`echo "$3" | $REDIS_CLI -h $1 -p $2 llen`
if [ $LLEN -lt $5 ]; then
    echo "$3.llen:$2 OK - $LLEN | $3.llen:$2=$LLEN;$5;$7"
    exit 0
elif [ $LLEN -ge $5 -a $LLEN -lt $7 ]; then
    echo "$3.llen:$2 WARNING - $LLEN | $3.llen:$2=$LLEN;$5;$7"
    exit 1
elif [ $LLEN -ge "$7" ]; then
    echo "$3.llen:$2 CRITICAL - $LLEN | $3.llen:$2=$LLEN;$5;$7"
    exit 2
fi

Во-вторых, определите команду в /etc/nagios/nrpe.cfg, что-то вроде этого:

command[check_queue]=/usr/lib64/nagios/plugins/check_queue.sh <host> <port> \
    <queue_name> -w <warning_threshold> -c <critical_threshold>

И в-третьих, на сервере Nagios этот плагин можно вызывать с помощью:

define service{
    use                     generic-service
    host_name               <remote_server>
    service_description     <queue_name>
    check_command           check_nrpe!check_queue
    contact_groups          admin-sms
}