Speicherauslastung bei Linux anzeigen

Januar 30th, 2012

Wenn man wissen möchte wie die aktuelle Speicherauslastung beim Linuxserver ist geht das mit dem Befehl free.

Mit free -m bekommt man die Speicherauslastung in Megabytes angezeigt.

free -m
total used free shared buffers cached
Mem: 32190 18075 14114 0 555 10262
-/+ buffers/cache: 7258 24931
Swap: 2055 0 2055

Noch genauer geht es mit: cat /proc/meminfo

MemTotal: 32963080 kB
MemFree: 14452368 kB
Buffers: 568320 kB
Cached: 10508380 kB
SwapCached: 0 kB
Active: 16103772 kB
Inactive: 1688932 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 32963080 kB
LowFree: 14452368 kB
SwapTotal: 2104504 kB
SwapFree: 2104504 kB
Dirty: 2332 kB
Writeback: 0 kB
AnonPages: 6712432 kB
Mapped: 103044 kB
Slab: 642800 kB
CommitLimit: 18586044 kB
Committed_AS: 17277248 kB
PageTables: 30844 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 275848 kB
VmallocChunk: 34359462451 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
Hugepagesize: 2048 kB

Herausfinden welcher Port von welcher Applikation verwendet wird.

Januar 27th, 2012

Wenn man herausfinden möchte welches Programm welchen Port verwendet, kann man das mit folgendem Kommando machen:

