SlideShare uma empresa Scribd logo
1 de 66
Baixar para ler offline
Open Source Monitoring for Java
with Graphite
Cyrille Le Clerc

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13
/me
@cyrilleleclerc

CTO

Solution Architect

Cyrille Le Clerc
DevOps, Infra as Code
Open Source
Cloud

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

2
You ?

DEV ? QA ? OPS ?
Monitoring Experience ?
©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

3
Agenda

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

4
Agenda
• The demo application
• Monitoring performance: Why? What?
• Java webapp monitoring with JMX
• Monitoring with Graphite
• Conclusion
©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

5
The Application

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

6
Your mission, should you decide to accept it, ...

e-commerce SOS Cocktails
http://www.flickr.com/photos/23791504@N08/2607814349

Setup technical and business monitoring

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

7
SOS Cocktail

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

8
Monitoring
Why ? What ?

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

9
The Indicators to Monitor

http://www.langevin.com/blog/2013/08/29/3-ways-to-maximize-brainstorming/

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

10
The Indicators to Monitor
• Operating System ➔ Sysload
• JVM ➔ GC duration
• Tomcat ➔ activeSessions (active visitors)
• Application ➔ sales revenue & items
©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

11
Open Source Monitoring for Java

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

12
Open Source Monitoring for Java
Dashboard - wiki
e-commerce web site
Graphite
Email

Seyren

Nagios

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

13
JMX & Metrics

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

14
Why JMX ?
• JMX vs. web pages vs. logs vs. ...
• Simple and secured
• Displayable with web pages and logs
• Alternatives to JMX ?
©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

15
JMX vs. logs vs. web pages vs. ...
•

Monitoring logs

•

Parsing GB of text files ?

•

Per invocation details vs. average per minute

• Web pages
•

History ?

•

Clustered applications ?

•

Security ?

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

16
JMX with Spring Framework
<beans	
  ...>
	
  	
  	
  ...
	
  	
  	
  <context:mbean-­‐export/>
	
  	
  	
  ...
