Sonntag, 30. Dezember 2012

Was war / Was wird (2012/2013)

Wie es sich für einen Blog gehört, werde auch ich nicht mit einem Jahresrückblick geizen.

Die xadmin.info Plattform hat sich in diesem Jahr stark gewandelt und geändert, dies ist wohl zumeist dem persönlichen Interesse des Schreibers geschuldet :-) Was mit einem reinen openSUSE-Blog began wurde nun um mehrer Kategorien erweitert.

  • Security hier wird es 2013 verstärkt um Sicherheitsbezogene Themen gehen. Neben dem Sammelsurium welches 2012 produziert wurde, werde ich versuchen wöchentliche Posts zu machen die die Geschehnisse der Woche zusammenfassen.

  • Registry wird eine neue Kategorie in der es um die Geschehnisse in der Domainer Welt gehen soll. Hierbei werden auch im monatlichen Rhytmus fremdbeiträge Zusammengefasst.


Dieses Jahr war auch das Jahr des "DistroHoppings", ich habe ein paar Distributionen angeschaut und versucht eine neue Heimat zu finden, oder mich zu Überzeugen das die alte Heimat doch die richtige Wahl war. Leider bin ich hier noch zu keinem Ergebnis gekommen. Vielleicht muss ich aber auch zu einem "Just use it"-Motto übergehen. Ich habe leider einen Hang dazu mir die Community hinter der Distro anzusehen, meistens ist dies dann auch der Stolperstein. Aber meine Highlights

  • Mageia der Fork von Mandriva hat mich schon recht begeistert. Wenn man sich es genauer ansieht erkennt man viele Einflüsse von Fedora, was ja nicht schlecht ist. Die Community ist klein und engagiert, muss sich aber so denke ich noch finden. Einen Testversuch ist es allemal wert

  • PC-BSD die auf FreeBSD basierende Desktopdistribution ist echt gelungen. Desktopverhalten und Paketmangement stehen anderen Distributionen in nichts nach. Die Software aus den Repos ist nicht immer Brandaktuell aber stabil, wie man es zB von Centos und Co kennt. Vorallem ist es schnell und stabil, und dies gerade bei älteren Mühlen. Ich werde es wohl noch ne zeit lang testen :-)


Nach langem hin und her habe ich dieses Jahr auch meine VServer alle gekündigt. Der Spass war mir zum hosten dieser einen Seite etwas zu teuer geworden. Ich habe daher meine Domains, Webspace und Mailspace zu domaindiscount24 gezogen. Wie der letzte Post zeigt habe ich auch vor in dieser Hinsicht etwas mehr zu machen und vielleicht mit Tips und Tricks zur Seite zu stehen.

Über was ich wohl nicht mehr schreiben werde:
Zwei Kategorien werden nach dem jetzigen Stand der Dinge nicht mehr auftauchen.

  • Postgresql: Versteht mich nicht falsch, Postgresql ist für mich eine der besten Datenbanken, leider komme ich nicht so recht dazu mich mehr einzuarbeiten, ich komme doch zu sehr aus der MySQL welt, leider.

  • OpenIndiana: "Ich glaube er ist tot, Jim". Nachdem der Hauptentwickler Alasdair Lumsden gegeangen ist, bzw resigniert hat, ist dort glaube ich nicht mehr viel passiert. Ich hätte gerne gesehen das es dort weiter geht, ich hätte diese Distribution auch gerne genutzt, liegt wohl an meiner Solaris affinität. Mittlerweile ist 151a7 als iso vorhanden. Ich werde es aufjedenfall mal installierne, bzw mir die LiveCD anschauen.


So, was noch, achja
Ich werde versuchen meine Google+ Präsenz etwas mehr zu pflegen. Vielleicht kommen dann zu den 8 Leuten noch ein paar hinzu. Vielleicht mache ich auch eine Google+ Community auf, mal sehen.

So, ich denke 2013 wird ein tolles Jahr. Ich sehe sehr viele Projekte auf mich zukommen die sicherlich immer für eine "Randnotiz" in diesem Blog sorgen werden. Ich freue mich auf mehr Sicherheitsthemen, mehr Registry, mehr Ubuntu und Debian und mehr MariaDB. Dank ein paar einzelnen Projekten wird es wochl auch mehr zum Thema Centos und Nginx geben. es wird auf jedenfall spannend.

So denn, ich wünsche euch einen guten Rutsch, feiert schön und lasst die Server ganz (!)

Grüsse

Jörg

Donnerstag, 27. Dezember 2012

domaindiscount24 und meine Datenbank

oder: ach Misst das ist ja InnoDB

Ich bin ja Kunde bei DomainDiscount24.com und habe dort mehrer Webspaces , Mailspaces und Datenbanken. Nun fiel mir auf das der genutzte Datenbankspace laut Webinterface ein ganz anderer war als mir durch PHPmyAdmin angezeigt wurde. Was mich stark verwundert hat, denn ein Unterschied von ~18 MB (3,7 MB laut PMA und 21 MB laut Webinterface) war doch etwas zu gross.

Lange Rede kurzer Sinn. InnoDB legt .ibd files an, welche die Daten und Indezes in einer einzelnen Datei speichern. Siehe hier. Also habe ich kurzer Hand das ganze wieder nach MyISAM verschoben, nun sieht es besser aus. Die Features von InnoDB habe ich eh nie genutzt :-)
alter table <tablename> engine=myisam;

Freitag, 14. Dezember 2012

Rabatt beim Testsieger

Wie im letzten Post bereits gezeigt, hat Bitdefender in Sachen Antivirensoftware ganz klar die Nase vorn. Ich habe einen netten Link gefunden der 25% Rabatt verspricht. Vielleicht ein Anreiz für einige...

 

25% Coupon auf alle Varianten der Bitdefender Total Security 2013

25% Coupon auf alle Varianten der Bitdefender Antivirus Plus 2013

25% Coupon auf alle Varianten der Bitdefender Antivirus für Mac und PC

Mittwoch, 12. Dezember 2012

AV-Test veröffentlicht Testergebnisse

Das in Magdeburg ansässige Institut AV TEST hat in den vergangenen

Einfaches RGB

 

Tagen ihren aktuellen Testbericht für dieses Jahr veröffentlicht. Im Test waren 27 Produkte verrschiedener Antivirenhersteller.

Der Bericht befindet sich hier. Vorweg kann man festhalten das die Top 3 Antivirenhersteller alle sehr dicht aufeinanderfolgen, und zumeist nur durch ihre Unterschiede im Bereich der Anwendbarkeit und Benutzerfreundlichkeit. Auf Platz 1 ist Bitdefender, welches auch hier bezogen werden kann.

 

Donnerstag, 25. Oktober 2012

Den Vorzug geben

Manchmal ist ein kleines Detail wichtiger als man denkt. So geht es zB auch bei der Wahl der passenden Software. Für was mich sehr viele meiner Freunde und Kollegen hassen ist, ich finde man sollte die Software immer so wählen das es zu dem Szenario in der sie laufen soll auch passt. So halte ich es zB für alle Software, auch für das Betriebsystem.

