Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
JMeter & ELK
Search Meetup
Jan. 2015
2
‣  schon mehrere Lasttests durchgeführt:
‣  größere (2500 req/s)
‣  mittlere
‣  aber auch kleine (40 req/s)
‣  grober Ab...
3
‣  Was ist „schnell“? Was bedeutet „auch unter Last stabil“?
‣  Wenn möglich: sich an vorhandenen oder ähnlichen Systeme...
1) fairerweise: ist auch eher fürs Entwickeln/Debuggen gedacht
2) auch im JMeter Wiki wird ein „Shell Script to Aggregate ...
5
Testergebnisse
Ohne ELK, mit Excel
15
Webserver,
überlastet
15
Webserver,
überlastet
20
Webserver,
stabil
15 Webserver
+...
http://jmeter.apache.org/images/screenshots/graph_results.png 6
Problemstellung 3: Nachgelagerte Analysen
http://jmeter.apache.org/images/screenshots/response_time_graph.png 7
Problemstellung 3: Nachgelagerte Analysen
8
<...>/JMeter/config/addiontal.properties
# Timestamp format - this only affects CSV output files
# legitimate values: no...
9
/etc/logstash/conf.d/foobar_jmeter_csv.conf
# use a grok filter to match our event. For debugging use http://grokdebug.h...
10
‣  idle ≈ 1 req/s
‣  elapsed time ≈ 100ms
Testergebnisse „Social Intranet“
3 Testläufe von Köln aus
11
‣  100% Last ≈ 45 req/s
‣  elapsed time ≈ 200ms
Testergebnisse „Social Intranet“
3 Testläufe von Köln aus
12
‣  ~150% Last ≈ 70 req/s
‣  elapsed time ≈ 150ms (?!? *shrug*)
Testergebnisse „Social Intranet“
3 Testläufe von Köln aus
13
Testergebnisse „Social Intranet“
Testlauf von Hong-Kong mit 100% Last
14
‣  nur zu Beginn einige erfolgreiche Requests
Testergebnisse „Social Intranet“
Zoom auf die ersten 10 Minuten
15
‣  Fehler: großteils Timeouts
Testergebnisse „Social Intranet“
Zoom auf die ersten 10 Minuten
16
‣  Fehler nun: UnknownHostExceptions (DNS?). Zu diesem Zeitpunkt kommen die
Requests gar nicht mehr am Server an
Tester...
17
‣  cd ~/git-repos/inovex-vagrant/vagrantfiles/ubuntu12-with-jmeter-and-elk
‣  vagrant up
‣  http://localhost:13080/kiba...
18
‣  ELK hilft in der Testspezifikation
‣  ELK ist sehr geeignet für die event-basierten Daten aus JMeter
‣  Datenmengen ...
19
Vielen Dank für Ihre Aufmerksamkeit
Kontakt
Max Wippert
Head of Project Management & Quality Assurance
inovex GmbH
Offi...
Nächste SlideShare
Wird geladen in …5
×

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

619 Aufrufe

Veröffentlicht am

Ein typischer und etablierter Use-Case für ELK ist das prozessieren, aggregieren und analysierbar machen diverser Logfiles. Aber ELK kann prinzipiell für alle möglichen, event-basierte Daten (strukturiert oder unstrukturiert) verwendet werden. Wir werden an Hand von zwei Projekten betrachten.

• ELK und JMeter

• ELK und Hystrix

Um es vorweg zu nehmen: ja, es geht und ELK rockt ;)

Der Vortrag wurde beim inovex Search-Meetup in Karlsruhe am 29.01.2015 gehalten.
Speaker: Max Wippert (inovex)

