Fluentd ist eine Open Source Anwendung mit der Logs gesammelt, aufbereitet, gespeichert und weiterverarbeitet werden können. Wie die Anwendung installiert und grundlegend Konfiguriert wird, wird im folgenden Artikel beschrieben.
Die Firma Treasure Data, von der Fluentd entwickelt und gesponsert wird, stellt bereits fertige Pakete für verschiedene Linux Distributionen zur Verfügung. Die im Paket enthaltene Softwarezusammenstellungen bestehend aus Ruby, PostgreSQL, fluentd und weiteren Komponenten wird als td-agent (Treasure Data Agent) bezeichnet und besitzt ein paar Beispielkonfigurationen, wie die Log-Daten an Treasure Data geschickt werden können. Trotz dieser Zusammenstellungen und Vorkonfiguration ist es natürlich möglich Fluentd eigenständig zu verwenden.
Für einen ersten Test soll ein Ubuntu 14.04 System dienen.
Zunächst wird das Repository eingebunden und das benötigte Paket installiert. Um diesen Schritt weiter zu vereinfachen steht ein Shell-Skript zur Verfügung, welches wie folgt heruntergeladen und ausgeführt werden kann.
curl -L https://toolbelt.treasuredata.com/sh/install-ubuntu-trusty-td-agent2.sh | sudo sh
Die Konfiguration des Agent befindet sich anschließend in der Datei /etc/td-agent/td-agent.conf
Plugins können mit Hilfe des Programms td-agent-gem
installiert werden.
$ sudo td-agent-gem install fluent-plugin-grep
WARN: Unresolved specs during Gem::Specification.reset:
json (>= 1.4.3)
WARN: Clearing out unresolved specs.
Please report a bug if this causes problems.
Successfully installed fluent-plugin-grep-0.3.4
Parsing documentation for fluent-plugin-grep-0.3.4
Installing ri documentation for fluent-plugin-grep-0.3.4
Done installing documentation for fluent-plugin-grep after 0 seconds
1 gem installed
Für einen ersten Test wird eine Datei fluentd.conf
mit folgendem Inhalt angelegt.
<source>
@type tail
path /var/log/syslog
pos_file /var/log/td-agent/syslog.pos
tag local.syslog
format syslog
</source>
<match local.*>
@type stdout
</match>
Anschließend wird fluentd mit der Konfiguration gestartet.
$ sudo td-agent -c fluentd.conf
2015-12-06 10:28:39 +0000 [info]: reading config file path="fluentd.conf"
2015-12-06 10:28:39 +0000 [info]: starting fluentd-0.12.12
2015-12-06 10:28:40 +0000 [info]: gem 'fluent-mixin-config-placeholders' version '0.3.0'
2015-12-06 10:28:40 +0000 [info]: gem 'fluent-mixin-plaintextformatter' version '0.2.6'
2015-12-06 10:28:40 +0000 [info]: gem 'fluent-plugin-grep' version '0.3.4'
2015-12-06 10:28:40 +0000 [info]: gem 'fluent-plugin-mongo' version '0.7.10'
2015-12-06 10:28:40 +0000 [info]: gem 'fluent-plugin-rewrite-tag-filter' version '1.4.1'
2015-12-06 10:28:40 +0000 [info]: gem 'fluent-plugin-s3' version '0.5.9'
2015-12-06 10:28:40 +0000 [info]: gem 'fluent-plugin-scribe' version '0.10.14'
2015-12-06 10:28:40 +0000 [info]: gem 'fluent-plugin-td' version '0.10.27'
2015-12-06 10:28:40 +0000 [info]: gem 'fluent-plugin-td-monitoring' version '0.2.1'
2015-12-06 10:28:40 +0000 [info]: gem 'fluent-plugin-webhdfs' version '0.4.1'
2015-12-06 10:28:40 +0000 [info]: gem 'fluentd' version '0.12.12'
2015-12-06 10:28:40 +0000 [info]: adding match pattern="local.*" type="stdout"
2015-12-06 10:28:40 +0000 [info]: adding source type="tail"
2015-12-06 10:28:40 +0000 [info]: using configuration file: <ROOT>
<source>
@type tail
path /var/log/syslog
pos_file /var/log/td-agent/syslog.pos
tag local.syslog
format syslog
</source>
<match local.*>
@type stdout
</match>
</ROOT>
2015-12-06 10:28:40 +0000 [info]: following tail of /var/log/syslog
Die Konfiguration bewirkt, dass die Datei /var/log/syslog
überwacht und zeilenweise gelesen wird. Die Aufbereiteten Daten werden anschließend auf der Konsole ausgegeben.
Mit dem folgenden Befehl wird eine neue Meldung in das Syslog geschrieben.
$ logger test
Welche anschließend durch fluentd gelesen, interpretiert und ausgegeben wird.
2015-12-06 10:30:55 +0000 local.syslog: {"host":"vagrant-ubuntu-trusty-64","ident":"vagrant","message":"test"}
Ist der Agent über die Datei /etc/td-agent/td-agent.conf
konfiguriert, kann er mit folgendem Befehl gestartet werden.
$ sudo service td-agent start
Damit der Agent auch beim nächsten Neustart gestartet wird, muss folgender Befehl ausgeführt werden
$ sudo update-rc.d td-agent defaults
Weitere Beispiele, Plugins und Informationen können auf der Seite von Fluentd gefunden werden.
Links
- Webseite: Fluentd (englisch)
- Webseite: Ubuntu (englisch)
- Webseite: Treasure Data (englisch)