2015-10-06 3 views
0

Я пытаюсь настроить сторожевой таймер на coreos. Служба - это что-то вроде этого.Почему сторожевой пса не пинает?

[Unit] 
Description=Watchdog example service 

[Service] 
Type=notify 
Environment=NOTIFY_SOCKET=/run/%p.sock 
Environment=WATCHDOG_USEC=1000000 
ExecStartPre=-/usr/bin/docker kill %p 
ExecStartPre=-/usr/bin/docker rm %p 
ExecStart=/usr/libexec/sdnotify-proxy /run/%p.sock /usr/bin/docker run \ 
    --env=NOTIFY_SOCKET=/run/%p.sock \ 
    -v /run:/run \ 
    --name %p pranav93/test_watchdogged python hello.py 
ExecStop=/usr/bin/docker stop %p 

WatchdogSec=1 

[Install] 
WantedBy=multi-user.target 

Питон файл hello.py что-то вроде,

print 'Hello, in hello.py' 
print 'ready sending' 
x = sd_notifyd({'READY':1}) 
print str(x) 
print 'watchdog sending' 
x = sd_notifyd({'WATCHDOG':1}) 
print str(x) 
print os.environ.get('WATCHDOG_USEC', None) 
print 'lol, wait now for sometime' 
import time 
for i in range(3): 
    print i 
    time.sleep(1) 
print 'finished' 

хотя я не шлю не WATCHDOG=1 пинги sysd, это все еще не остановлен ею и служба не сдвинулся это не удалось "состояние. В чем причина этого? журналы

Oct 06 09:33:19 core-01 systemd[1]: Starting Watchdog example service... 
Oct 06 09:33:19 core-01 docker[2779]: watchdogged 
Oct 06 09:33:19 core-01 docker[2790]: watchdogged 
Oct 06 09:33:19 core-01 sdnotify-proxy[2800]: True 
Oct 06 09:33:22 core-01 sdnotify-proxy[2800]: ready sending 
Oct 06 09:33:22 core-01 sdnotify-proxy[2800]: <socket._socketobject object at 0x7fa3cc3c2440> 
Oct 06 09:33:22 core-01 sdnotify-proxy[2800]: 1 
Oct 06 09:33:22 core-01 sdnotify-proxy[2800]: watchdog sending 
Oct 06 09:33:22 core-01 sdnotify-proxy[2800]: <socket._socketobject object at 0x7fa3cc3c2440> 
Oct 06 09:33:22 core-01 sdnotify-proxy[2800]: 1 
Oct 06 09:33:22 core-01 sdnotify-proxy[2800]: None 
Oct 06 09:33:22 core-01 sdnotify-proxy[2800]: lol, wait now for someyime 
Oct 06 09:33:22 core-01 sdnotify-proxy[2800]: 0 
Oct 06 09:33:22 core-01 sdnotify-proxy[2800]: 1 
Oct 06 09:33:22 core-01 sdnotify-proxy[2800]: 2 
Oct 06 09:33:22 core-01 sdnotify-proxy[2800]: finished 
Oct 06 09:33:22 core-01 docker[2851]: watchdogged 
Oct 06 09:33:22 core-01 systemd[1]: Started Watchdog example service. 

ответ

1

я заметил несколько вещей. Во-первых, линия Started Watchdog example service. на 3 секунды позже, после выхода программы, указывая, что READY=1 не был получен. Мониторинг Watchdog запускается только после того, как устройство было «запущено».

Кроме того, попробуйте выполнить регистрацию с использованием print >>os.stderr, так как вывод в stdout буферизируется и трудно видеть время.

Вы не должны

Environment=NOTIFY_SOCKET=/run/%p.sock 
Environment=WATCHDOG_USEC=1000000 

как они устанавливаются Systemd. Вы должны передать сокет прокси через --env а также WATCHDOG_USEC, как он будет «потерян» иначе:

ExecStart=/usr/libexec/sdnotify-proxy /run/%p.sock /usr/bin/docker run \ 
--env=NOTIFY_SOCKET=/run/%p.sock --env=WATCHDOG_USEC=1000000 
+0

Кроме того, вы не должны даже нужно пройти в NOTIFY_SOCKET и WATCHDOG_USEC - Systemd должны установить эти переменные окружения для вас, когда у вас установлен WatchdogSec. –

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