Aber was ist das Entscheidungskriterium, wie wählt man eine Software. Da ich nicht sagen kann das ich hier die alleinige Weissheit besitze, stelle ich meine Ideen und Beweggründe kurz vor.

  • Einsatzsenario: Nameserver
    Ich bin ein grosser Freund von Statistik, daher ist mein bevorzugtes System hier FreeBSD, da es in allen Tests im zusammenspiel mit Bind die besten Ergebnisse liefert. Warum Bind? Die ISC welche die Entwickler hinter Bind sind sind sehr schnell, Bugs werden relativ schnell erkannt und gefixt. Grund für die schnelle Erkennung ist auch das ein paar der grössten registrys auf Bind setzen und somit Millionen von Testdomains vorliegen.
    Der Nutzung von Debian muss ich nach den geschehnissen der letzten Wochen eine klare Absage erteilen, Das letzte Sicherheitsupdate hatte eine echt lange Wartezeit
    Ubuntu: 1 Tag nach ISC Release
    Centos: 2 Tage nach ISC Release (Redhat 1 Tag)
    Debian: 14 Tage (!!!)
    ein echtes NOGO
    Ich muss auch noch eine Lanze für PowerDNS brechen. Ich mag es einfach. Vielleicht auch weil ich es angenehmer finde eine Datenbank zu manipulieren als ein Textfile. Die Grenzen sind bekannt. Mit PowerDNS schafft man gut und gerne 50.000 Verbindungen pro Sekunde bevor es Bergab geht, mit Bind sind hier gut und gerne 350.000 drin. Aber dank replikation kann man slaves einfach bedienen und muss dort nicht zuerst das Zonefile anlegen. Auch kann man ganz ohne Notifications auskommen. Positive ist auch das man DNSSEC nutzen kann und PowerDNS on the fly beim ausliefern signieren kann.

  • Einsatzszenario: Webserver
    Hier würde ich mich eindeutig für Ubuntu oder Centos aussprechen. Dies vorallem wegen dem Langzeitsupport. Ein Ubuntu LTS bietet Security Patches für ganze 5 Jahre, Centos sogar 9 Jahre. Somit kann ich mich drauf verlassen das ich Security Updates bekomme ohne den Server alle 1 bis 2 Jahre komplett updaten zu müssen. Auch kann ich für beide Varianten Kommerziellen Support bekommen wenn ich ihn benötigen sollte. Im Falle Centos sogar von zwei Seiten, durch den Switch zu RedHat oder Oracle.
    Der Webserver sollte wohl Apache sein. Der Dinosaurier unter den Systemen. Wobei hier auch das Szenario relevant ist, da Apache bei vielen kleinen und statischen Seiten eine echte Resourcenschleuder ist und man sollte überdenken ob Nginx oder Lighthttpd hier nicht besser und schneller sind.

  • Einsatzszenario Datenbank
    das OS ist in meinen Augen ganz klar ein Centos oder Redhat. Die Datenbank ist eine einzelne Anwendung und ein sicheres Centos System darunter das 9 Jahre Support hat scheint die beste Wahl, wer erneuert schon seine Datenbank alle paar Jahre oder kann sich eine Downtime leisten um das Betriebsystem zu updaten.
    Als MySQL meiner Wahl nehme ich MariaDB. Die Community um Monty ist recht gross und engagiert, ausserdme bieten sie für die meisten grossen Systeme eigene Repos an, so das man updates Zeitnah vom MariaDB selber bekommt. Also haben wir 9 Jahre Support und dann immer wieder die neusten Updates von MariaDB selbst. Eine optimale Mischung finde ich.

Montag, 22. Oktober 2012

Sicherheit

Irgendwie hat es sich in den letzten Wochen und Monaten so ergeben das ich vermehrt über das Thema Sicherheit, genauer IT Sicherheit nachdenke.

Also, was ist diese Sicherheit eigentlich? Vielleicht eine Definition die ich für mich gefunden habe

  • IT Sicherheit ist der Schutz der Unternehmens relevanten Daten, gemessen an Ihrem Risikofaktor.


Vielleicht eine relativ einfache Definition, aber in meinen Augen spiegelt sie alles wieder auf das es wirklich ankommt.

Ein grosses Problem, gerade wenn ein Unternehmen aus mehreren Abteilungen besteht, ist das jede Person Daten auf die eine oder eine andere Art besitzt und verwaltet und diese in in einem eigenem Licht was die Sicherheit dieser Daten betrifft behandelt. So ist das Passwort welches an dem Monitor in einem kleinen Büro hängt für diese Person genau richtig. Es ist wahrscheinlich ein Passwort das man mehr als einmal am Tag verwendet und für das es umständlich wäre es in einem Tresor oder einem sicheren Passwort Server zu verwahren.

Das schlimme ist, wenn ich drüber nachdenke stimmt dies Teilweise sogar. Wir müssen davon ausgehen das jede andere Person in diesem Raum und dieser Abteilung dieses Passwort bereits kennt, oder einen ähnlichen Postfix am Monitor kleben hat. Hier sollte also keine Gefahr drohen. Und wenn es eine böse fremde Person, durch die Eingangshalle bis in dieses Büro, an diesen Monitor geschafft hat, dann müssen wir ehrlich sein, dann haben alle Sicherheitsmechanismen bereits versagt.

Erster Schritt aller (sicherheits-) Bemühungen sollte es daher sein seine Daten und Dienste und wie einzelne Personen damit Umgehen zu kennen und einen "Regelgerechten Umgang" zu definieren. Diese Definition ist dann eine Security Policy. Beim kochen einer solchen Policy ist es wie bei allen anderen Gerichten auch, die genaue Würze muss gefunden werden und eventuell das Rezept überarbeitet bis es schmeckt, den meisten zumindest.

In einem reinen IT Unternehmen sind die Ansätze einer Policy natürlich weit gefächert, da es unter Umständen eine Vielzahl an Systemen gibt die über viele Abteilungen verteilt sind. Was in meinen Augen hilft ist

  1. Entscheiden Sie sich für ein einheitliches Betriebssystem das einem gewissen Mass an Sicherheit mit sich bringt. Lassen Sie sich hier von den Adminsitratoren und Entwicklern beraten, denn diese sind es welche das System warten müssen, und man kümmert sich wohl am liebsten um etwas das man nicht einfach so aufs Auge gedrückt bekommen hat. Entscheidend sollte sein das es weit verbreitete Software ist, welche von einem Unternehmen oder einer recht grossen Community getragen wird, dann kann man sehr sicher sein das es Zeitnahe Bugfixes zu aktuellen Problemen gibt.

  2. Reden Sie mit den Abteilungen. Nehmen Sie die Abteilungsleiter beiseite und lassen Sie sie Teil des Processes sein. Fragen Sie nach den Daten die der Abteilungsleiter für Schützenswert hält.

  3. Machen Sie Self Assesments. Also hinterfragen Sie Ihre Sicherheit in einem festgelegten Intervall. Testen Sie Ihr System, dafür gibt es unzählige Software, und geben Sie die gewonnen Informationen an die betreffenden Abteilungen weiter.


Abschliessend noch ein paar Links die helfen könnten:

  1. heise Security Online eine gute Quelle für Sicherheitsthemen

  2. Ubuntu Security aktuelle Bugfixes von Ubuntu

  3. OpenVas ein Security Scanner


 

Montag, 15. Oktober 2012

MySQL/MariaDB Replikation

Heute beschäftigen wir uns kurz mal mit dem Thema "MySQL Replikation".
Kurz?
Ja! Lange dauert das ja nicht :-)

Nehmen wir mal die Ausgangssituation
Einen Debian Server MASTER mit MySQL
Auf die Installation von Debian bzw MySQL muss man wohl nicht mehr im Detail eingehen, diese ist bei Debian ja so schön automatisiert das nichts schief gehen sollte, und
Einen Debian Server SLAVE mit MySQL
Wenn man die beiden Server zufällig in einem Rack haben sollte, so bevorzuge ich es an eth1 einfach ein Crosskabel anzuschliessen (Anmerkung!: Ein Crosskabel braucht man eigentlich nicht mehr, neue Neztwerkkarten sind so toll das sie dies alleine tun können).
Somit konfigurieren wir uns auf beiden Servern ein Netz, zB
auto eth1
iface eth1 inet static
        address 10.0.1.X
        netmask 255.255.255.0
        network 10.0.1.0
        broadcast 10.0.1.255

10.0.1.X sollte hierbei das X als 1 auf dem Master und 2 auf dem Slave gesetzt sein. Nach einem  /etc/init.d/networking restart sollte eine ping Probe möglich sein
root@mysql-master:~# ping 10.0.1.2
PING 10.0.1.2 (10.0.1.2) 56(84) bytes of data.
64 bytes from 10.0.1.2: icmp_req=1 ttl=64 time=3.95 ms

Nun beginnen wir mit der Arbeit auf dem Master
Als erstes editieren wir die /etc/mysql/my.cnf, hier suchen wir die Zeile

  • #server-id            = 1

  • #log_bin              = /var/log/mysql/mysql-bin.log


und kommentieren sie ein, danach

  • mysql -p


um in das MySQL Interface zu gelangen
 
GRANT SUPER, RELOAD, REPLICATION SLAVE ON *.* TO 'repl'@'10.0.1.2' IDENTIFIED by '<ANYPASSWORD>';flush privileges;

 

Nun brauchen wir noch den Grunddatensatz, hierzu packen wir uns einfach das data_dir welches wir in /etc/mysql/my.cnf finden. Im Falle von Debian sollte dies /var/lib/mysql sein

  • cd /var/lib/mysql

  • tar cfz /tmp/mysnap.tar.gz .

  • scp mysnap.tar.gz 10.0.1.2:


