4. ● Enterprise Software Entwicklung
● Java Pro Developer (15+)
● DevOps 4 Infonova Entwickler
Services (3+)
● Knowledge Discovery / Data Science
Services (3)
Twitter @goettl
Über mich
Follow @goettl
5. Über Infonova
● 350 Angestellte, Standorte Graz, Wien, ~250 Entwickler
● 1 Operations-, 2 Entwicklungs-Abteilungen
● ~20-40 Projekte gleichzeitig
● 30 Personen bis 5 Personen
● Tochtergesellschaft von BearingPoint, 3800 Mitarbeiter
Usecase einer SME Software und Tech Consulting Firma
Follow @goettl
9. Bekannte Monitoring Tools
● Nagios, Check_Mk (ops)
● Opentsb, Graphite (Time Series Databases)
● Influxdb + Kapacitor (Ähnlich zu Prometheus)
● Elasticsearch + Logstash + Kibana + ...
● ...
Schwer in DevOps Stack zu integrieren
Follow @goettl
10. Praxis DevOps Stack
● Einige Teams konnten teilweise DevOps Stack umsetzen
● Monitoring ausgenommen, für Entwickler schwer zugängig
● Andere Firma
● Andere Abteilung
● Keine Zeit
!!! Mauer !!!!
Follow @goettl
14. Demo: Prometheus advanced Vis + Navigation
● Grafana / Dashboards
● Navigation mit Labels
● Monitoring zur Verifikation von Lasttests
● Statistische Auswertung mit Prometheus Onboard Mitteln
● Monitoring for the long tail
Follow @goettl
15. Monitoring als Teil der Entwicklung und des Deployments
● Verifikation von Performance Tests: Lasten meine Performance Tests das System
tatsächlich aus?
● Was ist noch möglich: Entwickler definiert Metrik (Variable) als Teil eines Tests
Follow @goettl
17. Wie instrumentiert man bisher
● Json / CSV / View, ...
● JMX
● Libraries mit Hooks (Push)
Follow @goettl
18. Instrumentation Client am Beispiel Gitblit
● Client Instrumentierung
● Default Metriken für Log4j
● Default Metriken für JDK
● Eigene Metriken für Git Garbage Collection und Ldap Sync Zeit
Follow @goettl
22. Eigene Metriken
... das reicht ...
private final Counter garbageCollectsTotal = Counter.build()
.name("GIT_GARBAGE_COLLECTS_TOTAL")
.help("Number of git garbage collects issued by giblit for a repository")
.register();
...
garbageCollectsTotal.inc();
Follow @goettl
23. Demo: Exporter / Endpoint (Gitblit)
...
# TYPE jvm_memory_pool_bytes_max gauge
jvm_memory_pool_bytes_max{pool="Code Cache",} 2.5165824E8
jvm_memory_pool_bytes_max{pool="Metaspace",} -1.0
jvm_memory_pool_bytes_max{pool="Compressed Class Space",} 1.073741824E9
jvm_memory_pool_bytes_max{pool="PS Eden Space",} 1.320157184E9
jvm_memory_pool_bytes_max{pool="PS Survivor Space",} 3.670016E7
jvm_memory_pool_bytes_max{pool="PS Old Gen",} 2.793406464E9
# HELP log4j_appender_total Log4j log statements at various log levels
# TYPE log4j_appender_total counter
log4j_appender_total{level="debug",} 0.0
log4j_appender_total{level="warn",} 4.0
log4j_appender_total{level="trace",} 0.0
log4j_appender_total{level="error",} 1034.0
log4j_appender_total{level="fatal",} 0.0
log4j_appender_total{level="info",} 6049.0
...
Follow @goettl
24. Was haben wir gesehen?
● Einfaches Export Format
● Monitoring Schnittstelle wurde implementiert, nicht konfiguriert
● Whitebox Monitoring
Whitebox monitoring funktioniert ohne Entwickler nicht!
Follow @goettl
25. Die Nadel im Heuhaufen: Whitebox Monitoring, Statistik,
Datascience
Follow @goettl
26. Warum noch kompliziertere Methoden?
● Benachrichtigungen über Unerwartetes
● Vorhersagen über CPU / Ressourcen usw.
● Vorhersehen von Ausfällen
● Keine Fehlalarme oder fehlende Alarms in der Bereitschaft (Nachtschlaf!)
Follow @goettl
27. Don't do it!
Start simple. Don't use DeepLearning in your new application when a straight-
forward 15 minute rule-based system will do
Don't use ML, when rules do well
All the data in the world means nothing, if you can’t make sense of it. And that’s the
hard part.
Follow @goettl
28. Regeln wie ML Validieren!
● Quantitativ
● Precision / Recall für Alerts
● Python / R / Excel ...
● Qualitativ
● Support Tickets
● Feedback User
● Muss nicht vollautomatisiert passieren
Follow @goettl
29. Histogramme, Monitoring for the long tail
● Deskriptive Statistik mit Prometheus gut umsetzbar
● Anwendungsfall: Genaues Anschauen der 1% schlechtesten Werte
● Beispiel unten aggregiert Daten aus 2 gitblit instanzen und erstellt dafür ein
Histogram
histogram_quantile(0.99,
sum(
rate(
http_request_duration_seconds_bucket{method="GET"}[1m]
)
) by (le))
Follow @goettl
30. Outliers & Whitebox Monitoring
● WB Monitoring erlaubt optimalerweise das Beobachten von genau einer Variablen
(univariat)
● Dadurch sind weniger Daten notwendig um statistische Aussagen zu machen
● Gehört der aus der Reihe fallende Wert zu dieser Warscheinlichkeitsverteilung?
● Kann ich den Wert ignorieren / Ja oder Nein? Ist er ein Outlier Ja / Nein?
Follow @goettl
32. Demo Export Data
● Demo API + Datentypen
● Export python into Panda / Numpy, csv
● Kurzgesagt, Java ist kein gutes Tool zur Datenanalyse
Follow @goettl
33. Zusammenfassung: Was macht Prometheus für DevOps so
interessant
● Einfaches Setup
● All in one Lösung: Persistenz, Visualisierung, Alerts
● Effizient, ressourcenschonend
● Lebhafte opensource community
● DevOps fähig
● Rest Schnittstelle / Daten Extraktion zu erweiterten Datenanalyse
Follow @goettl
34. Danke für die Aufmerksamkeit!
Georg Öttl, Infonova
Twitter: @goettl
Follow @goettl