Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: GentooForum.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

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)