Letzter Punkt auf dem Master, wir brauchen das aktuelle Logfile
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      106 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)



UPDATE!!! Zu den letzten zwei Schritten gibt es auch noch etwas sehr einfaches das dies ersetzt
mysqldump -c --single-transaction --master-data -p  > /rootdump.sql

In diesem Dump merkt sich MySQL dann auch die Binlog Position etc.



ACHTUNG! Debian hat einen eigenen Systemnutzer, mit dieser Methode wird auch sein Passwort überschrieben, was dazu führt das MySQL auf dem Slave gleich nicht mehr gestartet werden kann. Workaround ist relativ simple, man kopiere sich die Passwörter aus /etc/mysql/debian.cnf und ersetze diese auch auf dem Slave.

Nun machen wir auf dem Slave weiter
Auch hier suchen wir den server-id Eintrag, setzen ihn aber auf 2

  • server-id            = 2


Nun entpacken wir unser Archiv, wenn Sie unsicher sind können Sie hier auch im my.cnf File nachsehen welches das data dir ist

  • tar xfz mysnap.tar.gz -C /var/lib/mysql/


Im letzten Schritt
mysql -p
CHANGE MASTER TO
MASTER_HOST="10.0.1.1",
MASTER_USER="repl",
MASTER_PASSWORD="<ANYPASSWORD>",
MASTER_LOG_FILE="mysql-bin.000001"; 
START SLAVE;

Abschliessende Kontrolle:
So, eigentlich sollte unsere Arbeit hiermit erledigt sein, wir testen unser tun natürlich noch, ich kopiere mit Absicht nicht die ganze Zeile der Ausgabe, aber so ungefähr sollte sie aussehen

Auf dem Master
show processlist;
35 | repl | 10.0.1.2:36874 | NULL | Binlog Dump |  914 | Has sent all binlog to slave; waiting for binlog to be updated | NULL

Auf dem Slave, so etwas wie
show processlist;
Waiting for master to send event | 10.0.1.1    | repl        |        3306 |            60 | mysql-bin.000001 |                 106 | mysqld-relay-bin.000002 |           251 | mysql-bin.000001

ACHTUNG! Fast hätte ich es vergessen. Was mir auch sehr spät bei der Kontrolle aufgefallen ist, ist das Debian standardmässig nur auf 127.0.0.1 hört daher muss die bind-adresse noch angepasst werden.

  • bind-address = 0.0.0.0


Danke das wars :-)

Mittwoch, 10. Oktober 2012

Ioncube Loader

Ioncube Loader
Der Ioncube Loader. Wird immer beliebter. Er ermöglicht es zwar php Anwendungen an einen Kunden herauszugeben, verhindert aber das dieser Kunde den Quelltext sehen kann.
Somit ist er Ioncube Loader natürlich für Unternehmen interessant die primär mit ihren Webentwicklungen Geld verdienen wollen.

Nun haben wir auch vorgesehen dieses beim nächsten Update unserer Web_Skeletons diesen endlich mal fest einzubauen, bis dahin ist aber immernoch ein wenig Handarbeit von Adminseite nötig.
Aus diesem Grund beschreibe ich doch nun mal kurz das allgemeine Vorgehen um einen Ioncube Loader in Betrieb zu nehmen.

Also erstmal zum Abgleich die Grundlagen

  • Apache/2.2.16 (Debian)

  • PHP 5.2.6-1 with Suhosin-Patch 0.9.6.2


Wir laden von der oben genannten Seite das passende Linuxpaket

  • http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz


oder

  • http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz


nach dem entpacken haben wir folgende Verzeichnisstruktur

home01:~/ioncube# ls
ioncube_loader_lin_4.1.so ioncube_loader_lin_5.1_ts.so
ioncube_loader_lin_4.2.so ioncube_loader_lin_5.2.so
ioncube_loader_lin_4.3.so ioncube_loader_lin_5.2_ts.so
ioncube_loader_lin_4.3_ts.so ioncube_loader_lin_5.3.so
ioncube_loader_lin_4.4.so ioncube_loader_lin_5.3_ts.so
ioncube_loader_lin_4.4_ts.so LICENSE.txt
ioncube_loader_lin_5.0.so loader-wizard.php
ioncube_loader_lin_5.0_ts.so README.txt
ioncube_loader_lin_5.1.so

natürlich kann man an dieser Stelle den loader-wizard in den Webspace verschieben, die seite aufrufen und der Anleitung folgen, da es aber nun schon ein paar mal getan wurde, geht es so weiter:
Wir verschieben alle Dateien nach /usr/local/ioncube (wahlweise auch nur die die wir wirklich brauchen in unserem Falle also die ioncube_loader_lin_5.2.so)
Wir erstellen folgenden Eintrag in der /etc/php5/apache2/php.ini am besten direkt ganz am Anfang der Datei, da es sonst (zumindest bei mir) öfter zu Problemen kommt
zend_extension = /usr/local/ioncube/ioncube_loader_lin_5.2.so

Apache neustarten und Thats it!

Dienstag, 25. September 2012

Recheck eines Nagioschecks

So, meine 2 Wochen Urlaub sind rum. Also vielleicht auch mal wieder Zeit was zu schreiben. Heute morgen bin ich über ein altes Skript gestolpert welches für einen kleinen Post genau das Richtige zu sein scheint.

Wir checken zB den Debian Paketstatus einmal am Tag. Kommen jetzt über Nacht ganz viele dieser Updates, so haben wir für 24 Stunden ein schönes rotes Nagios. Also macht man Updates und rechecked den Service, alleine schon wegen der Übersicht. Aber muss man das von Hand machen? Nö!

#!/bin/bash
# kickrecheck.sh 
# by j AT xadmin DOT info

if [ -z "$1" ];
then
echo "Please tell me which check to kick by usage: sh kickrecheck.sh <service>"
else
for host in `grep 'host_name=' /var/nagios/rw/status.dat | cut -f 2 -d "=" | sort | uniq`
do
/usr/bin/printf "[%lu] SCHEDULE_SVC_CHECK;${host};$1;1110741500\n" `date +%s` > /var/nagios/rw/nagios.cmd
done
fi

Der einfache Aufruf sh kickrecheck.sh apt sorgt nun dafür das alle apt services auf jedem Server neu gechecked werden.

Geht natürlich auch mit anderen :-)
UPDATE!:

Was Squeeze da anscheinend ein wenig anders macht
nagiosserver ~ # locate status.dat
/var/cache/nagios3/status.dat
nagiosserver ~ # locate nagios.cmd
/var/lib/nagios3/rw/nagios.cmd
Also
#!/bin/bash
# by j AT xadmin DOT info

if [ -z "$1" ];
then
echo "Please tell me which check to kick by usage: sh kickrecheck.sh <service>"
else
for host in `grep 'host_name=' /var/cache/nagios3/status.dat | cut -f 2 -d "=" | sort | uniq`
do
/usr/bin/printf "[%lu] SCHEDULE_SVC_CHECK;${host};$1;1110741500\n" `date +%s` > /var/lib/nagios3/rw/nagios.cmd
done
fi

(Nagios) SMS senden via sms4.de

(Nagios) SMS senden via sms4.de
Ich hätte da mal wieder eine Howto von gestern
Auf dieser Seite:
http://sms4.de
sendsms4.py

es kann ja mal vorkommen das es wichtige Ereignisse in der Infrastruktur gibt welche uns zwar von Nagios gemeldet werden aber wir sind im Wochenende oder ähnliches. Handelt es sich hierbei Aber zb um das Mailgate oder die Klimaanlange interessiert es uns ja bestimmt doch.

Einfache Lösung!?! Einfach per sms benachrichtigen.

Mit einem Anbieter wie http://sms4.de geht es hierbei wohl am einfachsten. Aber der Reihe nach.

Schritt 1
Einen Kontakt anlegen.
Hierzu legt man eine datei contacts.cfg an und in dieser einen Kontakt. Der Einfachheit halber und damit man Kontakte unterscheiden kann lege ich zu jedem User der eine SMS bekommen will in der Datei contacts-sms.cfg einen sms Kontakt an.

define contact{
contact_name Testuser-sms
alias Ein test user
service_notification_period 24x7
host_notification_period 24x7
service_notification_options u,c,r
host_notification_options d,u,r
service_notification_commands notify-by-sms
host_notification_commands host-notify-by-sms
pager 49123456789
}
Für üns interessant ist hierbei die Angabe Pager, hier lässt sich nun eine Handynummer eintragen.
Wichtig! ist auch das der Eintrag der notification richtig gesetzt ist.

