Fórum Root.cz
Hlavní témata => Server => Téma založeno: 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:
$ 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:
/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?
-
jenom strilim od boku
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
-
akorat status je mozna dostupny az ve verzi 5.8 nebo tak nejak
-
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:
/usr/bin/curl -o /dev/null --silent --head --write-out '%{http_code}\n' rpi.lan:9981
302
Pokud nebezi, vrati HTTP 000 (nebo nic):
/usr/bin/curl -o /dev/null --silent --head --write-out '%{http_code}\n' rpi.lan:9981
000
Zkousel jsem:
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:
Port Response time: connection failed to rpi.lan:9981 [HTTP via TCP]
Pak jsem zkousel:
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:
# 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.
-
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.
-
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:
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
-
Na čem provozuješ Tvheadend a s kolika DVB-T tunery (PCIe nebo USB)? Dík.
-
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).