rsyslog
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| rsyslog [2013-05-21 13:38:08] – [Rsyslog] manfred | rsyslog [2020-02-12 11:30:00] (aktuell) – [Wichtiges] manfred | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== Rsyslog ====== | ||
| + | |||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | Rsyslog ist vollständig kompatibel zum normalen sysklogd und kann als 1:1-Ersatz dienen, da es ursprünglich auch von ihm abstammt. Seine fortgeschrittenen Möglichkeiten legen seinen Einsatz in unternehmensweiten, | ||
| + | |||
| + | |||
| + | ===== Wichtiges ===== | ||
| + | |||
| + | **ACHTUNG!** | ||
| + | - [[https:// | ||
| + | - Anwender, die es vorziehen, bei Rsyslog oder einer Alternative zu bleiben, erreichen dies durch die Befehle '' | ||
| + | - //Nach der Bekanntgabe der Änderung entspann sich schnell eine noch anhaltende Diskussion, die größtenteils eine ablehnende Haltung gegen diese Entscheidung annahm. | ||
| + | - Wenn das MySQL-Back-End hinter dem RSyslog-Server ausgefallen ist, kann es passieren, dass die Log-Daten von den RSyslog-Clienten an den RSyslog-Server übergeben werden und dann im Nirvana landen. Will man die Log-Daten behalten, muss der RSyslog-Server-Dienst auf dem Log-Server angehalten werden und darf erst wieder gestartet werden, wenn das MySQL-Back-End (MySQL auf dem Log-Server) wieder ordentlich läuft! | ||
| + | |||
| + | |||
| + | ===== Allgemeines ===== | ||
| + | |||
| + | Die Leute von Rsyslog sind recht aktiv, auch der Rsyslog kann Logdaten per TCP senden und empfangen. | ||
| + | Erst sorgen wir mal für einen aktuellen Stand der Pakete auf dem System: | ||
| + | # aptitude update && aptitude -y safe-upgrade | ||
| + | |||
| + | Im allgemeinen werden diese Anpassungen in der /// | ||
| + | |||
| + | Bei Ubuntu werden die Anpassungen für den // | ||
| + | diese Datei wird von der /// | ||
| + | |||
| + | Für den // | ||
| + | und die /// | ||
| + | |||
| + | Am Ende darf man den **Restart** des Dienstes nicht vergessen! | ||
| + | |||
| + | # / | ||
| + | |||
| + | **Wichtig ist hier, dass //reload// des Dienstes nicht ausreicht und zwingend ein //restart// erforderlich ist!** | ||
| + | |||
| + | In den folgenden Beispielen habe ich den Hostnamen // | ||
| + | selbstverständlich ist es auch möglich die entsprechende IP des Log-Server' | ||
| + | |||
| + | |||
| + | ===== Sender (Client) ===== | ||
| + | |||
| + | # aptitude -y install rsyslog | ||
| + | |||
| + | |||
| + | ==== senden via UDP ==== | ||
| + | |||
| + | Hier gehen Pakete bei hoher Netzwerk- bzw. Systemlast verloren | ||
| + | und ebenso gibt es Paketverlusst, | ||
| + | Früher ging das nicht anders... | ||
| + | |||
| + | | ||
| + | *.* | ||
| + | |||
| + | Das will man nicht, es sei denn, dass man es aus Kompatibilitätsgründen machen muss. | ||
| + | |||
| + | |||
| + | ==== senden via TCP ==== | ||
| + | |||
| + | Bei dieser verbesserten Methode gehen zwar keine Pakete mehr übers Netz verloren | ||
| + | aber leider gibt es immer noch den Paketverlusst, | ||
| + | |||
| + | | ||
| + | *.* | ||
| + | |||
| + | |||
| + | ==== senden via RELP ==== | ||
| + | |||
| + | Bei dieser neuesten Methode gehen keine Pakete mehr übers Netz verloren. | ||
| + | Auch wenn der Logserver nicht erreichbar ist, gehen die Pakete nicht verloren, | ||
| + | sondern werden auf dem Client zwischengespeichert. | ||
| + | |||
| + | # aptitude -y install rsyslog-relp | ||
| + | |||
| + | # mkdir / | ||
| + | # chown syslog: | ||
| + | # chmod 0700 / | ||
| + | |||
| + | Standard: | ||
| + | # vi / | ||
| + | |||
| + | Ubuntu (Datei überschreiben, | ||
| + | # vi / | ||
| + | |||
| + | $ModLoad omrelp | ||
| + | $WorkDirectory / | ||
| + | $ActionQueueType LinkedList | ||
| + | # | ||
| + | # | ||
| + | $ActionQueueFileName temp_relp_logs | ||
| + | $ActionResumeRetryCount -1 # unendlich lange auf den Log-Server warten | ||
| + | $ActionQueueSaveOnShutdown on # Log's zwischenspeichern, | ||
| + | *.* : | ||
| + | |||
| + | Mit den Optionen " | ||
| + | dass am Tag die Log's lokal zwischengespeichert werden und nur in der Zeit zwischen "1 Uhr" und "4 Uhr" werden die | ||
| + | gespeicherten Log's auf den Log-Server übertragen. | ||
| + | |||
| + | |||
| + | ==== Platte voll ==== | ||
| + | |||
| + | Wenn die Verbindung zum Logserver unterbrochen ist, | ||
| + | werden die Logdaten wunschgemäß im Dateisystem gespeichert. | ||
| + | |||
| + | Ist die Verbindung zum Logserver zu lange unterbrochen, | ||
| + | dann kann es passieren, dass die lokal zwischen gespeicherten | ||
| + | Logdaten die entsprechende Partition komplett zu schreiben. | ||
| + | |||
| + | Das hat fast immer zur Folge, dass eine Query-Index-Datei | ||
| + | (z.B.: "/ | ||
| + | |||
| + | Diese Datei besagt, das Logdaten verlohren gegangen sind... | ||
| + | **Solange diese Datei dort liegt, werden keine Logdaten zum | ||
| + | Logserver geschickt.** | ||
| + | |||
| + | Lösung: | ||
| + | # rm / | ||
| + | # / | ||
| + | # netstat -a | fgrep 2514 | ||
| + | tcp | ||
| + | |||
| + | Jetzt werden wieder Logdaten zum Logserver geschickt, | ||
| + | allerdings bleiben die zwischen gespeicherten Logdaten | ||
| + | leider auch im Spool-Verzeichnis liegen... :-( | ||
| + | |||
| + | Diese zwischen gespeicherten Logdaten liegen in einem speziellen | ||
| + | Format vor: | ||
| + | < | ||
| + | +iProtocolVersion: | ||
| + | +iSeverity: | ||
| + | +iFacility: | ||
| + | +msgFlags: | ||
| + | +ttGenTime: | ||
| + | +tRcvdAt: | ||
| + | +tTIMESTAMP: | ||
| + | +pszRawMsg: | ||
| + | +pszMSG: | ||
| + | +pszUxTradMsg: | ||
| + | +pszTAG: | ||
| + | +pszHOSTNAME: | ||
| + | +pszInputName: | ||
| + | +pszRcvFrom: | ||
| + | +pszRcvFromIP: | ||
| + | >End | ||
| + | . | ||
| + | |||
| + | Will man diese Logdaten irgendwie noch nutzen, | ||
| + | am besten in die LogDB auf dem Logserver schicken, | ||
| + | dann kommt man um eine Umwandlung nicht rum! | ||
| + | |||
| + | |||
| + | === / | ||
| + | |||
| + | Die letzte Möglichkeit, | ||
| + | ist " | ||
| + | |||
| + | Dazu habe ich ein kleines Script geschrieben: | ||
| + | #!/bin/bash | ||
| + | | ||
| + | VERSION=" | ||
| + | SCRNAME=" | ||
| + | VERZ=" | ||
| + | DATEIEN=" | ||
| + | | ||
| + | if [ -z " | ||
| + | echo "${0} / | ||
| + | echo "${0} / | ||
| + | echo "oder beispielsweise so" | ||
| + | echo "${0} / | ||
| + | echo "cat temp_relp_logs.sql | egrep -v ' | ||
| + | exit 1 | ||
| + | fi | ||
| + | | ||
| + | if [ ! -d " | ||
| + | if [ -r " | ||
| + | DATEIEN=" | ||
| + | VERZ=" | ||
| + | else | ||
| + | echo 'Datei oder Verzeichnis existiert nicht. ABBRUCH!' | ||
| + | exit 1 | ||
| + | fi | ||
| + | fi | ||
| + | | ||
| + | cd ${VERZ} || exit 1 | ||
| + | for DATEI in ${DATEIEN} | ||
| + | do | ||
| + | echo "# Beginn: ${DATEI}" | ||
| + | rm -f / | ||
| + | cat " | ||
| + | do | ||
| + | if [ " | ||
| + | Priority=" | ||
| + | GenericFileName=" | ||
| + | | ||
| + | echo " | ||
| + | | ||
| + | ReceivedAt="" | ||
| + | DeviceReportedTime="" | ||
| + | Facility="" | ||
| + | Priority="" | ||
| + | FromHost="" | ||
| + | Message="" | ||
| + | NTSeverity="" | ||
| + | InfoUnitID="" | ||
| + | SysLogTag="" | ||
| + | GenericFileName="" | ||
| + | else | ||
| + | case " | ||
| + | tRcvdAt) | ||
| + | ReceivedAt=" | ||
| + | ;; | ||
| + | tTIMESTAMP) | ||
| + | DeviceReportedTime=" | ||
| + | ;; | ||
| + | iFacility) | ||
| + | Facility=" | ||
| + | ;; | ||
| + | pszRcvFrom) | ||
| + | FromHost=" | ||
| + | ;; | ||
| + | pszMSG) | ||
| + | Message=" | ||
| + | ;; | ||
| + | iSeverity) | ||
| + | NTSeverity=" | ||
| + | ;; | ||
| + | Obj) | ||
| + | InfoUnitID=" | ||
| + | ;; | ||
| + | pszTAG) | ||
| + | SysLogTag=" | ||
| + | ;; | ||
| + | esac | ||
| + | fi | ||
| + | done | ||
| + | echo "# Ende: ${DATEI}" | ||
| + | done | ||
| + | |||
| + | Dieses Script wandelt die zwischen gespeicherten Logdaten in SQL-Queries um, | ||
| + | und kann z.B. so benutzt werden: | ||
| + | # / | ||
| + | |||
| + | Damit man die Daten, die mit Hilfe von diesem Script in die DB geschoben wurden, | ||
| + | von den anderen auseinander halten kann, schreibt dieses Script den Scriptnamen | ||
| + | sowie seine Version in das DB-Feld " | ||
| + | Dieses Feld ist " | ||
| + | |||
| + | |||
| + | ===== Empfänger (Server) ===== | ||
| + | |||
| + | # aptitude -y install rsyslog | ||
| + | |||
| + | Zuerst muss, falls eine Firewall aktiviert ist, der Port 514 (2514 für RELP) freigegeben werden. | ||
| + | (Bei Benutzern von //Fedora 9// kann es zu Problemen, kommen wenn die Firewall deaktiviert ist! Also lieber aktiviert lassen und den Port freigeben.) | ||
| + | |||
| + | |||
| + | ==== empfangen via UDP ==== | ||
| + | |||
| + | $ModLoad imudp.so | ||
| + | $UDPServerRun 514 | ||
| + | |||
| + | |||
| + | ==== empfangen via TCP ==== | ||
| + | |||
| + | $ModLoad imtcp.so | ||
| + | $InputTCPServerRun 514 | ||
| + | |||
| + | |||
| + | ==== empfangen via RELP ==== | ||
| + | |||
| + | # aptitude -y install rsyslog-relp | ||
| + | |||
| + | Jetzt muss die Konfiguration in folgender Weise ergänzt werden. | ||
| + | |||
| + | # vi / | ||
| + | |||
| + | Das steht schon drin: | ||
| + | # provides TCP syslog reception | ||
| + | #$ModLoad imtcp | ||
| + | # | ||
| + | |||
| + | Und das schreiben wir direkt darunter: | ||
| + | $ModLoad imrelp | ||
| + | $InputRELPServerRun 2514 | ||
| + | |||
| + | |||
| + | ==== Logdaten in eine MySQL-DB schreiben ==== | ||
| + | |||
| + | Auf dem Log-Server müssen noch folgende Änderungen vorgenommen werden, um die Log-Daten in eine MySQL-DB schreiben zu lassen. | ||
| + | |||
| + | # aptitude update && aptitude -y safe-upgrade | ||
| + | # aptitude -y install rsyslog-mysql | ||
| + | |||
| + | ---- | ||
| + | Die folgenden Schritte sind auf Ubuntu nicht nötig, da sie bei der Installation automatisch abgefragt werden. | ||
| + | |||
| + | # mysqladmin -u root password geheimes_passwort | ||
| + | # mysql -u root -p < / | ||
| + | GRANT ALL ON Syslog.* to rsyslog@localhost identified by ' | ||
| + | |||
| + | * Log-Host: | ||
| + | * Log-DB: | ||
| + | * Log-DB-User: | ||
| + | * Log-DB-Passwort: | ||
| + | |||
| + | # vi / | ||
| + | $ModLoad ommysql.so | ||
| + | *.* : | ||
| + | |||
| + | ---- | ||
| + | Zur Sicherheit zeige ich hier nochmal die DB-Struktur: | ||
| + | |||
| + | Erstellt wurde si mit: | ||
| + | # mysqldump -d -ursyslog -p Syslog > Syslog.sql | ||
| + | |||
| + | | ||
| + | -- MySQL dump 10.13 Distrib 5.1.41, for debian-linux-gnu (x86_64) | ||
| + | -- | ||
| + | -- Host: localhost | ||
| + | -- ------------------------------------------------------ | ||
| + | -- Server version 5.1.41-3ubuntu12.10 | ||
| + | | ||
| + | /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; | ||
| + | /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; | ||
| + | /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; | ||
| + | /*!40101 SET NAMES utf8 */; | ||
| + | /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; | ||
| + | /*!40103 SET TIME_ZONE=' | ||
| + | /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, | ||
| + | /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, | ||
| + | /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, | ||
| + | /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, | ||
| + | | ||
| + | -- | ||
| + | -- Table structure for table `SystemEvents` | ||
| + | -- | ||
| + | | ||
| + | DROP TABLE IF EXISTS `SystemEvents`; | ||
| + | /*!40101 SET @saved_cs_client | ||
| + | /*!40101 SET character_set_client = utf8 */; | ||
| + | CREATE TABLE `SystemEvents` ( | ||
| + | `ID` int(10) unsigned NOT NULL AUTO_INCREMENT, | ||
| + | `CustomerID` bigint(20) DEFAULT NULL, | ||
| + | `ReceivedAt` datetime DEFAULT NULL, | ||
| + | `DeviceReportedTime` datetime DEFAULT NULL, | ||
| + | `Facility` smallint(6) DEFAULT NULL, | ||
| + | `Priority` smallint(6) DEFAULT NULL, | ||
| + | `FromHost` varchar(60) DEFAULT NULL, | ||
| + | `Message` text, | ||
| + | `NTSeverity` int(11) DEFAULT NULL, | ||
| + | `Importance` int(11) DEFAULT NULL, | ||
| + | `EventSource` varchar(60) DEFAULT NULL, | ||
| + | `EventUser` varchar(60) DEFAULT NULL, | ||
| + | `EventCategory` int(11) DEFAULT NULL, | ||
| + | `EventID` int(11) DEFAULT NULL, | ||
| + | `EventBinaryData` text, | ||
| + | `MaxAvailable` int(11) DEFAULT NULL, | ||
| + | `CurrUsage` int(11) DEFAULT NULL, | ||
| + | `MinUsage` int(11) DEFAULT NULL, | ||
| + | `MaxUsage` int(11) DEFAULT NULL, | ||
| + | `InfoUnitID` int(11) DEFAULT NULL, | ||
| + | `SysLogTag` varchar(60) DEFAULT NULL, | ||
| + | `EventLogType` varchar(60) DEFAULT NULL, | ||
| + | `GenericFileName` varchar(60) DEFAULT NULL, | ||
| + | `SystemID` int(11) DEFAULT NULL, | ||
| + | PRIMARY KEY (`ID`) | ||
| + | ) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=latin1; | ||
| + | /*!40101 SET character_set_client = @saved_cs_client */; | ||
| + | | ||
| + | -- | ||
| + | -- Table structure for table `SystemEventsProperties` | ||
| + | -- | ||
| + | | ||
| + | DROP TABLE IF EXISTS `SystemEventsProperties`; | ||
| + | /*!40101 SET @saved_cs_client | ||
| + | /*!40101 SET character_set_client = utf8 */; | ||
| + | CREATE TABLE `SystemEventsProperties` ( | ||
| + | `ID` int(10) unsigned NOT NULL AUTO_INCREMENT, | ||
| + | `SystemEventID` int(11) DEFAULT NULL, | ||
| + | `ParamName` varchar(255) DEFAULT NULL, | ||
| + | `ParamValue` text, | ||
| + | PRIMARY KEY (`ID`) | ||
| + | ) ENGINE=MyISAM DEFAULT CHARSET=latin1; | ||
| + | /*!40101 SET character_set_client = @saved_cs_client */; | ||
| + | | ||
| + | -- Dump completed on 2011-08-30 16:44:32 | ||
| + | |||
| + | ---- | ||
| + | Jetzt noch den Log-Dienst neu starten: | ||
| + | |||
| + | # / | ||
| + | |||
| + | Die ersten Einträge kann man sich zum Beispiel so ansehen: | ||
| + | |||
| + | # echo " | ||
| + | |||
| + | Die letzten Einträge kann man sich zum Beispiel so ansehen: | ||
| + | |||
| + | # echo " | ||
| + | |||
| + | Anzeige der Anzahl der Einträge pro Maschine: | ||
| + | |||
| + | # echo " | ||
| + | |||
| + | |||
| + | === DB von überall abfragen === | ||
| + | |||
| + | Die Log's werden nun in die DB **und** in die Dateien geschrieben, | ||
| + | |||
| + | Also schalten wir das schreiben in die Dateien ab, und das geht ganz einfach: | ||
| + | |||
| + | # echo "" | ||
| + | # / | ||
| + | |||
| + | Ferti! | ||
| + | |||
| + | |||
| + | === DB von überall abfragen === | ||
| + | |||
| + | Soll es möglich sein, dass die SELECT-Abfragen auch von anderen Host's möglich sind, | ||
| + | dann ist es nötig, dass wir die Bindung an " | ||
| + | |||
| + | # vi / | ||
| + | |||
| + | von | ||
| + | bind-address | ||
| + | |||
| + | in | ||
| + | # | ||
| + | |||
| + | ändern. | ||
| + | |||
| + | Jetzt noch die DB neu starten: | ||
| + | |||
| + | # / | ||
| + | |||
| + | |||
| + | === hilfreiche Abfrage-Scripte === | ||
| + | |||
| + | == bin/ | ||
| + | |||
| + | #!/bin/bash | ||
| + | | ||
| + | LIMIT=" | ||
| + | | ||
| + | BENUTZER=" | ||
| + | PASSWORT=" | ||
| + | | ||
| + | echo " | ||
| + | |||
| + | |||
| + | == bin/ | ||
| + | |||
| + | #!/bin/bash | ||
| + | | ||
| + | LIMIT=" | ||
| + | | ||
| + | BENUTZER=" | ||
| + | PASSWORT=" | ||
| + | | ||
| + | echo " | ||
| + | |||
| + | |||
| + | == bin/ | ||
| + | |||
| + | #!/bin/bash | ||
| + | | ||
| + | if [ -z " | ||
| + | | ||
| + | echo "${0} [Hostname]" | ||
| + | | ||
| + | else | ||
| + | | ||
| + | LIMIT=" | ||
| + | | ||
| + | BENUTZER=" | ||
| + | PASSWORT=" | ||
| + | | ||
| + | echo " | ||
| + | | ||
| + | fi | ||
| + | |||
| + | |||
| + | == bin/ | ||
| + | |||
| + | #!/bin/bash | ||
| + | | ||
| + | | ||
| + | LIMIT=" | ||
| + | | ||
| + | BENUTZER=" | ||
| + | PASSWORT=" | ||
| + | | ||
| + | echo " | ||
| + | |||
| + | |||
| + | == bin/ | ||
| + | |||
| + | #!/bin/bash | ||
| + | | ||
| + | | ||
| + | LIMIT=" | ||
| + | | ||
| + | BENUTZER=" | ||
| + | PASSWORT=" | ||
| + | | ||
| + | echo " | ||
| + | |||
| + | |||
| + | === hilfreiche Wartungs-Scripte === | ||
| + | |||
| + | |||
| + | == / | ||
| + | |||
| + | # | ||
| + | # damit das Script inie mehrfach laeuft | ||
| + | # | ||
| + | | ||
| + | SCRIPT=" | ||
| + | | ||
| + | if [ -e / | ||
| + | echo " | ||
| + | exit | ||
| + | else | ||
| + | # Lock Beginn | ||
| + | echo " | ||
| + | fi | ||
| + | | ||
| + | LOCKENDE() | ||
| + | { | ||
| + | cat / | ||
| + | echo "Ende: $(date +'%F %T' | ||
| + | rm -frv / | ||
| + | } | ||
| + | |||
| + | |||
| + | == loeschen_alte_logs.sh == | ||
| + | |||
| + | #!/bin/bash | ||
| + | | ||
| + | ALTER=" | ||
| + | | ||
| + | . / | ||
| + | | ||
| + | BENUTZER=" | ||
| + | PASSWORT=" | ||
| + | | ||
| + | echo " | ||
| + | |||
| + | |||
| + | == loeschen_apache_logs.sh == | ||
| + | |||
| + | #!/bin/bash | ||
| + | | ||
| + | ALTER=" | ||
| + | | ||
| + | . / | ||
| + | | ||
| + | BENUTZER=" | ||
| + | PASSWORT=" | ||
| + | | ||
| + | echo " | ||
| + | |||
| + | |||
| + | == / | ||
| + | |||
| + | #!/bin/bash | ||
| + | | ||
| + | . / | ||
| + | | ||
| + | for i in `find /data -mtime +7 -type f | egrep -v " | ||
| + | | ||
| + | LOCKENDE | ||
| + | |||
| + | |||
| + | == / | ||
| + | |||
| + | #!/bin/bash | ||
| + | | ||
| + | BENUTZER=" | ||
| + | PASSWORT=" | ||
| + | | ||
| + | . / | ||
| + | | ||
| + | mysqlcheck --repair -u${BENUTZER} -p${PASSWORT} Syslog | ||
| + | mysqlcheck --analyze -u${BENUTZER} -p${PASSWORT} Syslog | ||
| + | mysqlcheck --optimize -u${BENUTZER} -p${PASSWORT} Syslog | ||
| + | | ||
| + | LOCKENDE | ||
| + | |||
| + | |||
| + | == / | ||
| + | |||
| + | / | ||
| + | |||
| + | |||
| + | ==== rsyslog-Einträge im Browser ==== | ||
| + | |||
| + | Wer sich nicht mit SQL-Syntax beschäftigen mag und auch keine Lust hat, Textdateien zu durchforsten, | ||
| + | |||
| + | Den Hinweis im letzten Schritt, die Datei / | ||
| + | |||
| + | Einmal eingerichtet, | ||
| + | |||
| + | Noch mehr Filtermöglichkeiten erhalten Sie mit der erweiterten Suche direkt neben dem Suchfeld. Damit die Suche nach LogFacilities wie Mail und Auth dort zum Erfolg führt, sollten Sie die Ansicht zuvor auf „SyslogFields“ umstellen. Auf der erweiterten Suchseite können Sie dann eine oder mehrere Log-Facilities und Prioritäten auswählen. Außerdem gibt es die Option, einen Suchzeitraum zu definieren, den SyslogTag auszuwählen sowie einen Suchbegriff in ein Freitextfeld einzugeben. | ||
| + | |||
| + | Auf der Hauptseite erscheint dann im Suchfeld auch die Syntax der erweiterten Suche, die sich mit den richtigen Suchbegriffen auch über die Hauptseite anwerfen lässt. So fischt der Suchbegriff facility: | ||
| + | |||
| + | Gerade im Zusammenspiel mit der übersichtlichen Aufbereitung der Daten durch PHPLogConf bringt rsyslog nicht nur Serveradmins, | ||
| + | |||
| + | ===== Apache soll nach rsyslog loggen ===== | ||
| + | |||
| + | ==== versagt in der Praxis ==== | ||
| + | Diese Variante wird hier nur der Vollständigkeit gezeigt werden. | ||
| + | |||
| + | Die Direktive ErrorLog bestimmt den Namen der Datei, in welcher der Server alle auftretenden Fehler protokolliert. Wenn Dateiname nicht absolut ist, wird er relativ zu ServerRoot betrachtet. | ||
| + | |||
| + | Die Verwendung von syslog anstelle eines Dateinamens aktiviert die Protokollierung mittels syslogd(8), sofern das System es unterstützt. Als Voreinstellung wird der syslog-Typ (syslog facility) local7 verwendet, Sie können dies jedoch auch überschreiben, | ||
| + | |||
| + | ErrorLog syslog: | ||
| + | |||
| + | For example, if you wanted to log only critical errors to a particular file, add the line in your / | ||
| + | |||
| + | local7.crit | ||
| + | |||
| + | The access logs are a bit trickier. They don't have a built-in syslog function, but do accept pipes. A quick perl script based off of O' | ||
| + | |||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | |||
| + | ==== funktioniert in der Praxis ==== | ||
| + | |||
| + | In der Praxis funktioniert das umlenken des Apache-Log ins Syslog so wie hier beschrieben: | ||
| + | |||
| + | |||
| + | ===== Datei nach rsyslog pumpen ===== | ||
| + | |||
| + | * [[http:// | ||
| + | |||
| + | |||
| + | ===== Links ===== | ||
| + | |||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | |||
| + | ===== rsyslog modern Configuration ===== | ||
| + | |||
| + | Konfigurationsdatei bearbeiten | ||
| + | > vi / | ||
| + | |||
| + | * **[[https:// | ||
| + | * __[[https:// | ||
| + | |||
| + | jeder Rechner bekommt seine eigene Log-Datei: | ||
| + | $template | ||
| + | *.* -?DynaFile | ||
| + | |||
| + | * **[[https:// | ||
| + | |||
| + | es wird von allen Rechnern ins Log geschrieben, | ||
| + | if ($fromhost != ' | ||
| + | then { | ||
| + | action(type=" | ||
| + | stop | ||
| + | } | ||
| + | |||
| + | es wird vom '' | ||
| + | if ($fromhost == ' | ||
| + | then { | ||
| + | action(type=" | ||
| + | stop | ||
| + | } else { | ||
| + | action(type=" | ||
| + | stop | ||
| + | } | ||
| + | |||
| + | __Nicht vergessen, die neuen Log-Dateien auch ins LogRotate einzutragen!__ | ||
| + | > vi / | ||
| + | |||