Schritt 2
Ein Befehlsskript findet man unter sendsms4.py welches ich in python geschrieben habe. Nun muss man diesen Befehl noch in Nagios anlegen.
Eine Datei misccommands.cfg enthält das script

define command{
command_name notify-by-sms
command_line /usr/local/bin/sendsms4.py $CONTACTPAGER$ "$NOTIFICATIONTYPE$: $HOSTNAME$: $SERVICEDESC$ is $SERVICESTATE$ ($SERVICEOUTPUT$)"
}

Somit ist nun möglich das ganze Abzuschicken.

Schritt 3
Nun müssen wir noch einmal alles verheiraten. Hierzu habe ich in der Datei contactgroups.cfg Eine Gruppe für die neuen sms Kontakte angelegt. Nun wird bei jedem Service, die notification auf unserer sms gruppe gesetzt. Hier die linux-admins-sms

define service{
host_name linux-server
service_description check-disk-sda1
check_command check-disk!/dev/sda1
max_check_attempts 5
normal_check_interval 5
retry_check_interval 3
check_period 24x7
notification_interval 30
notification_period 24x7
notification_options w,c,r
contact_groups linux-admins-sms
}

Und das War es auch schon!

Skript Nachtrag

damit mein Python Skript auch richtig funktioniert gibt es ein paar Sachen zu beachten.

1 Die Konfiguration bzgl der Zugangsdaten findet im Skript statt, also einfach Ihre Accountemail nehmen und dann die Daten einfügen.

2 Es gibt eine log Datei. Diese muss aber von Hand angelegt und frei gegeben werden. Natürlich ist der Pfad der Datei auch im Quelltext editierbar. Per default sollten sie so vorgehen


echo '' > /var/log/sendsms4.log

chmod 777 /var/log/sendsms4.log

Donnerstag, 13. September 2012

Job of the (to)day

Today i had a lot of fun (!!!!)

I worked with Nginx to establish a fill working redirect and proxy server. There are customers which like the idea of having multiple domains pointing to the same webserver. There are several ways to do this. Mostly used is apache with reddirets or proxy settings. The real way to do it in my eyes is nginx.

So what do you need, lets take a look at basic 301 redirects
server {
server_name test.xadmin.info;
reweite ^ http://example.com;
}

adding this to your default.conf of nginx sets redirecting from test.xadmin.info to example.com. quite easy(!).

UPDATE:
In addition to above you can do "hidden" redirects which dont show the url you refer to. I used to do that via proxy_pass

server {
server_name xadmin.info;
location / {
proxy_pass http://www.example.com;
proxy_redirect off;
proxy_set_header Host www.example.com;
}
}

The above code does that. So any connection to xadmin.info goes directly to www.example.com whitout changing the url bar in your browser.
proxy_set_header Host www.example.com;

Passes the refer url to the other webserver. This is needed if on example.com would run more then one Apache (lighty , whatever) instances. Not passing the Host would let to using the default host on the other side.

Montag, 10. September 2012

Finally it works... Canyon Edge view_ Mageia

on the weekend i gave a try to Mageia.

It took a while to set it up, mainly caused by graphic issues. My Nvidia 7200 GS isnt that well supported by the shipped moveau driver. And setting up the mageia box is a bit tricky if you dont have an x windows to set your wifi and such things. But some guys on the mageia forum pointed me in the right direction. Comming from openSUSE it is quite different.

Mageia vs. openSUSE

  • zypper VS rpmi and drake
    installing the Software works fine on X window, there is a "great mageia control center", trying using the console leads to urpmX where X could be i for install, e for erase anf f for find (i guess)

  • SUSEFirewall VS shorewall
    i was really happy to se that mageia have a setup and running firewall right after install


in addition, i first tried gnome, which sucks, really. I dont like it, and it died right after reboot, giving me everything twice, logout button, starting button, everything. KDE looks very good and was easy to install using just one meta package. Yes openSUSE also has this meta packages, but last time i failed using it :-)

I dont know how long i will use it... we will see!

Bacula und Nagios

Bacula und Nagios
Wenn man eine Monitoring Lösung wie Nagios am Start hat, dann möchte man Zwangsläufig das die Backuplösung sich hier integriert. Wenn man dann sich umschaut, findet man einiges an HowTo Lösungen, die irgendwie alle nicht so recht wollten.
Ich habe mich jetzt mal einen Tag mit der Problematik befasst und fasse mal zusammen was man tun muss...

Schritt 1: PASSIV CHECK
Bacula soll nach beendetem Job uns eine Information geben was mit dem Job passiert ist, hierzu erstellen wir einen Passivcheck innerhalb von Nagios, dieser könnte so aussehen
define service {
hostgroup_name bacula
service_description bacula-fd
use generic-service
check_command check_dummy_crit
max_check_attempts 1
check_interval 1440
retry_interval 1440
check_period workhours
notifications_enabled 0
register 1
}

check_dummy_crit ist hierbei das check_dummy script, welches immer critical ist, es sei denn es wird, in unserem Fall von Bacula, auf critical gesetzt.

Schritt 2: Bacula2Nagios
Wir brauchen für Nagios ein Script, dieses soll dafür sorgen das die Information von Bacula an nagios übermittelt wird. Hierbei müssen wir beachten, dass dieses Script nur auf dem Director liegen muss!
Denn, wir werden später die Funktion RUN AFTER JOB benutzen, ich musste auch lange recherchieren bis mir auffiel das der Director diesen Aufruf macht und nicht der Client :-)
Unser Script sieht dann so aus:
#!/bin/bash
# Bacula2Nagios V1
#/usr/bacula2nagios.sh
# args:
# $1: Job name
# $2: Status (0:OK)
# $3: Plugin Output
if [ $2 -eq 0 ]
then status=0
else status=2
fi


/bin/echo "$1;bacula-fd;$status;$3" | /usr/sbin/send_nsca -d ';' -c /etc/nagios/send_nsca.cfg -H

MAN BEACHTE!: Es ist hierfür wichtig das der "Job name" auich gleich dem Hostname in Nagios ist.

Schritt 3: RUN AFTER JOB
Nun fügen wir in jede JobDefs folgende beiden Zeilen ein

Run After Job = "sh /usr/lib/nagios/plugins/bacula2nagios.sh \"%n\" 0 \"%e %l %v\""
Run After Failed Job = "sh /usr/lib/nagios/plugins/bacula2nagios.sh \"%n\" 1 \"%e %l %v\""

Hierbei ist
%n : der Jobname
0/1: der Nagios Wert 0: OK 1: CRIT
%e der Job exit status
%l der job level
%v das Zielvolume
Requirements:
Nagios
Bacula
NSCA
bash und vi:-)
Viel Spass damit

Donnerstag, 6. September 2012

openSUSE 12.2 is out now & Event

So finally after some delay it is done, and 12.2 is ready!

To be honest i did not test it currently, i had some issues with rhe RC2 so i guess i will wait a day or two. So i gone post my experience the next week, if you want to know some details take a look at:

Or get your own copy

And if you want to talk about openSUSE 12.2 there will be


http://www.it-tag-saarland.de/


on 21. September 2012


at Saarbrücken


Andreas will be there an show a fresh install of openSUSE 12.2 at the OpenSaar e.V. booth. Maybe after my work i will show up to.

Dienstag, 4. September 2012

Roundcube am limit

Letztens ist es passiert das Roundcube auf einem unserer Rechner am Limit war.



Soll heissen das die Ausgabe von top eine Wait von 85% zeigte, und damit einhergehend natürlich auch Loginzeiten (bzw auch Seitenaufbauzeiten) jenseits der 1 Minute Grenze.


Der erste Lösungsansatz schlug leider fehl. Dieser bestand darin den Apache Server und den MySQL Server neuzustarten. Doch wie gesagt, dies führte zu einer Verbesserung für gerade mal 3 Minuten. Bevor die Wait auch hier wieder über einen Wert von 60% ging.
Allgemein sollte man vielleicht wissen das Wait zumeist mit Festplatten zugriffen zusammenhängt, also ein Prozess würde zwar gerne etwas tun, muss jedoch auf die I/O warten.