Mehr inovex-Meetups:
Karlsruhe: http://www.meetup.com/inovex-karlsruhe/
Köln: http://www.meetup.com/inovex-cologne
München: http://www.meetup.com/inovex-munich/

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

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

  1. 1. JMeter & ELK Search Meetup Jan. 2015
  2. 2. 2 ‣  schon mehrere Lasttests durchgeführt: ‣  größere (2500 req/s) ‣  mittlere ‣  aber auch kleine (40 req/s) ‣  grober Ablauf stets: ‣  Testspezifikation ‣  Was genau soll getestet werden? ‣  Was sind die Exit Kriterien? ‣  Tests programmieren und Tests durchführen ‣  Testergebnisse auswerten und interpretieren ‣  Ggf. Anpassungen am object under test und/oder den Tests ‣  rinse and repeat Hintergrundinfos
  3. 3. 3 ‣  Was ist „schnell“? Was bedeutet „auch unter Last stabil“? ‣  Wenn möglich: sich an vorhandenen oder ähnlichen Systemen orientieren ‣  Klassischer ELK use-case: Logfiles analysieren Problemstellung 1: Unklare Anforderungen
  4. 4. 1) fairerweise: ist auch eher fürs Entwickeln/Debuggen gedacht 2) auch im JMeter Wiki wird ein „Shell Script to Aggregate Per Minute“ beschrieben (http://wiki.apache.org/jmeter/LogAnalysis) 4 ‣  2500 req/s * 120 Minuten Laufzeit = 18.000.000 req ‣  Zu viel für Excel ‣  Einige JMeter Elemente „töten“ das GUI ‣  „View Results Tree“ ganz sicher1 ‣  „Graph Results“ manchmal ‣  Headless ist generell zu bevorzugen ‣  Lösungsansatz ohne ELK war: ‣  aggregator.groovy2 ‣  Excel Problemstellung 2: Datenmenge
  5. 5. 5 Testergebnisse Ohne ELK, mit Excel 15 Webserver, überlastet 15 Webserver, überlastet 20 Webserver, stabil 15 Webserver +5 Webserver
  6. 6. http://jmeter.apache.org/images/screenshots/graph_results.png 6 Problemstellung 3: Nachgelagerte Analysen
  7. 7. http://jmeter.apache.org/images/screenshots/response_time_graph.png 7 Problemstellung 3: Nachgelagerte Analysen
  8. 8. 8 <...>/JMeter/config/addiontal.properties # Timestamp format - this only affects CSV output files # legitimate values: none, ms, or a format suitable for SimpleDateFormat # Default: # jmeter.save.saveservice.timestamp_format=ms jmeter.save.saveservice.timestamp_format=yyyy-MM-dd_HH:mm:ss.SSS # For use with Comma-separated value (CSV) files or other formats # where the fields' values are separated by specified delimiters. # Default: # jmeter.save.saveservice.default_delimiter=, jmeter.save.saveservice.default_delimiter=| <...>/Jmeter/logs/MasterTestPlan.jmx_foo.bar.de_20140708-145452 timeStamp|elapsed|label|responseCode|responseMessage|threadName|dataType|success| failureMessage|bytes|grpThreads|allThreads|URL|Filename|Latency|Encoding|SampleCount| ErrorCount|Hostname|IdleTime 2014-07-08_14:54:53.238|167|TC4-ChatPollHttpPost|200|OK|Thread Group 1-1|text|true||537|1|1| http://foo.bar.de/index.php/?m=lite&module=chat&action=ping&hx1ylvte||167|ISO-8859-1|1|0| barfoo|0 2014-07-08_14:54:54.074|67|TC4-ChatPollHttpPost|200|OK|Thread Group 1-1|text|true|<...> Lösung: JMeter ELK Integration JMeter schreibt ein .csv
  9. 9. 9 /etc/logstash/conf.d/foobar_jmeter_csv.conf # use a grok filter to match our event. For debugging use http://grokdebug.herokuapp.com/ grok { patterns_dir => "/etc/logstash/patterns" match => [ "message“, "%{JMETER_TIMESTAMP:timestamp}|%{NONNEGINT:elapsed:int}|%{DATA:label}| %{POSINT_OR_DATA:responseCode}|%{DATA:responseMessage}|%{DATA:threadName} | %{DATA:dataType}|%{DATA:success}|%{DATA:failureMessage}| %{NONNEGINT:bytes:int}|%{NONNEGINT:grpThreads:int}| %{NONNEGINT:allThreads:int}|%{URI:uri}|%{DATA:filename}| %{NONNEGINT:latency:int}|%{DATA:encoding}|%{NONNEGINT:sampleCount:int}| %{NONNEGINT:errorCount:int}|%{HOSTNAME:hostname}| %{NONNEGINT:idleTime:int}" ] } # use a date filter to extract the @timestamp metadata field from the timestamp field # remove timestamp when done date { match => [ "timestamp", "yyyy-MM-dd_HH:mm:ss.SSS" ] timezone => "Europe/Berlin" remove_field => [ "timestamp" ] Lösung: JMeter ELK Integration grok und date Filter zum einlesen der JMeter Daten
  10. 10. 10 ‣  idle ≈ 1 req/s ‣  elapsed time ≈ 100ms Testergebnisse „Social Intranet“ 3 Testläufe von Köln aus
  11. 11. 11 ‣  100% Last ≈ 45 req/s ‣  elapsed time ≈ 200ms Testergebnisse „Social Intranet“ 3 Testläufe von Köln aus
  12. 12. 12 ‣  ~150% Last ≈ 70 req/s ‣  elapsed time ≈ 150ms (?!? *shrug*) Testergebnisse „Social Intranet“ 3 Testläufe von Köln aus
  13. 13. 13 Testergebnisse „Social Intranet“ Testlauf von Hong-Kong mit 100% Last
  14. 14. 14 ‣  nur zu Beginn einige erfolgreiche Requests Testergebnisse „Social Intranet“ Zoom auf die ersten 10 Minuten
  15. 15. 15 ‣  Fehler: großteils Timeouts Testergebnisse „Social Intranet“ Zoom auf die ersten 10 Minuten
  16. 16. 16 ‣  Fehler nun: UnknownHostExceptions (DNS?). Zu diesem Zeitpunkt kommen die Requests gar nicht mehr am Server an Testergebnisse „Social Intranet“ Zoom auf die letzten 10 Minuten
  17. 17. 17 ‣  cd ~/git-repos/inovex-vagrant/vagrantfiles/ubuntu12-with-jmeter-and-elk ‣  vagrant up ‣  http://localhost:13080/kibana/index.html#/dashboard/file/logstash.json ‣  load ~/git-repos/inovex-vagrant/vagrantfiles/ubuntu12-with-jmeter-and-elk/kibana- dashboard_jmeter.json Kurze Live-Demo
  18. 18. 18 ‣  ELK hilft in der Testspezifikation ‣  ELK ist sehr geeignet für die event-basierten Daten aus JMeter ‣  Datenmengen sind kein Problem mehr ‣  Nachträgliche Auswertungen inkl. Drill-down ‣  Korrelationsmöglichkeit zwischen client-seitigen Metriken aus JMeter und server- seitigen Metriken Fazit & Ausblick
  19. 19. 19 Vielen Dank für Ihre Aufmerksamkeit Kontakt Max Wippert Head of Project Management & Quality Assurance inovex GmbH Office Köln Kupferhütte 4.1 Schanzenstraße 6-20 51063, Köln Mobil: 0173-3181-048 Mail: max.wippert@inovex.de

×