Archiv der Kategorie ‘Linux’

OpenNMS: Memcached mit SNMP überwachen

30. August 2010

opennmsIn OpenNMS gibt es zwar auch einen “nativen” Memcached-Monitor – aber dieser funktioniert nur wenn der Memcached direkt über das Netz vom Monitorserver aus erreichbar ist.

Mit der bekannten SNMP-extend Methode lässt sich der Memcached Daemon auch gut via SNMP mit OpenNMS überwachen. Hier nur kurz die wichtigsten Scripte und Schritte:

Service überwachen

Das geht am einfachsten über das “HostResourceSwRunPlugin” Plugin welches die laufenden Prozesse via SNMP überwacht. Zunächst muss der Service überhaupt erkannt werden:

/etc/opennms/capsd-configuration.xml

    <protocol -plugin protocol="Process-memcached"
	class-name="org.opennms.netmgt.capsd.plugins.HostResourceSwRunPlugin"
	scan="on" user-defined="false">
	<property key="timeout" value="2000" />
	<property key="retry" value="1" />
	<property key="service-name" value="memcached" />
    </protocol>

Dann wird die Überwachung definiert:
/etc/opennms/poller-configuration.xml

   ...
<service name="Process-memcached" interval="300000"
    user-defined="false" status="on">
    <parameter key="retry" value="5"/>
    <parameter key="timeout" value="10000"/>
    <parameter key="service-name" value="memcached"/>
    <parameter key="run-level" value="3"/>
    <parameter key="match-all" value="true"/>
</service>
 ...
    <monitor service="Process-memcached" class-name="org.opennms.netmgt.poller.monitors.HostResourceSwRunMonitor"/>

Statistiken

Um noch ein paar Graphen zu generieren werden per SNMP noch die Statusdetails des Memcached Daemons übertragen…

Weiterlesen

SVG Content-Type setzen

8. August 2010

Um beim Apache den Content-Type für *.svg Dateien korrekt zu setzen:

<FilesMatch "\.(svg|SVG)$" >
ForceType image/svg+xml
</FilesMatch>

2 NICs mit Policy Based Routing (PBR)

12. Juli 2010

Es gibt viele Gründe für 2 Netzwerkkarten im Server. Sollen diese in unterschiedliche Netze angebunden werden gibt es Probleme weil normalerweise nur ein Standardgateway existiert.

Der Traffic verlässt zwar korrekt den Server über die gesetzten Routen, jedoch die Pakete an fremde Ziele verlassen den Server immer über die default-route, also u.U. nicht über das richtige Interface.

Folgend kurz die Schritte zum Einrichten eines Policy-Based Routing unter Debian/Ubuntu…

Ausgangslage

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.10.7.56    0.0.0.0         255.255.255.248 U     0      0        0 eth0
10.10.6.32    0.0.0.0         255.255.255.224 U     0      0        0 eth1

Neue Einträge anlegen

echo "1 dmz-a" >> /etc/iproute2/rt_tables
echo "2 dmz-b" >> /etc/iproute2/rt_tables

eth0 Route anlegen

ip route add 10.10.7.56/29 dev eth0 src 10.10.7.58 table dmz-a
ip route add default via 10.10.7.57 dev eth0 table dmz-a
ip rule add from 10.10.7.58/32 table dmz-a
ip rule add to 10.10.7.58/32 table dmz-a

eth1 Route anlegen

ip route add 10.10.6.32/27 dev eth1 src 10.10.6.35 table dmz-b
ip route add default via 10.10.6.33 dev eth1 table dmz-b
ip rule add from 10.10.6.35/32 table dmz-b
ip rule add to 10.10.6.35/32 table dmz-b

Das Kommando “ip route show” sollte jetzt die entsprechenden Einträge zeigen.
Theoretisch könnte man sich das PBR für eine der beiden NICs sparen wenn man dort einfach die klassische default-route setzt. Hier noch eine ausführliche Anleitung zum Thema.

Update auf OpenNMS 1.8 (Cardinal)

8. Juni 2010

opennmsEs ist soweit: OpenNMS 1.8 ist da. Eher unbeabsichtigt kam ich soeben in die Lage unser NMS auf Version 1.8 zu hieven. Eigentlich wollte ich nur ein paar Updates einspielen und rechnete nicht damit, dass ein Major-Update darunter war ;) . Glücklicherweise lief alles bis auf eine Kleinigkeit problemlos.