Also, da Roundcube primär auf MySQL basiert, bzw diese Datenbank als Backend nutzt, fand sich hier auch ein besserer Lösungsansatz und zwar über das löschen/leeren einer Roundcube Tabelle in Mysql.
Hierzu betrachtet ich mir die Zugriffe in MySQL selbst und fand schnell heraus das Roundcube mittels einer Tabelle eine Art Cache simuliert.Die Lösung und Vorgehensweise:



  • mysql -p



Dann natürlich das login in die Datenbank als root mit Passwort.



  • use roundcube;

  • select count(*) from cache;



Dies brachte einen Wert jenseits von 160.000 zurück.



  • truncate cache;

  • quit;



Die führte dazu das es ziemlich genau 3 Monate sehr gut lief, bis der Speicher auch hier wieder voll war.

Samstag, 1. September 2012

Schnelle Hilfe mit IPTABLES

Eines in meinen Augen beste und schnellste Tool wenn es um einen Schuz des eigenen Systems geht ist Iptables, die seit Kernel 2.4.x integrierte Firewall. http://de.wikipedia.org/wiki/Iptables. Natürlich gibt es hierzu mehr Howtos als man alleine lesen kann. Trotzdem möchte ich die IPtables noch einmal kurz beleuchten, da ich sie im täglichen Geschäft immer mal wieder brauche.

So habe ich in meinem Dokumenten Ordner eine Datei die nennt sich "iptables_fastuse.txt" hier befindet sich eigentlich nur eine kleine Übersicht über verschiedene Regeln die ich schonmal gebraucht habe, mit einer kleinen erläuterung was diese einegtlich tun (ich vergesse das nämlich dauernd).

Der Erste aufruf in meiner liste

iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP wie sich ebstimmt vermuten lässt, erstellt diese eine Regel welche jeden reinkommenden Traffic (INPUT) von einer gewissen Adresse (-s xxx.xxx.xxx.xxx) nicht an (DROP). Hierbei steht das -A für Append, also die Regel wird am Ende der "regelnliste" angestellt.

Wie sich also zeigt ist der Aufbau der iptables sehr einfach gehalten. Wir unterscheiden also eigentlich auf der einen Seite

INPUT
OUTPUT

hierbei gilt natürlich auch die Unterschiede zwischen -A -I -D zu beachten.
-A fügt die regel hinten an die Liste an
-I fügt die regel vorne in die Liste ein
-D löscht die passende Regel wieder aus der Liste

und auf der -j Seite (Also der "Was tun wir damit")

ACCEPT
REJECT
RETURN
DROP

Zunächst noch ein/zwei ganz wichtigen Hinweisen. Die Regeln der iptables werden von oben nach unten durchgegangen, also die erste Regel vor der Zweiten und so weiter. Somit muss man etwas aufpassen, wenn das System eine Default auf ACCEPT hat, dann muss man Verbindungen verbieten, ist die default ein DROP so kann man dies natürlich mit ACCEPT steueren.
In den folgenden Regeln gehen wir von einem default auf ACCEPT aus.

Löschen der ganzen Regeln geht einfach mit iptables -F, dan ansehen der Regeln via iptables -L.

Kommen wir nun also zu ein paar anderen Regeln, die man etwas besser benutzen kann, und ich denke das sie ein paar Feinheiten von iptables aufzeigen die man täglich benutzen kann.

iptables -A INPUT -p tcp --syn --dport <<PORT>> -m connlimit --connlimit-above <<ANZAHL>> -j REJECT --reject-with tcp-reset 
Dies ist ein sehr schöner Befehl, mit Hilfe von connlimit sperren wir den gleichzeitigen Zugriff von einer IP auf unseren PORT sobald diese über ANZAHL hinaus gehen, sehr schön um zB Kundenzugriffe auf Datenbanken einzuschränken

Dann erwähnen wir im gleichen Atemzug natürlich auch noch

iptables -A INPUT -p tcp -m limit --limit 1/s --limit-burst 3 -j RETURN 
Der Limit Funktion, anders als der connlimit, ist es egal von welcher IP die Zugriffe kommen sie sorgt eibfach dafür das in diesem Fall nur 1 Zugriff pro sekunde über tcp möglich ist. Diese Kommando lässt sich auch mit --dport PORT erweitern, um also einen Zugriff auf diesen Port zu beschränken

Es hat sich auch bewährt das ganze als Log zu schreiben, da man ja nachvollziehen möchte wen man so rausgeschmissen hat, folgender Eintrag vor dem eigentlichen Eintrag (z.B. einer der Erste) sorgt dafür das dies als zeile in /var/log/kern.log gespeichert wird

iptables -A INPUT -p tcp --syn --dport <<PORT>> -m connlimit --connlimit-above <<ANZAHL>> -j LOG man beachte also das für das REJECT ein LOG benutzt wird, also wird es in diesem Falle nur gelogt, die eigentliche Verbindung funktioniert aber trotzdem. Deshalb muss auch dieser Eintrag _vor_ dem Reject stehen, da ansonsten die Verbindung unterbrochen wird und kein LOG gschrieben wird.

Dienstag, 28. August 2012

very quiet here...

... so i maybe i should tell you what i have done the last weeks.

  1. First of all i was on vacation. Just reading some old books like "Sword of thruth" from Terry Goodkind. I saw "The Legend of the seeker" on Lovefilm and must read the books again, and there was much missing from the story. So i guess if you really like fantasy you should read the books too

  2. I was at Froscon and listend to some lectures on MariaDB and Python. Monty gave a talk on MariaDB which was quite impressing, i guess they are able to be the leading MySQL Server during the next years. I also visited the booth of SkySQL and talked to the sales people. They will support MariaDB 10-galera which maybe is a good replacement for the MySQL Cluster.
    In addition to that i joined the Froscon Crew and helped at the entrance and on the social event.

  3. I tried to test the RC2 of openSUSE 12.2 which was not fun, the installer reset my display every 6 seconds and (usr/sbin(grub was missing so i couldnt install the system completly. But maybe there is an issue with my desktop PC at home, i also had problems re installing 12.1, grub does not work, installing from the live system worked. strange!

  4. On my work i currently do a lot of stuff on DNS and Suse Enterprise regarding an hugh setup. Maybe i can provide more information in an week or two. I am playing around with an AutoYAST setup, stay tuned


Thats it, or maybe not, i turned 33 last week....

Donnerstag, 2. August 2012

[FreeBSD/SUSE] webhosting setup idea (?)

Last week i had a short discussion on how to setup an webhosting server. I had a idea which would, or better should, work on FreeBSD and SUSE, the basic setup would be build with

On FreeBSD side

  • Jails

  • Nginx


On Suse side

  • Containers

  • Nginx


As the usage of containers and jails are quite similar to each other i will mostly describe the idea with the word jails.

The usage of Nginx:
Nginx is maybe one of the most powerfull webservers you can use. A really great job it does when it comes to use as a proxy. So we use Nginx as proxy which takes the external traffic and balance it to the jailed apache. So, next week i have my summer holidays. And i guess i will work on this idea.

The usage of Jails/Containers:
With the help of Jails we can reduce the system usage of a single customer. It works like you know it from chroot. But we can limit memory and cpu usage of each jailed environment. So we setup an very minimal apache system and jail it, we can give an ip adress to each jail like 10.1.0.2 which we can proxy with nginx.

 

Maybe if someone of  an idea, or already use such a setup please send me an mail to
j AT stephanws DOT de and tell me :-)



Links:

Hopefully i can report a working setup during the next two weeks (keep fingers crossed :-)

Sonntag, 22. Juli 2012

Trip to Froscon 2012

This year i will travel to Froscon in Bonn/Germany. I currently booked my hotel which is just 17km away from the Univerity.

I will arrive on Friday during the day. So if someone is around and would like to have a beer :-) just tell me. I will hopefully join the social event on friday.

There are several talks that i really want to hear:

Day 1 (Saturday):

Day 2 (Sunday):

And i will be at some (i hope) very exiting booths and i have a lot of question:

  •  openSUSE

  • SkySQL

  • FreeBSD


here will i spent hopefully some hours and have a good time :-)

 

So see you in Bonn

Donnerstag, 19. Juli 2012

Give it a try

Caused a long experience using personal computers for over 16 years there are several operating systems which show up in my mind mostly every year. These are

  • SUSE (now: openSUSE)

  • Solaris  (now: OpenSolaris or OpenIndiana)

  • and FreeBSD


