Einer Partition den Laufwerksbuchstaben B: zuweisen

Windows XP gesteht Partitionen nur Laufwerksbuchstaben zwischen C und Z zu. Wenn man eine Partition auf B legen möchten, muss man etwas tricksen.

Um den Buchstaben zu ändern, öffnet man eine Kommandozeile (Start > Ausführen > cmd > OK) und tippt mountvol ein. Das Tool zeigt nun alle Geräte und den entsprechenden Mountpunkt (Laufwerksbuchstaben) an.

Nun kopiert man die Volume-ID des zu bearbeitenden Laufwerks (zum Beispiel {5ce033e0-a1a3-11db-b93c-806d6172696f}) und gibt anschliessend

mountvol Z: /D

ein (wobei Z für den zu ändernden Laufwerksbuchstaben steht). Damit unmountet man die Partition.

Letztendlich muss man das Volume wieder als B: einhängen. Dazu gibt man mountvol B: ?Volume{VOLUME-ID} ein. Wobei VOLUME-ID für die oben notierte ID des Gerätes steht:

mountvol B: ?Volume{5ce033e0-a1a3-11db-b93c-806d6172696f}

Nun sollte die Partition im Explorer oder Arbeitsplatz an der neuen Stelle mit der neuen Kennung stehen. Um diese Schritte rückgängig zu machen kann man die Datenträgerverwaltung verwenden oder wieder das Kommandozeilentool bemühen.

h1. Quellen
http://www.computerleben.net/artikel/Einer_Partition_B:_zuweisen-251.html

Benutzte User/Gruppen finden

Eine Standard Linux Installation kommt in der Regel mit 10-20 "Standard User Accounts", etwa "games" oder "news". – Häufig braucht man diese jedoch gar nicht und wenn man sein System absichert ist das sogar hinderlich.

Mit folgender Shell-Zeile kann man deswegen alle Benutzer auflisten lassen denen irgendwo auf dem System Files gehören; alle die NICHT aufgelistet sind können gefahrlos gelöscht werden:

cut -f 1 -d : /etc/passwd | while read i; do find / -user "$i" | grep -q . && echo "$i"; done 2> /dev/null

Und das selbe geht natürlich auch für die Benutzergruppen:

cut -f 1 -d : /etc/group | while read i; do find / -group "$i" | grep -q . && echo "$i"; done 2> /dev/null

vmware web-konsole stürzt nach CentOS-Upgrade ab

[stextbox id=“warning“ caption=“Achtung“]Ab CentOS 5.6 ist das Problem mit der glibc zwar wieder behoben; doch dann stürzt die vmware-konsole ab (vmware-hostd mit einem „Segemnation fault“), wenn der hack aktiv ist!

Um das Problem dann wieder zu lösen muss man lediglich in /usr/sbin/vmware-hostd die zweitletzte Zeile

export LD_LIBRARY_PATH=/usr/lib/vmware/lib/libc.so.6:$LD_LIBRARY_PATH

auskommentieren oder löschen.

Diese Beschreibung bleibt deshalb nur noch als Referenz hier und für solche welche den Hack früher schon mal gemacht hatten. – Falls der Hack noch nicht ausgeführt wurde, sollte man ab jetzt gleich auf CentOS 5.6 upgraden.[/stextbox]

Nach dem upgrade von CentOS 5.3 auf 5.4 oder eine höhere Version stürzt die vmware web-konsole mit einem "HTTP error code" ab.

Grund ist ein bug in vmware, der mit der aktuellen glibc nicht zurecht kommt.

Glücklicherweise lässt sich dies aber sehr einfach lösen, indem man die alte glibc herunter lädt und diese mit vmware verlinkt.

Folgendes script löst das Problem automatisch:

#!/bin/bash
###########################################
# This may help using the vmware-server2  #
# on a CentOS 5.4 x86_64 Host.            #
# There is a problem with the the libc    #
# More informations:                      #
# <a href="http://bugs.centos.org/view.php?id=3884" target="blank">http://bugs.centos.org/view.php?id=3884</a> #
#-----------------------------------------#
# Version 0.1                             #
# This script will get the 'old' libc     #
# from the CentOS 5.3 repositories and    #
# configures vmware-server2 to use this   #
# The original libc (for the 5.4-system)  #
# will not be replaced or touched.        #
#-----------------------------------------#
# License: Do with the code whatever you  #
# want. This came without any warrenty.   #
###########################################
 
LIBC_DIR="/usr/lib/vmware/lib/libc.so.6"
TEMP_DIR="/tmp/vmw_glibc"
VMWARE_CONFIGFILE="/usr/sbin/vmware-hostd"
VMWARE_CONFIGFILE_BAK=$VMWARE_CONFIGFILE.bak
 
# Checking for root
if <span class="keys"> $EUID -ne 0 </span>; then
    echo "This script must be run as root"
    exit 1
fi
 
# We test for the commands  we need:
echo "Looking for some commands I need..."
which wget
if [ $? != 0 ]; then
    echo "I can't find wget but need it to download the files. Please install."
fi
which rpm2cpio
if [ $? != 0 ]; then
    echo "I can't find rpm2cpio but need it to extract Files from a .rpm-file. Please install."
fi
 
# Creating a directory for the 'old' glibc
mkdir -p $LIBC_DIR
if [ $? != 0 ]; then
    echo "Can't create directory $LIBC_DIR"
    exit 2
fi
 
# Removing and creating a temporary directory for the rpm,
# downloading it, extracting the old glibc and copy
# the them to our new directory
rm -rf $TEMP_DIR
mkdir -p $TEMP_DIR
if [ $? != 0 ]; then
    echo "Can't create directory $TEMP_DIR"
    exit 2
fi
cd $TEMP_DIR
wget <a href="http://vault.centos.org/5.3/os/x86_64/CentOS/glibc-2.5-34.x86_64.rpm" target="blank">http://vault.centos.org/5.3/os/x86_64/CentOS/glibc-2.5-34.x86_64.rpm</a>
if [ $? != 0 ]; then
    echo "Something was wrong while downloading"
    exit 2