Da ich das OpenNMS-repository in der sources.list habe, reichte mein routinemäßig durchgeführtes “apt-get update && apt-get upgrade” um OpenNMS auf 1.8 zu bringen. Die Fragen zum Überschreiben diverser Konfigurationsdateien habe ich alle mit “N” beantwortet. Die neuen Dateien werden dann mit *.dpkg-dist angelegt. Anschließend bin ich die Änderungen manuell durchgegangen – schließlich möchte ich nichts neues verpassen und aber auch meine alten Daten weiterverwenden.

OpenNMS startete. Leider konnte ich mich nicht in das Webinterface einloggen. Irgendeine Fehlermeldung die Datenbank betreffend. Hmm, da scheint apt wohl die Datenbank nicht aktualisiert zu haben (warum eigentlich nicht?). Da ich nicht wusste was zu tun ist, bin ich nochmal den oben erwähnten Wiki-Eintrag durchgegangen. Im Abschnitt “Initialize OpenNMS and the Database” fand sich dann der unscheinbare aber wichtige Satz:

Upon upgrade, you should run this command again to make sure your database schema and other things required at startup are up-to-date

Also folgendes Kommando ausgeführt:

/usr/share/opennms/bin/install -dis

Anschließend konnte ich mich wieder einloggen. Auf dem ersten Blick scheint alles das Update überstanden zu haben. Die custom-Poller arbeiten und meine Graphen werden weiter aufgezeichnet. Jetzt schaue ich mir erst mal die neuen Features an…

Grub2: Einmal Windows booten

3. Juni 2010

Ubuntu Lucid verwendet grub2. Manchmal möchte man nur einmal ein anderes OS booten ohne danach auf den Boot-Timeout zu warten und den richtigen Grub-Eintrag auszuwählen.

Vorbereitung

Folgende Zeile in der /etc/default/grub ändern und danach einmalig “sudo update-grub” ausführen:

# /etc/default/grub
GRUB_DEFAULT=saved
sudo update-grub

Benutzung

# Windows 7 nur beim nächsten Booten setzen und danach Neustart
grub-reboot "Windows 7 (loader) (on /dev/sda2)" && reboot
 
# Grub Menüeintrag Nr. 3  nur beim nächsten Booten setzen und danach Neustart
grub-reboot 2 && reboot # (fängt bei 0 an zu zählen)

Verknüpfung unter Gnome

Dafür ist mal wieder zenity ganz praktisch: Verknüpfung zum folgenden Kommando anlegen:

bash -c 'zenity --question --text="Wirklich rebooten?"; if [ $? -eq 0 ]; then gksudo grub-reboot "Windows 7 (loader) (on /dev/sda2)" && gksudo reboot; fi'

Ubuntu einrichten

31. Mai 2010

Für das nächste Mal schreibe ich mir jetzt die Schritte auf die ich durchführe wenn ich Ubuntu Desktop installiere. Natürlich ist die Zusammenstellung eines Systems immer individuell – dieses ist halt meines ;)

Repositories erweitern und updaten

sudo add-apt-repository ppa:ubuntu-wine/ppa
sudo add-apt-repository ppa:mozillateam/firefox-stable
sudo add-apt-repository ppa:dnjl/virtualization
sudo apt-get update
sudo apt-get upgrade

Pakete installieren

sudo apt-get install \
ttf-mscorefonts-installer \
thunderbird \
virt-manager \
hotssh \
wine

Schriftenrendering verbessern

Da ich mich irgendwie nicht so richtig mit Anti-Alias Schriftarten auf LCD Monitoren anfreunden kann und das Font-Styling von Windows XP mag, stelle ich zuerst das Font-Rendering um (laut www.sharpfonts.com):

sudo apt-get install ttf-mscorefonts-installer
wget http://www.sharpfonts.com/fontconfig.tbz
sudo tar xvjpf fontconfig.tbz -C /etc/fonts/
 
wget http://www.sharpfonts.com/fonts/tahoma32.exe
sudo cabextract -d /usr/share/fonts/truetype/ tahoma32.exe

Danach unter System->Einstellungen->Erscheinungsbild die “Schriftart in Anwendungen” auf Tahoma 8pt setzen

Typo3 mit memcached beschleunigen

9. Mai 2010