When i remember right, my first SUSE was 6.0 which i got from a friend who buyed a copy. I started with Linux some months ago with an RedHat 5.1 i bought from DataBecker. During the years i switched several times to other distributions and gave them a try. FreeBSD was the second "open source" software i used.  It was quite different, but it was great, later when i got an very old laptop, it was an Siemens Nixdorf 486, it was great to have an OS like FreeBSD which ran great on it. I used Solaris because iw was a fan of SUN. I guess had up to 15 Sparc machines around sometimes (IPX, IPC, Sparcstation, Ultrasparc).

So sometimes these OSes come back to my mind and i give them a try.

Currently i am locked in on an PC-BSD machine. And guys, like the topic says: GIVE IT A TRY

It runs great. Very easy installation. And my PC, which is not that old, runs better than before (switched from opensuse 12.1)
last pid: 44624; load averages: 0.16, 0.50, 0.79 up 2+22:23:04 18:59:09
132 processes: 1 running, 130 sleeping, 1 zombie
CPU: 8.7% user, 0.0% nice, 2.4% system, 0.2% interrupt, 88.8% idle
Mem: 1174M Active, 1382M Inact, 601M Wired, 83M Cache, 353M Buf, 92M Free
Swap: 2000M Total, 3692K Used, 1996M Free

and having Eclipse, Chromium, Pidgin, several xterms, an openvpn gate and  Sylpheed open. Well that doesnt worked on opensuse before.

So if you have the time and resources, go to http://www.pcbsd.org/ download a livecd and try it!

 

Dienstag, 17. Juli 2012

Tell the users

Sometimes i really hate it. You tell the people that you will poweroff a system for maintainance and if you log in some minuits before you see all users are doing something on this system, so what to do?

First of all tell the users to logout, these can be done by a simple wall message. wall will send an message to all logged in users, so create a message file


cat message.txt
''''''''''''''''''''''''''''''''''
System will switch off on 7:30 UTC
''''''''''''''''''''''''''''''''''

and do a

wall message.txt

now all logged in users will see this message on their screen.
After that i will do an

shutdown -h MAINTAINANCE_POWER_OFF

which will shutdown the system autmatically after "some minuits" and will repeat posting the shutdown every minuite during the last 5 minuits.

Thats it

Montag, 16. Juli 2012

[Scripting] IP and reverse

I currently writing a script that does the initial server setup. As we using kerberos it is needed to have the IP and the PTR record setup. So i first did a big ugly host | cut -d something -f 4 which was could easily run into trouble if theres a change in the domain. So i searched for an more easier way, and found dig.


dig x +short ${NAME}.${DOMAIN}

simply returns the IP

jstephan@linux-cyqa:~> dig x +short heise.de
193.99.144.80

and if you want the PTR its easy too

dig -x ${IPADDRESS} +short

which will return

jstephan@linux-cyqa:~> dig -x 193.99.144.80 +short
redirector.heise.de.


After that i do an simple if in my bash script

if [ '$REVIP' == '${NAME}.${DOMAIN}' ]; then
...
fi

Donnerstag, 5. Juli 2012

Running PostgreSQL on openSUSE

Last weekend i started setting up a new project. It will be an normal Apache and PHP webbased project with an PostgreSQL database. So i need to set it up.
First of all how do we get. Maybe i should start with the information that i choosed 12.2 (currently Factory) as the version of openSUSE.
While searching on software.opensuse.org i found that there is a database repo.
http://download.opensuse.org/repositories/server:/database:/postgresql/openSUSE_Factory/

Which i added via YaST.

zypper in postgresql postgresql-server

should do the rest. And your database is ready to get configured.
Now switch to the new postgres user.
su - postgres

and initialize the database
initdb -D /var/lib/pgsql/data/

To start the database you need to
pg_ctl -D /var/lib/pgsql/data -l pglog.log start

and your database should be running. Now we need to add our first user and database.

postgres@linux-0ryq:~> createuser -P mytestuser
postgres@linux-0ryq:~> psql
postgres=# CREATE DATABASE mytest;
CREATE DATABASE
postgres=# GRANT ALL ON DATABASE mytest TO mytestuser;
GRANTED

So, this setup should work fo any local connection to the database. If you want to connect from another host you need to adjust your data/pg_hba.conf and add a line like

# TYPE DATABASE USER ADDRESS METHOD
host all all all trust

or any host you want. If you want to connect from 10.1.0.1 you fust need to set this at address.
Changing the hba conf should force a restart of the database
pg_ctl -D /var/lib/pgsql/data -l pglog.log restart

will do this.
So thats it, more to follow.

Donnerstag, 21. Juni 2012

Lets talk about the benefits

There are a lot of thoughts around regarding openSUSE this days. Sometimes, i think the discussion leads into the wrong direction. So first of all, lets say it clear

I am an openSUSE user.

I use it on my home PC, on my Notebook on at least a home and a productive server, even on my desktop at work i have it. Why do i use it. Mostly because i like openSUSE. Maybe because its mostly developed in Nürnberg/Germany. But for sure i use it cause its great! openSUSE is a great piece of work. Okay, for sure i play around with some other distributions like Centos, Debian, Ubuntu, Openindiana and illumian, but that never changed my mind.

So lets talk about the benefits:

  1.     We have OBS. I guess this sentence could stand alone. For those who are not in touch with it, let me explain. I will not explain what OBS is, that would much blabla, for me its a point where i can get Software! Thats it, i search OBS for my latest postgresql or newest apache (firefox, Office, whatever) and for sure there is a banch of people who mantain it and you can easily add it to your openSUSE, always the latest version, so stay up to date, no other distribution have it (okaym, no other distribution give it as a repo, for sure you can use Arch or Gentoo and build ityourself)

  2.     We have Yast. The maybe greatest administration tool you can get. A single point where you can configure mostly all parts of your system. There is autoyast if you want to clone your systems.

  3.     We ship BtrFS. And we have developers who work on it. And thanks to snapper we have it integrated into yast and zypper. So you can rollback any missconfiguration you have done.

  4.     So, we have zypper. Zypper is the packagemangment tool you need. Take a look at the options, its great and well designed. Even you can simply interact with ruby or perl with the libzypp.

  5.     There is a great community around. You can get help via forums, IRC, mailinglists even google+ and facebook will work. We support many many languages.

  6.     We have local ambassadors. Take a look around.Sure you will find someone close to your location.

  7.     We have people working hard on openSUSE. The real stars behind it, like Jos, just to mention one, which i think have sleeples nights just to make openSUSE better and better.

  8. And, we want you to get involved.


So, have a lot of fun :-)

 

Donnerstag, 7. Juni 2012

Thoughts about Openindiana & Co

So, i tried it. But i am back on a very very short journey to the (free or open or just SUNs thought ho it should be) solaris world.

I guess it is time to review what i thought i could find there and what i thought. To be honest, if parts ore everything of my opinion is wrong, just tell me, i really would be happy if iam wrong and there would be nothing i would like to do more than drop my Linux box and switch back. I promise!

So, lets start with openindiana. Openindiana is great. But there are just a few people working on it. This guys works really hard! But i think it will take almost another year to have a stable release. What you can do, take the iso and install your system, it runs great, the performance is okay but the boot takes quite long, but that is caused by the solaris kernel. You can install the system and you can work with it. I worked with Netbeans, Firefox and Thunderbird, and it really fits my needs during normal days.
A deficit is the lack of software you get. The repos doesn't have much and most software is a bit outdated, currently you will not be able to get any security patches or something like that. The kernel is still the same as in opensolaris. So currently you can have a fork of opensolaris, nothing else.
There are quite a few people working hard on improving this point, but if you are new you don't find many things you can work with. I was talking to people and sure i got help, the guys spend a lot of time trying to help, but i guess everybody of the openindiana crew has his special way of fixing things and build software.

That just brings me to the other piece, illumian. Here really everybody seems to have his own branch. If you talk to 3 people, and i didn't find much more willing to talk on the freenode channel, anybody points you to a different git, mercurial or whatever repository which should help build software, but i never get it done, maybe my fault.

 

So what i will do, i will keep an eye on the mailing list and hope (really really hope) that they can build a release. If they provide a stable howto on their wiki page on how to build software i will try again. I will _NOT_ drop the virtualmachine which i tried building with. I will start the machine from time to time, perform an pkg update and try gmake build again. Maybe we meet again next year or so, so long, this should be the end of my openindiana journey...