fi
rpm2cpio glibc-2.5-34.x86_64.rpm | cpio -ivd
mv lib64/libc-2.5.so $LIBC_DIR/libc.so.6
if [ $? != 0 ]; then
    echo "Can't move the libc into directory $LIBC_DIR"
    echo "Removing temporary files..."
    echo -rf $TEMP_DIR
    exit 2
fi
echo "The file libc-2.5.so from the centOS 5.3 rep. was saved in: $LIBC_DIR as libc.so.6"
 
echo "Removing temporary files..."
rm -rf $TEMP_DIR
 
# Now we editing the start-config of the vmware-server
echo "I must change $VMWARE_CONFIGFILE now, you will find a backup in $VMWARE_CONFIGFILE_BAK"
mv $VMWARE_CONFIGFILE $VMWARE_CONFIGFILE_BAK
cat $VMWARE_CONFIGFILE_BAK | grep -v 'eval exec "$DEBUG_CMD" "$binary" "$@"' > $VMWARE_CONFIGFILE
echo export LD_LIBRARY_PATH=$LIBC_DIR/libc.so.6:'$LD_LIBRARY_PATH' >> $VMWARE_CONFIGFILE
echo '' >> $VMWARE_CONFIGFILE
echo 'eval exec "$DEBUG_CMD" "$binary" "$@"' >> $VMWARE_CONFIGFILE
 
# Ensuring the script is executable
chmod 555 $VMWARE_CONFIGFILE
 
echo "Everything is done, please restart your vmware-server2"

Troubleshooting

Nach dem ausführen des scriptes sollte überprüft werden ob das file: /usr/sbin/vmware-hostd ausführbar ist.

Weiter öffnet man am besten mal: /usr/sbin/vmware-hostd und prüft die unterste export Zeile; dabei muss man darauf achten, dass LD_LIBRARY_PATH auf das Verzeichnis zeigt wo die "libc.so.6" liegt und nicht das File selbst!

So ist es falsch:

export LD_LIBRARY_PATH=/usr/lib/vmware/lib/libc.so.6/libc.so.6:$LD_LIBRARY_PATH

So sieht die korrekte export-Zeile aus:

export LD_LIBRARY_PATH=/usr/lib/vmware/lib/libc.so.6:$LD_LIBRARY_PATH

(Dies wird manchmal vom script durcheinander gebracht)

Nach einem vmware-neustart sollte sich dann die Konsole wieder öffnen lassen.

[stextbox id=“note“ caption=“Hinweis“]Seit der Firefox-Version 3.6 lässt sich die vmware Web-Konsole nicht mehr korrekt öffnen; dies ist jedoch nicht mit diesem bug relevant, sondern ein Bug im Firefox-Plugin.[/stextbox]

Related Links

OpenVPN benutzt zufällige Ports beim verbinden

Bei OpenVPN kann es vorkommen, dass jedes mal wenn sich ein Client reconnected versucht er sich auf einen neuen Port; aufsteigend ab 2048 zu Verbinden, d.h.: 2048,2049,2050,2051,usw., was natürlich die Firewall blockt. Die Meldungen im log sehen dann so aus:

openvpn[1388]: MULTI: multi_create_instance called
openvpn[1388]: XX.XX.XX.XX:<B>2056</B> Re-using SSL/TLS context
openvpn[1388]: XX.XX.XX.XX:2056 LZO compression initialized
openvpn[1388]: XX.XX.XX.XX:2056 Control Channel MTU parms [ L:1542 D:138 EF:38 EB:0 ET:0 EL:0 ]
openvpn[1388]: XX.XX.XX.XX:2056 Data Channel MTU parms [ L:1542 D:1450 EF:42 EB:135 ET:0 EL:0 AF:3/1 ]
openvpn[1388]: XX.XX.XX.XX:2056 Local Options hash (VER=V4): '530fdded'
openvpn[1388]: XX.XX.XX.XX:2056 Expected Remote Options hash (VER=V4): '41690919'
openvpn[1388]: XX.XX.XX.XX:2056 TLS: Initial packet from XX.XX.XX.XX:<B>2056</B>, sid=355db726 61057e4d
openvpn[1388]: XX.XX.XX.XX:2056 write UDPv4 []: Operation not permitted (code=1)
openvpn[1388]: XX.XX.XX.XX:2056 write UDPv4 []: Operation not permitted (code=1)
openvpn[1388]: XX.XX.XX.XX:2056 write UDPv4 []: Operation not permitted (code=1)
openvpn[1388]: XX.XX.XX.XX:2056 write UDPv4 []: Operation not permitted (code=1)
openvpn[1388]: XX.XX.XX.XX:2056 write UDPv4 []: Operation not permitted (code=1)
openvpn[1388]: XX.XX.XX.XX:2056 write UDPv4 []: Operation not permitted (code=1)
openvpn[1388]: XX.XX.XX.XX:2056 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
openvpn[1388]: XX.XX.XX.XX:2056 TLS Error: TLS handshake failed

Entsprechend auf den client:

daemon.notice openvpn(custom_config)[995]: SIGUSR1[soft,tls-error] received, process restarting
daemon.notice openvpn(custom_config)[995]: Restart pause, 2 second(s)
daemon.notice openvpn(custom_config)[995]: Re-using SSL/TLS context
daemon.notice openvpn(custom_config)[995]: LZO compression initialized
daemon.notice openvpn(custom_config)[995]: Control Channel MTU parms [ L:1542 D:138 EF:38 EB:0 ET:0 EL:0 ]
daemon.notice openvpn(custom_config)[995]: Data Channel MTU parms [ L:1542 D:1450 EF:42 EB:135 ET:0 EL:0 AF:3/1 ]
daemon.notice openvpn(custom_config)[995]: Local Options hash (VER=V4): '41690919'
daemon.notice openvpn(custom_config)[995]: Expected Remote Options hash (VER=V4): '530fdded'
daemon.notice openvpn(custom_config)[995]: UDPv4 link local: [undef]
daemon.notice openvpn(custom_config)[995]: UDPv4 link remote: 178.83.21.126:1194
daemon.err openvpn(custom_config)[995]: TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
daemon.err openvpn(custom_config)[995]: TLS Error: TLS handshake failed
daemon.notice openvpn(custom_config)[995]: TCP/UDP: Closing socket

