Sie sind nicht angemeldet.

1

23.08.2008, 22:40

Gentoo Portage ELOG Features

Hi Leute

Ich möchte euch heute einmal ein paar Möglichkeiten zeigen wie man elog Messages anzeigen/archivieren/versenden kann.

Im großen und ganzen sind es 3 Möglichkeiten die ich euch zeigen möchte. Vermutlich wird es aber mehrere geben.
Die hier 3 beschriebenen werden sein:

1. Portage default elog Features
2. portage_mod-jabber
3. Simple bash-Script (thx to maggu)


1. Portage default elog Features:
Ob man es glaubt oder nicht, gentoo bietet sogar per default Möglichkeiten die elog-Messages zu filtern/auszugeben ;)
Das ganze lässt sich bequem über die "make.conf" einstellen.
Folgende Optionen stehen hier einem zur Verfügung:

Quellcode

1
2
3
4
5
6
PORTAGE_ELOG_CLASSES
PORTAGE_ELOG_SYSTEM
PORTAGE_ELOG_COMMAND
PORTAGE_ELOG_MAILURI
PORTAGE_ELOG_MAILFROM
PORTAGE_ELOG_MAILSUBJECT


Was haben nun die einzelnen Optionen für Funktionen:

PORTAGE_ELOG_CLASSES:
Mit dieser Variablen stellt man ein, was alles geloggt werden soll.
Möglichkeiten sind:
info = "einfo" Meldungen aus ebuilds werden Protokolliert
warn = "ewarn" Meldungen aus ebuilds werden Protokolliert
error = "eerror" Meldungen aus ebuilds werden Protokolliert
log = "elog" Meldungen aus ebuilds werden Protokolliert
qa = "QA Notice" Meldungen aus ebuilds werden Protokolliert

PORTAGE_ELOG_SYSTEM:
Mit dieser Variablen gibt man an welche Logging-Module verwendent werden sollen:
Möglichkeiten sind:
echo: Zusammenfassung aller Nachrichten nach einem emerge Vorgang.
save: Speichert eine Log per Paket unter "$PORT_LOGDIR/elog". Wenn die Variable "$PORT_LOGDIR" nicht gesetzt ist, ist es der Standard-Pfad: „/var/log/portage/elog“
custom: Die Log's werden mit Befehlen, die in der Variablen „PORTAGE_ELOG_COMMAND“ stehen, weiter verarbeitet.
syslog: Sendet die Ausgaben an denn Syslog Dienst.
mail: Versendet die Ausgaben per Mail.
save_summary: Das selbe wie save, nur wird alles in eine Datei gespeichert. ($PORT_LOGDIR/elog/summary.log)
mail_summary: Wie Mail, nur wird nicht für jedes Paket eine extra Mail verschickt.

PORTAGE_ELOG_COMMAND:
Diese Variable kann nur in Verbindung mit dem „custom“ logging Modul verwendet werden. Hier kann man Befehle angeben welche die Logs verarbeiten.
Folgende Variablen können dabei benutzt werden:
${PACKAGE}: Paketname
${LOGFILE}: Absoluter Pfad zur Logfile

PORTAGE_ELOG_MAILURI:
In dieser Variable werden wichtige Informationen zur Mail-Zustellung angegeben, die man benötigt falls man sich die Messages per Mail zustellen will. (Modul: mail)
Der Syntax lautet:

Quellcode

1
address [[user:password@]mailserver[:port]]

address: Absenderadresse
user: Benutzername für die Anmeldung am Mailserver
password: Password für die Anmeldung am Mailserver
mailserver: Name des mailserver's (Standard ist „localhost“, alternativ kann man auch denn Pfad zum Programm „sendmail“ angeben)
port: port zum mailserver (standard ist port 25, falls man eine starttls Anmeldung benötigt muss man denn Port + 100000 angeben. Das heißt zb, wenn der smtp auf port 25 lauscht und eine starttls Anmeldung erfordert, gibt man als port „100025“ an)

Beispiel:

Quellcode

1
user@some.domain user:password@mail.some.domain:100025


PORTAGE_ELOG_MAILFROM:
Hier kann man denn Absender angeben:
ZB: "portage@localhost"

PORTAGE_ELOG_MAILSUBJECT:
Hier kann man noch denn Betreff zur Mail angeben. Dazu gibt es 2 Variablen:
${PACKAGE}: Packetname
${HOST}: Hostname des Rechners
Der Betreff könnte dann zb so aussehen:
package \${PACKAGE} merged on \${HOST} with notice



Mail-Einstellungen testen:
Die mail-Einstellungen könnt ihr mittels „glsa-check“ testen. Gebt einfach in die Konsole folgendes ein:

Quellcode

1
 /usr/bin/glsa-check -m 200610-14Traceback 

ACHTUNG: Bei diesem Test werden nur die Maileinstellungen getestet. Das heißt wenn ihr unter PORTAGE_ELOG_SYSTEM nicht „mail“ oder „mail_summary“ angegeben habt, werden trotzdem keine emails verschickt.


Nun ein paar Beispiele:

Zuerst einmal eine Mail-Zustellung, wie ich sie zuhause getestet habe (inkl tls):
Die Messages werden dabei an meinen internen Mail-Server (tunafix) gesendet. (die Mails kann ich dann mittels imap abrufen)

Quellcode

1
2
3
4
5
PORTAGE_ELOG_CLASSES="log warn error" 
PORTAGE_ELOG_MAILFROM="portage@asterix" 
PORTAGE_ELOG_MAILSUBJECT="[portage] ebuild log for \${PACKAGE} on \${HOST}" 
PORTAGE_ELOG_MAILURI="root@tunafix elog:geheim@tunafix:100025" 
PORTAGE_ELOG_SYSTEM="save_summary echo mail"