Donnerstag, 31. Mai 2012

Linux vs. Solaris: Crontab

The crontab on solaris is a bit different to Linux.

Great is that you can use the same command on both system to get access

crontab -e

A bit strange, if you want to add a job which runs every 5 minuits you simply add a line like on Linux:

*/5 * * * * command you want to run

On Solaris this is

0,5,10,15,20,25,30,35,40,45,50,55 * * * * command you want to run

According to my research via google this is caused by the V7 standard which Solaris uses.

Dienstag, 29. Mai 2012

Dont miss illumian!

As we all know, okay, some of us know, Opensolaris is dead for a while now. Oracle closed the community some weeks after the bought SUN. I really liked Opensolaris. So iam really glad that the ideas was picked up.

So ILLUMOS was formed. Illumos basically provides the SUN Solaris kernel. There are two projects which use the kernel and the newly formed illumos-userland. These are

  • Openindiana
    Openindiana is a full fork of Opensolaris. Which provides the same environment as solaris does. So you have zones, crossbow, zfs, etc. There is no difference betwen opensolaris and openindiana and you can upgrade from opensolaris to openindiana.

  • Illumian
    We have the same base benefits like openindiana but we have APT. The repomangment like in Debian.  Illumian (if i got it right) could be the next base distribution for NEXENTA which also is a combinaton of solaris and ubuntu.


I will try to work on the illumos-userland to bring some more packages and fixes. To be honest it is a bit hard. Also because there is heavy work going on and every week brings some new features and the base changes. But i will try to do it :-)

So what do i miss?

  • MariaDB will be one thing i work on, i guess MariaDB should be part of illumos-userland

  • Keepalived the loadbalancer software

  • Maybe postfix would be nice

  • ... TO BE CONTINUED

Donnerstag, 24. Mai 2012

What do you use? dyndns?

i guess there are many answers to the question above. The most famous maybe is DynDns. I just found a solution which seems a bit 'nicer'. Have you ever heard of

dynni

 

 

well its new.

  1. It supports ddclient

  2. It supports inadyn

  3. It has a resolver service

  4. It supports mail routing

  5. All nameservers are based in high quality data centers across Germany

  6. Its absolutly free


So try it.

I tried it and it works! I use it for my openindiana homebox. The steps to use it are quit simple.

  1. Create an new account at https://dynni.com

  2. Get ddclient (maybe from http://sourceforge.net/apps/trac/ddclient)

  3. Setup the config
    ssl=no
    protocol=dyndns2
    use=web, if=whatismyip.org
    server=update.dynni.com
    login=
    password=''

    and adjust login and password

  4. Start ddclient
    ./ddclient -file config_file


  5. Add a cronjob , here is mine<
    20,40 * * * * /home/jstephan/ddclient-3.7.3/ddclient -file ddclient.conf


  6. Send emails to the owner of dynni and tell them that you read about dynni in my blog:-)


UPDATE! It took two weeks now to fix an issue that i had with my crontab. To be honest, it didnt work :-) But i fixed it. So, here an update on what ive learnend.
To get an shell script running, and this ddclient call act as one, you need to edit your /etc/default/cron file and add
SHELL=/bin/bash

So now it works.

Donnerstag, 10. Mai 2012

Ever thought about mytop ?

Work related i do a lot of things with MySQL/MariaDB. If you ever wanted to real-time monitor your system i guess you want to use mytop as well
S | Name  | Summary               | Type
--+-------+-----------------------+--------
| mytop | A top Clone for MySQL | package

you can easily install it with
zypper in mytop

Now you can start it with
mytop -p <passord> -s 1

The option

  • -p tell it to use the password during connection

  • -s <seconds> tells the update intervall


Now you should see something like
MySQL on localhost (5.5.23-MariaDB-mariadb1~squeeze-log)   up 24+03:17:13 [11:27:05]
Queries: 271.0 qps: 0 Slow: 0.0 Se/In/Up/De(%): 121540/00/00/00
qps now: 2 Slow qps: 0.0 Threads: 2 ( 1/ 17) 00/00/00/00
Key Efficiency: 98.8% Bps in/out: 0.0/ 0.8 Now in/out: 41.4/11.3k

Id User Host/IP DB Time Cmd Query or State
-- ---- ------- -- ---- --- --------------
47030 root localhost 0 Query show full processlist
47033 froxlor localhost:47453 froxlor 57 Sleep

Mittwoch, 2. Mai 2012

[openSUSE] Something strange...

... happens every day.

Some days ago i switched to the latest factory snapshot of openSUSE 12.2. Right after the first boot after installation my screen turns black and i cant access any console. Strange, i played around with the x11failsafe which worked, and thought the problem is maybe part of the mode selections suse does to get a beautiful screen. so i did
bootoption: nomodest

and it worked. I made an bug report and changed the default boot-loader settings to always do this nomodeset. But more strange...

On monday my boss allowed me to use SLED (SUSE Linux Enterprise Desktop) for a 60day trial first and the option to buy a license if it does the job. And i had just the same problem (on a total different hardware regarding ATINvidia, chipset, processor) nomodeset fixed it again. But it shouldn't be made that way.

Update:
As i was told some minuits ago it is also possible to do switch NO_KMS_IN_INITRD to "yes" and a new initrd is generated, which should solve the problem also. I will test it later at home.

Donnerstag, 26. April 2012

Remote Shell Command for XEN usage

I do not know if you use nagios, i guess most people do. There is a very nice addition to configure nagios it is called nagiosql (http://www.nagiosql.org/).

So maybe in addition to that you sometimes have an problem like i do. We use xen servers with some virtual machines. So sometimes i have an issue which belongs to every machine on an _parent_ xen server. Normally i send an ssh command to all of them. When it comes to the point where these are some hundred once it really sucks. So i wrote a script to do so, which setsup on the nagiosql structure.

What do we need:

  • Nagiosql and host with the _parent_ variable set

  • an DB user which can do select on the db_nagiosql

  • an key login via ssh on all machines

  • ruby :-)


So here is the script
#!/usr/bin/ruby -w
# ruby mysql query ssh command to all childs of parent
#
# by Jörg Stephan <j AT xadmin DOT info>
#
# Usage:
# -p <parent> # zB xenone
# -c <command> # zB "ls -la"
#
require 'mysql'
require 'net/ssh'

begin
parent = ""
command = ""

if ARGV.length < 4
puts "Usage: rshdo.rb -p <parent> -c <command>"
exit
end
ARGV.each_with_index do |arg, index|
if arg == "-p"
parent= ARGV[index + 1]
elsif arg == "-c"
command = ARGV[index + 1]
end
end
# connect to the MySQL server
dbh = Mysql.real_connect("nagiosserver", "client", "ultrastrengthpassword", "db_nagiosql")
res = dbh.query("select host_name from tbl_host where id IN (select idMaster from tbl_lnkHostToHost where idSlave = (select id from tbl_host where host_name='" + parent + "'))")
while row = res.fetch_row do
puts row[0]
begin
Net::SSH.start(row[0], 'root' , :host_key => "ssh-rsa", :keys => ["/root/.ssh/id_dsa"] ) do |ssh|
result = ssh.exec " " + command + " "
puts result
end
rescue Net::SSH::AuthenticationFailed => e
puts row[0] + " Error while connecting " + e
end
end
rescue Mysql::Error => e
puts "Error code: #{e.errno}"
puts "Error message: #{e.error}"
puts "Error SQLSTATE: #{e.sqlstate}" if e.respond_to?("sqlstate")
ensure
# disconnect from server
dbh.close if dbh
end

now your are able to to
shell#> ruby rshdo.rb -p <parenthost> -c <shell command>

and you send the <shell command>  to every host whichs parent is <parenthost>

 

 

Mittwoch, 25. April 2012

[OpenIndiana] On a desktop

I did a fresh install of openindiana on my Desktop. First of all it worked with no problem.

So, if you want to install it too you should download the livecd first (here). If you boot the livecd you will see the Gnome Desktop (The old Version 2) There is a little helperprogram which shows you the setup of your computer and if the components are supported

In German it is the "Gerätetreiber Dienstprogramm" never saw the english name for it, but its right on the desktop.

So if everything works you can start the installer. There are no problems, choose a disk (i have choosen my sda) and set user and admin. What really sucks (!!!) is that your root passwort is expired right after you start your pc again, so maybe choose a weak one first, you need to change it anyway.

