Monit - hlídání HTTP se stavovým kódem 401

Monit - hlídání HTTP se stavovým kódem 401
« kdy: 16. 08. 2015, 17:19:18 »
Nainstaloval jsem si na server Tvheadend na stremovani DVB-T do LAN. Problem je, ze Tvheadend obcas spadne.
Nejsnaze se to pozna ne jeho webovem rozhrannni http://192.168.1.1:9981/ ktrere neni dostupne.

Pokud se pres telnet pripojim na Tvheadend WebUI spravne vrati HTTP/1.1 401 Unauthorized:

Kód: [Vybrat]
$ nc 192.168.1.1 9981
GET / HTTP/1.1

HTTP/1.1 401 Unauthorized
Server: HTS/tvheadend
Cache-Control: no-cache
WWW-Authenticate: Basic realm="tvheadend"
Connection: Keep-Alive
Content-Type: text/html
Content-Length: 193

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>401 Unauthorized</TITLE>
</HEAD><BODY>
<H1>401 Unauthorized</H1>
<P><A HREF="/">Default Login</A></P></BODY></HTML>

$

Na monitoring procesu pouzivam Monit, proto jsem se snazil pridat do nej pravidlo. Nevim co delam spatne, ale nefunguje:
Kód: [Vybrat]
/etc/monit/monit.rc:

# TVheadend
check process tvheadend with pidfile /var/run/tvheadend.pid
        start program "/usr/sbin/service tvheadend start"
        stop program "/usr/sbin/service tvheadend stop"
        if failed host 192.168.1.1 port 9981 protocol http request "/" status=401 then restart

Muze mi nekdo poradit, co delam spatne?
"Kdo v zájmu bezpečí obětuje část své svobody, v konečném důsledku přijde o svobodu i svou bezpečnost."


Re:Monit - hlídání HTTP se stavovým kódem 401
« Odpověď #1 kdy: 31. 08. 2015, 20:19:09 »
jenom strilim od boku
Kód: [Vybrat]
check process tvheadend with path "/usr/bin/curl -o /dev/null --silent --head --write-out '%{http_code}\n' 192.168.1.1:9981"
     start program "/usr/sbin/service tvheadend start"
     stop program "/usr/sbin/service tvheadend stop"
     if status == 401 then restart

Re:Monit - hlídání HTTP se stavovým kódem 401
« Odpověď #2 kdy: 06. 09. 2015, 08:26:59 »
akorat status je mozna dostupny az ve verzi 5.8 nebo tak nejak

Re:Monit - hlídání HTTP se stavovým kódem 401
« Odpověď #3 kdy: 07. 02. 2016, 10:38:24 »
Po dlouhe dobe jsem opet zkousel monitorovat stav http. Pouzivam monit (1:5.9-1+deb8u1) v Debianu Jessie.

Pokud TVheadend bezi, vrati HTTP 302:
Kód: [Vybrat]
/usr/bin/curl -o /dev/null --silent --head --write-out '%{http_code}\n' rpi.lan:9981
302

Pokud nebezi, vrati HTTP 000 (nebo nic):
Kód: [Vybrat]
/usr/bin/curl -o /dev/null --silent --head --write-out '%{http_code}\n' rpi.lan:9981
000

Zkousel jsem:
Kód: [Vybrat]
check host rpi.lan with address rpi.lan
   start program "/usr/bin/ssh pi@rpi.lan /usr/sbin/service tvheadend start"
   stop program "/usr/bin/ssh pi@rpi.lan /usr/sbin/service tvheadend stop"
   if failed
      port 9981
      protocol http
      status != 302
   then restart
Ale vzdy skonci s chybou:
Kód: [Vybrat]
Port Response time: connection failed to rpi.lan:9981 [HTTP via TCP]
Pak jsem zkousel:
Kód: [Vybrat]
check process tvheadend with path "/usr/bin/curl -o /dev/null --silent --head --write-out '%{http_code}\n' rpi.lan:9981"
   start program "/usr/bin/ssh pi@rpi.lan /usr/sbin/service tvheadend start"
   stop program "/usr/bin/ssh pi@rpi.lan /usr/sbin/service tvheadend stop"
   protocol http
   if status != 302 then restart