Schuld daran ist der nobind-Parameter, der manchmal in OpenVPN Dokumentationen bei Verbindungen mit dynamischer IP-Adresse empfohlen wird. – Denn ist dieser aktiviert bindet sich OpenVPN zwar nicht mehr an die IP-Adresse, aber eben auch nicht mehr an einen Port, was sehr mühsam ist.
Das herausnehmen des nobind-parameters löst dieses Problem dann.

postfix-mysql: queue file write error / Temporary lookup failure

Nachdem ich mein Postfix für die Verwendung mit mysql Tabellen konfiguriert hatte, bekam ich auf einmal beinahe täglich mails, die den Text: "451 4.3.0 Error: queue file write error" und/oder: "Temporary lookup failure" enthielten:

Transcript of session follows.
 
 Out: 220 mail.domain.tld ESMTP Postfix
 In:  EHLO [X.X.X.X]
 Out: 250-mail.domain.tld
 Out: 250-PIPELINING
 Out: 250-SIZE 10240000
 Out: 250-VRFY
 Out: 250-ETRN
 Out: 250-AUTH PLAIN LOGIN
 Out: 250-AUTH=PLAIN LOGIN
 Out: 250-ENHANCEDSTATUSCODES
 Out: 250-8BITMIME
 Out: 250 DSN
 In:  AUTH PLAIN XXXXXXXXXXXXXXXXXXXXXXX
 Out: 235 2.0.0 Authentication successful
 In:  MAIL FROM:<sender@example.org> SIZE=1037
 Out: 250 2.1.0 Ok
 In:  RCPT TO:<empfaenger@example.org>
 Out: 250 2.1.5 Ok
 In:  DATA
 Out: 354 End data with <CR><LF>.<CR><LF>
 Out: 451 4.3.0 Error: queue file write error
 
Session aborted, reason: lost connection

Zwar schien alles zu funktionieren und die mails kamen auch immer noch rein, ich wollte jedoch der Meldung nachgehen.

Im maillog wurde ich dann fündig, denn folgende Fehlermeldung tauchte ziemlich oft auf:

warning: mysql query failed: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=

Dies kam davon, weil ich die postfix Datenbank noch auf dem alten Server angelegt hatte und auf dem der Zeichensatz: latin1_swedish_ci standardmässig eingestellt war, beim neuen Server war jedoch UTF8 standard.

Das Problem kann man dann lösen, wenn man die Postfix Datenbank wie folgt konvertiert:

Login auf mysql:

mysql -uroot -p

dann für jede Tabelle:

ALTER TABLE tbl_name CHARACTER SET utf8 COLLATE utf8_general_ci;

und für jedes Textfeld:

ALTER TABLE tbl_name MODIFY email varchar(255) CHARACTER SET utf8;

Quelle

System monitoring mit Nagios

Sobald man eine Anzahl Server und andere Netzwerkgeräte zu administrieren hat, kommt man beim Thema monitoring nicht vorbei. Damit lässt sich beispielsweise überwachen ob ein Webserver noch läuft, ob der Toner im Drucker schon verbraucht ist und vieles mehr. Wir werden hier einen Nagios monitoring Host aufsetzen und schritt-für-schritt dessen Funktionalität erklären.

Einführung

todo

Die Standard-Konfiguration in Nagios ist jedoch etwas suboptimal aufgebaut und sieht vor, dass man für jeden Host eine Konfigurationsdatei hat in der die Services gleich definiert sind. Dies hat dann jedoch den Nachteil, dass man häufig verwendete Servicechecks bei jedem Host wieder neu definieren muss, was mit der Zeit sehr unübersichtlich und mühsam wird.

Wir werden deshalb ein besonderes Augenmerk auf eine professionelle Konfiguration richten, die auch in grossen, professionellen Umgebungen hält.

Nagios und die Objekte…

In Nagios ist alles als ein sogenanntes „Objekt“ definiert; diese kann man sich wie die Objekte bei der Programmierung vorstellen.
Man definiert zuerst ein sog. „Objekt-Template“; dieses hat dann schon mal die Grundlegenden Eigenschaften, wie Benachrichtigungs-Intervall, Kontaktgruppen an den die Benachrichtigung gesendet wird, usw.
Dann erstellt man für die verschiedenen Subtypen weitere Objekte, die dann die Eigenschaften des vorherigen Objektes „erben“. Diese Eigenschaften kann man dann überschreiben und/oder noch zusätzliche Eigenschaften hinzufügen.

Die Standard-Definitionen befinden sich in der Datei „templates.cfg“.

Hier findet man Objekt-Vorlagen (templates) zu den typen: contacts, contactgroups, hosts, hostgroups und services.

Schauen wir uns mal ein Beispiel für einen Host an:

define host{
        name                            generic-host    ; The name of this host template
        notifications_enabled           1               ; Host notifications are enabled
        event_handler_enabled           1               ; Host event handler is enabled
        flap_detection_enabled          1               ; Flap detection is enabled
        failure_prediction_enabled      1               ; Failure prediction is enabled
        process_perf_data               1               ; Process performance data
        retain_status_information       1               ; Retain status information across program restarts
        retain_nonstatus_information    1               ; Retain non-status information across program restarts
        notification_period             24x7            ; Send host notifications at any time
        register                        0               ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
        }

Wir möchten nun einen Host für die Linux-Server machen, der genau so eingestellt ist wie „generic-host“, mit zwei Ausnahmen:

  • Die Benachrichtigungen sollen nur während den Arbeitszeiten verschickt werden (workhours)
  • Die Benachrichtigungen sollen nur an Leute in der Kontakgruppe „linux-admins“ verschickt werden

Dies würde dann so aussehen:

