Fórum Root.cz

Hlavní témata => Server => Téma založeno: tuxmartin 16. 08. 2015, 17:19:18

Název: Monit - hlídání HTTP se stavovým kódem 401
Přispěvatel: tuxmartin 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?
Název: Re:Monit - hlídání HTTP se stavovým kódem 401
Přispěvatel: davidb 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
Název: Re:Monit - hlídání HTTP se stavovým kódem 401
Přispěvatel: davidb 06. 09. 2015, 08:26:59
akorat status je mozna dostupny az ve verzi 5.8 nebo tak nejak
Název: Re:Monit - hlídání HTTP se stavovým kódem 401
Přispěvatel: tuxmartin 07. 02. 2016, 10:38:24
Po dlouhe dobe jsem opet zkousel monitorovat stav http. Pouzivam monit (1:5.9-1+deb8u1) (https://packages.debian.org/jessie/monit) 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.
Název: Re:Monit - hlídání HTTP se stavovým kódem 401
Přispěvatel: Ondrej Nemecek 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.
Název: Re:Monit - hlídání HTTP se stavovým kódem 401
Přispěvatel: tuxmartin 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
Název: Re:Monit - hlídání HTTP se stavovým kódem 401
Přispěvatel: Kolemjdoucí 08. 02. 2016, 13:26:37
Na čem provozuješ Tvheadend a s kolika DVB-T tunery (PCIe nebo USB)? Dík.
Název: Re:Monit - hlídání HTTP se stavovým kódem 401
Přispěvatel: tuxmartin 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 (http://www.amazon.de/gp/product/B00C0PV4LW).