Slide 1

Slide 1 text

ELK and Kafka Tal levy April 29, 2015

Slide 2

Slide 2 text

www.elastic.co 2 What Logstash Kafka and how Logstash can leverage it Message Serialization Monitoring Kafka with Elasticsearch, Logstash, Kibana

Slide 3

Slide 3 text

www.elastic.co Copyright Elastic 2015 Copying, publishing and/or distributing without written permission is strictly prohibited 3 Logstash …With LOTS of Plugins! Input Filter Output File JMX TCP Couchdb IRC Twitter Mutate Date Grok Ruby UserAgent Elasticsearch Postgres Nagios IRC Log Processing Pipeline

Slide 4

Slide 4 text

www.elastic.co Copyright Elastic 2015 Copying, publishing and/or distributing without written permission is strictly prohibited 4 Logstash Config input { file { path => “/path/to/logs” } } filter { grok { match => { "message" => “%{IP:client}” } } } output { elasticsearch { protocol => “http” } }

Slide 5

Slide 5 text

www.elastic.co Copyright Elastic 2015 Copying, publishing and/or distributing without written permission is strictly prohibited 5 Where

Slide 6

Slide 6 text

www.elastic.co Copyright Elastic 2015 Copying, publishing and/or distributing without written permission is strictly prohibited 6 Kafka … and a Logstash plugin! A High-throughput distributed messaging system

Slide 7

Slide 7 text

www.elastic.co Copyright Elastic 2015 Copying, publishing and/or distributing without written permission is strictly prohibited 7 Input Plugin input { kafka { topic_id => “most_important”
 } }

Slide 8

Slide 8 text

www.elastic.co Copyright Elastic 2015 Copying, publishing and/or distributing without written permission is strictly prohibited 8 Output Plugin output { kafka { topic_id => “most_important”
 } }

Slide 9

Slide 9 text

www.elastic.co Copyright Elastic 2015 Copying, publishing and/or distributing without written permission is strictly prohibited 9 Custom Serializer One of the options in Kafka Producer output { kafka { … serializer.class => “kafka.serializer.StringEncoder” … } }

Slide 10

Slide 10 text

www.elastic.co Copyright Elastic 2015 Copying, publishing and/or distributing without written permission is strictly prohibited 10 Custom Dots Serializer package org.logstash.dots; import kafka.serializer.Encoder; import kafka.utils.VerifiableProperties; public class DotsEncoder implements Encoder { public DotsEncoder(VerifiableProperties props) { / /do nothing } @Override public byte[] toBytes(String s) { return ".".getBytes(); } } https:/ /github.com/talevy/kafka-dots-serializer

Slide 11

Slide 11 text

www.elastic.co Copyright Elastic 2015 Copying, publishing and/or distributing without written permission is strictly prohibited 11 Custom Dots Serializer output { kafka { … serializer.class => “org.logstash.dots.DotsEncoder” … } }

Slide 12

Slide 12 text

www.elastic.co Copyright Elastic 2015 Copying, publishing and/or distributing without written permission is strictly prohibited 12 Custom Serializer $ export CLASSPATH=“$CLASSPATH:/path/to/serializer.jar” $ bin/logstash -f /path/to/config In Logstash Environment logs in, …. out!

Slide 13

Slide 13 text

Monitoring Kafka with ELK

Slide 14

Slide 14 text

www.elastic.co Copyright Elastic 2015 Copying, publishing and/or distributing without written permission is strictly prohibited 14 Kafka & JMX … Logstash has a plugin for that! Lots of metrics are exposed via JMX

Slide 15

Slide 15 text

www.elastic.co Copyright Elastic 2015 Copying, publishing and/or distributing without written permission is strictly prohibited 15 JMX Plugin http://www.elastic.co/guide/en/logstash/current/plugins-inputs-jmx.html

Slide 16

Slide 16 text

www.elastic.co Copyright Elastic 2015 Copying, publishing and/or distributing without written permission is strictly prohibited 16 Monitoring Server Throughput { "host": "localhost", "port": 9999, "alias": "kafka.server", "queries": [ { "object_name": "kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec,topic=*", "attributes": ["MeanRate"], "object_alias": "msg_per_sec-${topic}" } ] } jmx json configuration

Slide 17

Slide 17 text

www.elastic.co Copyright Elastic 2015 Copying, publishing and/or distributing without written permission is strictly prohibited 17 Logstash Config input { jmx { path => “/path/to/jmxconf” polling_frequency => 5 } } output { elasticsearch { protocol => "http" } }

Slide 18

Slide 18 text

www.elastic.co Copyright Elastic 2015 Copying, publishing and/or distributing without written permission is strictly prohibited 18 JMX Event { "@version" => "1", "@timestamp" => "2015-04-29T21:59:10.160Z", "host" => "localhost", "path" => “jmx-server", "type" => nil, "metric_path" => "kafka.server.msg_per_sec-topic2.MeanRate", "metric_value_number" => 1982.548103009822 }

Slide 19

Slide 19 text

www.elastic.co Copyright Elastic 2015 Copying, publishing and/or distributing without written permission is strictly prohibited 19 Throughput

Slide 20

Slide 20 text

www.elastic.co Copyright Elastic 2015 Copying, publishing and/or distributing without written permission is strictly prohibited 20 Elasticsearch Index Management Daily Indices logstash-%{+YYYY.MM.dd} Curator A Python client for managing ES indices Important to know if you want to save disk space!

Slide 21

Slide 21 text

www.elastic.co Copyright Elastic 2015 Copying, publishing and/or distributing without written permission is strictly prohibited 21 Monitoring Consumption export LS_JAVA_OPTS=“ -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=3000 -Dcom.sun.management.jmxremote.ssl=false" custom java opts for Logstash $ bin/logstash -e “input { kafka { topic_id => hello } }” running Logstash kafka consumer:

Slide 22

Slide 22 text

www.elastic.co Copyright Elastic 2015 Copying, publishing and/or distributing without written permission is strictly prohibited 22 Monitoring Consumer Lag { "host": "localhost", "port": 3001, "queries": [ { "object_name": "kafka.server:type=FetcherLagMetrics,name=ConsumerLag,clientId=logstash,topic=*,partition=*" } ] } jmx json configuration

Slide 23

Slide 23 text

www.elastic.co Copyright Elastic 2015 Copying, publishing and/or distributing without written permission is strictly prohibited 23 Consumer Lag

Slide 24

Slide 24 text

www.elastic.co Copyright Elastic 2015 Copying, publishing and/or distributing without written permission is strictly prohibited 24 Together

Slide 25

Slide 25 text

Thank You!