62
Let's Visualize Your Spring Boot Applications Acroquest Technology Co., LTD. Shin Tanimoto (@cero_t)

Let's Visualize Your Spring Boot Applications

Embed Size (px)

Citation preview

Page 1: Let's Visualize Your Spring Boot Applications

Let's Visualize Your Spring Boot Applications

Acroquest Technology Co., LTD.Shin Tanimoto (@cero_t)

Page 2: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

Who am I?• ⾕谷本 ⼼心 (Shin Tanimoto)

• Acroquest Technology (in Japan)• Board member of Japan Java User Group (JJUG)

• System Architect / Troubleshooter• Microservices, Elasticsearch

• Pokemon: Team Mystic• twitter: @cero_t• facebook: shin.tanimoto

2

Page 3: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

I ask you ...If you have any question, ask me by• twitter with mention to @cero_t or hashtag #s1p_vis• http://sli.do/ with event code #5463

3

Page 4: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved. 4

Seeing is believing

Page 5: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved. 5

Seeing is deceiving?

Page 6: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved. 6

You can’t even believewithout seeing

Page 7: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved. 7

Seeing is getting insights

Page 8: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved. 8

Page 9: Let's Visualize Your Spring Boot Applications

Let's Visualize Your Spring Boot Applications

Acroquest Technology Co., LTD.Shin Tanimoto ( @cero_t )

Page 10: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

Table of contents1. Tools2. Are your services working well?3. Are your services enough comfortable?4. How do your microservices look like?5. Do your services contribute to your business?

10

Page 11: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

Tools#1

11

Page 12: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

1. Tools1. AWS CloudWatch

• for monitoring and alerting2. Elasticsearch + Logstash + Kibana + Beats

• for monitoring and visualizing logs3. Spring Cloud Sleuth + Zipkin

• for visualizing microservices

12

Page 13: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

1. Tools1. AWS CloudWatch

13

Page 14: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

1. Tools1. AWS CloudWatch

• Built-in monitoring service for AWS.• Custom metrics can be collected by aws-cli or SDK on

each server.• Logs can be collected by “awslogs" agent on each

server.

• Datadog can be alternative.

14

Page 15: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

1. Tools2. Elasticsearch + Logstash + Kibana + Beats

15

Page 16: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

1. Tools2. Elasticsearch + Logstash + Kibana + Beats

• Elasticsearch : Full-text search engine• Logstash : Data collector, processor, sender• Kibana : Visualization platform• Beats : Data shipper

16

Page 17: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

1. ToolsThey are so called “ELK”.

17

Page 18: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

1. ToolsELK-bee?

18

Page 19: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved. 19

Elastic stack

1. Tools

Page 20: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

1. Tools3. Spring Cloud Sleuth + Zipkin

• Spring Cloud Sleuth is a distributed tracing solution.• Embeds the trace id (correlation id) and the span id (message id)

into the HTTP request headers, RabbitMQ headers, and so on.• Embeds those ids into the logs through SLF4J MDC.• Send trace data to Zipkin or Spring Cloud Stream.

• Zipkin is a distributed tracing system.• Collects and lookup trace data.• Zipkin UI shows the data.

20

Page 21: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

Are your services working well?#2

21

Page 22: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

2. Are your services working well?1. What to do?

• Per server monitoring(1) CPU usage(2) Physical memory usage / available(3) Disk space usage / available

• Per service / middleware monitoring(1) Process status(2) Health check

• Put them on the same dashboard.• Create alert notifications of them.

22

Page 23: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

2. Are your services working well?

23

Page 24: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

2. Are your services working well?2. Why do this?

(1) To see if servers are woking well now.(2) To see if servers were woking well in the past.(3) To see if servers will be working well in the near

future.

24

Page 25: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

2. Are your services working well?3. How to do?

• I believe you already know to setup monitoring.• Do you know topboat of elastic stack?

25

Page 26: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved. 26

Demo!

2. Are your services working well?

Page 27: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

Are your services enough comfortable?#3

27

Page 28: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

1. What to do?• Monitor the web access

(1) Access count(2) Response time (Per public API)(3) Response code

• Monitor the datasource(1) Query count(2) Query response time

28

3. Are your services enough comfortable?

Page 29: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

3. Are your services enough comfortable?

29

Avg. of response time per API (Search only)

Avg. of response time per API (All)

Access count per API

Page 30: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

3. Are your services enough comfortable?2. Why do this?

• To see if the visitors feel comfortable or annoyed.

30

Page 31: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

3. Are your services enough comfortable?3. How to do?

• If you use ELB, just use ELB monitoring on AWS CloudWatch.

• Collect access logs using Logstash or Filebeat and forward them to Elasticsearch.And visualize them on Kibana.

• Do you know packetbeat?

31

Page 32: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved. 32

3. Are your services enough comfortable?

Page 33: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

How do your microservices look like?#4

33

Page 34: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

1. What to do?• Trace microservices request by Spring Cloud Sleuth• Send trace data to Zipkin and visualize them

34

4. How do your microservices look like?

Page 35: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

4. How do your microservices look like?2. Why do this?

(1) To get a grasp of your system looks like.(2) When modifying some microservices,

to confirm the influence range.(3) To find unused services.

35

Page 36: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

4. How do your microservices look like?3. How to do?

(1) Go to Spring Initializr web site and find “sleuth” and “zipkin”.

(2) Add sleuth dependencies to your microservices.(3) Create zipkin server using zipkin dependencies.

36

Page 37: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

4. How do your microservices look like?

37

Page 38: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

