logstash + redis + elasticsearch + kibana3
23 Jul 2013
Composition applied to logging has been a great sucess lately, this week I’ve verified how easy is to use logstash and friends with 48 servers distributed in two datacenters, I’ve created a script to deploy all programs in a single node.
$ bash <(wget -qO- https://raw.github.com/javier-lopez/learn/master/sh/is/log-stack)
If you prefer using a node per service you’ll need to go your own way, it shouldn’t be too difficult.
##Extra, patterns
To send emails when a pattern is found, I used the grep and file logstash filters:
$ sudo service logstash-shipper stop $ sudo vi /home/logstash/shipper.conf $ sudo service logstash-shipper start
/home/logstash/shipper.conf
filter { grep { type => "syslog" match => ["@message","pattern"] add_tag => "Alert_flood" drop => false } output { file { type => "syslog" tags => [ "Alert_flood" ] message_format => "%{@message}" path => "/tmp/logstash_alert" }
WARNING: shipper.conf doesn’t look exactly like this, these snippets must be integrated with your own files, copy and paste won’t work. If you’re not sure about the syntax, take a look at logstash documentation.
So, after rebooting the service logstash will add an “Alert_flood” tag to all messages where the pattern is found and will copy these messages (besides sending them to redis) to /tmp/logstash_alert.
Finally I wrote a script to send warning messages by email to the admins:
$ sudo crontab -l */1 * * * * /usr/local/bin/check_alerts_logstash.sh