SlideShare a Scribd company logo
1 of 19
Download to read offline
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 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
‣  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
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
Testergebnisse
Ohne ELK, mit Excel
15
Webserver,
überlastet
15
Webserver,
überlastet
20
Webserver,
stabil
15 Webserver
+5 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: 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
/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
‣  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
Testergebnisse „Social Intranet“
Zoom auf die letzten 10 Minuten
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
‣  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
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

More Related Content

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

Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?Marc Müller
 
Übersicht Skriptsprachen
Übersicht SkriptsprachenÜbersicht Skriptsprachen
Übersicht SkriptsprachenA. LE
 
Die JSTL Tag-Library
Die JSTL Tag-LibraryDie JSTL Tag-Library
Die JSTL Tag-Librarytutego
 
Lösungsorientierte Fehlerbehandlung
Lösungsorientierte FehlerbehandlungLösungsorientierte Fehlerbehandlung
Lösungsorientierte Fehlerbehandlungroskakori
 
AdvancedTdd
AdvancedTddAdvancedTdd
AdvancedTddjlink
 
DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?
DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?
DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?Marc Müller
 
Einführung in die funktionale Programmierung
Einführung in die funktionale ProgrammierungEinführung in die funktionale Programmierung
Einführung in die funktionale ProgrammierungDigicomp Academy AG
 
2006 - NRW Conf: Asynchronous asp.net
2006 - NRW Conf: Asynchronous asp.net2006 - NRW Conf: Asynchronous asp.net
2006 - NRW Conf: Asynchronous asp.netDaniel Fisher
 
Best Practices für TDD in JavaScript
Best Practices für TDD in JavaScriptBest Practices für TDD in JavaScript
Best Practices für TDD in JavaScriptSebastian Springer
 
Lehmanns Rails Erweitern
Lehmanns Rails ErweiternLehmanns Rails Erweitern
Lehmanns Rails Erweiternjan_mindmatters
 
Brownbag: Java Applikationen und die JVM für „Ops“
Brownbag: Java Applikationen und die JVM für „Ops“Brownbag: Java Applikationen und die JVM für „Ops“
Brownbag: Java Applikationen und die JVM für „Ops“inovex GmbH
 
Prototype 1.7
Prototype 1.7Prototype 1.7
Prototype 1.7msebel
 
Streaming Plattformen und die Qual der Wahl
Streaming Plattformen und die Qual der WahlStreaming Plattformen und die Qual der Wahl
Streaming Plattformen und die Qual der WahlMatthias Niehoff
 
Skripting prüfung, automatisierung und funktionserweiterung - Sebastian-Nic...
Skripting   prüfung, automatisierung und funktionserweiterung - Sebastian-Nic...Skripting   prüfung, automatisierung und funktionserweiterung - Sebastian-Nic...
Skripting prüfung, automatisierung und funktionserweiterung - Sebastian-Nic...MAX2014DACH
 
Qualitätssicherung in Webprojekten
Qualitätssicherung in WebprojektenQualitätssicherung in Webprojekten
Qualitätssicherung in WebprojektenSebastian Springer
 

Similar to JMeter + ELK - Event-basierte Daten != Logfiles in ELK (20)

Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?
 
Übersicht Skriptsprachen
Übersicht SkriptsprachenÜbersicht Skriptsprachen
Übersicht Skriptsprachen
 
Die JSTL Tag-Library
Die JSTL Tag-LibraryDie JSTL Tag-Library
Die JSTL Tag-Library
 
Lösungsorientierte Fehlerbehandlung
Lösungsorientierte FehlerbehandlungLösungsorientierte Fehlerbehandlung
Lösungsorientierte Fehlerbehandlung
 
AdvancedTdd
AdvancedTddAdvancedTdd
AdvancedTdd
 
DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?
DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?
DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?
 
jBPM & Drools
jBPM & DroolsjBPM & Drools
jBPM & Drools
 
Einführung in die funktionale Programmierung
Einführung in die funktionale ProgrammierungEinführung in die funktionale Programmierung
Einführung in die funktionale Programmierung
 
2006 - NRW Conf: Asynchronous asp.net
2006 - NRW Conf: Asynchronous asp.net2006 - NRW Conf: Asynchronous asp.net
2006 - NRW Conf: Asynchronous asp.net
 
Best Practices für TDD in JavaScript
Best Practices für TDD in JavaScriptBest Practices für TDD in JavaScript
Best Practices für TDD in JavaScript
 
Lehmanns Rails Erweitern
Lehmanns Rails ErweiternLehmanns Rails Erweitern
Lehmanns Rails Erweitern
 
5min analyse
5min analyse5min analyse
5min analyse
 
Wicket Kurzübersicht
Wicket KurzübersichtWicket Kurzübersicht
Wicket Kurzübersicht
 
JBoss jBPM
JBoss jBPMJBoss jBPM
JBoss jBPM
 
Brownbag: Java Applikationen und die JVM für „Ops“
Brownbag: Java Applikationen und die JVM für „Ops“Brownbag: Java Applikationen und die JVM für „Ops“
Brownbag: Java Applikationen und die JVM für „Ops“
 
Prototype 1.7
Prototype 1.7Prototype 1.7
Prototype 1.7
 
Streaming Plattformen und die Qual der Wahl
Streaming Plattformen und die Qual der WahlStreaming Plattformen und die Qual der Wahl
Streaming Plattformen und die Qual der Wahl
 
Skripting prüfung, automatisierung und funktionserweiterung - Sebastian-Nic...
Skripting   prüfung, automatisierung und funktionserweiterung - Sebastian-Nic...Skripting   prüfung, automatisierung und funktionserweiterung - Sebastian-Nic...
Skripting prüfung, automatisierung und funktionserweiterung - Sebastian-Nic...
 