4. How do your microservices look like?

38

Page 39: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

4. How do your microservices look like?Sleuth and Zipkin dependencies

39

Name on Initializr artifactIdSleuth spring-cloud-starter-sleuthSleuth Stream spring-cloud-sleuth-streamZipkin Client spring-cloud-starter-zipkinZipkin Stream spring-cloud-sleuth-zipkin-streamZipkin UI spring-boot-starter

zipkin-autoconfigure-uiZipkin Server spring-boot-starter

zipkin-server

Page 40: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

4. How do your microservices look like?

40

Microservice

Microservice

Zipkin Server

HTTP

Zipkin UI Server

To start simply:

Page 41: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

4. How do your microservices look like?To start simply:

41

Microservice

Microservice

Zipkin Server

HTTP

Zipkin UI Server

Zipkin Client (spring-cloud-starter-zipkin)

Zipkin UI (zipkin-autoconfigure-ui)Zipkin Server (zipkin-server)

Page 42: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

4. How do your microservices look like?

42

MicroserviceAMQP Zipkin UI Server

Zipkin ServerRabbitMQAMQP

To use RabbitMQ as a middle buffer:

Page 43: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

4. How do your microservices look like?

43

MicroserviceAMQP Zipkin UI Server

Zipkin ServerRabbitMQAMQP

Zipkin UI(zipkin-autoconfigure-ui)

Zipkin Stream (spring-cloud-sleuth-zipkin-stream)

Stream Rabbit(spring-cloud-starter-stream-rabbit)

Sleuth Stream (spring-cloud-sleuth-stream)

Stream Rabbit(spring-cloud-starter-stream-rabbit)

To use RabbitMQ as a middle buffer:

Page 44: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

4. How do your microservices look like?

44

MicroserviceAMQP Zipkin UI Server

Zipkin ServerRabbitMQAMQP

Zipkin UI(zipkin-autoconfigure-ui)

Zipkin Stream (spring-cloud-sleuth-zipkin-stream)

spring-cloud-stream-binder-rabbit

Sleuth Stream (spring-cloud-sleuth-stream)

spring-cloud-stream-binder-rabbit

To use RabbitMQ as a middle buffer:

Page 45: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

4. How do your microservices look like?

45

MicroserviceAMQP Zipkin UI Server

Zipkin ServerRabbitMQAMQP

The exchange and the queue are created and bound automatically.

Exchange: sleuth

Queue: sleuth.sleuth

Page 46: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

4. How do your microservices look like?Sleuth and Zipkin dependencies

46

Name on Initializr artifactId HTTP AMQPSleuth spring-cloud-starter-sleuthSleuth Stream spring-cloud-sleuth-stream ProducerZipkin Client spring-cloud-starter-zipkin ClientZipkin Stream spring-cloud-sleuth-zipkin-stream ConsumerZipkin UI spring-boot-starter

zipkin-autoconfigure-uiServer Consumer

Zipkin Server spring-boot-starterzipkin-server

Server

Stream Rabbit spring-cloud-starter-stream-rabbit Both

Page 47: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

4. How do your microservices look like?Sleuth and Zipkin dependencies

47

Name on Initializr artifactId HTTP AMQPSleuth spring-cloud-starter-sleuth

Adds trace and span ids to the logs

Page 48: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

4. How do your microservices look like?

48

Zipkin server application (HTTP):

@SpringBootApplication

@EnableZipkinServer

public class ZipkinApplication {

public static void main(String[] args) {

SpringApplication.run(ZipkinApplication.class, args);

}

}

Page 49: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

4. How do your microservices look like?

49

Zipkin server application (Stream):

@SpringBootApplication

@EnableZipkinStreamServer

public class ZipkinApplication {

public static void main(String[] args) {

SpringApplication.run(ZipkinApplication.class, args);

}

}

Page 50: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

4. How do your microservices look like?

50

No source code modification in microservices!

Page 51: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved. 51

Demo!

4. How do your microservices look like?

Page 52: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

4. How do your microservices look like?• Note

(1) Spring Cloud Sleuth does NOT support RabbitTemplate (spring-boot-starter-amqp).

(2) It supports Stream Rabbit(spring-cloud-starter-stream-rabbit).

52

Page 53: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

Do your services contribute to your business?

#5

53

Page 54: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

5. Do your services contribute to your business?

1. What to do?• Collect access logs in Elasticsearch.• Session ID or user id should be contained

in the access log.• Visualize logs using Kibana.

54

Page 55: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved. 55

Demo!

5. Do your services contribute to your business?

Page 56: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

5. Do your services contribute to your business?

2. Why do this?(1) To see how your system contribute to.(2) To make your boss or manager

to invest more $$$ to the developers!

56

Page 57: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

SummaryAt last

57

Page 58: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

Summary• Use server monitoring and process monitoring.• Gathering the system performance and business

performance into one dashboard shows the relationship of them!

• Zipkin is cool, enough cool.

58

Page 59: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved. 59

Yesterday I found a big news.

By the way,

Page 60: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved. 60

The Netflix Tech Blog: Vizceral Open Source http://techblog.netflix.com/2016/08/vizceral-

open-source.html

By the way,

Page 61: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved. 61

Infrastructures Evolution

Let's have fun visualization your microservices!

Page 62: Let's Visualize Your Spring Boot Applications

@cero_t #s1p_vis sli.do #5463Copyright © Acroquest Technology Co., Ltd. All rights reserved.

Summary• Sample code: https://github.com/cero-t/e-commerce-example• Clip arts: http://www.irasutoya.com/

62