springboot集成zipkin

一:下载zipkin

Docker:

1

docker run -d -p 9411:9411 openzipkin/zipkin

  

linux:

wget -O zipkin.jar 'https://search.maven.org/remote_content?g=io.zipkin.java&a=zipkin-server&v=LATEST&c=exec'

访问测试

localhost:9411

二:spring配置文件集成

1.导入jar包

在pom文件中添加:

    

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

<!-- zipkin-->

        <dependency>

            <groupId>io.zipkin.brave</groupId>

            <artifactId>brave-core</artifactId>

            <version>3.9.0</version>

        </dependency>

        <!-- https://mvnrepository.com/artifact/io.zipkin.brave/brave-http -->

        <dependency>

            <groupId>io.zipkin.brave</groupId>

            <artifactId>brave-http</artifactId>

            <version>3.9.0</version>

        </dependency>

        <dependency>

            <groupId>io.zipkin.brave</groupId>

            <artifactId>brave-spancollector-http</artifactId>

            <version>3.9.0</version>

        </dependency>

        <dependency>

            <groupId>io.zipkin.brave</groupId>

            <artifactId>brave-core-spring</artifactId>

            <version>3.9.0</version>

        </dependency>

        <dependency>

            <groupId>io.zipkin.brave</groupId>

            <artifactId>brave-spancollector-http</artifactId>

            <version>3.9.0</version>

        </dependency>

        <dependency>

            <groupId>io.zipkin.brave</groupId>

            <artifactId>brave-web-servlet-filter</artifactId>

            <version>3.9.0</version>

        </dependency>

        <dependency>

            <groupId>io.zipkin.brave</groupId>

            <artifactId>brave-okhttp</artifactId>

            <version>3.9.0</version>

        </dependency>

        <dependency>

            <groupId>org.apache.httpcomponents</groupId>

            <artifactId>httpclient</artifactId>

        </dependency>

        <dependency>

            <groupId>org.slf4j</groupId>

            <artifactId>slf4j-api</artifactId>

            <version>1.7.13</version>

        </dependency>

        <dependency>

            <groupId>org.apache.httpcomponents</groupId>

            <artifactId>httpclient</artifactId>

            <version>4.5.3</version>

        </dependency>

  

2.在配置文件中书写参数

1

2

3

4

5

6

zipkin.serviceName=\u5b5f\u662d\u65ed\u6d4b\u8bd5

zipkin.url=http://localhost:9411

zipkin.connectTimeout=6000

zipkin.readTimeout=6000

zipkin.flushInterval=1

zipkin.compressionEnabled=true

  

此处格外需要注意的为:

*serverName中:如果需要中文的话,需要中文转unicode,否则会出现乱码*

3.添加配置类

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

package com.mzx.zipkin.controller;

import com.github.kristofa.brave.Brave;

import com.github.kristofa.brave.EmptySpanCollectorMetricsHandler;

import com.github.kristofa.brave.Sampler;

import com.github.kristofa.brave.SpanCollector;

import com.github.kristofa.brave.http.DefaultSpanNameProvider;

import static com.github.kristofa.brave.Brave.Builder;

import static com.github.kristofa.brave.http.HttpSpanCollector.create;

 

import com.github.kristofa.brave.http.HttpSpanCollector;

import com.github.kristofa.brave.okhttp.BraveOkHttpRequestResponseInterceptor;

import com.github.kristofa.brave.servlet.BraveServletFilter;

import okhttp3.OkHttpClient;

import org.springframework.boot.context.properties.ConfigurationProperties;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

 

@Configuration

@ConfigurationProperties(prefix = ZipkinProperties.ZIPKIN_PREFIX)

public class ZipkinProperties {

 

    public static final String ZIPKIN_PREFIX = "zipkin";

 

    /**

     * 服务名称

     */

    private String serviceName;

 

    /**

     * zipkin地址

     */

    private String url;

 

