Top Banner
Hystrix + ELK Markus Rodi Karlsruhe, 29.01.2015
19

Hystrix + ELK - Event-basierte Daten != Logfiles in ELK

Jul 17, 2015

Download

Technology

inovex GmbH
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Hystrix + ELK - Event-basierte Daten != Logfiles in ELK

Hystrix + ELK

Markus Rodi

Karlsruhe, 29.01.2015

Page 2: Hystrix + ELK - Event-basierte Daten != Logfiles in ELK

2

1. Hystrix

2. Use Cases

3. Problemstellungen

4. Hystrix Dashboard

5. Architektur

6. Softwarekomponenten

7. Konfiguration

8. Kibana Dashboards

9. Fazit und Ausblick

Agenda

Page 3: Hystrix + ELK - Event-basierte Daten != Logfiles in ELK

3

● Implementierung von Patterns zur Ausfallsicherheit

- Graceful Degradation

- Fail Fast

- Fail Silent

- Circuit Breaker

- Bulkheading

HystrixWas ist das überhaupt?

Page 4: Hystrix + ELK - Event-basierte Daten != Logfiles in ELK

4

● Empfehlungen für Kunden durch externes System● Fehler/Timeouts schlagen sofort auf der Webseite auf

Lösung mit Hystrix:● Fallback auf lokales System● Empfehlungen werden von statischen Regeln erstellt

Use CaseKundenspezifische Empfehlungen

Page 5: Hystrix + ELK - Event-basierte Daten != Logfiles in ELK

5

● Begrenzte Ressourcen werden gebunden● Aufwand für Connection-Handling steigt rapide● z.B.: DB Verbindungen werden für andere Dienste blockiert

Lösung mit Hystrix:● Direkte Fehlerrückgabe● Verhindert weitere Laufzeitprobleme

Use CaseFehler-Kaskaden

Page 6: Hystrix + ELK - Event-basierte Daten != Logfiles in ELK

6

● Hystrix bietet eine Echtzeit-API aber keine Historisierung● Dashboard bietet nur eine Übersicht der letzten 2 Minuten● Keine Filtermöglichkeit● Keine Möglichkeit zur schrittweisen Verfeinerung der Analyse

ProblemstellungenHistorie und Analyse

Page 7: Hystrix + ELK - Event-basierte Daten != Logfiles in ELK

7

● Datenmenge für klassisches Monitoring (Zabbix, Nagios) nicht zu bewältigen

- 50 Werte pro Komponente

- 12 Werte pro Threadpool

=> bei 10 Komponenten + 3 Threadpools ca. 2 Mio Events/Stunde/Server● Datenmenge wächst proportional zu:

- Anzahl der Server

- Anzahl der Komponenten

ProblemstellungenDatenmenge

Page 8: Hystrix + ELK - Event-basierte Daten != Logfiles in ELK

8

HystrixDas Dashboard

Page 9: Hystrix + ELK - Event-basierte Daten != Logfiles in ELK

9

ArichtekturDezentral

Page 10: Hystrix + ELK - Event-basierte Daten != Logfiles in ELK

10

ArichtekturZentral

Page 11: Hystrix + ELK - Event-basierte Daten != Logfiles in ELK

11

● Ausrollen der Pakete und Konfigs per Puppet● Software-Stack:

- ELK

- Tomcat

- hystrix-dashboard.war

- trubine.war

- nginx

- Kibana● Types long/short → aggregierte Streams/einzelne Streams

SoftwarekomponentenWie läuft das denn?

Page 12: Hystrix + ELK - Event-basierte Daten != Logfiles in ELK

12

data: {"type":"HystrixThreadPool",

"name":"PlaybackGroup",

"currentActiveCount":0,

"currentCompletedTaskCount":0,

"currentCorePoolSize":10,

"currentLargestPoolSize":0,

"currentMaximumPoolSize":10,

"currentPoolSize":0,

"currentQueueSize":0,

"currentTaskCount":0,"

...}

Hystrix Event StreamDie Basis

Page 13: Hystrix + ELK - Event-basierte Daten != Logfiles in ELK

13

Logstash KonfigurationDie Magie

input { pipe { type => "short" tags => ["mw-01"] command => "curl -s --url 'http://my.server/hystrix.stream' | cut -c 7- | sed

's/type/hystrixType/g'" codec => json {} }

Page 14: Hystrix + ELK - Event-basierte Daten != Logfiles in ELK

14

KibanaDas Ergebnis

Page 15: Hystrix + ELK - Event-basierte Daten != Logfiles in ELK

15

KibanaVerbindungsdaten zu externen Dienstleister

Page 16: Hystrix + ELK - Event-basierte Daten != Logfiles in ELK

16

KibanaCircuitBreakerOpen

Page 17: Hystrix + ELK - Event-basierte Daten != Logfiles in ELK

17

KibanaCircuitBreakerOpen

Page 18: Hystrix + ELK - Event-basierte Daten != Logfiles in ELK

18

● Schnell und einfach aufzusetzen

● Datenmenge nicht unterschätzen

● Skalierung sehr einfach

● Redis als Cache um Datenverlust zu vermeiden

● Curl ersetzen durch Programmierung auf Hystrix API

Fazit und Ausblick

Page 19: Hystrix + ELK - Event-basierte Daten != Logfiles in ELK

19

Kontakt

Markus RodiLinux System Engineer

inovex GmbHOffice KarlsruheLudwig-Erhard-Allee 676131, Karlsruhe

Mobil: 0173-3181-063Mail: [email protected]

Vielen Dank für Ihre Aufmerksamkeit!