Caches sind ein schöne Sache. Gerade bei der Generierung von Webseiten spielen sie ihre Stärke voll aus: im Allgemeinen wird eine Webseite erheblich öfter aufgerufen als verändert.

Mittlerweile sollte sich der memcached Daemon herumgesprochen haben (Installation unter Centos). Hier die paar Zeilen um die Typo3 Caches von MySQL auf memcached umzustellen (funktioniert zumindest ab Typo3 4.3 on the fly).

In der typo3conf/localconf.php folgendes eintragen:

$TYPO3_CONF_VARS['SYS']['useCachingFramework'] = '1';
 
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations'] = array(
    'cache_pages' => array(
        'backend' => 't3lib_cache_backend_MemcachedBackend',
        'options' => array(
            'servers' => array('localhost:11211'),
        ),
    ),
    'cache_pagesection' => array(
        'backend' => 't3lib_cache_backend_MemcachedBackend',
        'options' => array(
            'servers' => array('localhost:11211'),
        ),
    ),
    'cache_hash' => array(
        'backend' => 't3lib_cache_backend_MemcachedBackend',
        'options' => array(
            'servers' => array('localhost:11211'),
        ),
    ),
);

Das sollte es gewesen sein, die Tabellen cache_pages, ‘cache_pagesection und cache_hash können getrost geleert werden und sollten nicht mehr von Typo3 verwendet werden.

Update: localconf.php Code changed

Memcached unter Centos (via EPEL)

9. Mai 2010

Das EPEL Repository hatte ich ja schon mal gepostet. Hier kurz die Pakete um memcached für PHP unter Centos zu installieren:

yum install memcached php-pecl-memcache
/etc/init.d/memcached start
/etc/init.d/httpd restart

memcached läuft dann mit 64MB auf dem Port 11211.

Passwörter generieren (mit gnome/zenity)

12. April 2010

Immer mal wieder benötige ich eine Reihe neuer Passwörter. Da ich zu faul bin diese selbst zu generieren, lasse ich das besser machen. Dafür kann man z.B. makepasswd verwenden. Für die Bereiche wofür ich die Passwörter brauche reicht mir eine übliche Entropie völlig.

Da ich Gnome benutze habe ich mich gefragt, ob es nicht eine einigermaßen elegante Möglichkeit gibt, die generierten Passwörter “grafisch” auszugeben.

Gibt es: zenity ist ein Tool mit dem man von der Kommandozeile aus verschiedene Dialoge zur Interaktion mit Scripten etc. öffnen kann. So gibt es z.B. Messageboxen, Textabfragen etc. Eine gute Übersicht findet sich hier. Ich habe mich für die Listenansicht entschieden, da man dort einfach per Copy+Paste an den Text kommt. Hier das komplette Kommando:

makepasswd --count 24 | \
zenity --list --editable --title "Passwörter" --column Password --height 400

OpenNMS: Nur primäre Interfaces überwachen

3. April 2010

opennmsOpenNMS ist klasse. Man merkt an vielen Stellen, dass es von Anfang an für große Netze konzipiert wurde. Das hat den “Nachteil” dass einiges u.U. auf dem ersten Blick etwas umständlich wirkt. Ein Beispiel dafür sind z.B. die Filter. Anfangs habe ich diese nicht beachtet und diverse Parameter lieber händisch im Webinterface eingestellt oder viel mit IP-Ranges bei den Pollern gearbeitet.

Eines der Hauptprobleme war, dass OpenNMS immer alle Interfaces auf einem Server bei seinen Service-Checks einbezieht. Also z.B. den SSH-Dienst auf einem Webserver mit 30 virtuellen Interfaces auf jedem dieser Interfaces checkt. Das ist sinnlos. Beholfen habe ich mich damit, dass ich im Webinterface die ensprechenden Interfaces auf “unmanaged” gesetzt habe oder die IP-Ranges bei den Checks eingeschränkt habe. Wenig elegant.

Wie schön sind dagegen doch die Filter. Kennt man sich ein wenig mit SQL aus, hat man das Prinzip dahinter schnell erkannt. Hinter OpenNMS arbeitet eine PostgresSQL-Datenbank welche die Interfaces, Kategorien, Events etc. verwaltet. Mit den Filtern kann man prinzipiell jedes Feld in dieser Datenbank abfragen und so z.B. die zu pollenden Interfaces bestimmen.

Weiterlesen