Hallo zusammen,
ich überwache einen Ubuntu 16.04 live-Server mittels Monit aus den offiziellen Paketquellen. Derzeit 9 Services und 21 Files. Außer Apache sind mittlerweile alle Services unauffällig. Die Apache Überwachung treibt mich aber in den Wahnsinn.
Ich nutze den localhost für kritische Dienste, wie phpmyadmin, postfixadmin, server-status und Monit. Er ist nur per ssh-Tunnel erreichbar, und ausser server-status erfordern alle Dienste eine separate Authentifizierung (Monit 5.16 beherrscht noch kein login via basic auth). Server-status, um den es hier geht, ist über localhost IMMER problemlos abrufbar (im Log: Status 200, und nie 401)
In stochastischen Abständen, mal im Stundentakt, aber auch mal 6 Stunden gar nicht, dann wieder nach 2 Stunden) sendet mir Monit Warnungen per Mail:
Prüfe ich die Logs, so sehe ich nur erfolgreiche Zugriffe von Monit (status 200), aber keinen einzigen 401. Mein Apache wird also sinnlos durch Monit mehrmals am Tag neu gestartet. Heute Morgen hatte ich sogar einen Monit Timeout beim Apache - d.h., die Überwachung für Apache wurde eingestellt. Dieser lief aber anstandslos.
Meine Apache-Monit Konfiguration:
Die Konfiguration von Apache mod_status:
Anmerkung dazu: Anfangs stand dort nur "Require local", was lt. Doku lokale IP4 und IP6 Zugriffe gestatten sollte. Dies führte aber zur doppelten Häufigkeit der False-Positives bei Monit. Monit greift sowohl mit IP6 als auch IP4 (Verhältnis 4:1) auf den server-status zu.
Der relevante Teil der Apache Konfiguration für localhost:
Kann sich jemand dieses Verhalten erklären? Es wird kein einziger 401 im Zusammenhang mit Monit geloggt.
ich überwache einen Ubuntu 16.04 live-Server mittels Monit aus den offiziellen Paketquellen. Derzeit 9 Services und 21 Files. Außer Apache sind mittlerweile alle Services unauffällig. Die Apache Überwachung treibt mich aber in den Wahnsinn.
Ich nutze den localhost für kritische Dienste, wie phpmyadmin, postfixadmin, server-status und Monit. Er ist nur per ssh-Tunnel erreichbar, und ausser server-status erfordern alle Dienste eine separate Authentifizierung (Monit 5.16 beherrscht noch kein login via basic auth). Server-status, um den es hier geht, ist über localhost IMMER problemlos abrufbar (im Log: Status 200, und nie 401)
In stochastischen Abständen, mal im Stundentakt, aber auch mal 6 Stunden gar nicht, dann wieder nach 2 Stunden) sendet mir Monit Warnungen per Mail:
Code:
Description: failed protocol test [HTTP] at [localhost]:80/server-status [TCP/IP] -- HTTP error: Server returned status 401
2 Minuten später dann:
Description: connection succeeded to [localhost]:80/server-status [TCP/IP]
Prüfe ich die Logs, so sehe ich nur erfolgreiche Zugriffe von Monit (status 200), aber keinen einzigen 401. Mein Apache wird also sinnlos durch Monit mehrmals am Tag neu gestartet. Heute Morgen hatte ich sogar einen Monit Timeout beim Apache - d.h., die Überwachung für Apache wurde eingestellt. Dieser lief aber anstandslos.
Meine Apache-Monit Konfiguration:
Code:
check process apache with pidfile /var/run/apache2/apache2.pid
group www
group apache
start program = "/etc/init.d/apache2 start"
stop program = "/etc/init.d/apache2 stop"
if 4 restarts within 20 cycles then timeout
if failed host localhost port 80
protocol apache-status
path "/server-status"
loglimit > 60%
then restart
depend apache_bin
depend apache_rc
check file apache_bin with path /usr/sbin/apache2
group apache
include /etc/monit/templates/rootbin
check file apache_rc with path /etc/init.d/apache2
group apache
include /etc/monit/templates/rootbin
Die Konfiguration von Apache mod_status:
Code:
<IfModule mod_status.c>
# Allow server status reports generated by mod_status,
# with the URL of http://servername/server-status
# Uncomment and change the "192.0.2.0/24" to allow access from other hosts.
<Location /server-status>
SetHandler server-status
<RequireAny>
Require local
Require ip 127.0.0.1
Require ip ::1
</RequireAny>
</Location>
# Keep track of extended status information for each request
ExtendedStatus On
# Determine if mod_status displays the first 63 characters of a request or
# the last 63, assuming the request itself is greater than 63 chars.
# Default: Off
#SeeRequestTail On
<IfModule mod_proxy.c>
# Show Proxy LoadBalancer status in mod_status
ProxyStatus On
</IfModule>
</IfModule>
Anmerkung dazu: Anfangs stand dort nur "Require local", was lt. Doku lokale IP4 und IP6 Zugriffe gestatten sollte. Dies führte aber zur doppelten Häufigkeit der False-Positives bei Monit. Monit greift sowohl mit IP6 als auch IP4 (Verhältnis 4:1) auf den server-status zu.
Der relevante Teil der Apache Konfiguration für localhost:
Code:
<LocationMatch "^/(?i:(?:monit|phpmyadmin|postfixadmin))">
Require all denied
<RequireAll>
Require local
Require valid-user
</RequireAll>
<IfModule mod_authz_core.c>
<IfModule mod_authn_file.c>
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
</IfModule>
</IfModule>
</LocationMatch>
<Directory "/var/www/html/public_html">
Require all denied
<RequireAll>
Require local
Require valid-user
</RequireAll>
<IfModule mod_authz_core.c>
<IfModule mod_authn_file.c>
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
</IfModule>
</IfModule>
DirectoryIndex index.html index.php
</Directory>
Kann sich jemand dieses Verhalten erklären? Es wird kein einziger 401 im Zusammenhang mit Monit geloggt.