    /**

     * 连接时间

     */

    private int connectTimeout;

 

    /**

     * 读取时间

     */

    private int readTimeout;

 

    /**

     * 每间隔多少秒执行一次Span信息上传

     */

    private int flushInterval;

 

    /**

     * 是否启动压缩

     */

    private boolean compressionEnabled;

 

    public String getServiceName() {

        return serviceName;

    }

 

    public void setServiceName(String serviceName) {

        this.serviceName = serviceName;

    }

 

    public String getUrl() {

        return url;

    }

 

    public void setUrl(String url) {

        this.url = url;

    }

 

    public int getConnectTimeout() {

        return connectTimeout;

    }

 

    public void setConnectTimeout(int connectTimeout) {

        this.connectTimeout = connectTimeout;

    }

 

    public int getReadTimeout() {

        return readTimeout;

    }

 

    public void setReadTimeout(int readTimeout) {

        this.readTimeout = readTimeout;

    }

 

    public int getFlushInterval() {

        return flushInterval;

    }

 

    public void setFlushInterval(int flushInterval) {

        this.flushInterval = flushInterval;

    }

 

    public boolean isCompressionEnabled() {

        return compressionEnabled;

    }

 

    public void setCompressionEnabled(boolean compressionEnabled) {

        this.compressionEnabled = compressionEnabled;

    }

 

    /**

     * @Description: span(一次请求信息或者一次链路调用)信息收集器

     * @Param:

     * @return: SpanCollector 控制器

     * @Author: Mr.Meng

     * @Date: 2018/10/23

     */

    @Bean

    public SpanCollector spanCollector() {

        HttpSpanCollector.Config config = HttpSpanCollector.Config.builder()

                // 默认false,span在transport之前是否会被gzipped

                .compressionEnabled(compressionEnabled)

                .connectTimeout(connectTimeout)

                .flushInterval(flushInterval)

                .readTimeout(readTimeout)

                .build();

        return create(url, config, new EmptySpanCollectorMetricsHandler());

    }

 

    /**

     * @Description: 作为各调用链路,只需要负责将指定格式的数据发送给zipkin

     * @Param:

     * @return:

     * @Author: Mr.Meng

     * @Date: 2018/10/23

     */

    @Bean

    public Brave brave(SpanCollector spanCollector) {

        //调用服务的名称

        Builder builder = new Builder(serviceName);

        builder.spanCollector(spanCollector);

        //采集率

        builder.traceSampler(Sampler.ALWAYS_SAMPLE);

        return builder.build();

    }

 

 

    /**

     * @Description: 设置server的(服务端收到请求和服务端完成处理,并将结果发送给客户端)过滤器

     * @Param:

     * @return: 过滤器

     * @Author: Mr.Meng

     * @Date: 2018/10/23

     */

    @Bean

    public BraveServletFilter braveServletFilter(Brave brave) {

        BraveServletFilter filter = new BraveServletFilter(brave.serverRequestInterceptor(),

                brave.serverResponseInterceptor(), new DefaultSpanNameProvider());

        return filter;

    }

 

    /**

     * @Description: 设置client的(发起请求和获取到服务端返回信息)拦截器

     * @Param:

     * @return: OkHttpClient 返回请求实例

     * @Author: Mr.Meng

     * @Date: 2018/10/23

     */

    @Bean

    public OkHttpClient okHttpClient(Brave brave) {

        OkHttpClient httpClient = new OkHttpClient.Builder()

                .addInterceptor(new BraveOkHttpRequestResponseInterceptor(

                        brave.clientRequestInterceptor(),

                        brave.clientResponseInterceptor(),

                        new DefaultSpanNameProvider())).build();

        return httpClient;

    }

}

  

使用@ConfigurationProperties

可能会报一个错。

 

意思为没有找到前缀为zipkin的配置文件,springboot1.5以后不支持该注解,官方解释为需要导入jar包

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值