2016-06-27 7 views
1

Итак, у меня есть проверка консула, которая следит за контейнером и предназначена для критического при остановке контейнера. Я хочу создать чат-консул, который будет запускать скрипт после того, как проверка станет критической, или после нескольких критических ответов (например, если мой чек отправляет 5 критических ответов, я хочу, чтобы он запускал скрипт).Часы Consul с кривыми проверками консула

Вот мой JSON рабочей проверки и мое предположение относительно того, что я мои часы могли бы выглядеть следующим образом:

{ 

// this check works 
"checks": [ 
    { 
     "id": "docker_stuff", 
     "name": "curl test", 
     "notes": "curls the docker container", 
     "script": "/scripts/docker.py", 
     "interval": "1s" 
    } 
], 

//this watch doesn't work 
"watches": [ 
    { 
     "Node": "client2", 
     "CheckID": "docker-stuff", 
     "Name": "docker-stuff-watch", 
     "Status": "critical", 
     "Status_amt": "5", 
     "handler": "/scripts/new-docker.sh", 
     "Output": "container relaunched", 
    } 
] 

} 

Что мне нужно изменить в часы, чтобы он работал?

Могу ли я также использовать событие consul для просмотра моей проверки работоспособности, а затем запускать консульские часы (типа события), которые запускают мой сценарий /scripts/new-docker.sh? Если да, то как я могу сделать событие консула, которое следит за моей проверкой работоспособности? Например, если это была моя проверка консула, часы и события, что мне нужно изменить, чтобы заставить это работать?

{ 
"checks": [ 
    { 
     "id": "docker_stuff", 
     "name": "curl test", 
     "notes": "curls the docker container", 
     "script": "/scripts/docker.py", 
     "interval": "1s" 
    } 
], 
"watches": [ 
    {  
     "type": "event", 
     "name": "docker-stuff-watch", 
     "handler": "/scripts/new-docker.sh" 
    } 
], 
"events": [ 
    { 
     "Node": "client2", 
     "CheckID": "docker-stuff", 
     "Name": "docker-stuff-event", 
     "Status": "critical", 
     "Status_amt": "5", 
     "Output": "container relaunched", 
    } 
] 
} 

ответ

0

Я бы порекомендовал рассмотреть возможность обновления до следующей версии Docker 1.12 (релиз кандидата на данный момент). Новая концепция услуг может использоваться для указания желаемого количества контейнеров, которые будут запущены.

Там также новый HEALTHCHECK директива в Dockerfile, что позволяет связать контрольный скрипт с контейнерными изображениями.

Эти новые функции могут позволить вам заменить функциональность, которую вы должны были использовать с помощью консула.

1

Что нужно изменить в моих часах, чтобы заставить его работать?

Есть ошибки? Убедитесь, что ваш обработчик часов /scripts/new-docker.sh потребляет STDIN, который будет отправлять Консул, даже если он отбрасывает его/dev/null, в противном случае процесс будет ждать навсегда для его потребления.

Нечто вроде

while read -r -t 0; do read -r; done 

 Смежные вопросы

  • Нет связанных вопросов^_^