{"id":363,"date":"2013-06-07T04:05:42","date_gmt":"2013-06-07T04:05:42","guid":{"rendered":"https:\/\/fossworld.dk\/?p=363"},"modified":"2013-06-07T04:45:40","modified_gmt":"2013-06-07T04:45:40","slug":"hold-daemonerne-i-live","status":"publish","type":"post","link":"https:\/\/fossworld.dk\/?p=363","title":{"rendered":"Hold d\u00e6monerne i live &#8230;"},"content":{"rendered":"<p>Hvis du selv hoster fusker med din egen server eller har ansvaret for en server eller tre, s\u00e5 kender du det sikkert godt. Du har vendt ryggen til serveren bare et \u00f8jeblik eller en uge og pludselig opdager du at webserveren, DBMS&#8217;et eller m\u00e5ske en tredje d\u00e6mon er blevet lagt ned &#8211; AAARRRGGHH<\/p>\n<p>Den eneste m\u00e5de at holde et v\u00e5gent \u00f8je med ens tjenenede \u00e5nder er simpelthen ved at overv\u00e5gninge dem. Overv\u00e5gning er regelm\u00e6ssig observation og registrering af aktiviteter. I dette tilf\u00e6lde i forbindelse med de processer der udbyder de tjenester, som man \u00f8nsker at udbyde fra serveren.<\/p>\n<p>Netop til dette, findes der flere mulige l\u00f8sninger, der kr\u00e6ver en varierende grad af ops\u00e6tning og dermed indgreb i serveren. Den l\u00f8sning, der kr\u00e6ver det mindste indgreb i den eksisterende konfiguration er monit, som jeg her dv\u00e6ler ved i et et kort sekund.<\/p>\n<p>Monit er en overv\u00e5gningsd\u00e6mon, der kan holde \u00f8je med processer, programmer, filers tidsstempler, tjeksum st\u00f8rrelse, biblioteker, enheder og ikke mindst andre servere. Her kan kan udf\u00f8re TCP\/IP og protokol tjeks, endda via SSL.<\/p>\n<p>Hvis der pludselig er en d\u00e6mon der er v\u00e6k p\u00e5 en springtur, s\u00f8rger monit for at sende en advarsel og\/eller udf\u00f8re en predefineret handling. Det kunne for eksempel v\u00e6re at starte en ny instans af d\u00e6monen, hvis det er muligt.<\/p>\n<p>For at g\u00f8re det. hele en tand mere festligt er en HTTP(S) gr\u00e6nseflade tilg\u00e6ngeligt, der ikke bare g\u00f8r det nemmere og hurtigt at overskue et st\u00f8rre antal overv\u00e5gede processer. Det g\u00f8r det muligt at udf\u00f8re et par basale administrative opgaver.<\/p>\n<p>Herunder ses hovedsiden p\u00e5 gr\u00e6nsefladen. \u00d8verst er hovedstatistikkerne p\u00e5 serveren selv og, derunder de tjenester\/d\u00e6moner, som Monit er sat til at holde \u00f8je med. I dette tilf\u00e6lde er det postserver, webserver, DNS server, DBMS, Samba og Monit selv.<br \/>\nMonit Service Manager, Hovedside<\/p>\n<figure id=\"attachment_365\" aria-describedby=\"caption-attachment-365\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/fossworld.dk\/wp-content\/uploads\/2013\/06\/monit1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-365\" alt=\"Monit hovedside\" src=\"https:\/\/fossworld.dk\/wp-content\/uploads\/2013\/06\/monit1-300x133.png\" width=\"300\" height=\"133\" srcset=\"https:\/\/fossworld.dk\/wp-content\/uploads\/2013\/06\/monit1-300x133.png 300w, https:\/\/fossworld.dk\/wp-content\/uploads\/2013\/06\/monit1-1024x454.png 1024w, https:\/\/fossworld.dk\/wp-content\/uploads\/2013\/06\/monit1.png 1182w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-365\" class=\"wp-caption-text\">Monit hovedside<\/figcaption><\/figure>\n<p>N\u00e6ste levende billede af en d\u00f8d gris, er process status for Apache2.<br \/>\nMonit Service Manager, process status for Apache2<\/p>\n<figure id=\"attachment_366\" aria-describedby=\"caption-attachment-366\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/fossworld.dk\/wp-content\/uploads\/2013\/06\/monit3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-366\" alt=\"Monit Apache2 underside\" src=\"https:\/\/fossworld.dk\/wp-content\/uploads\/2013\/06\/monit3-300x222.png\" width=\"300\" height=\"222\" srcset=\"https:\/\/fossworld.dk\/wp-content\/uploads\/2013\/06\/monit3-300x222.png 300w, https:\/\/fossworld.dk\/wp-content\/uploads\/2013\/06\/monit3-1024x759.png 1024w, https:\/\/fossworld.dk\/wp-content\/uploads\/2013\/06\/monit3.png 1153w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-366\" class=\"wp-caption-text\">Monit Apache2 underside<\/figcaption><\/figure>\n<p>For at kunne benytte Monits webbaserede brugergr\u00e6nseflade, hvilket absolut er anbefalelsv\u00e6rdigt. Er det et krav at der allerede er installeret en webserver. For at installere Apache2 webserveren :<\/p>\n<p><code>sudo zypper in apache2<\/code><\/p>\n<p>For at starte Apache webserveren :<\/p>\n<p><code>sudo \/etc\/init.d\/apache2 start<\/code><\/p>\n<p>For at installere Monit i egen h\u00f8je person :<\/p>\n<p><code>sudo zypper in monit monit-doc<\/code><\/p>\n<p>Konfigurationen er meget enkelt bygget op :<\/p>\n<p>IF THEN ACTION<\/p>\n<p>Hvis er sandt, vin del efterf\u00f8lgende handling blive udf\u00f8rt.<\/p>\n<p>\u25cf alert : Send en alarm besked til brugeren.<br \/>\n\u25cf restart : Genstart tjenesten (stop og start) og send en alarmbesked.<br \/>\n\u25cf start : Start tjenesten og send en alarmbesked.<br \/>\n\u25cf stop : Stop tjenesten, send en alarmbesked og afbryd fremtidig overv\u00e5gning. Overv\u00e5gningen kan kun genaktiveres manuelt, enten via kommandolinien eller webgr\u00e6nsefladen.<br \/>\n\u25cf exec : K\u00f8r et arbitr\u00e6rt program og send en alarmbesked.<br \/>\n\u25cf unmonitor : Afslut overv\u00e5gning af tjeneste og send en alarmbesked. Overv\u00e5gningen kan kun genaktiveres manuelt, enten via kommandolinien eller webgr\u00e6nsefladen.<\/p>\n<p>Udfra disse simple byggesten, er det muligt at s\u00e6tte et rimeligt fyldestg\u00f8rende overv\u00e5gningssystem op.<\/p>\n<p>Den prim\u00e6re kontrolfil findes som standard i &#8220;\/etc\/monitrc&#8221;. Da monit underst\u00f8tter brugen af flere kontrolfiler, kan de anbefales at dele det ud s\u00e5ledes at den prim\u00e6re kontrolfil indeholder de globale indstillinger og hver ops\u00e6tningen af til hver enkelte tjeneste der \u00f8nskes overv\u00e5get, placeres i hver deres egen lille fil.<\/p>\n<p>Dette g\u00f8res via en include s\u00e6tning i den prim\u00e6re kontrolfil, og ses i sidste linie i nedenst\u00e5ende. I mit eget tilf\u00e6lde har jeg oprettet et underbibliotek til &#8220;etc&#8221;, ved navn &#8220;monit.d&#8221;, hvor alle kontrolfilerne til tjenesterne er smidt.<\/p>\n<p><code>#################################################<br \/>\n## Monit main control file<br \/>\n#################################################<br \/>\nset daemon 120 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 #Polling interval 120s<br \/>\nset logfile syslog facility log_daemon \u00a0 \u00a0 #Sl\u00e5 logging til.<br \/>\nset alert postmaster@domain.geek \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 #Send alarmbeskeder hertil<br \/>\nset idfile \/var\/run\/monit\/.monit.id<br \/>\nset statefile \/var\/run\/monit\/monit.state<br \/>\nset mailserver smtp.domain.geek \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0#Brug denne SMTP<br \/>\nset httpd port 2812 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0#Brug denne port til webgr\u00e6nsefladen<br \/>\nuse address 192.168.1.30 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 #Brug denne eksterne adresse p\u00e5 LAN<br \/>\nallow 192.168.1.40 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 #Tillad for denne adresse at tilg\u00e5 webbrugergr\u00e6nsefladen<br \/>\nallow admin: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 #Login og kodeord til webbrugergr\u00e6nsefladen<br \/>\nset eventqueue<br \/>\nbasedir \/srv\/monit\/events \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0#Hvis alarmbeskeder ikke kan afsendes, brug denne lokale folder<br \/>\nslots 100<br \/>\nset mail-format { \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0#Definer formatet p\u00e5 alarmbeskeden der postes elektronisk<br \/>\nfrom: monit@domain.geek<br \/>\nsubject: monit alert -- $EVENT $SERVICE<br \/>\nmessage: $EVENT Service $SERVICE<br \/>\nDato: $DATE<br \/>\nHandling: $ACTION<br \/>\nV\u00e6rt: $HOST<br \/>\nBeskrivelse: $DESCRIPTION<br \/>\n}<br \/>\ninclude \/etc\/monit.d\/* \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 #Inkluder konfig filer i denne folder<br \/>\n######################################################<\/code><\/p>\n<p>Nogle gange g\u00e5r apache amok og spawner en masse tr\u00e5de, om det er p\u00e5 eget initativ eller den bare reagerer p\u00e5 en ekstern indblanding, giver samme resultat. Derfor tjekkes antal tr\u00e5de der s\u00e6ttes i vandet af apache. Er der mere end 50 genstartes webtjenesten. Hvis tjenesten yderligere er blevet genstartet tre gange i l\u00f8bet af de sidste fem tjeks, tager vi en lille pause i overv\u00e5gningen.<\/p>\n<p><code>######################################################<br \/>\n# Monit control file for Apache2<br \/>\n######################################################<br \/>\ncheck process Apache<br \/>\nwith pidfile \/var\/run\/httpd2.pid \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0#Tjek Apache, der benytter denne<br \/>\n#process ID fil.<br \/>\nstart program \"\/etc\/init.d\/apache2 start\" \u00a0 #S\u00e5dan startes Apache.<br \/>\nstop program = \"\/etc\/init.d\/apache2 stop\" \u00a0 #S\u00e5dan stoppes Apache.<br \/>\nif children &gt; 100 then restart \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0#Hvis Apache opretter mere end 100<br \/>\n#b\u00f8rn s\u00e5 genstart.<br \/>\nif 3 restarts within 5 cycles then timeout \u00a0#Er Apache er blevet genstartet tre<br \/>\n#gange indenfor fem\u00a0Monit cyklusser<br \/>\n#s\u00e5 tag en slapper<br \/>\n######################################################<\/code><\/p>\n<p>Jeg har tidligere, flere gange, v\u00e6ret udsat for at MySQL er g\u00e5et i udu, uden dog processen er blevet afsluttet. Efter skiftet til MariaDB sidste \u00e5r, har det dog ikke v\u00e6ret det store problem. Frygten for det skal ske igen er dog blivende og derfor bliver der ogs\u00e5 tjekket om der er liv i port 3306. Ligeledes hvis tjenesten er blevet genstartet hver gang, i forbindelse med de sidste fem tjeks tager vi lige en timeout med denne tjeneste, f\u00f8r n\u00e6ste gang.<\/p>\n<p><code><br \/>\n######################################################<br \/>\n# Monit control file for MariaDB (MySQL)<br \/>\n######################################################<br \/>\ncheck process MariaDB<br \/>\nwith pidfile \/var\/run\/mysql\/mysqld.pid<br \/>\ngroup mysql<br \/>\nstart program \"\/etc\/init.d\/mysql start\"<br \/>\nstop program = \"\/etc\/init.d\/mysql stop\"<br \/>\nif failed host 127.0.0.1 port 3306 then restart #Er port 3306 inaktiv genstart<br \/>\nif 5 restarts within 5 cycles then timeout<br \/>\n######################################################<\/code><\/p>\n<p>N\u00e5r man s\u00e5 har fumlet sig frem til en konfiguration, kan det v\u00e6re smart lige at teste den af :<\/p>\n<p><code>$ sudo monit -t<br \/>\nUsage: \/etc\/init.d\/monit {start|stop|status|restart|try-restart|reload|force-reload|poll}<\/code><\/p>\n<p>Det sparer en for at lade en eventuelt produktions instans af monit indl\u00e6se en defekt konfiguration.<\/p>\n<p>Hvis output ligner ovenst\u00e5ende er Monit nu klar til at blive startet op:<\/p>\n<p><code>sudo \/etc\/init.d\/monit start<\/code><\/p>\n<p>Web brugergr\u00e6nsefladen kan tilg\u00e5s via :\u00a0<code>http:\/\/&lt;server&gt;:2812<\/code><\/p>\n<p>Henvisninger:<\/p>\n<ul>\n<li><a href=\"http:\/\/mmonit.com\/monit\/\">Monit.com<\/a><\/li>\n<li><a href=\"http:\/\/mmonit.com\/monit\/documentation\/monit.pdf\">Monit dokumentation i PDF format<\/a><\/li>\n<li><a href=\"http:\/\/mmonit.com\/monit\/documentation\/monit.html\">Monit dokumentation i HTML format<\/a><\/li>\n<li><a href=\"http:\/\/www.keepalived.org\/\">keepalived.org<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Hvis du selv hoster fusker med din egen server eller har ansvaret for en server eller tre, s\u00e5 kender du det sikkert godt. Du har vendt ryggen til serveren bare et \u00f8jeblik eller en uge og pludselig opdager du at webserveren, DBMS&#8217;et eller m\u00e5ske en tredje d\u00e6mon er blevet lagt ned &#8211; AAARRRGGHH Den eneste m\u00e5de at holde et v\u00e5gent&hellip; <a href=\"https:\/\/fossworld.dk\/?p=363\">More &rarr;<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[27,131],"tags":[132],"class_list":["post-363","post","type-post","status-publish","format-standard","hentry","category-opensuse","category-server-vejledning","tag-monit"],"_links":{"self":[{"href":"https:\/\/fossworld.dk\/index.php?rest_route=\/wp\/v2\/posts\/363","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fossworld.dk\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fossworld.dk\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fossworld.dk\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/fossworld.dk\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=363"}],"version-history":[{"count":18,"href":"https:\/\/fossworld.dk\/index.php?rest_route=\/wp\/v2\/posts\/363\/revisions"}],"predecessor-version":[{"id":380,"href":"https:\/\/fossworld.dk\/index.php?rest_route=\/wp\/v2\/posts\/363\/revisions\/380"}],"wp:attachment":[{"href":"https:\/\/fossworld.dk\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=363"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fossworld.dk\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=363"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fossworld.dk\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=363"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}