Tag: linux
apache2 “Negotiation: discovered file(s) matching request: None could be negotiated”
neulich… beim umzug einer fotogalerie auf einem anderen webserver kam neben der entsprechenden fehlermeldung im browser (file not found) diese fehlermeldung im error.log:
AH00687: Negotiation: discovered file(s) matching request: /var/www/htdocs/domain.tld/index (None could be negotiated)., referer: http://domain.tld/
nach etwas googlen war mir klar, dass das mit der option “MultiViews” zusammenhaengt.
die apache webseite weiss dazu:
The effect of MultiViews is as follows: if the server receives a request for /some/dir/foo, if /some/dir has MultiViews enabled, and /some/dir/foo does not exist, then the server reads the directory looking for files named foo.*, and effectively fakes up a type map which names all those files, assigning them the same media types and content-encodings it would have if the client had asked for one of them by name. It then chooses the best match to the client’s requirements.
heisst also… beim aufruf von “http://domain.tld/index” schaut der webserver, ob er eine datei “index” mit einer irgendeiner dateiendung findet. er haette eigentlich in diesem falle die vorhanden index.php finden und nehmen sollen…. hat er aber nicht. grund dafuer war, dass der webserver nicht wusste, was er mit der dateianedung “php” anfangen soll.
bei einem debian stretch wird der umgang mit den mimetypes mit dem apache modul “mime” geregelt. am anfang der datei /etc/apache2/mods-available/mime.conf steht geschrieben:
TypesConfig points to the file containing the list of mappings from
filename extension to MIME-type.
#
TypesConfig /etc/mime.types
also husch in der /etc/mime.types geschaut und gesehen, dass diese zeile auskommentiert ist:
# application/x-httpd-php phtml pht php
kommentarzeichen davor weg, speichern, apache neu starten und gut.
NMI watchdog bug soft lockup – CPU#1 stuck for 23s!
eine meiner auf kvm basierten virtuellen maschinen auf basis ubuntu (16.04) mit virtio netzwerkkarte und openvpn hat unter belastung immer wieder diese meldungen geschmissen:
mit dem ergebnis, dass die cpu last ganz oben hing und die vm nicht mehr nutzbar war. ursache war der virtio treiber fuer die netzwerkkarte. (oder eher die kombination kernel und virtio nic.) nachdem ich das in proxmox auf eine e1000 umgestellt habe, flutscht das nur noch so. die cpu last ist zwar geringfuegig mehr, aber dafuer schmiert die kiste nicht mehr ab.
IPMI sensor thresholds anpassen
eines meiner supermicro motherboards mit integriertem IPMI onboard moser seit wochen rum, dass die BIOS batterie leer sein sollte. ist sie nicht… ich hab sie schon zweimal getauscht und mich mit einem messgeraet von dem zustand der batterie (CR2032 knopfzelle) ueberzeugt. das bekloppte IPMI ding schickte mir zwischen einer handvoll und einhundert emails am tag, dass da was nicht stimmt. mit onkel google habe ich nichts vernuenftiges gefunden, was die ursache sein koennte. diverse resets aller art, initialisieren des ipmi moduls und ruecksetzen auf werkseinstellung hat nichts gebracht. das problem, welches da auftritt, ist eine quasi schwankende batteriespannung. und jedesmal, wenn ein gewisser grenzwert uunterschritten wird, gibts einen alarm.
normalerweise haben diese batterien um die 3,2 volt. dieses board misst aber immer irgendwas zwischen 2,1 und 3,2 volt. da sonst keine maengel feststellbar sind, habe ich kurzerhand die grenzwerte fuer die batterie (sensor VBAT) angepasst. damit ichs nicht wieder lange suchen muss, hier einfach mal verewigt. das tool der wahl heisst “ipmitool”. so werden die werte gesetzt:
root@node:~# ipmitool sensor thresh "VBAT" lnr "1.992"
Locating sensor record 'VBAT'...
Setting sensor "VBAT" Lower Non-Recoverable threshold to 1.992
root@node:~# ipmitool sensor thresh "VBAT" lcr "2.016"
Locating sensor record 'VBAT'...
Setting sensor "VBAT" Lower Critical threshold to 2.016
root@node:~# ipmitool sensor thresh "VBAT" lnc "2.016"
Locating sensor record 'VBAT'...
Setting sensor "VBAT" Lower Non-Critical threshold to 2.016
und so schaut man sich die eingestellten und gemessenen werte an:
root@node:~# ipmitool sensor get "VBAT"
Locating sensor record...
Sensor ID : VBAT (0x50)
Entity ID : 7.1 (System Board)
Sensor Type (Threshold) : Voltage (0x02)
Sensor Reading : 2.640 (+/- 0) Volts
Status : ok
Nominal Reading : 3.312
Normal Minimum : 2.976
Normal Maximum : 3.648
Upper non-recoverable : 3.696
Upper critical : 3.672
Upper non-critical : 3.648
Lower non-recoverable : 1.992
Lower critical : 2.016
Lower non-critical : 2.016
Positive Hysteresis : 0.024
Negative Hysteresis : 0.024
Minimum sensor range : Unspecified
Maximum sensor range : Unspecified
Event Message Control : Per-threshold
Readable Thresholds : lnr lcr lnc unc ucr unr
Settable Thresholds : lnr lcr lnc unc ucr unr
Threshold Read Mask : lnr lcr lnc unc ucr unr
Assertion Events :
Assertions Enabled : lnc- lcr- lnr- unc+ ucr+ unr+
Deassertions Enabled : lnc- lcr- lnr- unc+ ucr+ unr+
APC AP7920 + ssh: no matching key exchange method found
“professionelles” euqipment fuer betrieb in rechenzentren ist ja auch eine art IoT. und genauso schlecht wie bei billigen plaste gadgets ist auch die software darauf. (naja ok, vielleicht nicht ganz so schlecht und der fokus liegt auch auf nuetzlichen features als auf design, aber wenn so ein geraet ssh kann, sollte man auch bei einer firmware von 2016 eine vernuenftige ssh implementierung erwarten.)
auf jeden fall gehts hier um eine PDU von APC mit der modelnummer AP7920. da meckert mein ubuntu beim versuch mich damit ueber ssh zu verbinden:
no matching key exchange method found. Their offer: diffie-hellman-group1-sha1
…dann muss man dem ssh client halt sagen:
ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 1.2.3.4
..damit das funktioniert
linux mint: /boot partition full vs. remove old kernels
auf all meinen rechnern mit mint drauf habe irgendwann das problem, dass die /boot partition voll laeuft. so nen richtigen kniff zum dauerhaften beheben habe ich noch nicht gefunden. aber dieser “einzeiler” hilft schonmal dabei:
dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge
hier gefunden.
ubuntu aufm laptop
im warhsten sinne des wortes
ceph basic monitoring
damits ueberhaupt mal irgendwie gemonitored wird, habe ich die ceph-nagios-plugins von github installiert.
damit die nagios plugins als user nagios ausgefuehrt werden duerfen, erstellt man einen extra keyring:
ceph auth get-or-create client.nagios mon 'allow r' > /etc/ceph/ceph.client.nagios.keyring
die check_ceph_* plugins kommen in meinem falle (weil opsview statt plain nagios) nach /usr/local/nagios/libexec/
die einzelnen commands muessen dem opsview agent bekannt gemacht werden, in dem man (exemplarisch) folgendes in die datei /usr/local/nagios/etc/nrpe_local/override.cfg schreibt:
command[check_ceph_health]=/usr/local/nagios/libexec/check_ceph_health $ARG1$
ansonsten kommts zu diesem fehler:
NRPE: Command ‘check_ceph_health’ not defined
und damit der user nagios auch darauf zugreifen darf, muss der keyring mit berechtigungen und entsprechendem besitzer versehen werden.
chmod 660 /etc/ceph/ceph.client.nagios.keyring
chown ceph.ceph /etc/ceph/ceph.client.nagios.keyring
den user nagios noch in die gruppe ceph aufnehmen:
usermod -a -G ceph nagios
eine besonderheit noch, da ich ceph von der proxmox installation verwende. die ceph.conf unterhalb von /etc/pve darf nur vom user root und der gruppe www-data gelesen werden. daher nehme ich den user nagios noch in die www-data gruppe auf.
usermod -a -G www-data nagios
ansonsten kommts zu so einem fehler:
Error initializing cluster client: PermissionDeniedError(‘error calling conf_read_file’,)
und damits greift, noch einmal den opsvie agent neu starten.
/etc/init.d/opsview-agent restart
und funktioniert… hier die beispiel benachrichtigungen:
fehlende authorization header mit mod_fcgid
na bis ich das gerafft hab, warum diese werte nicht beim php skript ankamen…
die loesung gefunden in den kommentaren der hilfe zu php und http-auth
Workaround for missing Authorization header under CGI/FastCGI Apache:
SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0
Now PHP should automatically declare $_SERVER[PHP_AUTH_*] variables if the client sends the Authorization header.
…ab damit in die .htaccess und schon hats funktioniert
update:
ein sehr interessanter artikel zu php und http auth auf administrator.de.
mdadm: array incative
nach der neuinstallation eines “fremden” rootservers war das software raid1 nicht so ganz in takt.
~# cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md0 : inactive sda3[0](S)
8388544 blocks
md0 ist inaktiv und das device als spare (S) gekennzeichnet. warum? keine ahnung. wie kriegt mans weg? so:
mdadm --run /dev/md0
mdadm --add /dev/md0 /dev/sdb3
und schon faengts an zu syncen…
~# cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdb3[2] sda3[0]
4194240 blocks [2/1] [U_]
[=>...................] recovery = 9.3% (393344/4194240) finish=0.3min speed=196672K/sec