2015-05-26 4 views
3

В демонстрации консула есть проверки на использование диска и использование памяти. enter image description hereConsul - Alert, если диск заполнен

http://demo.consul.io/ui/#/ams2/nodes/ams2-server-1

Как вы могли бы написать конфигурацию, чтобы сделать то, что демо-шоу? Предупреждение при 10% и критических эрах на 5%?

Вот что я пытаюсь

{ 
    "check": { 
    "name": "Disk Util", 
    "script": "disk_util=$(df -k | grep '/dev/sda1' | awk '{print $5}' | sed 's/[^0-9]*//g') | if [ $disk_util > 90 ] ; then echo 'Disk /dev/sda above 90% full' && exit 1; elif [ $disk_util > 80 ] ; then echo 'Disk /dev/sda above 80%' && exit 3; else exit 0; fi", 
    "interval": "2m" 
    } 
} 

Вот тот же сценарий, но более читаемым человеком

disk_util=$(df -k | grep '/dev/sda1' | awk '{print $5}' | sed 's/[^0-9]*//g') | 
if [ $disk_util > 90 ] 
then echo 'Disk /dev/sda above 90% full' && exit 1 
elif [ $disk_util > 80 ] 
then echo 'Disk /dev/sda above 80%' && exit 3 
else exit 0; fi 

Похоже, что проверка работает, но он не печатает из любой текст. Как я могу проверить, что это работает, и распечатать вывод?

enter image description here

+0

Я пытаюсь выяснить случаи использования для консула, сам. Глядя на то, что другие делают с ним за пределами простого обнаружения сервисов, или как сделать сервисное открытие более надежным. Интересно, почему ваш вопрос только что был опущен? Возможно, потому что это вопрос, который лучше подходит для ServerFault? Независимо от того, я тоже хотел бы знать 1) если это действительный подход и 2) почему вывод не показан. Хммм. –

+0

Это скорее работает, если вы вызываете скрипт оболочки из файловой системы вместо того, чтобы пытаться инкапсулировать все это внутри структуры проверки «JSON». Потому что команды 'exit' работают лучше. Постскриптум Новый URL-адрес: https://demo.consul.io/ui/#/ams2/nodes/consul-server-ams2-1 – MarkHu

ответ

7
  1. Вывод, который вы видите, производится Nagios плагин check_disk (https://www.monitoring-plugins.org/doc/man/check_disk.html)
  2. поле «Output» получает населенной стандартный вывод проверки. Ваша проверка выполняется чисто и не производит никакого вывода. Так что вы ничего не видите.
  3. Чтобы добавить некоторые заметки просто добавить поле «примечания» в определении проверки, как указано в документации: https://www.consul.io/docs/agent/checks.html

Ваш чек файл JSON будет выглядеть примерно так:

{ 
    "check": { 
    "name": "disks", 
    "notes": "Critical 5%, warning 10% free", 
    "script": "/path/to/check_disk -w 10% -c 5%", 
    "interval": "2m" 
    } 
} 
0

проверки здоровья полагаться на код выхода чека. Чтобы проверить, проверены ли проверки работоспособности сервером Consul, вы можете написать сценарий, который всегда выходит с 1, а затем вы увидите проверку работоспособности как потерпевшего неудачу. Затем замените его скриптом, который всегда возвращает 0, и вы должны увидеть проверку работоспособности, как это было принято.

Если вы хотите вернуть текст в ui, добавьте поле output в json.

1

Выход кода для вашего состояния предупреждения должно быть 1, для критического, 2 или выше. (См. «Проверка скриптов» на https://www.consul.io/docs/agent/checks.html), поэтому вы, вероятно, захотите обменять ваши линии выхода.

Ваше состояние «ОК» (использование диска < 80%) не дает никакого выхода, что, скорее всего, означает, что вы видите пустой вывод.

Во-вторых, понятие использования плагинов nagios, а не сворачивание собственных. У многих ОС есть пакет nagios-plugins (ы), которые устанавливаются yum/apt.

0

Похоже, консул проанализирует stdout и не stderr. Я проверил с перенаправлением (2>&1) в конфигурации файла проверки обслуживания. Это похоже на работу!

JSON конфигурация

{ 
    "check": { 
    "name": "disks", 
    "notes": "Critical 5%, warning 10% free", 
    "script": "/path/to/check_disk -w 10% -c 5% 2>&1", 
    "interval": "2m" 
    } 
} 

Выходного результат

enter image description here