Thats the reason why your prog manager does not start :-) The password is expired.

I would recommend to go to the console, become root ("su -") and install a new pkg version by

  • pkg install package/pkg


and do a

  • pkg update


afterwards

Regards

Freitag, 20. April 2012

Donnerstag, 19. April 2012

[OpenIndiana] On a Server

I just played around and did a reinstall of openindiana on a virtual server. It works fine, so far. I will run an webserver (Apache and MariaDB) on it. So some usefull steps to go there:

Setup the networking, that is quite easy.

  1. dldadm show-link
    this identificates your network adapter
    Now we need to disable the nwam on your physical networking
    svcadm disable network/physical:nwam
    and enable the default config
    svcadm enable network/physical:default
    i have an rtls0 netwok card which was shown by the dldadm command so i setup the ip address like
    echo 10.0.0.2/24 > /etc/hostname.rtls0
    with an
    svcadm restart network/physical:default #restarts the adapter and sets the ip
    route add default 10.0.0.1 # adds a default route should also be working via
    # echo '10.0.0.1' > /etc/defaultroute
    mv /etc/nsswitch.dns /etc/nsswitch.conf # some changes to the nsswitch, which are not default
    echo 'nameserver 8.8.8.8' > etc/resolv.conf # setting a nameserver , here google
    So thats it
    ping heise.de
    heise.de is alive

  2. So now we need ssh, okay i need it
    svcadm enable ssh
    svcadm restart ssh

  3. Now we should install Apache
    pkg install pkg:/web/server/apache-22
    pkg install pkg:/web/server/apache-22/module/apache-php5These are the packages we need basically to get apache an running it, you can find packages via
    pkg search <string>
    and you should the the whole package pathNow, MariaDB, there is a prebuld solrais11 package around at  you just can download it and follow the INSTALL-BINARY guide, i will do the same and write an little howto on that topic in an later post




So, thats it

 

PS: What i really forgot is setting the netmask, so i have problems on my test
ifconfig rtls0 netmask 255.255.255.0 fixed it, of course you need this route after reboot so you maybe at a line to /etc/netmasks telling
<ip-address> <netmask> 


Dienstag, 17. April 2012

[Bash Scripting] Doing some rsync backups

I know there are quite some tools a round to do backups, but i was in the mood to write a bash script so here's how i currently do backups
#!/bin/bash

ACTKW=`date +KW_%U_%A`
ACT=`date +%U`
DELKW=$[$ACT - 2]
if [ `ls -l /home/rsync/*${DELKW}*| wc -l` -gt 0 ]; then
echo "Deleting KW ${DELKW} backup files...."
rm -rf /home/rsync/KW_${DELKW}_*
fi
echo "Making actual Backup..."
echo "Making dir ${ACTKW}"
mkdir /home/rsync/${ACTKW}
if [ $? -eq 0 ]; then
echo "Syncing"
rsync -b -r <user>@<remotehost>:/var/customers/webs/ /home/rsync/${ACTKW}
fi

echo "...done"

So what does this script do?

First of all, the design of an backup

  1. Backups are made to /home/rsync

  2. The script creates a new directory which name  is based on KW_<number of calendar week>_<day>


What happens

  1. We compare the old backups on there calendar week with the actual. Than we erase all data which is older than 1 week.

  2. We create a new directory based on  KW_<number of calendar week>_<day>  for today this would be KW_16_Tuesday

  3. All data from the froxlor webspace directory on the remote server are rsynced to this  new directory


In Addition to that: I do a mysqldump on the server
mysqldump --all-databases -c --single-transaction --master-data -p<dbpassword> > /var/customers/webs/db_backup"`date +%A%U`".sql

via cronjob, so i have a backup of the database too.

 

 

Freitag, 30. März 2012

MariaDB update

The MySQL Engine behind these sides has changed actually. We are now running

mysql-common_5.5.22-mariadb1~squeeze_all

Please find the announcement here

https://kb.askmonty.org/en/mariadb-5522-release-notes

One reason to choose Debian below these sides was the fact that i can have the newest MariaDB packages out of an debian repo. So maybe you want to add
# MariaDB repository list - created 2012-02-29 08:56 UTC
# http://downloads.askmonty.org/mariadb/repositories/
deb http://mirror2.hs-esslingen.de/mariadb/repo/5.5/debian squeeze main
deb-src http://mirror2.hs-esslingen.de/mariadb/repo/5.5/debian squeeze main

 

Donnerstag, 22. März 2012

What have i done (Feb/March 2012)

It was geeting a bit quite in this blog. So maybe time to tell what i have done.

  • I disabled my swap on my openSUSE desktop. What was quite fun. If you are running out of memory the Xorg is killed. Nice graphic, i really can tell.

  • I played around with froxlor ( froxlor.org ) on both, openSUSE and Debian. I really would like to see an repo which contains it.

  • I played around with OpenIndiana. Quite nice, i was always a friend of SUN and Solaris, so i played around if you want some more information i started another blog RunOnOpen which maybe give some more details on how to use OpenIndiana on servers

  • I found out that BtrFS slows down my system quite offen. When i take a look on 'top' there is mostly a snapshot running.

  • I did a lot reading about MariaDB and switched most of my private databases.


Thats it so far, i hope there will be better news and posts next month

Dienstag, 14. Februar 2012

What comes (12.2, Evergreen)

So, my last post was released some time ago. So what happens since that?

I have seen some post the first milestone of 12.2 is on the way. Trying to find some changelog information was somekind of hard. But i took a look at the current factory versions and i guess they should fit too

http://en.opensuse.org/openSUSE:Factory_versions

i did some search for the packages i normally use ( apache2, php5 and mariadb) and just found only minor changes at the factory list, so while i hope that thats not honored by a list which is not up to date, there should be no problem on my webserver.

 

I followed some discussion by the evergreen project. As you can see Evergreen ist the LTS version on openSUSE side, or better it should become the LTS. Currently there is a lot of ongoing discussion

http://en.opensuse.org/Evergreen

some of the discussion is usefull (in my opinion) the other stuff is quite boring. In my mind the biggest problem is how to mark a release as evergreen. You cant have every version supported, i guess thats a fact, so maybe every **.2 release should be marked as evergreen. In my opnion 12.1 would be a bad choice to be LTS, caused by to many problems. 11.4 could be LTS for sure, it was a good and stable release (which still runs on my notebook and "live" server systems)

So, we will see what comes :-)

 

Montag, 23. Januar 2012

The release event revisited

Key-Systems, a domain registrar from the Saarland with more than 3.2 million domains , as the main sponsor of the event, could welcome openSUSE enthusiastic from the Saarland and the adjacent France  at the premises of the company.

It was a lively exchange about the new technologies related to openSUSE but also from other parts of the open source world.

We were able to experience live one a Nokia N9. The Nokia N9 is a smartphone which Meegoo as well as a full shell (BusyBox) and an SSH server contains.
On the other hand, there was a glimpse of the possibilities the Nepomuk Systemd and KDE 4.7 to have an SSD powered notebook.

There were also lively exchanges about Btrfs and snapper, which were presented by the administrators of the SkyWay Data Center. In this context, it was SUSE insiders, a brief overview of the features of the new Service Pack 2 for SUSE ENTERPRISE SERVER will bring with it. The subject of linux container and the opportunities it brings with it, such as the exact allocation of resources or individual CPU cores Rambänken and the switch between these resouces have been in operation to feel very welcome.
With this technology it is now possible to the failure of individual processors, but not prevent, but to shift the impact of such a hardware replacement and restart at least until the night maintenance window.

Sonntag, 1. Januar 2012

Happy New Year 2012

So 2011 is just ending, or better it ended some hours ago.

In January we will have our openSUSE release event at key-systems headquarter in st. Ingbert/Germany. I hope a lot of people join in. We will have free DVD and some snacks and free soft drinks.

The release version is great. I told you about the features in some other posts. Again, systemd, btrfs and snapper are great. Just some few issues which need to be solved till 12.2 but I guess we new it, that's one reason (for me) why it's not a 12.0 maybe it should have been called 11.5.

For me in personell I would like to see OpenIndiana come around in a stable manner and have its wiki and stuff spread some more information. I like it, it's a great piece of open software see here

On.OpenSUSE side hope we get grub 2running so we can have booting from an btrfs partition. That would be great. In addition an true openSUSE server version sounds fun. With kernel, meta packages and all the stuff.

 

So, enjoy 2012