Als nächstes ein Beispiel wo alle Messages an denn syslog dienst gehen, und gewisse Messages als Mail versendet werden (lokal):

Quellcode

1
2
3
4
5
PORTAGE_ELOG_SYSTEM="mail:warn,error syslog:* save“ 
PORTAGE_ELOG_MAILURI="root@localhost localhost" 
PORTAGE_ELOG_MAILFROM="portage@some.domain" 
PORTAGE_ELOG_MAILSUBJECT="package \${PACKAGE} merged on \${HOST} with notice" 
PORTAGE_ELOG_CLASSES="warn error log"


Zum Schluss noch ein Beispiel wo die Funktion PORTAGE_ELOG_COMMAND verwendet wird. Hier werden einfach alle Logs nach "/root/log" kopiert:

Quellcode

1
2
3
PORTAGE_ELOG_CLASSES="log warn error"
PORTAGE_ELOG_SYSTEM="save custom"
PORTAGE_ELOG_COMMAND="/bin/cp \${LOGFILE} /root/log/"



2. portage-mod_jabber:
Diese Script ist eigentlich nur eine Erweiterung zum vorhanden elog System, um die elog-Nachrichten eben über einen jabber Account zu verschicken.

Zur installation:

Quellcode

1
 echo "app-portage/portage-mod_jabber ~x86" >> /etc/portage/package.keywords 

(geht auch mit ~amd64)

Quellcode

1
 emerge -av portage-mod_jabber 

Eingerichtet wird das Script folgendermaßen:
Zuerst muss man sich einen neuen jabber-Account erstellen. Zb bei jabber.org.
Am einfachsten geht das denk ich über einen Instant-Messanger. (Kopete,Gaim,Psi,usw...)
Danach trägt man folgendes in die make.conf ein:

Quellcode

1
2
3
PORTAGE_ELOG_SYSTEM="jabber" 
PORTAGE_ELOG_JABBERFROM="$PASSWORD:$USER@jabber.org/$RESOURCE" 
PORTAGE_ELOG_JABBERTO="$EMPFÄNGER"


PORTAGE_ELOG_SYSTEM: Kennen wir schon von oben. Mann gibt einfach als elog-Modul „jabber“ ein.
PORTAGE_ELOG_JABBERFROM: Absender
PORTAGE_ELOG_JABBERTO: Empfänger

$PASSWORD = das password des neu erstellten jabber-acc
$USER = ist der username des neu erstellten jabber-acc ("@jabber.org" kann natürlich auch ein anderer jabber-anbieter sein wie zb, gmail)
$RESOURCE = diese option ist optional, hier kann man zb denn computernamen eingeben, damit man weiß woher die message kommt
$EMPFÄNGER = hier gibt man die jabber adresse des empfängers ein.

Fertig sieht das ganze dann zum beispiel so aus:

Quellcode

1
2
3
PORTAGE_ELOG_SYSTEM="jabber" 
PORTAGE_ELOG_JABBERFROM="geheim:portage_elog@gmail.com/laptop" 
PORTAGE_ELOG_JABBERTO="admin@jabber.org"


3. Simple Bash Script (von maggu)
Zum Schluss will ich euch noch das Script von maggu zeigen, welches die alten elog-Messages ausgibt, archiviert (unter "var/log/portage") und die originalen Logs löscht.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
# have a look at the elog files
        DATE="$(date +%F_-_%H-%M-%S)"
        TAR="/var/log/portage/${DATE}.tar"
        TMP="$(mktemp --tmpdir=/tmp ${DATE}.XXXXXXXXXX)"
        for FILE in /var/log/portage/elog/*
        do
                echo -e "\n\n==== ${FILE} ===\n" >> ${TMP}
                cat ${FILE} >> ${TMP}
                tar rvf ${TAR} ${FILE}
                rm ${FILE}
        done
        tar rvf ${TAR} ${TMP}
        less ${TMP}


Ich hoffe ich konnte euch ein wenig helfen, falls ihr etwas sucht was eure elog-Massages archiviert/versendet. Die default-Möglichkeiten sind übrigens alle auch in der "/etc/make.conf.example" beschrieben. Ich habe sie mehr oder weniger nur mit eigenen Worten übersetzt ;)

greetz

Edit's:
Edit 28.08.08: Bessere Erklärung der Variable PORTAGE_ELOG_CLASSES
Edit 09.12.08: Fehler ausgebessert - thx an croonix ;)
To mess up a Linux box, you need to work at it; to mess up your Windows box, you just need to work on it.

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »devion« (09.12.2008, 21:13)


2

09.12.2008, 20:31

save_summery: Das selbe wie save, nur wird alles in eine Datei gespeichert. ($PORT_LOGDIR/elog/summary.log)

mail_summery: Wie Mail, nur wird nicht für jedes Paket eine extra Mail verschickt.

es muss save_summary und mail_summary heißen

Gruß

3

09.12.2008, 21:13

Danke für die Info.. Habs schon ausgebessert ;)
To mess up a Linux box, you need to work at it; to mess up your Windows box, you just need to work on it.

4

31.07.2009, 03:01

Grade drüber gestolpert, hier gibt es auch noch ein wenig Info zu dem Thema
Protokollierungsfunktionen

/edit:
Die default-Möglichkeiten sind übrigens alle auch in der "/etc/make.conf.example" beschrieben.

Dieser Pfad wurde anscheinend mal geändert. Mit den aktuellen portage Versionen wird sie nun unter
/usr/share/portage/config/make.conf.example
abgelegt.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »josef.95« (02.02.2011, 07:50)