@ManagedResource("cocktail:name=ShoppingCartController,type=...")
</beans>
class	
  ShoppingCartController	
  {
	
  	
  	
  	
  
	
  final	
  AtomicInteger	
  revenueInCentsCounter	
  =	
  new	
  AtomicInteger();
	
  void	
  purchase(...){
	
  	
  	
  ...
	
  	
  	
  revenueInCentsCounter.addAndGet(priceInCents);
	
  }
	
  @ManagedAttribute
	
  public	
  int	
  getRevenueInCentsCounter()	
  {
	
  	
  return	
  revenueInCentsCounter.get();
	
  }
©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

17
JMX with VisualVM

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

18
JMX with JSP
Human readable & script friendly
Watch out for security !
$	
  curl	
  http://demo-­‐cocktail.jmxtrans.cloudbees.net/5ADrUWr5/jmx-­‐sales-­‐
metrics.txt.jsp
Epoch	
  
SalesRevenueInCentsCounter	
   SalesItemsCounter	
  
SalesOrdersCounter
1363217376	
  4500	
   7	
  
2
http://demo-cocktail.jmxtrans.cloudbees.net/jmx.jsp

curl	
  http://demo-­‐cocktail.jmxtrans.cloudbees.net/5ADrUWr5/...
{
	
  	
  "Epoch":1363217653,
	
  	
  "SalesRevenueInCentsCounter":4050,
	
  	
  "SalesItemsCounter":7,	
  ...
}

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

19
JMX with JSP
/5ADrUWr5/jmx-sales-metrics.jsp

Human readable & script friendly
Watch out for security !
$	
  curl	
  http://demo-­‐cocktail.jmxtrans.cloudbees.net/5ADrUWr5/jmx-­‐sales-­‐
metrics.txt.jsp
Epoch	
  
SalesRevenueInCentsCounter	
   SalesItemsCounter	
  
SalesOrdersCounter
1363217376	
  4500	
   7	
  
2
http://demo-cocktail.jmxtrans.cloudbees.net/jmx.jsp

curl	
  http://demo-­‐cocktail.jmxtrans.cloudbees.net/5ADrUWr5/...
{
	
  	
  "Epoch":1363217653,
	
  	
  "SalesRevenueInCentsCounter":4050,
	
  	
  "SalesItemsCounter":7,	
  ...
}

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

19
JMX with JSP

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

20
Alternatives to JMX

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

21
Alternatives to JMX
r();
ervo
ntege
R)
S
	
  {
micI
UNTE
oller ",	
  type=CO 	
  =	
  new	
  Ato
Contr Cents
Cart
nter
pping revenueIn
tsCou
s	
  Sho ame="
InCen
clas
enue
r	
  rev
or(n
onit
ntege
	
  @M
micI
l	
  Ato
	
  fina
nts);
	
  
...){
eInCe
	
  	
  	
  
ase(
pric
purch
dGet(
void	
  
addAn
	
  
ter.
..
sCoun
	
  	
  	
  .
nCent
nueI
	
  reve
	
  	
  
	
  }

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

21
Alternatives to JMX
Metrics

class	
  Shopp
ingCartCont
r();
roller	
  {
	
  	
  	
  	
  
ervo
ntege
R)
S
	
  {
micI
UNTE
	
  fController ",	
  type=CO 	
  =	
  new	
  Ato
inal	
  Countes
rt
Ca	
  	
  	
  	
  	
   ueInCentr	
  revenueInCents
nter
pping reven	
  	
  	
  	
  	
  	
  	
  	
  InCentsCou
Counter	
  =	
  M
	
  ShoppingCa
s	
  Sho ame="
etrics.newC
clas
enue
rtControlle
	
  	
  	
  	
  r	
  rev
ounter(
or(n
e
t
r,	
  "revenue
teg
@Moni tomicIn	
  void	
  
	
  
-­‐in-­‐cents")
purchase(..
;
al	
  A
n
.){
	
  fi
	
  	
  	
  ...
nts);
	
  
...){
eInCe
	
  	
  	
  
ase( 	
  revenu
pric
	
  	
  
purch
eInCedAndGet(
void	
  
	
  
.adntsCounter.inc(pr
	
  } Counter
iceInCents)
...
ts
;
	
  	
  	
  
InCen
enue
	
  	
  rev
	
  
	
  }

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

21
JMX
• OS: Sysload
• JVM: Garbage Collector
• Tomcat: activeSessions
• Application: Web Site Revenue
©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

22
jmxtrans

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

23
jmxtrans - standalone
ecommerce
Tomcat

logistics

Graphite

Tomcat

accounting
Tomcat

...

jmxtrans - standalone
©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

24
embedded-jmxtrans
ecommerce
Tomcat

logistics

Graphite
Librato

Tomcat

accounting
Tomcat

batch

...

embedded-jmxtrans
©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

25
jmxtrans-agent
ecommerce
ecommerce
Tomcat
Tomcat
JVM
JVM

JVM

ecommerce
logistics
Tomcat
Tomcat
JVM
JVM
ecommerce
accounting
Tomcat
Tomcat
JVM
JVM

Graphite
Librato

...

batch
JVM

java -javaagent=jmxtrans-agent.jar=...

jmxtrans-agent
©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

26
standalone vs. embedded vs. agent
standalone

embedded

agent

Packaging
Model

Manually connected apps
Pull

Standalone apps
Push

Standalone middleware
Push

Cursor

OPS -♦----------- DEV

OPS ----------♦-- DEV

OPS ---♦--------- DEV

Use case

Net unfriendly monitoring,
OPS

cloud, batch
DEV/QA

cloud, batch
OPS

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

27
embedded-jmxtrans configuration

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

28
embedded-jmxtrans configuration
<dependency>
	
  	
  <groupId>org.jmxtrans.embedded</groupId>
	
  	
  <artifactId>embedded-­‐jmxtrans</artifactId>
	
  	
  <version>1.0.8</version>
</dependency>

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

28
embedded-jmxtrans configuration
<dependency>
	
  	
  <groupId>org.jmxtrans.embedded</groupId>
	
  	
  <artifactId>embedded-­‐jmxtrans</artifactId>
	
  	
  <version>1.0.8</version>
</dependency>

<beans	
  ...
	
  	
  xmlns:jmxtrans="http://www.jmxtrans.org/schema/embedded"
	
  	
  xsi:schemaLocation="...
	
  	
  	
  	
  http://www.jmxtrans.org/schema/embedded	
  ...”>
	
  	
  <jmxtrans:jmxtrans>
	
  	
  	
  	
  <jmxtrans:configuration>classpath:jmxtrans.json</jmxtrans:configuration>
	
  	
  	
  	
  ...
	
  	
  </jmxtrans:jmxtrans>
</beans>

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

28
embedded-jmxtrans configuration
{
<dependency>
	
  	
  "queries":	
  [
	
  	
  <groupId>org.jmxtrans.embedded</groupId>
	
  	
  	
  	
  	
  	
  {
	
  	
  <artifactId>embedded-­‐jmxtrans</artifactId>
	
  	
  	
  	
  	
  	
  "objectName":	
  "cocktail:name=ShoppingCartController",
	
  	
  <version>1.0.8</version>
	
  	
  	
  	
  	
  	
  "resultAlias":	
  "sales",
</dependency>
	
  	
  	
  	
  	
  	
  "attributes":	
  ["SalesRevenueInCentsCounter"]
	
  	
  	
  	
  },
	
  	
  ],
	
  	
  "outputWriters":	
  [
	
  	
  	
  	
  {
<beans	
  ...
	
  	
  	
  	
  	
  	
  "@class":	
  "org.jmxtrans.embedded.output.GraphiteWriter",
	
  	
  xmlns:jmxtrans="http://www.jmxtrans.org/schema/embedded"
	
  	
  	
  	
  	
  	
  "settings":	
  {
	
  	
  xsi:schemaLocation="...
	
  	
  	
  	
  	
  	
  	
  	
  "host":	
  "${graphite.host:localhost}",
	
  	
  	
  	
  http://www.jmxtrans.org/schema/embedded	
  ...”>
	
  	
  	
  	
  	
  	
  	
  	
  "port":	
  "${graphite.port:2003},"
	
  	
  	
  	
  	
  	
  	
  	
  "enabled":	
  "${graphite.enabled:true}"
	
  	
  <jmxtrans:jmxtrans>
	
  	
  	
  	
  	
  	
  }
	
  	
  	
  	
  <jmxtrans:configuration>classpath:jmxtrans.json</jmxtrans:configuration>
	
  	
  	
  	
  }
	
  	
  	
  	
  ...
	
  	
  ]
	
  	
  </jmxtrans:jmxtrans>
}
</beans>

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

28
Graphite

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

29
Graphite
• Open Source
• Time series database and graphing tool
• Used by tech giants
• Similar
©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

30
Graphite
• Open Source

Simplicity and Self Service

• Time series database and graphing tool
• Used by tech giants
• Similar
©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

30
Metrics injection / Write Access
• Automatic metrics creation
• Socket protocols: “plain text” & Python Pickle serialization
echo	
  "softshake.happyCounter	
  1.2	
  1364338989"	
  |	
  nc	
  localhost	
  2003

• Precision and storage duration by configuration
[sales_1min_for_30days_5min_for_1year]
pattern	
  =	
  ^sales.
retentions	
  =	
  60s:30d,300s:365d
©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

1.7MB

31
Metrics rendering / Read Access
• Graph Composer & URL API
• Everybody can create graphs
• Wide range of functions
•

•
•

sum, scale, derivative, timeshift, deviation, filter, ...

Various exports
png, svg, csv, json, raw text
©2013 CloudBees, Inc. All Rights Reserved

Thursday, October 24, 13

32
The Art of Graphing

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

33
Monitoring on the Cloud
•
Graphite as a Service
•

http://hostedgraphite.com/

•

Addons: Tasseo

2

Zero setup

•

1

email: admin@jmxtrans.org
password: SOFTSHAKE

3

• No-OPS
©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

34
Metrics Types
Gauge

Ever Increasing Counter

• Examples:
• Information available without transformation

• Examples:
• “per minute” aggregation required

activeRequests, dataSource.activeConnection, ...

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

requestsCount, revenue, ...

35
Graphs and Maths
?

Ever Increasing Counter

Revenue per Second

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

36
Graphs and Maths
derivative()
?

Ever Increasing Counter

Revenue per Second

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

36
Graphs and Maths
?

Per Second → Per Hour

Revenue per Hour

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

37
Graphs and Maths
summarize(..., “1h”)
?

Per Second → Per Hour

Revenue per Hour

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

37
Graphs and Maths
?

2 servers

Total Revenue per Hour

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

38
Graphs and Maths
sumSeries()
?

2 servers

Total Revenue per Hour

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

38
Graphs and Maths
?

server restart

Ignore reset to zero

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

39
Graphs and Maths
nonNegativeDerivative()
?

server restart

Ignore reset to zero

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

39
Graphs and Maths
Compare to
last week

?

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

40
Graphs and Maths
Compare to
last week

timeShift(..., “7d”)
?

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

40
JMX
• OS: Sysload
• JVM: Garbage Collector
• Tomcat: activeSessions
• Application: Web Site Revenue
©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

41
Graphite URL API
http://localhost:8081/render/?
	
  	
  	
  from=-­‐7days&
	
  	
  	
  title=Revenue%20per%20Hour&
	
  	
  	
  vtitle=Dollars&
	
  	
  	
  lineWidth=3&
	
  	
  	
  xFormat=%25a%20%25H%25p&
	
  	
  	
  target=
	
  	
  	
  	
  alias(
	
  	
  	
  	
  	
  scale(
	
  	
  	
  	
  	
  	
  summarize(
	
  	
  	
  	
  	
  	
  	
  sumSeries(
	
  	
  	
  	
  	
  	
  	
  	
  nonNegativeDerivative(
	
  	
  	
  	
  	
  	
  	
  	
  	
  edu.servers.*.sales.revenueInCentsCounter)...)&
	
  	
  	
  	
  ...

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

42
Sharing metrics and graphs

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

43
Dashboards and Wikis
dashboard.prod.md
#	
  Website	
  Traffic
<table>
<tr>
	
  	
  <td>
	
  	
  	
  	
  <img	
  src="http://graphite.prod.mycompany/graphite/render/?
width=400&height=300&title=Revenue&xFormat=%25a%20%25d
%25p&vtitle=USD&lineWidth=3&from=-­‐5days&target=alias(scale(summarize(sumSeries(non
NegativeDerivative(edu.servers.*.sales.revenueInCentsCounter))%2C%221h
%22)%2C0.01)%2C%22Revenue%20per%20Hour%22)...">
	
  	
  	
  	
  </td>
	
  	
  	
  	
  <td>
	
  	
  	
  	
  	
  	
  	
  	
  <img	
  src="http://graphite.prod.mycompany/graphite/render/?...">
	
  	
  	
  	
  </td>
<tr>
</table>

Wiki

https://github.com/jmxtrans/embedded-jmxtrans-samples/wiki/Dashboard-PROD

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

44
Dashboards and Email
Send dashboards by email

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

45
Alerting with Metrics

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

46
Graphite Integration with Alerting
• Based on Graphite URL API
• RawText or JSON format
• Pattern

/render?from=-­‐11minutes&until=-­‐1minutes&format=raw&target=****

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

47
Graphite Integration with Alerting
• Based on Graphite URL API
• RawText or JSON format
• Pattern

/render?from=-­‐11minutes&until=-­‐1minutes&format=raw&target=****

Example
$	
  curl	
  "http://graphite.example.com/render?
from=-­‐11minutes&until=-­‐1minutes&format=raw&
	
  	
  	
  target=keepLastValue(servers.cloudbees.jvm.os.SystemLoadAverage)"
my-­‐metric,1363225680,1363226340,60|0.03,0.01,0.1,4.0,4.0,0.9,0.7,0.8,0.4,0.5,0.5

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

47
Graphite Alerting with Seyren

• Alerting Dashboard for Graphite
• Open Source
• Java .war + MongoDB
• Alerts: email, PagerDuty, ...

http://seyren.jmxtrans.cloudbees.net/

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

48
Graphite Alerting with Nagios
• Monitoring Infrastructure
• Open Source
• De facto standard
• check_graphite plugin
•

Pierre-Yves Ritschard

•

Jason Dixon / obfuscurity

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

49
Conclusion

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

50
Conclusion
•

Self-service monitoring changes everything

•

Technical and business monitoring

•

Monitoring integrated in the Continuous Delivery pipeline

•

Open Source solutions are available
©2013 CloudBees, Inc. All Rights Reserved

Thursday, October 24, 13

51
Hosted Graphite Promo
• http://hostedgraphite.com
• 45 days trial with “SOFTSHAKE” promo code

(3) Promo Code “SOFTSHAKE”
(1) Signup

(2) Options / Enter Promo Code

help: cleclerc@cloudbees.com

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

52
http://jmxtrans.org/

http://demo-cocktail.jmxtrans.cloudbees.net/

©2013 CloudBees, Inc. All Rights Reserved
Thursday, October 24, 13

53

Mais conteúdo relacionado

Destaque

Realtime statistics using Java, Kafka and Graphite
Realtime statistics using Java, Kafka and GraphiteRealtime statistics using Java, Kafka and Graphite
Realtime statistics using Java, Kafka and GraphiteHung Nguyen
 
Monitoring Cloud Native Apps on Pivotal Cloud Foundry with AppDynamics
Monitoring Cloud Native Apps on Pivotal Cloud Foundry with AppDynamicsMonitoring Cloud Native Apps on Pivotal Cloud Foundry with AppDynamics
Monitoring Cloud Native Apps on Pivotal Cloud Foundry with AppDynamicsNima Badiey
 
Metrics by coda hale : to know your app’ health
Metrics by coda hale : to know your app’ healthMetrics by coda hale : to know your app’ health
Metrics by coda hale : to know your app’ healthIzzet Mustafaiev
 
Running Production-Grade Kubernetes on AWS
Running Production-Grade Kubernetes on AWSRunning Production-Grade Kubernetes on AWS
Running Production-Grade Kubernetes on AWSDoiT International
 
Paris Devops - Monitoring And Feature Toggle Pattern With JMX
Paris Devops - Monitoring And Feature Toggle Pattern With JMXParis Devops - Monitoring And Feature Toggle Pattern With JMX
Paris Devops - Monitoring And Feature Toggle Pattern With JMXCyrille Le Clerc
 
Design Thinking for Advanced Manufacturing _ Industry Recommendations_Dec 2014
Design Thinking for Advanced Manufacturing _ Industry Recommendations_Dec 2014 Design Thinking for Advanced Manufacturing _ Industry Recommendations_Dec 2014
Design Thinking for Advanced Manufacturing _ Industry Recommendations_Dec 2014 Jane Cockburn
 
Big Data World presentation - Sep. 2014
Big Data World presentation - Sep. 2014Big Data World presentation - Sep. 2014
Big Data World presentation - Sep. 2014Wing Yuen Loon
 
De Empreendedor à Empresário
De Empreendedor à EmpresárioDe Empreendedor à Empresário
De Empreendedor à EmpresárioFernando Tomé
 
An ontologyforopenrubricexchangeontheweb
An ontologyforopenrubricexchangeonthewebAn ontologyforopenrubricexchangeontheweb
An ontologyforopenrubricexchangeonthewebbpanulla
 
Open Rubrics and The Semantic Web: Open Ed 2010
Open Rubrics and The Semantic Web: Open Ed 2010Open Rubrics and The Semantic Web: Open Ed 2010
Open Rubrics and The Semantic Web: Open Ed 2010bpanulla
 
Scottish Public Opinion Monitor - May 2013
Scottish Public Opinion Monitor - May 2013Scottish Public Opinion Monitor - May 2013
Scottish Public Opinion Monitor - May 2013Ipsos UK
 

Destaque (13)

Realtime statistics using Java, Kafka and Graphite
Realtime statistics using Java, Kafka and GraphiteRealtime statistics using Java, Kafka and Graphite
Realtime statistics using Java, Kafka and Graphite
 
Monitoring Cloud Native Apps on Pivotal Cloud Foundry with AppDynamics
Monitoring Cloud Native Apps on Pivotal Cloud Foundry with AppDynamicsMonitoring Cloud Native Apps on Pivotal Cloud Foundry with AppDynamics
Monitoring Cloud Native Apps on Pivotal Cloud Foundry with AppDynamics
 
Metrics by coda hale : to know your app’ health
Metrics by coda hale : to know your app’ healthMetrics by coda hale : to know your app’ health
Metrics by coda hale : to know your app’ health
 
Running Production-Grade Kubernetes on AWS
Running Production-Grade Kubernetes on AWSRunning Production-Grade Kubernetes on AWS
Running Production-Grade Kubernetes on AWS
 
Paris Devops - Monitoring And Feature Toggle Pattern With JMX
Paris Devops - Monitoring And Feature Toggle Pattern With JMXParis Devops - Monitoring And Feature Toggle Pattern With JMX
Paris Devops - Monitoring And Feature Toggle Pattern With JMX
 
Design Thinking for Advanced Manufacturing _ Industry Recommendations_Dec 2014
Design Thinking for Advanced Manufacturing _ Industry Recommendations_Dec 2014 Design Thinking for Advanced Manufacturing _ Industry Recommendations_Dec 2014
Design Thinking for Advanced Manufacturing _ Industry Recommendations_Dec 2014
 
Big Data World presentation - Sep. 2014
Big Data World presentation - Sep. 2014Big Data World presentation - Sep. 2014
Big Data World presentation - Sep. 2014
 
RASPBIAN JESSIE WITH PIXEL
RASPBIAN JESSIE WITH PIXELRASPBIAN JESSIE WITH PIXEL
RASPBIAN JESSIE WITH PIXEL
 
1 spattern matching using biometric techniques
1 spattern matching using biometric techniques1 spattern matching using biometric techniques
1 spattern matching using biometric techniques
 
De Empreendedor à Empresário
De Empreendedor à EmpresárioDe Empreendedor à Empresário
De Empreendedor à Empresário
 
An ontologyforopenrubricexchangeontheweb
An ontologyforopenrubricexchangeonthewebAn ontologyforopenrubricexchangeontheweb
An ontologyforopenrubricexchangeontheweb
 
Open Rubrics and The Semantic Web: Open Ed 2010
Open Rubrics and The Semantic Web: Open Ed 2010Open Rubrics and The Semantic Web: Open Ed 2010
Open Rubrics and The Semantic Web: Open Ed 2010
 
Scottish Public Opinion Monitor - May 2013
Scottish Public Opinion Monitor - May 2013Scottish Public Opinion Monitor - May 2013
Scottish Public Opinion Monitor - May 2013
 

Mais de CloudBees

JUC Europe 2015: Scaling Your Jenkins Master with Docker
JUC Europe 2015: Scaling Your Jenkins Master with DockerJUC Europe 2015: Scaling Your Jenkins Master with Docker
JUC Europe 2015: Scaling Your Jenkins Master with DockerCloudBees
 
JUC Europe 2015: Plugin Development with Gradle and Groovy
JUC Europe 2015: Plugin Development with Gradle and GroovyJUC Europe 2015: Plugin Development with Gradle and Groovy
JUC Europe 2015: Plugin Development with Gradle and GroovyCloudBees
 
JUC Europe 2015: Multi-Node Environment as a Jenkins Slave (Compound-Slave)
JUC Europe 2015: Multi-Node Environment as a Jenkins Slave (Compound-Slave)JUC Europe 2015: Multi-Node Environment as a Jenkins Slave (Compound-Slave)
JUC Europe 2015: Multi-Node Environment as a Jenkins Slave (Compound-Slave)CloudBees
 
JUC Europe 2015: The Famous Cows of Cambridge: A Non-Standard Use Case for Je...
JUC Europe 2015: The Famous Cows of Cambridge: A Non-Standard Use Case for Je...JUC Europe 2015: The Famous Cows of Cambridge: A Non-Standard Use Case for Je...
JUC Europe 2015: The Famous Cows of Cambridge: A Non-Standard Use Case for Je...CloudBees
 
JUC Europe 2015: Jenkins Made Easy
JUC Europe 2015: Jenkins Made EasyJUC Europe 2015: Jenkins Made Easy
JUC Europe 2015: Jenkins Made EasyCloudBees
 
JUC Europe 2015: Scaling of Jenkins Pipeline Creation and Maintenance
JUC Europe 2015: Scaling of Jenkins Pipeline Creation and MaintenanceJUC Europe 2015: Scaling of Jenkins Pipeline Creation and Maintenance
JUC Europe 2015: Scaling of Jenkins Pipeline Creation and MaintenanceCloudBees
 
JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...
JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...
JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...CloudBees
 
JUC Europe 2015: Hey! What Did We Just Release?
JUC Europe 2015: Hey! What Did We Just Release?JUC Europe 2015: Hey! What Did We Just Release?
JUC Europe 2015: Hey! What Did We Just Release?CloudBees
 
JUC Europe 2015: Orchestrating Your Pipelines with Jenkins, Python and the Je...
JUC Europe 2015: Orchestrating Your Pipelines with Jenkins, Python and the Je...JUC Europe 2015: Orchestrating Your Pipelines with Jenkins, Python and the Je...
JUC Europe 2015: Orchestrating Your Pipelines with Jenkins, Python and the Je...CloudBees
 
JUC Europe 2015: Jenkins Pipeline for Continuous Delivery of Big Data Projects
JUC Europe 2015: Jenkins Pipeline for Continuous Delivery of Big Data ProjectsJUC Europe 2015: Jenkins Pipeline for Continuous Delivery of Big Data Projects
JUC Europe 2015: Jenkins Pipeline for Continuous Delivery of Big Data ProjectsCloudBees
 
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...CloudBees
 
JUC Europe 2015: Optimizing Your CI: Lessons Learned from a Successful Jenkin...
JUC Europe 2015: Optimizing Your CI: Lessons Learned from a Successful Jenkin...JUC Europe 2015: Optimizing Your CI: Lessons Learned from a Successful Jenkin...
JUC Europe 2015: Optimizing Your CI: Lessons Learned from a Successful Jenkin...CloudBees
 
JUC Europe 2015: Enabling Continuous Delivery for Major Retailers
JUC Europe 2015: Enabling Continuous Delivery for Major RetailersJUC Europe 2015: Enabling Continuous Delivery for Major Retailers
JUC Europe 2015: Enabling Continuous Delivery for Major RetailersCloudBees
 
JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"
JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"
JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"CloudBees
 
JUC Europe 2015: Making Strides towards Enterprise-Scale DevOps...with Jenkin...
JUC Europe 2015: Making Strides towards Enterprise-Scale DevOps...with Jenkin...JUC Europe 2015: Making Strides towards Enterprise-Scale DevOps...with Jenkin...
JUC Europe 2015: Making Strides towards Enterprise-Scale DevOps...with Jenkin...CloudBees
 
JUC Europe 2015: Evolving the Jenkins UI
JUC Europe 2015: Evolving the Jenkins UIJUC Europe 2015: Evolving the Jenkins UI
JUC Europe 2015: Evolving the Jenkins UICloudBees
 
JUC Europe 2015: Using Infrastructure Nodes Wisely With Jenkins and Apache Mesos
JUC Europe 2015: Using Infrastructure Nodes Wisely With Jenkins and Apache MesosJUC Europe 2015: Using Infrastructure Nodes Wisely With Jenkins and Apache Mesos
JUC Europe 2015: Using Infrastructure Nodes Wisely With Jenkins and Apache MesosCloudBees
 
JUC Europe 2015: How to Optimize Automated Testing with Everyone's Favorite B...
JUC Europe 2015: How to Optimize Automated Testing with Everyone's Favorite B...JUC Europe 2015: How to Optimize Automated Testing with Everyone's Favorite B...
JUC Europe 2015: How to Optimize Automated Testing with Everyone's Favorite B...CloudBees
 
JUC 2015 - Keynote Address and Opening Remarks by Kohsuke Kawaguchi, Founder,...
JUC 2015 - Keynote Address and Opening Remarks by Kohsuke Kawaguchi, Founder,...JUC 2015 - Keynote Address and Opening Remarks by Kohsuke Kawaguchi, Founder,...
JUC 2015 - Keynote Address and Opening Remarks by Kohsuke Kawaguchi, Founder,...CloudBees
 
JUC Europe 2015: Continuous Integration and Distribution in the Cloud with DE...
JUC Europe 2015: Continuous Integration and Distribution in the Cloud with DE...JUC Europe 2015: Continuous Integration and Distribution in the Cloud with DE...
JUC Europe 2015: Continuous Integration and Distribution in the Cloud with DE...CloudBees
 

Mais de CloudBees (20)

JUC Europe 2015: Scaling Your Jenkins Master with Docker
JUC Europe 2015: Scaling Your Jenkins Master with DockerJUC Europe 2015: Scaling Your Jenkins Master with Docker
JUC Europe 2015: Scaling Your Jenkins Master with Docker
 
JUC Europe 2015: Plugin Development with Gradle and Groovy
JUC Europe 2015: Plugin Development with Gradle and GroovyJUC Europe 2015: Plugin Development with Gradle and Groovy
JUC Europe 2015: Plugin Development with Gradle and Groovy
 
JUC Europe 2015: Multi-Node Environment as a Jenkins Slave (Compound-Slave)
JUC Europe 2015: Multi-Node Environment as a Jenkins Slave (Compound-Slave)JUC Europe 2015: Multi-Node Environment as a Jenkins Slave (Compound-Slave)
JUC Europe 2015: Multi-Node Environment as a Jenkins Slave (Compound-Slave)
 
JUC Europe 2015: The Famous Cows of Cambridge: A Non-Standard Use Case for Je...
JUC Europe 2015: The Famous Cows of Cambridge: A Non-Standard Use Case for Je...JUC Europe 2015: The Famous Cows of Cambridge: A Non-Standard Use Case for Je...
JUC Europe 2015: The Famous Cows of Cambridge: A Non-Standard Use Case for Je...
 
JUC Europe 2015: Jenkins Made Easy
JUC Europe 2015: Jenkins Made EasyJUC Europe 2015: Jenkins Made Easy
JUC Europe 2015: Jenkins Made Easy
 
JUC Europe 2015: Scaling of Jenkins Pipeline Creation and Maintenance
JUC Europe 2015: Scaling of Jenkins Pipeline Creation and MaintenanceJUC Europe 2015: Scaling of Jenkins Pipeline Creation and Maintenance
JUC Europe 2015: Scaling of Jenkins Pipeline Creation and Maintenance
 
JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...
JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...
JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...
 
JUC Europe 2015: Hey! What Did We Just Release?
JUC Europe 2015: Hey! What Did We Just Release?JUC Europe 2015: Hey! What Did We Just Release?
JUC Europe 2015: Hey! What Did We Just Release?
 
JUC Europe 2015: Orchestrating Your Pipelines with Jenkins, Python and the Je...
JUC Europe 2015: Orchestrating Your Pipelines with Jenkins, Python and the Je...JUC Europe 2015: Orchestrating Your Pipelines with Jenkins, Python and the Je...
JUC Europe 2015: Orchestrating Your Pipelines with Jenkins, Python and the Je...
 
JUC Europe 2015: Jenkins Pipeline for Continuous Delivery of Big Data Projects
JUC Europe 2015: Jenkins Pipeline for Continuous Delivery of Big Data ProjectsJUC Europe 2015: Jenkins Pipeline for Continuous Delivery of Big Data Projects
JUC Europe 2015: Jenkins Pipeline for Continuous Delivery of Big Data Projects
 
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...
 
JUC Europe 2015: Optimizing Your CI: Lessons Learned from a Successful Jenkin...
JUC Europe 2015: Optimizing Your CI: Lessons Learned from a Successful Jenkin...JUC Europe 2015: Optimizing Your CI: Lessons Learned from a Successful Jenkin...
JUC Europe 2015: Optimizing Your CI: Lessons Learned from a Successful Jenkin...
 
JUC Europe 2015: Enabling Continuous Delivery for Major Retailers
JUC Europe 2015: Enabling Continuous Delivery for Major RetailersJUC Europe 2015: Enabling Continuous Delivery for Major Retailers
JUC Europe 2015: Enabling Continuous Delivery for Major Retailers
 
JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"
JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"
JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"
 
JUC Europe 2015: Making Strides towards Enterprise-Scale DevOps...with Jenkin...
JUC Europe 2015: Making Strides towards Enterprise-Scale DevOps...with Jenkin...JUC Europe 2015: Making Strides towards Enterprise-Scale DevOps...with Jenkin...
JUC Europe 2015: Making Strides towards Enterprise-Scale DevOps...with Jenkin...
 
JUC Europe 2015: Evolving the Jenkins UI
JUC Europe 2015: Evolving the Jenkins UIJUC Europe 2015: Evolving the Jenkins UI
JUC Europe 2015: Evolving the Jenkins UI
 
JUC Europe 2015: Using Infrastructure Nodes Wisely With Jenkins and Apache Mesos
JUC Europe 2015: Using Infrastructure Nodes Wisely With Jenkins and Apache MesosJUC Europe 2015: Using Infrastructure Nodes Wisely With Jenkins and Apache Mesos
JUC Europe 2015: Using Infrastructure Nodes Wisely With Jenkins and Apache Mesos
 
JUC Europe 2015: How to Optimize Automated Testing with Everyone's Favorite B...
JUC Europe 2015: How to Optimize Automated Testing with Everyone's Favorite B...JUC Europe 2015: How to Optimize Automated Testing with Everyone's Favorite B...
JUC Europe 2015: How to Optimize Automated Testing with Everyone's Favorite B...
 
JUC 2015 - Keynote Address and Opening Remarks by Kohsuke Kawaguchi, Founder,...
JUC 2015 - Keynote Address and Opening Remarks by Kohsuke Kawaguchi, Founder,...JUC 2015 - Keynote Address and Opening Remarks by Kohsuke Kawaguchi, Founder,...
JUC 2015 - Keynote Address and Opening Remarks by Kohsuke Kawaguchi, Founder,...
 
JUC Europe 2015: Continuous Integration and Distribution in the Cloud with DE...
JUC Europe 2015: Continuous Integration and Distribution in the Cloud with DE...JUC Europe 2015: Continuous Integration and Distribution in the Cloud with DE...
JUC Europe 2015: Continuous Integration and Distribution in the Cloud with DE...
 

Último

SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 

Último (20)

SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 

Open Source Monitoring for Java with JMX and Graphite - Softshake 2013

  • 1. Open Source Monitoring for Java with Graphite Cyrille Le Clerc ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13
  • 2. /me @cyrilleleclerc CTO Solution Architect Cyrille Le Clerc DevOps, Infra as Code Open Source Cloud ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 2
  • 3. You ? DEV ? QA ? OPS ? Monitoring Experience ? ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 3
  • 4. Agenda ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 4
  • 5. Agenda • The demo application • Monitoring performance: Why? What? • Java webapp monitoring with JMX • Monitoring with Graphite • Conclusion ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 5
  • 6. The Application ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 6
  • 7. Your mission, should you decide to accept it, ... e-commerce SOS Cocktails http://www.flickr.com/photos/23791504@N08/2607814349 Setup technical and business monitoring ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 7
  • 8. SOS Cocktail ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 8
  • 9. Monitoring Why ? What ? ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 9
  • 10. The Indicators to Monitor http://www.langevin.com/blog/2013/08/29/3-ways-to-maximize-brainstorming/ ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 10
  • 11. The Indicators to Monitor • Operating System ➔ Sysload • JVM ➔ GC duration • Tomcat ➔ activeSessions (active visitors) • Application ➔ sales revenue & items ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 11
  • 12. Open Source Monitoring for Java ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 12
  • 13. Open Source Monitoring for Java Dashboard - wiki e-commerce web site Graphite Email Seyren Nagios ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 13
  • 14. JMX & Metrics ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 14
  • 15. Why JMX ? • JMX vs. web pages vs. logs vs. ... • Simple and secured • Displayable with web pages and logs • Alternatives to JMX ? ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 15
  • 16. JMX vs. logs vs. web pages vs. ... • Monitoring logs • Parsing GB of text files ? • Per invocation details vs. average per minute • Web pages • History ? • Clustered applications ? • Security ? ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 16
  • 17. JMX with Spring Framework <beans  ...>      ...      <context:mbean-­‐export/>      ... @ManagedResource("cocktail:name=ShoppingCartController,type=...") </beans> class  ShoppingCartController  {          final  AtomicInteger  revenueInCentsCounter  =  new  AtomicInteger();  void  purchase(...){      ...      revenueInCentsCounter.addAndGet(priceInCents);  }  @ManagedAttribute  public  int  getRevenueInCentsCounter()  {    return  revenueInCentsCounter.get();  } ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 17
  • 18. JMX with VisualVM ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 18
  • 19. JMX with JSP Human readable & script friendly Watch out for security ! $  curl  http://demo-­‐cocktail.jmxtrans.cloudbees.net/5ADrUWr5/jmx-­‐sales-­‐ metrics.txt.jsp Epoch   SalesRevenueInCentsCounter   SalesItemsCounter   SalesOrdersCounter 1363217376  4500   7   2 http://demo-cocktail.jmxtrans.cloudbees.net/jmx.jsp curl  http://demo-­‐cocktail.jmxtrans.cloudbees.net/5ADrUWr5/... {    "Epoch":1363217653,    "SalesRevenueInCentsCounter":4050,    "SalesItemsCounter":7,  ... } ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 19
  • 20. JMX with JSP /5ADrUWr5/jmx-sales-metrics.jsp Human readable & script friendly Watch out for security ! $  curl  http://demo-­‐cocktail.jmxtrans.cloudbees.net/5ADrUWr5/jmx-­‐sales-­‐ metrics.txt.jsp Epoch   SalesRevenueInCentsCounter   SalesItemsCounter   SalesOrdersCounter 1363217376  4500   7   2 http://demo-cocktail.jmxtrans.cloudbees.net/jmx.jsp curl  http://demo-­‐cocktail.jmxtrans.cloudbees.net/5ADrUWr5/... {    "Epoch":1363217653,    "SalesRevenueInCentsCounter":4050,    "SalesItemsCounter":7,  ... } ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 19
  • 21. JMX with JSP ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 20
  • 22. Alternatives to JMX ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 21
  • 23. Alternatives to JMX r(); ervo ntege R) S  { micI UNTE oller ",  type=CO  =  new  Ato Contr Cents Cart nter pping revenueIn tsCou s  Sho ame=" InCen clas enue r  rev or(n onit ntege  @M micI l  Ato  fina nts);   ...){ eInCe       ase( pric purch dGet( void   addAn   ter. .. sCoun      . nCent nueI  reve      } ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 21
  • 24. Alternatives to JMX Metrics class  Shopp ingCartCont r(); roller  {         ervo ntege R) S  { micI UNTE  fController ",  type=CO  =  new  Ato inal  Countes rt Ca           ueInCentr  revenueInCents nter pping reven                InCentsCou Counter  =  M  ShoppingCa s  Sho ame=" etrics.newC clas enue rtControlle        r  rev ounter( or(n e t r,  "revenue teg @Moni tomicIn  void     -­‐in-­‐cents") purchase(.. ; al  A n .){  fi      ... nts);   ...){ eInCe       ase(  revenu pric     purch eInCedAndGet( void     .adntsCounter.inc(pr  } Counter iceInCents) ... ts ;       InCen enue    rev    } ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 21
  • 25. JMX • OS: Sysload • JVM: Garbage Collector • Tomcat: activeSessions • Application: Web Site Revenue ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 22
  • 26. jmxtrans ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 23
  • 27. jmxtrans - standalone ecommerce Tomcat logistics Graphite Tomcat accounting Tomcat ... jmxtrans - standalone ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 24
  • 30. standalone vs. embedded vs. agent standalone embedded agent Packaging Model Manually connected apps Pull Standalone apps Push Standalone middleware Push Cursor OPS -♦----------- DEV OPS ----------♦-- DEV OPS ---♦--------- DEV Use case Net unfriendly monitoring, OPS cloud, batch DEV/QA cloud, batch OPS ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 27
  • 31. embedded-jmxtrans configuration ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 28
  • 32. embedded-jmxtrans configuration <dependency>    <groupId>org.jmxtrans.embedded</groupId>    <artifactId>embedded-­‐jmxtrans</artifactId>    <version>1.0.8</version> </dependency> ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 28
  • 33. embedded-jmxtrans configuration <dependency>    <groupId>org.jmxtrans.embedded</groupId>    <artifactId>embedded-­‐jmxtrans</artifactId>    <version>1.0.8</version> </dependency> <beans  ...    xmlns:jmxtrans="http://www.jmxtrans.org/schema/embedded"    xsi:schemaLocation="...        http://www.jmxtrans.org/schema/embedded  ...”>    <jmxtrans:jmxtrans>        <jmxtrans:configuration>classpath:jmxtrans.json</jmxtrans:configuration>        ...    </jmxtrans:jmxtrans> </beans> ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 28
  • 34. embedded-jmxtrans configuration { <dependency>    "queries":  [    <groupId>org.jmxtrans.embedded</groupId>            {    <artifactId>embedded-­‐jmxtrans</artifactId>            "objectName":  "cocktail:name=ShoppingCartController",    <version>1.0.8</version>            "resultAlias":  "sales", </dependency>            "attributes":  ["SalesRevenueInCentsCounter"]        },    ],    "outputWriters":  [        { <beans  ...            "@class":  "org.jmxtrans.embedded.output.GraphiteWriter",    xmlns:jmxtrans="http://www.jmxtrans.org/schema/embedded"            "settings":  {    xsi:schemaLocation="...                "host":  "${graphite.host:localhost}",        http://www.jmxtrans.org/schema/embedded  ...”>                "port":  "${graphite.port:2003},"                "enabled":  "${graphite.enabled:true}"    <jmxtrans:jmxtrans>            }        <jmxtrans:configuration>classpath:jmxtrans.json</jmxtrans:configuration>        }        ...    ]    </jmxtrans:jmxtrans> } </beans> ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 28
  • 35. Graphite ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 29
  • 36. Graphite • Open Source • Time series database and graphing tool • Used by tech giants • Similar ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 30
  • 37. Graphite • Open Source Simplicity and Self Service • Time series database and graphing tool • Used by tech giants • Similar ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 30
  • 38. Metrics injection / Write Access • Automatic metrics creation • Socket protocols: “plain text” & Python Pickle serialization echo  "softshake.happyCounter  1.2  1364338989"  |  nc  localhost  2003 • Precision and storage duration by configuration [sales_1min_for_30days_5min_for_1year] pattern  =  ^sales. retentions  =  60s:30d,300s:365d ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 1.7MB 31
  • 39. Metrics rendering / Read Access • Graph Composer & URL API • Everybody can create graphs • Wide range of functions • • • sum, scale, derivative, timeshift, deviation, filter, ... Various exports png, svg, csv, json, raw text ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 32
  • 40. The Art of Graphing ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 33
  • 41. Monitoring on the Cloud • Graphite as a Service • http://hostedgraphite.com/ • Addons: Tasseo 2 Zero setup • 1 email: admin@jmxtrans.org password: SOFTSHAKE 3 • No-OPS ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 34
  • 42. Metrics Types Gauge Ever Increasing Counter • Examples: • Information available without transformation • Examples: • “per minute” aggregation required activeRequests, dataSource.activeConnection, ... ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 requestsCount, revenue, ... 35
  • 43. Graphs and Maths ? Ever Increasing Counter Revenue per Second ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 36
  • 44. Graphs and Maths derivative() ? Ever Increasing Counter Revenue per Second ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 36
  • 45. Graphs and Maths ? Per Second → Per Hour Revenue per Hour ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 37
  • 46. Graphs and Maths summarize(..., “1h”) ? Per Second → Per Hour Revenue per Hour ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 37
  • 47. Graphs and Maths ? 2 servers Total Revenue per Hour ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 38
  • 48. Graphs and Maths sumSeries() ? 2 servers Total Revenue per Hour ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 38
  • 49. Graphs and Maths ? server restart Ignore reset to zero ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 39
  • 50. Graphs and Maths nonNegativeDerivative() ? server restart Ignore reset to zero ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 39
  • 51. Graphs and Maths Compare to last week ? ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 40
  • 52. Graphs and Maths Compare to last week timeShift(..., “7d”) ? ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 40
  • 53. JMX • OS: Sysload • JVM: Garbage Collector • Tomcat: activeSessions • Application: Web Site Revenue ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 41
  • 54. Graphite URL API http://localhost:8081/render/?      from=-­‐7days&      title=Revenue%20per%20Hour&      vtitle=Dollars&      lineWidth=3&      xFormat=%25a%20%25H%25p&      target=        alias(          scale(            summarize(              sumSeries(                nonNegativeDerivative(                  edu.servers.*.sales.revenueInCentsCounter)...)&        ... ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 42
  • 55. Sharing metrics and graphs ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 43
  • 56. Dashboards and Wikis dashboard.prod.md #  Website  Traffic <table> <tr>    <td>        <img  src="http://graphite.prod.mycompany/graphite/render/? width=400&height=300&title=Revenue&xFormat=%25a%20%25d %25p&vtitle=USD&lineWidth=3&from=-­‐5days&target=alias(scale(summarize(sumSeries(non NegativeDerivative(edu.servers.*.sales.revenueInCentsCounter))%2C%221h %22)%2C0.01)%2C%22Revenue%20per%20Hour%22)...">        </td>        <td>                <img  src="http://graphite.prod.mycompany/graphite/render/?...">        </td> <tr> </table> Wiki https://github.com/jmxtrans/embedded-jmxtrans-samples/wiki/Dashboard-PROD ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 44
  • 57. Dashboards and Email Send dashboards by email ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 45
  • 58. Alerting with Metrics ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 46
  • 59. Graphite Integration with Alerting • Based on Graphite URL API • RawText or JSON format • Pattern /render?from=-­‐11minutes&until=-­‐1minutes&format=raw&target=**** ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 47
  • 60. Graphite Integration with Alerting • Based on Graphite URL API • RawText or JSON format • Pattern /render?from=-­‐11minutes&until=-­‐1minutes&format=raw&target=**** Example $  curl  "http://graphite.example.com/render? from=-­‐11minutes&until=-­‐1minutes&format=raw&      target=keepLastValue(servers.cloudbees.jvm.os.SystemLoadAverage)" my-­‐metric,1363225680,1363226340,60|0.03,0.01,0.1,4.0,4.0,0.9,0.7,0.8,0.4,0.5,0.5 ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 47
  • 61. Graphite Alerting with Seyren • Alerting Dashboard for Graphite • Open Source • Java .war + MongoDB • Alerts: email, PagerDuty, ... http://seyren.jmxtrans.cloudbees.net/ ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 48
  • 62. Graphite Alerting with Nagios • Monitoring Infrastructure • Open Source • De facto standard • check_graphite plugin • Pierre-Yves Ritschard • Jason Dixon / obfuscurity ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 49
  • 63. Conclusion ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 50
  • 64. Conclusion • Self-service monitoring changes everything • Technical and business monitoring • Monitoring integrated in the Continuous Delivery pipeline • Open Source solutions are available ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 51
  • 65. Hosted Graphite Promo • http://hostedgraphite.com • 45 days trial with “SOFTSHAKE” promo code (3) Promo Code “SOFTSHAKE” (1) Signup (2) Options / Enter Promo Code help: cleclerc@cloudbees.com ©2013 CloudBees, Inc. All Rights Reserved Thursday, October 24, 13 52