netstat -ntpl

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:49152 0.0.0.0:* LISTEN 3202/upnpd
tcp 0 0 0.0.0.0:6881 0.0.0.0:* LISTEN 24683/btd
tcp 0 0 0.0.0.0:548 0.0.0.0:* LISTEN 22129/afpd
tcp 0 0 0.0.0.0:3493 0.0.0.0:* LISTEN 7314/upsd
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 23805/rsyncd
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 8411/mysqld
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 22409/smbd
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2477/apache
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 3335/_thttpd_
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 22136/proftpd: (acc
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7871/sshd
tcp 0 0 0.0.0.0:631 0.0.0.0:* LISTEN 3498/cupsd
tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN 21254/(squid)
tcp 0 0 0.0.0.0:8090 0.0.0.0:* LISTEN 3977/stunnel
tcp 0 0 192.168.178.104:8091 0.0.0.0:* LISTEN 23299/privoxy
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 3977/stunnel
tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 22409/smbd

auf der Qnap NAS sollte man nicht das mitgelieferte netstat von der Busybox verwenden sondern das Paket net-tools nachinstallieren.

ipkg install net-tools

Nach der Installation ruft man das dann folgendermaßen auf:

/opt/bin/netstat -ntpl

Apache auf Qnap als Reverseproxy benutzen.

Januar 26th, 2012

Wenn man zuhause nicht jeden einzelnen Rechner direkt ins Haifischbecken (Internet) zu hängen möchte oder einfach nur mehrere Server über den selben Port ansprechen möchte, kann man das mit dem Apachen sehr einfach realisieren.
Da die Qnap (z.B. die Qnap TS-112) relativ billig erworben werden kann, eignet sie sich sehr gut für diesen Zweck.
Zuerst sollte der Apache Webserver auf der Qnap aktiviert werden. Das kann man im Menu "Network Services" beim Unterpunkt "Web Server" erledigt werden.
Der "horchende" Port ist eigentlich egal, da letztendlich nur der Port zählt der beim Router nach draußen freigegeben wird.
Port 80 ist hier eine gute Wahl. Für SSL geht natürlich auch der Port 443.
Für die Reverseproxyfunktion benutzen wir mod_proxy. Die Module binden wir in der Apachekonfiguration ein.

vi /etc/config/apache/apache.conf

Dort suchen wir die Zeile LoadModule php5_module modules/libphp5.so und fügen darunter folgende Zeilen ein:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so

Dann editieren wir einen vorhandenen vHost oder erstellen einen neuen in folgender Datei:

/etc/config/apache/extra/httpd-vhosts.conf
oder
/etc/config/apache/extra/httpd-vhosts-user.conf

Beide Dateien werden beim Neustart des Apachen geladen.

Ein vHost sieht dann folgendermaßen aus:

<VirtualHost *:80>
ServerName {Servername/Domainname}
DocumentRoot "/share/Qweb/{Webverzeichnis}"
ProxyRequests Off
ErrorLog "/share/Qweb/{Logfileverzeichnis}/error_log"
CustomLog "/share/Qweb/{Logfileverzeichnis}/access_log" custom

<Proxy *>
Order deny,allow
Deny from .ru .ir .it
Allow from .de .com .org .us .net
</Proxy>

ProxyPass / http://{ZielserverIP}/
ProxyPassReverse / http://{ZielserverIP}/
ProxyPass /favicon.ico !

</VirtualHost>

 

Danach restarten wir den Webserver:

/etc/init.d/Qthttpd.sh restart

 

Sofern nichts schiefgegangen ist sollte der vHost jetzt von außen erreichbar sein.
Zur Not kann man den vHost auch simulieren indem man ihn in die lokale hosts Datei einträgt.

Werte der php.ini im Script überschreiben.

Januar 25th, 2012

In letzter Zeit hatte ich bei meiner Installation des DAM (Digital Asset Management) PHP Resource Space
folgende Fehlermeldung beim Versuch ganze Verzeichnisse zu importieren:
Fatal error: Allowed memory size of 134217728 bytes exhausted

Der Fehler trat auf wenn ich das Script /pages/tools/staticsync.php ausführte.

Ich erzeugte also eine neue Datei irgendwas.php mit folgendem Inhalt:

<?php
phpinfo();
?>

Hiermit wollte ich herausfinden welche php.ini angesprochen wird wenn ich das Script direkt über die Konsole ausführe.
Dummerweise stand dort ein Memory_Limit von 128MB obwohl ich in der angesprochenen php.ini den Wert 256M eingetragen hatte.

Also fügte ich dem Script /pages/tools/staticsync.php folgende Zeile am Anfang hinzu:

<?php ini_set("memory_limit","256M"); ?>

Durch diesen Wert wird nun das Memory_Limit der php.ini für dieses Script überschrieben.

Diese Vorgehensweise sollte auch für andere Werte funktionieren.

Timelapse mit Sony Nex 5 und Pclix XT

Januar 9th, 2012

Nachdem ich schon den ersten Versuch einer Timelapse mit der Sony Nex 5 gepostet habe, möchte ich nun noch eine "richtige" Timelapseaufnahme mit der Sony Nex 5 nachschieben.

Dieses mal habe ich mit dem Timelapsomat Pclix XT einige hundert Einzelaufnahmen erstellt.
Diese hab ich dann mit dem Programm Photolapse zusammengefügt.

Den Zoomeffekt hab ich mit FinalCut erzeugt.

Auf Super-hd.com findet ihr noch weitere Timelapse- und Stopmotionaufnahmen welche mit der Sony Alpha Nex 5 und dem Pclix XT gemacht wurden.

Konfiguration bei Nagios checken

Dezember 7th, 2011

Normalerweise ist Nagios beim Restart nicht besonders gesprächig was Fehler in der Konfiguration angeht.

Mit folgender Zeile erfährt man detaillierter was mit der Konfiguration nicht stimmt:
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

einfaches Performancelog basierend auf vmstat oder top

November 8th, 2011

Wenn man mal kurzfristig über einen mittellangen Zeitraum das Verhalten von Speicher und CPU in ein Logfile packen möchte, kann man das folgendermaßen bewerkstelligen:

Zunächst mal pastet man folgende Zeile in die Konsole:

/usr/bin/vmstat | /usr/bin/sed "s/^/$(date) | /" > /var/log/perflog.log

Damit erzeugt man die ersten Zeilen des Logfiles. Das macht es im Nachhinein einfacher das Logfile auszuwerten.

Anschließend erzeugt man einen Eintrag im Crontab:
* * * * * /usr/bin/vmstat | /usr/bin/awk 'NR == 3' | /usr/bin/sed "s/^/$(date) | /" >> /var/log/perflog.log

Das bewirkt, daß jede Minute eine neue Zeile in das Logfile geschrieben wird.

Die Logfilelocation kan man natürlich frei wählen.

Eine weitere schöne Möglichkeit bietet sich mit top.

Trägt man folgende Zeile in die Crontab ein:

/usr/bin/top -c -b -n 1 | /usr/bin/sed ':a;N;$!ba;s/[ \t]*\n/;/g' | /usr/bin/awk -F";" '{print $1,"|", $2,"|", $3,"|", $4,"|", $8}' | /usr/bin/sed "s/^/$(date) | /" >> /var/log/performance.log

Wird ein sehr ausführliches Performancelog erstellt.

Hier bitte nicht vergessen das Logrotate (/etc/logrotate.d) zu aktivieren.

Das Tüpfelchen auf dem i bildet folgende Zeile:
* * * * * (/usr/bin/users;COLUMNS=1800 /usr/bin/top -c -b -n 1) | /usr/bin/sed ':a;N;$!ba;s/[ \t]*\n/;/g' | /usr/bin/awk -F";" '{print "users: ", $1,"|",$2,"|", $3,"|", $4,"|", $5,"|", $9}' | /usr/bin/sed "s/^/$(date) | /" | /usr/bin/sed "s/users: top/users: | top/" >> /var/log/performance.log

Hiermit werden die jeweils angemeldeten User, die Speicherauslastung, der CPU-Load, die Uptime und der aktuell cpu-hungrigste Task incl. Timestamp gelogged.

“Servlet is privileged and cannot be loaded by this web application” Fehlermeldung beim Tomcat

Oktober 14th, 2011

Wenn man beim Aufruf einer Applikation auf dem Tomcat von folgender Fehlermeldung überrascht wird:

Servlet is privileged and cannot be loaded by this web application

Kann man dies beheben indem man in der context.xml folgenden Wert ergänzt:

<Context …  muss in <Context privileged="true"… geändert werden.

Nur noch kurz den Tomcat durchstarten und schwupps müsste der Fehler behoben sein.

Zombieprozesse beobachten

September 8th, 2011

Wenn man über einen Zeitraum Zombieprozesse beobachten möchte, ist folgender Befehl sehr nützlich:
watch 'ps -ef | grep defunct | grep -v grep'

Mit diesem Befehl wird die Befehlskette 'ps -ef | grep defunct | grep -v grep' immer wieder ausgeführt.
So kann man beobachten ob eventuell Zombieprozesse dauerhaft unbeendet bleiben.

Statt Prozesse mit dem Zusatz zu monitoren kann man natürlich auch jeden anderen Prozess damit beobachten.

watch 'ps -ef | grep tomcat | grep -v grep'

Beobachtet den Prozess "Tomcat"

XUL Runner (not compatible) Fehlermeldung nach Firefox Update

September 8th, 2011

Wenn ihr nach einem Update des Firefox die Meldung bekommt
"XULRunner MinVersion=xxx MaxVersion=xxx not compatible" hat euer Antivirusprogramm verhindert, daß die Datei application.ini beim Update überschrieben wurde.
Öffnet man mit einem Texteditor die Datei C:\Programme\Mozilla Firefox\application.ini" und ändert die folgenden Einträge auf die jeweilig aktuelle Versionsnummer:
[App]
Vendor=Mozilla
Name=Firefox
Version=6.0.2
BuildID=20110830092941
SourceRepository=http://hg.mozilla.org/releases/mozilla-release
SourceStamp=41ea1b3fb0a9
ID={ec8030f7-c20a-464f-9b0e-13a3a9e97384}

[Gecko]
MinVersion=6.0.2
MaxVersion=6.0.2

dann startet der Firefox wieder.
Gegebenenfalls kann es sein, daß er die Aktualisierung wiederholt.
Dabei solltet ihr den Antivirus kurzzeitig deaktivieren.