Features und Schnittstellen

Logstash

Logstash besticht durch die Vielzahl der integrierten In- und Outputs sowie die Möglichkeit, den Inhalt von Log- und Eventinformationen in Echtzeit auszuwerten und anzureichern. Dies erlaubt beispielsweise die Splittung von Loginformationen in einzelne Segmente, Ersetzung von Strings, Bearbeitung von XML Fragmenten oder auch Anreicherung von Geo-Informationen auf Basis von IP-Adressen.

Besonders mächtig ist die Verwendung der integrierten Grok-Filter, die im Vergleich zu regulären Ausdrücken leichter anzuwenden sind. Logstash liefert in aktuellen Versionen bereits über 120 dieser vorgefertigten Patterns für Apache, Syslog, u.v.m. mit aus. So kann unter Verwendung des Apache Patterns ein Logfile zerlegt und im gleichen Schritt weiterverarbeitet werden. Wer die korrekte Anwendung eines neuen Patterns ohne Neustart versuchen möchte, sollte sich mal den Online-Grok-Debugger ansehen.

Konfigurationselemente

Das konfigurierte Regelwerk wird Logstash mit Hilfe eines Configfiles übergeben und besteht im Grundsatz aus vier Plugin-Typen:

  • Inputs
  • Codecs
  • Filter
  • Outputs

Während sich In- und Outputs um die Integration von Logstash kümmern, sind die Codecs und Filter für die Interpretation und Bearbeitung der Informationen verantwortlich. Seit der Version 1.2 unterstützt Logstash auch die konditionelle Verarbeitung von Information und erleichtert die zielgerichtete Weiterleitung von Events an die mit der Weiterverarbeitung beauftragte Komponente.

Zwischen Input- und Output-Plugins sorgen Codecs und Filter für die richtige Aufbereitung, Modifikation und Filterung der Log- und Eventinformationen. Die meisten Informationen werden in einem optimierten JSON-Format weiterverarbeitet, jedoch kann Logstash auch mit anderen Formaten wie netflow umgehen oder beherrscht die Verarbeitung von Multiline-Outputs. Letztere sind gerade bei der Verarbeitung von Stacktraces aus Java und Ruby ein eleganter Weg, auf den man nicht mehr verzichten will.

Inputs Codecs Filter Outputs
  • collectd
  • drupal_dblog
  • elasticsearch
  • eventlog
  • exec
  • file
  • ganglia
  • gelf
  • gemfire
  • generator
  • graphite
  • heroku
  • imap
  • invalid_input
  • irc
  • jmx
  • log4j
  • lumberjack
  • pipe
  • puppet_facter
  • rabbitmq
  • rackspace
  • redis
  • relp
  • s3
  • snmptrap
  • sqlite
  • sqs
  • stdin
  • stomp
  • syslog
  • tcp
  • twitter
  • udp
  • unix
  • varnishlog
  • websocket
  • wmi
  • xmpp
  • zenoss
  • zeromq
  • cloudtrail
  • collectd
  • compress_spooler
  • dots
  • edn
  • edn_lines
  • fluent
  • graphite
  • json
  • json_lines
  • json_spooler
  • line
  • msgpack
  • multiline
  • netflow
  • noop
  • oldlogstashjson
  • plain
  • rubydebug
  • spool
  • advisor
  • alter
  • anonymize
  • checksum
  • cidr
  • cipher
  • clone
  • collate
  • csv
  • date
  • dns
  • drop
  • elapsed
  • elasticsearch
  • environment
  • extractnumbers
  • fingerprint
  • gelfify
  • geoip
  • grep
  • grok
  • grokdiscovery
  • i18n
  • json
  • json_encode
  • kv
  • metaevent
  • metrics
  • multiline
  • mutate
  • noop
  • prune
  • punct
  • railsparallelrequest
  • range
  • ruby
  • sleep
  • split
  • sumnumbers
  • syslog_pri
  • throttle
  • translate
  • unique
  • urldecode
  • useragent
  • uuid
  • wms
  • wmts
  • xml
  • zeromq
  • boundary
  • circonus
  • cloudwatch
  • csv
  • datadog
  • datadog_metrics
  • elasticsearch
  • elasticsearch_http
  • elasticsearch_river
  • email
  • exec
  • file
  • ganglia
  • gelf
  • gemfire
  • google_bigquery
  • google_cloud_storage
  • graphite
  • graphtastic
  • hipchat
  • http
  • irc
  • jira
  • juggernaut
  • librato
  • loggly
  • lumberjack
  • metriccatcher
  • mongodb
  • nagios
  • nagios_nsca
  • null
  • opentsdb
  • pagerduty
  • pipe
  • rabbitmq
  • rackspace
  • redis
  • redmine
  • riak
  • riemann
  • s3
  • sns
  • solr_http
  • sqs
  • statsd
  • stdout
  • stomp
  • syslog
  • tcp
  • udp
  • websocket
  • xmpp
  • zabbix
  • zeromq