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

19
Hystrix + ELK Markus Rodi Karlsruhe, 29.01.2015

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

Hystrix + ELK

Markus Rodi

Karlsruhe, 29.01.2015

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

3

● Implementierung von Patterns zur Ausfallsicherheit

- Graceful Degradation

- Fail Fast

- Fail Silent

- Circuit Breaker

- Bulkheading

HystrixWas ist das überhaupt?

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

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

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

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

8

HystrixDas Dashboard

9

ArichtekturDezentral

10

ArichtekturZentral

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?

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

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 {} }

14

KibanaDas Ergebnis

15

KibanaVerbindungsdaten zu externen Dienstleister

16

KibanaCircuitBreakerOpen

17

KibanaCircuitBreakerOpen

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

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!