define host{
        name                            linux-server
        use                             generic-host
        notification_period             workhours
        contact_groups                  linux-admins
        register                        0
        }

Mit dem Keyword „use“ sagt man hier, dass man alles von „generic-host“ übernehmen will, danach definiert man „notification_period“ neu und fügt „contact_groups“ hinzu.

Und bei der Definition eines Hosts verwendet man dann dieses template, wieder mit „use“ (aber ohne „register“ am Schluss!) wie folgt:

define host{
        use                     linux-server
        host_name               host1
        alias                   host1
        address                 XX.XX.XX.XX
        }

Nun noch eine kurze Beschreibung der verschiedenen Objekttypen:

Objekttypen

contacts / contactgroups

Jede Person, die nagios benutzt muss als ein Kontakt-Objekt definiert sein; die grunsätzlichen Parameter sind: name, email und evtl. pager (handy/sms) Nummer.
Mehrere Kontakte können in einer Kontakgruppe zusammen gefasst werden, z.B. „linux-admins“.

Nagios benutzt diese Informationen hauptsächlich um Benachrichtigungen zu versenden; als Benachrichtigungsempfänger kann man entweder nur einen einzelnen Kontakt oder eine ganze Kontaktgruppe angeben.

[stextbox id=“note“ caption=“Hinweis“]Jede Person, die auch das Nagios-Frontend verwenden möchte, muss zusätzlich in der Datei: /etc/nagios/htpasswd.users stehen.
Um nun einen Benutzeraccount fürs Frontend zu erstellen benutzt man am besten das Programm htpasswd:

htpasswd /etc/nagios/htpasswd.users USERNAME

[/stextbox]

hosts / hostgroups

Wie die Kontakte muss jeder Host, den man überwachen möchte als Host-Objekt definiert sein. – Man kann hier auch wieder mehrere Hosts in einer Hostgruppe zusammenfassen; dies macht vor allem da Sinn wo man gewisse checks für mehrere Hosts gleichzeitig machen mcöhte.
[stextbox id=“note“ caption=“Hinweis“]Eine gute Idee ist es deshalb für alle Hosts die ähnlich konfiguriert sind eine Gruppe zu machen, beispielsweise „centos“ oder „ubuntu“.[/stextbox]

