Categories
Linux

Update auf OpenNMS 1.8 (Cardinal)

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…

Categories
Linux

Grub2: Einmal Windows booten

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'
Categories
Linux

Ubuntu einrichten

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:mozillateam/thunderbird-stable
#sudo add-apt-repository ppa:dnjl/virtualization
sudo apt-get update
sudo apt-get upgrade

Pakete installieren

sudo apt-get install \
thunderbird \
virt-manager \
hotssh \
wine1.3

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 http://www.sharpfonts.co.cc/). (Da Sharpfonts zwischenzeitlich auch mal down war, habe ich die XML-Datei hier noch mal gesichert.)

# fontconfig
wget http://www.sharpfonts.co.cc/fontconfig.tbz
sudo tar xvjpf fontconfig.tbz -C /etc/fonts/

# tahoma
sudo apt-get install ttf-mscorefonts-installer
wget http://download.microsoft.com/download/office97pro/fonts/1/W95/EN-US/tahoma32.exe
sudo cabextract -d /usr/share/fonts/truetype/ tahoma32.exe

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

Categories
Linux

Typo3 mit memcached beschleunigen

Gerade bei der Generierung von Webseiten spielen Caches 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']['cache_pages']['backend'] = 't3lib_cache_backend_MemcachedBackend';
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_pages']['options'] = array(
 'servers' => array('localhost:11211'),
 );

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

$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_hash']['backend'] = 't3lib_cache_backend_MemcachedBackend';
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_hash']['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
Update 2:
localconf.php Code changed. Bei neueren Typo3 Versionen wurde teilweise die Default-Cache-Config überschrieben.

Categories
Linux

Memcached unter Centos (via EPEL)

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.

Categories
Linux Tools

Passwörter generieren (mit gnome/zenity)

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
Categories
Linux

OpenNMS: Nur primäre Interfaces überwachen

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.

Categories
Linux Software Tools

inotifysync: Clusternodes synchronisieren

Möchte man die Daten von Cluster-Nodes auf einem gemeinsamen Stand halten gibt es viele Möglichkeiten. Handelt es sich um eine Read-Only Anwendung werden die zugehörigen Dateien meist über einen Master gepflegt und von dort verteilt. Dafür kann man z.B. rsync nehmen – periodisch ausgeführt synchronisiert es zuverlässig die Nodes mit dem Master. Das Problem mit rsync: Die Synchronisation findet nur periodisch statt und nicht live. Außerdem ist bei größeren Datenmengen die Last während der Synchronisation recht hoch.

Warum also nicht nur das synchronisieren was auch synchronisiert werden muss? Genau dafür gibt die inotify-Schnittstelle am Linux-Kernel. Mit entsprechenden Tools überwacht es ganze Dateibäume auf Änderungen und führt bei Bedarf Aktionen aus.

Also habe ich mir ein Script gebastelt welches 1. ein bestimmtes Verzeichnis überwacht und 2. nur die geänderten Dateien/Verzeichnisse unmittelbar mittels ssh verteilt. Voraussetzungen: ssh, scp und inotifywait (enthalten bei den meisten Distributionen im Paket “inotify-tools”). SSH sollte über public keys authentifizieren. Im Kopf von inotifysync.sh müssen die Ziel-Nodes eingetragen werden (diese ändern sich wohl nicht so häufig). Alternativ kann auch eine Datei mit den Ziel-Nodes verwendet werden.

Download: inotifysync.sh

Folgendes Beispiel überwacht das Verzeichnis /home/cluster/htdocs auf Änderungen und synchronisiert diese in das Verzeichnis /var/www/cluster/htdocs auf dem jeweiligen Node:

./inotifysync.sh /home/cluster/htdocs /var/www/cluster/htdocs \
>> /home/cluster/log &

Die Logausgaben werden in die Datei /home/cluster/log geschrieben und das ganze mittels “&” in den Hintergrund geschickt.

Hinweis: Etwas bash Erfahrung sollte man beim Einsatz dieses Scripts schon haben. Einsatz erfolgt natürlich auf eigene Gefahr ;)

Categories
Linux

Mediawiki als Managementoberfläche

In letzter Zeit habe ich das Mediawiki als zentrale Managementplatform entdeckt. Eigentlich war es bisher lediglich zu Dokumentationszwecken gedacht. Dadurch, dass es aber eine einfach zu nutzende XML-Exportfunktion bietet, lassen sich damit auch noch andere Dinge anstellen (oder Kombinieren). Man kann damit z.B. prima eine Nodeliste für OpenNMS verwalten (welche nicht durch autodiscovery erfasst werden). Oder gewisse Steuerungsdaten für Bash-Scripte. Oder was auch immer. Zumindest für Aufgaben wofür es sich nicht lohnt ein eigenes Interface zu stricken.

Bisher habe ich zentrale Einstellungen immer relativ mühsam in ein SVN gesichert. Zugriff für Änderungen war meist nur über die SSH Konsole möglich. Dokumentiert wurde da auch nicht viel…

Das schöne am Mediawiki ist, dass eine Versionierung schon eingebaut ist. Ausserdem lassen sich z.B. Dokumentationen oder Checklisten verlinken. Durch Kategorisierung lassen sich die Daten auch geordnet ablegen. SSL und Authentifizierung sollten natürlich selbstverständlich sein.

Per simplen wget in bash-scripten oder per curl in in perl/php ist der Zugriff in der Regel problemlos möglich. Das xml lässt sich prima mit dem Tool “xml2” in Scripten verarbeiten…

Beispiel zum Einlesen einer Liste mit IP-Adressen:

wget -q -O - --http-user admin --http-passwd secret \
https://wiki.example.com/index.php/Spezial:Exportieren/IP_Plan \
| xml2 \
| awk '/(page\/revision\/text)*([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/ {print $2}'
Categories
Linux

Fedora EPEL

Für Pakete welche von RHEL/Centos nicht direkt vertrieben werden: fedoraproject.org/wiki/EPEL.

“Extra Packages for Enterprise Linux (EPEL) is a volunteer-based community effort from the Fedora project to create a repository of high-quality add-on packages for Red Hat Enterprise (RHEL) and its compatible spinoffs such as CentOS or Scientific Linux. Fedora is the upstream of RHEL and add-on packages for EPEL are sourced from the Fedora repository primarily and built against RHEL.”

ich nutze von dort z.B. puppet und syslog-ng.