基于spring-cloud、spring-boot搭建的服务间调用日志采集服务

本文分为四个部分来讲述基于sping-cloud、spring-boot搭建的日志采集服务。本文中所用到的依赖包皆通过maven下载。

第一部分、服务注册中心搭建

首先、新建名为Eurke-Server的maven工程。用来做服务注册中心。具体pom内容如下:



    4.0.0

    springcloud-server
    com.asiainfo.springcloud
    1.0-SNAPSHOT
    
        org.springframework.boot
        spring-boot-starter-parent
        1.5.9.RELEASE
    
    
        
            org.springframework.cloud
            spring-cloud-starter-eureka-server
            1.4.4.RELEASE
        
    

第二步、进入/resource目录并在目录下新建bootstrap.yml、application.yml文件。

编辑模式打开bootstrap.yml写入如下内容:

spring:
  application:
    name: eureka-server
  cloud:
    config:
      uri: ${CONFIG_SERVER_URL:http://localhost:8888}

编辑模式打开application.yml写入如下内容:

server:
  port: 8761 #服务端口

eureka:
  client:
    registerWithEureka: false #是否将自己注册进注册中心
    fetchRegistry: false # 此客户端是否获取eureka服务器注册表上的注册信息,默认为true
  server:
    waitTimeInMsWhenSyncEmpty: 0 #在Eureka服务器获取不到集群里对等服务器上的实例时,需要等待的时间,单位为毫秒,默认为1000 * 60 * 5

第三步、main/java目录下新建application.java类,并创建好main方法。

package com.asiainfo.server;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer//打开服务注册功能
@EnableDiscoveryClient//打开服务发现功能
public class main {

    public static void main(String[] args) {
        SpringApplication.run(main.class,args);
    }
}

至此,服务注册中心搭建完成。

第二部分、服务调用环境搭建,与注册中心一样需要首先建立maven工程。

首先、编辑pom文件,如下:



    4.0.0

    com.asininfo.springcloud
    data-callclient
    1.0-SNAPSHOT
    
        org.springframework.boot
        spring-boot-starter-parent
        1.5.9.RELEASE
    

    
        
            org.springframework.cloud
            spring-cloud-starter-eureka-server
            1.4.4.RELEASE
        
        
            org.springframework.cloud
            spring-cloud-starter-feign
            1.3.0.RELEASE
        
        
            org.springframework.boot
            spring-boot-autoconfigure
            1.5.9.RELEASE
        
        
            org.springframework.cloud
            spring-cloud-starter-sleuth
            1.2.5.RELEASE
        

        
            org.springframework.cloud
            spring-cloud-sleuth-zipkin
            1.2.5.RELEASE
            
                
                    org.springframework.cloud
                    spring-cloud-commons
                
            
        

        
            org.springframework.cloud
            spring-cloud-commons
            1.3.1.RELEASE
        
    

由于spring-coud spring-boot包存在部分相同的jar包 为了避免jar包冲突这里统一使用spring-boot下的最新jar包。

第二步、进入/resource目录并在目录下新建bootstrap.yml、application.yml文件。

编辑模式打开bootstrap.yml写入如下内容:

spring:
  application:
    name: call
  sleuth:
    sampler:
       percentage: 1 #日志采集 1代表100%
  zipkin:
    base-url: http://localhost:8084 #日志采集服务地址
    enabled: true #打开日志采集服务
  cloud:
    config:
      uri: ${CONFIG_SERVER_URL:http://localhost:8080}

编辑模式打开application.yml写入如下内容:

# Discovery Server Access
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/ #服务注册中心地址

# HTTP Server
server:
  port: 8082   # HTTP (Tomcat) port #服务端口


第三步、main/java目录下新建application.java类,并创建好main方法。

package com.asiainfo.client;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;


/**
 * 

title:main

* *

Description://TODO

* *

Copyright: Copyright (c) 2018

* *

Company: www.aisiainfo.com

* * @author liudp * @version 1.0 * @date 2018/5/23 10:07 */ @SpringBootApplication //spring-boot注解 @EnableAutoConfiguration @EnableEurekaClient //打开服务注册 @EnableFeignClients//开启服务内部调用 public class main { public static void main(String[] args) { SpringApplication.run(main.class,args); } }

第四步、新建Controller类,代码如下:

package com.asiainfo.client.com.asiainfo.controller.com.asiainfo.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

@RestController
@RequestMapping("/test/")
public class TestController {

    @Autowired
    private TestService testService;
    @RequestMapping("/data1/{data}")
    public Object getData(@PathVariable("data") String data) {
        System.out.println(data);
        Map obj = new HashMap(1);
        for (int i = 0; i < 10; i++) {
            obj.put("j" + i, i);
        }
        testService.getData("1111");
        return obj;
    }
}


第五步、新建接口类,原因为FeignClient调用是通过接口方式进行。代码如下:

package com.asiainfo.client.com.asiainfo.controller.com.asiainfo.service;

import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

@FeignClient(value = "recive") //指定落地方应用名称
@Service
public interface TestService {

    @RequestMapping("/test/data1/{data}")//落地方地址
    public  Object getData(@PathVariable("data")String data);
}

第三部分、落地方工程搭建,具体参照第二部分调用侧工程环境搭建。需要注意的事项为:

1.端口不能与调用侧端口一样。

2.应用名称不能一样。

3.配置FeignClient接口类时,此时填写的应该是被调用侧的应用名称。

第四部分、日志服务搭建

首先搭建maven工程,编辑pom文件:



    4.0.0

    com.asiainfo.springcloud
    log-server
    1.0-SNAPSHOT

    
        org.springframework.boot
        spring-boot-starter-parent
        1.5.9.RELEASE
    

    
        
            org.springframework.cloud
            spring-cloud-netflix-eureka-server
            1.4.4.RELEASE
            
                
                    org.springframework.boot
                    [spring-boot-*,)
                
            
        
        
            io.zipkin.java
            zipkin-autoconfigure-ui
            2.4.7
            
                
                  org.springframework.boot
                    [spring-boot-*,)
                
            
        

        
            io.zipkin.java
            zipkin-server
            2.4.7
            
                
                    org.springframework.boot
                    [spring-boot-*,)
                
            
        

    

第二步,创建bootstrap.yml 、application.yml文件,由于配置和上面差不多,这里就不在浪费口水了。

编辑模式打开bootstrap.yml并填入一下内容:

spring:
  application:
    name: log-server
编辑模式打开
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
spring:
  application:
    name: log-server

# HTTP Server
server:
  port: 8084   # HTTP (Tomcat) port

第三步 新建含main方法的类,并写入如下内容:

package com.asiainfo.log.server;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import zipkin.server.EnableZipkinServer;

@EnableDiscoveryClient
@EnableZipkinServer
@SpringBootApplication
public class main {

    public static void main(String[] args) {
        SpringApplication.run(main.class,args);
    }
}

至此,整个工作搭建完成。依次启动Eureka-server、call、recive、log-server四个工程。待服务注册成功后,浏览器输入:

http://127.0.0.1:8082/test/data1/123

返回结果如下:

基于spring-cloud、spring-boot搭建的服务间调用日志采集服务_第1张图片

浏览器输入:

http://127.0.0.1:8084/zipkin/#

界面如下:

基于spring-cloud、spring-boot搭建的服务间调用日志采集服务_第2张图片

选择服务名称:

基于spring-cloud、spring-boot搭建的服务间调用日志采集服务_第3张图片

点击任意链接,进入详细日志界面。

基于spring-cloud、spring-boot搭建的服务间调用日志采集服务_第4张图片

你可能感兴趣的:(基于spring-cloud、spring-boot搭建的服务间调用日志采集服务)