services [[service groups]

Für jeden „Service“ (z.B. http, ssh oder backup) den man überwachen möchte, muss man nun noch ein Service-Objekt definieren.
In diesem Objekt kann man auch wieder definieren an wen die Benachrichtigungen gehen sollen (contact,contactgroup) und auf welchen Host der Service überwacht werden soll.
Man kann hier auch wieder „Service-Gruppen“ machen, doch das wird in der Regel sehr selten verwendet.

Installation

Die Installation wurde auf einem CentOS-System gemacht, kann aber natürlich für alle weiteren Systeme 1:1 umgsetzt werden; lediglich Paketmanager und Paketnamen unterscheiden sich jeweils geringfügig.

Zuerst installieren wir nagios, nagios-plugins und nrpe:

yum install icinga icinga-gui icinga-idoutils nagios-plugins nagios-plugins-setuid nagios-plugins-nrpe

Konfiguration

Überlegungen

Da die Konfiguration eines Nagios-Systems bereits nach kurzer Zeit sehr komplex werden kann, macht es Sinn eine gescheite Struktur aufzubauen.
Grundsätzlich werden wir alle Konfigurations-Dateien in Verzeichnis /etc/conf.d/ haben; möchte man nun aber noch externe Netzwerke (z.B. die von Kunden) überwachen sollte man diese nicht mit den „eigenen“ mischen; stattdessen würde man ein Verzeichnis /etc/conf.d.KUNDE anlegen und diese in der Datei /etc/nagios/nagios.cfg als cfg_dir eintragen.

Danach gibt es zwei sinnvolle Konfigurationen, welche man nimmt hängt von den individuellen Vorlieben ab; diese werde ich hier kurz erklären:

Wenige, grosse Konfigurationsdateien

Bei dieser Konfiguration würde man eine Datei für alle Kontakte-, eine für alle Hosts-, eine für alle Hostgruppen-, eine für alle Services- und eine Datei erstellen die dann die Checks den Hosts zuweist.

Diese Struktur würde so aussehen:

/etc/nagios/
|-- cgi.cfg
|-- conf.d
|   |-- checks.cfg
|   |-- commands.cfg
|   |-- contacts.cfg
|   |-- hostgroups.cfg
|   |-- hosts.cfg
|   |-- services.cfg
|   |-- templates.cfg
|   `-- timeperiods.cfg
|-- htpasswd.users
|-- nagios.cfg
|-- nrpe.cfg
`-- resource.cfg

Viele kleine Konfigurationsdateien

Bei der zweiten Konfiguration würde man für Kontakte-, Hosts-, Hostgruppe- und Services je ein Verzeichnis erstellen und darin für jeden Service eine Datei. Dies sähe dann so aus:

/etc/nagios/
|-- cgi.cfg
|-- conf.d
|   |-- contactgroups
|   |   |-- admins.cfg
|   |   `-- linux-admins.cfg
|   |-- contacts
|   |   |-- Hans_Muster.cfg
|   |   |-- John_Doe.cfg
|   |   `-- nagiosadmin.cfg
|   |-- hostgroups
|   |   `-- linux.cfg
|   |-- hosts
|   |   |-- host1.cfg
|   |   |-- host2.cfg
|   |   `-- host3.cfg
|   |-- misc
|   |   |-- commands.cfg
|   |   |-- templates.cfg
|   |   `-- timeperiods.cfg
|   `-- services
|       |-- backup.cfg
|       |-- http.cfg
|       |-- load.cfg
|       |-- ping.cfg
|       |-- ssh.cfg
|       `-- yum.cfg
|-- htpasswd.users
|-- nagios.cfg
|-- nrpe.cfg
`-- resource.cfg

Für welche der beiden Varianten man sich entscheidet ist egal, beide sind sehr flexibel und auch in grossen Umgebungen noch übersichtlich. Ich werde später die Konfiguration beider Varianten erklären, machen muss/kann man natürlich nur eine. 😉

Zuerst jedoch erstellen wir mal die Basisstruktur.

Basisstruktur

Da wir die Konfiguration von vorne beginnen, ist es ratsam, sich das Originalverzeichnis erst mal zu kopieren; dies kann später wieder gelöscht werden, wenn die neue Konfiguration läuft:

cp -pvR /etc/nagios /etc/nagios.orig

Nun erstellen wir die neue Struktur:

mkdir -pv /etc/nagios/conf.d/
cd /etc/nagios/objects/
mv -v commands.cfg templates.cfg timeperiods.cfg /etc/nagios/conf.d/
cd ~
rm -rfv /etc/nagios/objects
rm -fv /etc/nagios/command-plugins.cfg

Nun öffnen wir die Datei: /etc/nagios/nagios.cfg
Darin wird erstmal alles was „cfg_dir“ und „cfg_file“ ist gelöscht, oder auskommentiert; dann fügen wir die Zeile:

cfg_dir=/etc/nagios/conf.d

hinzu.

Nun muss man sich für eine der beiden Varianten entscheiden:

Variante 1: Wenige grosse Dateien

Variante 2: Viele kleine Dateien

Erstellen wir zuerst die Verzeichnisstruktur:

mkdir -pv /etc/nagios/conf.d/{contactgroups,contacts,hostgroups,hosts,misc,services}
cd /etc/nagios/conf.d/
mv -v commands.cfg templates.cfg timeperiods.cfg /etc/nagios/conf.d/misc/

Für jeden Benutzer, der nagios benutzen soll, erstellen wir nun eine contacts-Datei (der „Standardkontakt“ nagiosadmin sollte auch erstellt werden):
/etc/nagios/contatcs/nagiosadmin.cfg

define contact{
        contact_name                    nagiosadmin             ; Short name of user
        use                             generic-contact         ; Inherit default values from generic-contact template (defined above)
        alias                           Nagios Admin            ; Full name of user
        email                          admin@localhost ; <<__* CHANGE THIS TO YOUR EMAIL ADDRESS ____
        }

Nun erstellen wir eine Kontaktgruppe:
/etc/nagios/contactgroups/admins.cfg

define contactgroup{
        contactgroup_name       admins
        alias                   Nagios Administrators
        members                 nagiosadmin
        }

Für jeden Host, den wir Monitoren wollen, erstellen wir eine Hosts-Datei:
/etc/nagios/conf.d/hosts/host1.cfg

define host{
        use                     linux-server
        host_name               host1
        alias                   FileServer
        address                 XX.XX.XX.XX 	; << IP-Adresse des Servers
        }

Nun erstellen wir noch eine Hostgruppe für alle Linux-Server:
/etc/nagios/hostgroups/linux.cfg

define hostgroup{
        hostgroup_name  linux                ; The name of the hostgroup
        alias           Linux Servers        ; Long name of the group
        members         host1, host2, host3  ; Comma separated list of hosts that belong to this group
}

Und zu guter Letzt erstellen wir noch für jeden Service, den wir überwachen wollen eine Datei in: /etc/nagios/services/
Hier ein Beispiel für check_http, der überprüft ob ein Server per HTTP erreichbar ist:
/etc/nagios/conf.d/services/http.cfg

define command{
        command_name    check_http
        command_line    $USER1$/check_http -H $HOSTADDRESS$ -I $HOSTADDRESS$
        }

define service{
        use                             generic-service
        host_name                       server1
        service_description             HTTP
        check_command                   check_http
        }

[stextbox id=“note“ caption=“Hinweis“]Anstatt host_name könnten wir den Check mit hostgroup_name auch auf der ganzen Gruppe-, oder mit „host_name *“ auf sämtlichen Hosts ausführen.[/stextbox]

Benutzung

Neuer Host hinzufügen:

Um dieser Konfiguration einen neuen Host hinzu zu fügen müssen wir:

  • Eine Datei für diesen Host in /etc/nagios/conf.d/hosts/ anlegen
  • Diesen Host zu den passenden Hostgruppen in /etc/nagios/conf.d/hostgroups/ hinzufügen
  • Den Host in all den entsprechenden Dateien in /etc/nagios/conf.d/services/ hinzufügen, oder, sollte noch kein entsprechender Service vorhanden sein, diesen anlegen

[stextbox id=“note“ caption=“Hinweis“]Falls der neue Host bereits in einer Hostgruppe ist, die mit einem Service verbunden ist, muss dieser nicht noch einzeln für den Host definiert werden.[/stextbox]

Erweiterungen

pnp4nagios

Mit pnp4nagios lassen sich die performancedaten der plugins in schöne Graphen darstellen.

Zuerst bereiten wir als root die Umgebung vor:

yum install rrdtool rrdtool-perl
mkdir -v /usr/local/src/icinga && chown -v icinga:icinga /usr/local/src/icinga

Nun wechseln wir zum icinga user:

cd /usr/local/src/icinga/
wget http://sourceforge.net/projects/pnp4nagios/files/PNP-0.6/pnp4nagios-0.6.21.tar.gz/download
tar -xvzf pnp4nagios-0.6.21.tar.gz && rm -v pnp4nagios-0.6.21.tar.gz
cd pnp4nagios-0.6.21/
./configure --with-nagios-user=icinga --with-nagios-group=icinga --bindir=/usr/local/bin --libexecdir=/usr/local/libexec/pnp4nagios --sysconfdir=/etc/icinga/pnp4nagios --localstatedir=/var/local/pnp4nagios --libdir=/usr/local/lib/pnp4nagios --datarootdir=/usr/local/share/pnp4nagios
make all

Nach dem configure script sollte man die Ausgabe kontrollieren, insbeosndere ob die Pfade stimmen.
Danach noch (als root) installieren:

sudo make fullinstall

Nun sollte man die Datei: /etc/httpd/conf.d/pnp4nagios.conf kontrollieren, ggf. anpassen und apache neu starten:

/etc/init.d/httpd restart

Nun muss man die zwei (schon vorhandenen) commands in: icinga/commands.cfg kontrollieren (Pfade!):

define command {
       command_name    process-service-perfdata
       command_line    /usr/bin/perl /usr/local/libexec/pnp4nagios/process_perfdata.pl
}

define command {
       command_name    process-host-perfdata
       command_line    /usr/bin/perl /usr/local/libexec/pnp4nagios/process_perfdata.pl -d HOSTPERFDATA
}

Nun kann man mittels Aufruf von: http://example.net/pnp4nagios die Ausgabe kontrollieren.
Ist alles ok, können wir noch das install.php file disablen:

mv -v /usr/local/share/pnp4nagios/install.php /usr/local/share/pnp4nagios/install.php.ignore

Um bereits im GUI eine vorschau zu erhalten, muss noch ein SSI-File kopiert werden:

cp -v /usr/local/src/icinga/pnp4nagios-0.6.21/contrib/ssi/status-header.ssi /usr/share/icinga/ssi/

Nun erstellen wir ein template um die Graphen einzufügen in icinga/templates.cfg:

define service {
       name                                    pnp-link-popup
       icon_image                               ../invisible.png' border="0"</a> <A target="_blank" href="/pnp4nagios/graph?host=$HOSTNAME




amp;srv=$SERVICEDESC




quot; class="tips" rel="/pnp4nagios/popup?host=$HOSTNAME




amp;srv=$SERVICEDESC




amp;view=0"><img src="../images/trends.gif" register 0 }

Um nun einen Service für die Performance-Auswertung zu aktivieren, reicht es das template „pnp-link-popup“ hinzuzufügen:

use                             OTHER_TEMPLATES, pnp-link-popup

Quellen

Nagios: Backups mit Platzhaltern monitoren

Nagios ist ein grandioses Tool um diverse Dinge zu monitoren, beispielseise backups.

Ich monitore diese meist mit dem Plugin check_file_age. – Doch was macht man, wenn man Backup files in der form: /backup/wichtiges_file-2010-05-18-2.zip hat?

Die Lösung ist die einfachste überhaupt und hat mich selbst auch überrascht: Denn man kann in Nagios durchaus auch shell-kommandos mitgeben.

So löst man dieses Problem mit einem check:

command[check_backup]=/usr/local/nagios/libexec/check_file_age -c 86400 -w 86400 -C 500000 -W 500000 -f /backup/wichtiges_file-`date +"%Y-%b-%d"`*.zip

Quelle

http://optimalops.blogspot.com/2010/01/fun-with-nagios-part-2-check-yer.html

Lenovo Notebooks: Touchpad und Keyboard reagieren nicht

Einige Besitzer von Lenovo Notebook aus der Baureihe: T50, T51, T60, T61 (und vermutlich noch andere) werden nach einer Neuinstallation von Windows und durchführen der ersten Windows Updates entrüstet feststellen, dass das TouchPad oder das Keyboard nur noch sporadisch funktioniert, manchmal klingt auch der Windows-Startsound etwas zerstückelt.

Das Problem liegt am Treiber Update, dass Lenovo über die Windowsupdates zur Verfügung stellt – Die Lösung: Den Lenovo treiber einfach nicht updaten. 😉

Dazu wählt man bei Windows Update die benutzerdefinierte Installation und wählt das häckchen bei: Synaptics Thinkpad UltraNav Pointing Devices ab. Dann noch Bestätigen, dass dieses update nicht mehr angezeigt werden soll und gut ist!

{img fileId="62" thumb="y" alt="" rel="box[g]"}
{img fileId="63" thumb="y" alt="" rel="box[g]"}

Linux als Desktop System

__ Dass Linux im Servermarkt hoch etabliert ist, ist unbestritten. Aber kann man Linux auch als Desktop System nutzen und vielleicht sogar die alltägliche Arbeit damit verrichten…?
Ein ausführlicher Test kommt zu einem eher ernüchternden Resultat. __

Vorwort

Linux ist in aller Munde, viele propagieren es als eine Alternative zu Windows, die wenigsten nutzen es täglich.
Ein neues ubuntu-Release, dass auf der Live-CD sehr viel versprechend ausgesehen hatte, gab Anlass, dieses mal zu installieren und über einen Zeitraum von 2-4 Wochen täglich zu nutzen, d.h. ohne Windows zu starten.

Anforderungen

Die Anforderungen waren klar: Ich sollte meine tägliche Arbeit damit verrichten können und mich wohl fühlen mit dem System. Als Sysadmin bin ich mir die arbeit mit Unix/Linux Servern gewohnt – Aber wie sieht’s mit Desktops aus? Installiert hatte ich es auf einem IBM R51.

Folgendes musste auf dem "neuen" Linux Desktop laufen:

  • Notebook: Hardware Unterstützung für WLAN, Bildschirm, Akku, Touchpad, Soundkarte und alles was man halt so dran hat.
  • Zugriff auf Windows Domain Controller und Fileserver
  • Lotus Notes
  • VNC
  • Putty (erweiterter SSH Client)
  • IBM TSM Client
  • Webradio
  • Textverarbeitung
  • MSN Messenger

Diese Anwendungen waren unverzichtbar und im Falle von z.B. Lotus Notes keine Alternativen möglich.

Erfahrungen

Installation

Nach der Installation erst mal ein erfreuliches Bild: Alle Hardware wurde einwandfrei erkannt; Soundkarte, WLAN, Touchpad, usw. funktionierten ohne irgendwas zu konfigurieren. -Kein wunder, trägt doch IBM sehr viel zur Linux-Unterstützung ihrer Hardware bei… 😉

SMB Zugriff auf den Windows Domaincontroller

Windows Freigaben konnten sich dank SAMBA relativ einfach mounten lassen. Anmelden beim Domaincontroller kann man sich aber natürlich von Linux aus nicht, weshalb man bei jedem Zugriff immer wieder das Passwort eingeben muss…

GUI (GNOME)

{188:left}Mit der Oberfläche liess sich gut arbeiten, aber hier wurden schon die ersten "Schwachpunkte" aufgedeckt: Da in Linux die Grafische Oberfläche unabhängig vom Kernel ist, dauert das Laden von Anwendungen generell etwas länger; bis zu 5 Sekunden Wartezeit für das öffnen eines Konsolenfenster, oder des Texteditor fand ich dann aber doch etwas sehr lang. In Windows kann ich beides praktisch ohne Verzögerung öffnen. Die Wartezeit nervt mit der Zeit, auch scheint die grafische Oberfläche nicht sehr stabil zu sein: Fenster "verziehen" sich gerne, Scrollbalken verschwinden oder funktionieren nicht mehr richtig, Fenster lassen sich manchmal nicht max- und manchmal nicht mehr minimieren. Letzteres könnte auch mit WINE zusammenhängen, wo wir gleich schon beim nächsten Punkt wären:

{183:left}!!Windows Anwendungen mit WINE
Lotus Notes gibt es bisher nur für Windows. Es soll aber mit WINE laufen.
Die Einrichtung von WINE ist dank dem Paketmanager APT relativ schnell erledigt, auch Windows Anwendungen lassen sich damit starten. Etwas Konfiguration braucht es noch bei Lotus Notes, aber schlussendlich läuft auch das.

Da Notes schon in der Windows Version äusserst instabil und langsam ist, hatte ich hier unter Linux nicht mehr erwartet und tatsächlich war es von der Stabilität/Schnelligkeit etwa gleich.

Leider treten ab und zu Darstellungsfehler auf; die Installation der Windows TTF Corefonts macht zwar schon sehr viel gut, aber eben doch nicht immer. Ausserdem muss man jeden Dateityp, den man als Anlage öffnen möchte separat in der WINE-Registry definieren. -Ein Vorteil immerhin: URLs in Mails werden nun immer in einem neuen Fenster geöffnet und nicht wie bei der Windows Version immer in gleichen.
-Im Endeffekt ist Notes zwar benutzbar unter Linux, trotzdem ist es ein klein wenig besser unter Windows; klar, da es dort nicht über eine "emulierte" API laufen muss.

Bei anderen Anwendungen wie z.B. die Windows Version von RealVNC kann man keine Umlaute wie ä, ö, oder ü benutzen, etwa weil man als Zeichensatz eine UTF Schriftart installiert hat, die von WINE offenbar nicht richtig unterstützt wird.

Nun, RealVNC gäbe es ja auch in einer reinen Linux Version, also diese installiert…

Linux Anwendungen / Alternativen

{184:right}…und gestartet. Doch leider scheint das eine total andere Version zu sein! -Das Eingabefenster für Server/Passwort ist so klein, dass man schon fast ne Lupe bräuchte und so ein praktisches Dropdownfeld, wo man einmal eingegebene Server wieder abrufen kann findet sich auch nicht.
Die Verbindung mit einem Remoterechner ist dann aber die Totale Katastrophe: Die Bildqualität ist um einiges schlechter als bei der Windows Version, die Scrollbalken verschwinden auf unerklärliche Weise (was ein remote arbeiten manchmal unmöglich macht) und der Refresh scheint nur sporadisch zu funktionieren; häufig "hängt die Bildausgabe hinterher". -Man muss also die zwei VNCs (Windows RealVNC über WINE und Linux RealVNC) kombinieren um damit arbeiten zu können. Das ist dann schon sehr mühsam.

Etwa gleich sah dann dafür der PUTTY Client aus. Zwar kann man unter Linux SSH-Verbindungen auch einfach über die Konsole machen, bei vielen verschiedenen Servern, mit denen man sich täglich Verbinden muss, ist dies aber nicht sonderlich bequem.
-Doch dann wieder muss ich feststellen, dass die Funktion des (selben!) Programmes gänzlich anders und viel mühsammer ist.
z.B. kann man die schrift fast nicht lesen und copy/paste mittels markieren mit der Maus geht auch nicht.
So habe ich für die genau gleichen vorgänge fast doppelt so lange.

Ebenfalls kein Problem war der TSM-Client; logisch, dieser wurde auch von IBM speziell für Linux entwickelt und ist im Test die _einzige_ Anwendung, die sogar besser läuft als unter Windows (dort ist halt die Windows Konsole etwas mühsam, da man sie nicht im Vollbild-Modus laufen lassen kann).
Einziger Knackpunkt war dort das Konvertieren des RPM-Packetes in eine Debian Packet und das Nachinstallieren einiger fehlender Libraries, da der TSM Client eigentlich für RedHat / SUSE gedacht ist… 😉

Beim Webradio wurde ich dann aber schon wieder enttäuscht… -Ich meine WinAMP und der Windows Media Player sind ja auch nicht das gelbe vom Ei… Aber unter ubuntu bekam ich in der Standardinstallation fast überhaupt keinen brauchbaren Player. Der "Rhytmic Player" konnte kein Webradio von di.fm Abspielen und ein anderer, von dem ich den Namen leider nicht mehr weiss auch nicht.
{189}
Der einzige der das konnte war der VLC-Player und der lief dafür ziemlich instabil… Ständig gab es wieder Verbindungsabbrüche bei denen der Sound stumm blieb und zum Neuladen musste man doch tatsächlich den Player neu starten und die URL wieder neu eingeben. grmpf

{185:left}
{186:left}Ebenfalls ein Kritikpunkt war der Firefox unter Linux: Formulare erschienen unvollstänfig, die Schrift sehr körnig. -Es ist gut möglich, dass dies nur daran liegt, das so viele Webseiten für IE/Windows "optimiert" wurden; als user interessiert mich das allerdings nicht, sondern nur, wie die Webseite bei mir aussieht. -Ganz miese Karten für Firefox/Linux.

Die Textverarbeitung konnte ich leider in der kurzen Zeit nicht richtig austesten, wobei ich hier sagen muss, dass ich Microsofts Word sehr mag! 😉

Mit GAIM stand dann auch ein ziemlich guter IM Client für MSN, ICQ, AOL,… zur Verfügung.

Weitere ubuntu Eigenheiten

Etwas, was auch stört bei ubuntu ist, dass man sich grundsätzlich nicht als root Einloggen kann, zumindest nicht bei der Grafischen Oberfläche. Dies mag ja gut gemeint sein, stört aber besonders am Anfang, wenn das System Einrichten will. -Dafür benutzt ubuntu ziemlich viele su & sudo-Aufrufe, was auch nicht unbedingt als sicher gilt. -Wenn es denn funktionieren würde! -Denn als User kann man bei ubuntu, z.B. wenn man die automatische Update Funktion nutzen will noch lange das root Passwort eingeben – Passieren tut dann anscheinend gar nichts…?!g
Auf jeden fall musste ich die neueren Pakete immer von Hand in der Konsole nachinstallieren mittels:
$su
#apt-get update && apt-get upgrade

um die nervenden Meldungen "dass neue Updates verfügbar sind" loszuwerden.

Fazit

Es ist zwar durchaus möglich mit Linux zu arbeiten und man _könnte_ auf Windows auch verzichten und sich daran gewöhnen, dass man nun halt "einige Einschränkungen in Kauf nehmen muss". z.B. dass Webseiten nicht mehr so schön aussehen, weil sie halt für Windows "optimiert" wurden, oder dass gewisse Anwendungen langsamer und/oder instabiler laufen als unter Windows.

Aber wieso soll mach sich selbst einschränken nur um Windows nicht benutzen zu müssen…? -Sowas ist meiner Ansicht nach krank! g

Linux ist ein tolles System, gehört aber in den Server / Terminal Markt und sicher nicht als Desktop-Multimedia-System in den Massenmarkt.

Mein Fazit lautet deshalb wie schon vorher nach wie vor:
Linux – Als Server "HUI", als Client "Pfui"! 😉

Windows 2000 Erfahrunsbericht

__ Windows 2000 – Der Erfahrungsbericht

Windows 2000 ist fast da. Als neugieriger PC-Freak installierte ich mal die Beta von Windows 2000, wie das verlaufen ist und wie mein erster Eindruck ist, erfahrt ihr hier: __

{23:left}[Montag, 11.10.1999, 13.00 Uhr] Ich überlege mir, WO ich die Beta überhaupt installieren möchte, denn mein Win98 und Linux möchte ich behalten. Ich kann insgesamt 2 GB frei machen und erstelle Damit ne neue Partition mit FAT32.

<Später> Nachdem die Backups und Bootdisketten von allen Betriebssystemen gemacht sind, starte ich den PC per Startdiskette, lege die Win2000 CD ein und gebe "Setup" ein. Es erscheint die Meldung, dass das Setup Programm unter Windows ausgeführt werden muss.

<13.30 Uhr> Also wieder Windows booten und Setup starten grummel. Ich werde gefragt, ob ich upgraden wolle, was ich eigentlich nicht will, aber es bleibt mir keine andere Wahl… . Doch schon kurz nachher bricht das Setup ab, weil ein Sprachkonflikt aufgetreten ist. Ich fange mich langsam an zu ärgern und überlege mir, was ich sonst noch so tun könnte. Da durchsuche ich mal die CD und finde ein Verzeichnis BOOTDISK. Sieht nützlich aus und nach kurzem durchlesen der Dokumentation, entnehme ich, das man 4 Startdisketten braucht, um Win2000 auf eine neue Partition zu installieren. Die kann man mit dem Programm "makeboot.exe" im selben Verzeichnis erstellen. Ich starte das Programm, doch schon bei der 2 Diskette meldet mir ein Bluescreen ein CD lesefehler-toll! Da Windows alsdann auch gleich abgestürzt ist starte ich wieder mal neu gähn… . Das mir sowas nicht nochmal passiert, kopiere ich die ganze CD auf Festplatte, was wieder ordentlich Zeit beansprucht, danach führe ich das Programm nochmals von der Festplatte aus. Nach einer halben ewigweit Disketten schreiben, hab ich die 4 Startdisketten, mit denen ich den PC starte. Endlich startet das Setup Programm, doch zuerst müssen alle 4 Disketten eingelesen werden wart,wart, bis ich die ersten Angaben machen darf.
Das installieren geht dann eigentlich ziemlich schnell (~30 min). Danach startet Windows und als erstes fällt mir auf, das der Mauszeiger jetzt einen Schatten hat. ;-).

<16.00 Uhr> Das Modem wurde zwar erkannt, jedoch mit den falschen Treibern. Nach einer Weile Treiber ausprobieren funktioniert das Modem einwandfrei. Als nächstes möchte ich mal die "Hypernate" funktion (auch: Tiefschlafmodus, Standby -modus genannt) testen, die jetzt endlich richtig funktionien soll. -und das tut Sie! Alles läuft einwandfrei und nach ca. 10’s ist mein läuft Windows wieder.

<16.30 Uhr> Nun merke ich, das der Bildschirm stark flimmert. Der Bildschirm ist auf 65 Hz eingestellt, ich stelle die Frequenz langsam höher. Bei 100 Hz hört das flimmern zum Glück auf. Als nächstes checke ich die Treiber ab, die Windows erkannt hat. Meine Grafikkarte (Diamnomd Fire GL 1000pro) wurde als einzige richtig erkannt.

<17.00 Uhr> Nun versuche ich, die Soundkarten Treiber zu installieren, was aber mehrmals misslingt, auch im Internet finde ich momentan keinen geeigneten und so lass ich’s vorerst sein und fange an Software zu installieren; zum Glück laufen fast alle Programme einwandfrei auch unter Windows 2000.

<Später> Als nächstes installiere ich noch Druckertreiber und fange an, mich mit dem System zurechtzufinden.

<Nächster Morgen> ich probiere nochmals die Druckertreiber aus, aufeinmal funktioniert die Soundkarte zum Glück.

Fazit:

Treiber Probleme gibt es noch. Ein grosser Vorteil ist jedoch die neue Hypernate Funktion!