A/B Testing mit Node.js
A/B Testing mit Node.jsA/B Testing mit Node.js
A/B Testing mit Node.js
 
Qualitätssicherung in Webprojekten
Qualitätssicherung in WebprojektenQualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
 

More from inovex GmbH

lldb – Debugger auf Abwegen
lldb – Debugger auf Abwegenlldb – Debugger auf Abwegen
lldb – Debugger auf Abwegeninovex GmbH
 
Are you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AIAre you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AIinovex GmbH
 
Why natural language is next step in the AI evolution
Why natural language is next step in the AI evolutionWhy natural language is next step in the AI evolution
Why natural language is next step in the AI evolutioninovex GmbH
 
Network Policies
Network PoliciesNetwork Policies
Network Policiesinovex GmbH
 
Interpretable Machine Learning
Interpretable Machine LearningInterpretable Machine Learning
Interpretable Machine Learninginovex GmbH
 
Jenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen UmgebungenJenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen Umgebungeninovex GmbH
 
AI auf Edge-Geraeten
AI auf Edge-GeraetenAI auf Edge-Geraeten
AI auf Edge-Geraeteninovex GmbH
 
Prometheus on Kubernetes
Prometheus on KubernetesPrometheus on Kubernetes
Prometheus on Kubernetesinovex GmbH
 
Deep Learning for Recommender Systems
Deep Learning for Recommender SystemsDeep Learning for Recommender Systems
Deep Learning for Recommender Systemsinovex GmbH
 
Representation Learning von Zeitreihen
Representation Learning von ZeitreihenRepresentation Learning von Zeitreihen
Representation Learning von Zeitreiheninovex GmbH
 
Talk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale AssistentenTalk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale Assistenteninovex GmbH
 
Künstlich intelligent?
Künstlich intelligent?Künstlich intelligent?
Künstlich intelligent?inovex GmbH
 
Das Android Open Source Project
Das Android Open Source ProjectDas Android Open Source Project
Das Android Open Source Projectinovex GmbH
 
Machine Learning Interpretability
Machine Learning InterpretabilityMachine Learning Interpretability
Machine Learning Interpretabilityinovex GmbH
 
Performance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use casePerformance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use caseinovex GmbH
 
People & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madnessPeople & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madnessinovex GmbH
 
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with PulumiInfrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with Pulumiinovex GmbH
 

More from inovex GmbH (20)

lldb – Debugger auf Abwegen
lldb – Debugger auf Abwegenlldb – Debugger auf Abwegen
lldb – Debugger auf Abwegen
 
Are you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AIAre you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AI
 
Why natural language is next step in the AI evolution
Why natural language is next step in the AI evolutionWhy natural language is next step in the AI evolution
Why natural language is next step in the AI evolution
 
WWDC 2019 Recap
WWDC 2019 RecapWWDC 2019 Recap
WWDC 2019 Recap
 
Network Policies
Network PoliciesNetwork Policies
Network Policies
 
Interpretable Machine Learning
Interpretable Machine LearningInterpretable Machine Learning
Interpretable Machine Learning
 
Jenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen UmgebungenJenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen Umgebungen
 
AI auf Edge-Geraeten
AI auf Edge-GeraetenAI auf Edge-Geraeten
AI auf Edge-Geraeten
 
Prometheus on Kubernetes
Prometheus on KubernetesPrometheus on Kubernetes
Prometheus on Kubernetes
 
Deep Learning for Recommender Systems
Deep Learning for Recommender SystemsDeep Learning for Recommender Systems
Deep Learning for Recommender Systems
 
Azure IoT Edge
Azure IoT EdgeAzure IoT Edge
Azure IoT Edge
 
Representation Learning von Zeitreihen
Representation Learning von ZeitreihenRepresentation Learning von Zeitreihen
Representation Learning von Zeitreihen
 
Talk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale AssistentenTalk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale Assistenten
 
Künstlich intelligent?
Künstlich intelligent?Künstlich intelligent?
Künstlich intelligent?
 
Dev + Ops = Go
Dev + Ops = GoDev + Ops = Go
Dev + Ops = Go
 
Das Android Open Source Project
Das Android Open Source ProjectDas Android Open Source Project
Das Android Open Source Project
 
Machine Learning Interpretability
Machine Learning InterpretabilityMachine Learning Interpretability
Machine Learning Interpretability
 
Performance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use casePerformance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use case
 
People & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madnessPeople & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madness
 
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with PulumiInfrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
 

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

  • 1. JMeter & ELK Search Meetup Jan. 2015
  • 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 ‣  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. 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 Testergebnisse Ohne ELK, mit Excel 15 Webserver, überlastet 15 Webserver, überlastet 20 Webserver, stabil 15 Webserver +5 Webserver
  • 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 /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 ‣  idle ≈ 1 req/s ‣  elapsed time ≈ 100ms Testergebnisse „Social Intranet“ 3 Testläufe von Köln aus
  • 11. 11 ‣  100% Last ≈ 45 req/s ‣  elapsed time ≈ 200ms Testergebnisse „Social Intranet“ 3 Testläufe von Köln aus
  • 12. 12 ‣  ~150% Last ≈ 70 req/s ‣  elapsed time ≈ 150ms (?!? *shrug*) Testergebnisse „Social Intranet“ 3 Testläufe von Köln aus
  • 14. 14 ‣  nur zu Beginn einige erfolgreiche Requests Testergebnisse „Social Intranet“ Zoom auf die ersten 10 Minuten
  • 15. 15 ‣  Fehler: großteils Timeouts Testergebnisse „Social Intranet“ Zoom auf die ersten 10 Minuten
  • 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 ‣  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 ‣  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 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