zipkin利用elasticsearch存储,监控链路dubbo,mysql

 

本文主要介绍zipkin监控dubbo,mysql应用。

zipkin版本:zipkin-server-2.20.1-exec.jar

brave版本: 5.10.0

zipkin-reporter版本: 2.12.0

dubbo版本:2.6.1

mysql版本:5.7.0

 

架构介绍:https://zipkin.io/pages/architecture.html

git:https://github.com/openzipkin/zipkin

1.下载zipkin-server,去git上下载合适的版本即可。

2.启动zipkin-server

  2.1 首先要启动es,因为zipkin默认是存储在内存中,当zipkin宕掉了,数据就没了

  2.2 创建日志文件

touch zipkin.log
sudo chmod 777 zikpin.log

 2.3 启动zipkin

STORAGE_TYPE=elasticsearch ES_HOSTS=http://127.0.0.1:9200 java -jar zipkin-server-2.20.1-exec.jar --logging.level.zipkin=trace --logging.level.zipkin2=trace --logging.level.com.datastax.driver.core=debug > zipkin.log &

STORAGE_TYPE:指定存储类型

ES_HOSTS:es地址

logging:记录debug级别日志

3. dubbo整合

项目为dubbo-demo或者自己的项目即可。

3.1 引入jar包

pom.xml

<properties>    
    <brave.version>5.10.0</brave.version>
    <zipkin-reporter.version>2.12.0</zipkin-reporter.version>
</properties>
<dependencyManagement>
        <dependencies>
            <!-- 引入 zipkin brave 的 BOM 文件 -->
            <dependency>
                <groupId>io.zipkin.brave</groupId>
                <artifactId>brave-bom</artifactId>
                <version>${brave.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!-- 引入 zipkin repoter 的 BOM 文件 -->
            <dependency>
                <groupId>io.zipkin.reporter2</groupId>
                <artifactId>zipkin-reporter-bom</artifactId>
                <version>${zipkin-reporter.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>


    <dependencies>

        <!-- Brave 对 Spring MVC 的支持 -->
        <dependency>
            <groupId>io.zipkin.brave</groupId>
            <artifactId>brave-instrumentation-spring-webmvc</artifactId>
        </dependency>

        <!-- Brave 对 MySQL 的支持 -->
        <dependency>
            <groupId>io.zipkin.brave</groupId>
            <artifactId>brave-instrumentation-mysql</artifactId>
        </dependency>

        <dependency>
            <groupId>io.zipkin.brave</groupId>
            <artifactId>brave-instrumentation-dubbo-rpc</artifactId>
        </dependency>

        <!-- 2. brave 的 spring bean 支持 -->
        <dependency>
            <groupId>io.zipkin.brave</groupId>
            <artifactId>brave-spring-beans</artifactId>
        </dependency>

        <!-- 3. 在 SLF4J 的 MDC (Mapped Diagnostic Context) 中支持 traceId 和 spanId -->
        <dependency>
            <groupId>io.zipkin.brave</groupId>
            <artifactId>brave-context-slf4j</artifactId>
        </dependency>

        <!-- 4. 使用 okhttp3 作为 reporter -->
        <dependency>
            <groupId>io.zipkin.reporter2</groupId>
            <artifactId>zipkin-sender-okhttp3</artifactId>
        </dependency>
</dependencies>

dubbo配置:

在dubbo提供端和消费端都要加上过滤。例如
<dubbo:reference filter="tracing"></dubbo>
这是因为brave利用dubbo的filter进行开发的。TracingFilter类实现trace的传递。

 <bean id="sender" class="zipkin2.reporter.beans.OkHttpSenderFactoryBean">
        <property name="endpoint" value="http://zikpin-server地址:9411/api/v2/spans"/>
    </bean>

    <bean id="tracing" class="brave.spring.beans.TracingFactoryBean">
        <property name="localServiceName" value="项目自定义名称"/>
        <property name="spanReporter">
            <bean class="zipkin2.reporter.beans.AsyncReporterFactoryBean">
                <property name="sender" ref="sender"/>
                <!-- wait up to half a second for any in-flight spans on close -->
                <property name="closeTimeout" value="500"/>
            </bean>
        </property>
        <property name="currentTraceContext">
            <bean class="brave.spring.beans.CurrentTraceContextFactoryBean">
                <property name="scopeDecorators">
                    <bean class="brave.context.slf4j.MDCScopeDecorator" factory-method="create"/>
                </property>
            </bean>
        </property>
    </bean>

消费者提供者配置类似,改下名称。

启动dubbo项目,请求一下。 登陆zipkin:127.0.0.1:9411 查看链路

 

4. 整合mysql

pom在上面已经引入了。

在datasource.url中加入

​
statementInterceptors=brave.mysql.TracingStatementInterceptor&amp;zipkinServiceName=名称

​

例如:

jdbc:mysql://localhost:3306/mysql?statementInterceptors=brave.mysql.TracingStatementInterceptor&amp;zipkinServiceName=xxx

重新启动项目。请求mysql时,就会看到链路了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值