ale to se monit ani nespusti:
Kód: [Vybrat]
# systemctl status monit.service
● monit.service - LSB: service and resource monitoring daemon
   Loaded: loaded (/etc/init.d/monit)
   Active: failed (Result: exit-code) since Ne 2016-02-07 10:27:14 CET; 7s ago
  Process: 31373 ExecStop=/etc/init.d/monit stop (code=exited, status=0/SUCCESS)
  Process: 28851 ExecReload=/etc/init.d/monit reload (code=exited, status=0/SUCCESS)
  Process: 31377 ExecStart=/etc/init.d/monit start (code=exited, status=1/FAILURE)

úno 07 10:27:14 server monit[31377]: Starting daemon monitor: monit/etc/monit/monitrc:293: syntax error 'protocol'
úno 07 10:27:14 server monit[31377]: failed!

Muzete mi nekdo prosim poradit, jak monitorovat HTTP pozadavek na host:port a overit, ze vrati status 302? V opacnem pripade vykona restart.
"Kdo v zájmu bezpečí obětuje část své svobody, v konečném důsledku přijde o svobodu i svou bezpečnost."

Re:Monit - hlídání HTTP se stavovým kódem 401
« Odpověď #4 kdy: 08. 02. 2016, 11:20:29 »
Citace
check host rpi.lan with address rpi.lan
   start program "/usr/bin/ssh pi@rpi.lan /usr/sbin/service tvheadend start"
   stop program "/usr/bin/ssh pi@rpi.lan /usr/sbin/service tvheadend stop"
   if failed
      port 9981
      protocol http
      status != 302
   then restart

Není to náhodou tak, že máte v konfiguraci zapsat podmínku pro úspěch? Pak byste měl uvést status = 302, nikoli status != 302. To je podle mě jádro pudla, přepište a otestujte.

A samozřejmě je nutné mít dostatečně aktuální verzi monitu, http status umí od v5.8.
« Poslední změna: 08. 02. 2016, 11:22:09 od Ondrej Nemecek »


Re:Monit - hlídání HTTP se stavovým kódem 401
« Odpověď #5 kdy: 08. 02. 2016, 11:59:43 »
Není to náhodou tak, že máte v konfiguraci zapsat podmínku pro úspěch? Pak byste měl uvést status = 302, nikoli status != 302. To je podle mě jádro pudla, přepište a otestujte.
Diky, mate pravdu. Uz to funguje:

Kód: [Vybrat]
check host rpi.lan with address rpi.lan
   start program "/usr/bin/ssh pi@rpi.lan /usr/sbin/service tvheadend start"
   stop program "/usr/bin/ssh pi@rpi.lan /usr/sbin/service tvheadend stop"
   if failed
      port 9981
      protocol http
      status == 302
   then restart
"Kdo v zájmu bezpečí obětuje část své svobody, v konečném důsledku přijde o svobodu i svou bezpečnost."

Kolemjdoucí

Re:Monit - hlídání HTTP se stavovým kódem 401
« Odpověď #6 kdy: 08. 02. 2016, 13:26:37 »
Na čem provozuješ Tvheadend a s kolika DVB-T tunery (PCIe nebo USB)? Dík.

Re:Monit - hlídání HTTP se stavovým kódem 401
« Odpověď #7 kdy: 08. 02. 2016, 13:28:15 »
Na čem provozuješ Tvheadend a s kolika DVB-T tunery (PCIe nebo USB)? Dík.
Raspberri Pi 2. 1x USB DVB-S2.
"Kdo v zájmu bezpečí obětuje část své svobody, v konečném důsledku přijde o svobodu i svou bezpečnost."