SpringCloud使用Sofa-lookout监控(基于Eureka)

本文介绍SpringCloud使用Sofa-lookout,基于Eureka服务发现。

1.前景

本文属于是前几篇文章的后续,其实一开始感觉这个没有什么必要写的,但是最近一个朋友问我关于这个的问题,所以想着还是写一篇基于Eureka监控使用Pormetheus监控Sofa-Lookout监控的文章。

前几篇文章请看:

《SpringBoot使用prometheus监控》

《SpringBoot使用SOFA-Lookout监控》

《SpringCloud使用Prometheus监控(基于Eureka)》

至于使用consul服务发现监控这里就不介绍了,网上的文章很多,千篇一律。这一篇与上面的这个文章还是有一些不同的,Sofa-Lookout是通过暴露一个端口来进行监控,比较特殊,所以这里给大家借鉴一下。

2.Eureka Server

本文还是需要在Eureka上面加入eureka-consul-adapter依赖,eureka-consul-adapter项目github地址:

https://github.com/twinformatics/eureka-consul-adapter

这里在介绍一下Eureka Server内容,就是在普通Eureka Server基础上加入上述依赖,完整pom如下:



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.4.RELEASE
         
    
    com.dalaoyang
    springcloud_sofalookout_server
    0.0.1-SNAPSHOT
    springcloud_sofalookout_server
    springcloud_sofalookout_server

    
        1.8
        Greenwich.SR1
    

    
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-server
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        

        
            at.twinformatics
            eureka-consul-adapter
            1.1.0
        
    

    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud.version}
                pom
                import
            
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    



配置文件如下:

server.port=8761

eureka.instance.hostname=localhost
eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/

##禁止自己向自己注册
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false

启动类如下:

package com.dalaoyang;

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

@SpringBootApplication
@EnableEurekaServer //启动服务注册中心
public class SpringcloudSofalookoutServerApplication {

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

}

3.Eureka Client

这里有一些是与之前《SpringBoot使用SOFA-Lookout监控》文章不同的地方,首先在pom文件中加入sofa依赖:



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.4.RELEASE
         
    
    com.dalaoyang
    springcloud_sofalookout_client
    0.0.1-SNAPSHOT
    springcloud_sofalookout_client
    springcloud_sofalookout_client

    
        1.8
        Greenwich.SR1
    

    
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-client
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        

        
            com.alipay.sofa.lookout
            lookout-sofa-boot-starter
            1.5.2
        
        
            com.alipay.sofa.lookout
            lookout-reg-prometheus
            1.5.2
        
    

    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud.version}
                pom
                import
            
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    



配置文件配置如下:

##端口号
server.port=8888
##服务名称
spring.application.name=springboot_sofalookout_client
##EurekaServer
eureka.client.service-url.defaultZone=http://server1:8761/eureka/

com.alipay.sofa.lookout.prometheus-exporter-server-port=8081
eureka.instance.metadata-map.address=${spring.cloud.client.ip-address}:${com.alipay.sofa.lookout.prometheus-exporter-server-port}




其中需要解释如下两个参数:

  • com.alipay.sofa.lookout.prometheus-exporter-server-port:sofa-lookout端口
  • eureka.instance.metadata-map.address:封装的Eureka元信息,内容是真正sofa-lookout数据的地址,方便稍后prometheus使用,这个属性不是必须要叫这个名字!!!

4.Prometheus

prometheus配置如下:

# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['127.0.0.1:9090']

  - job_name: 'consul-prometheus'
    consul_sd_configs:
      - server: '172.16.103.33:8761'
        services: [SPRINGBOOT_SOFALOOKOUT_CLIENT]
    relabel_configs:
      - source_labels: ['__meta_consul_metadata_address']
        target_label:  __address__

这里有几点需要注意的:

  • 172.16.103.33是我的内网IP,这个不需太多关注。
  • relabel_configs标签用于修改一些默认配置,比如本文使用__meta_consul_metadata_address属性替代address属性,这里的__meta_consul_metadata_address属性值就是我们在application.properties中的eureka.instance.metadata-map.address属性值,这个是eureka-consul-adapter依赖为我们转换的。
  • 上面两个属性怎么获取的? 接下来告诉你!

5.测试

分别启动EurekaServer,EurekaClient,prometheus,首先查看Eureka,如图所示。

image

实例已经注册了,接下来查看prometheus/targets,如图所示。

image

从这里可以看到,prometheus已经可以成功收集了,接下来我们查看一下都有哪些属性,鼠标放到对应的labels上,如图所示。

image

浮框的内容就是对应实例的属性值,可以对应使用。

接下来查看对应Grafana,也可以查看到对应信息了,如图

image

6.源码

Eureka Server源码地址:https://gitee.com/dalaoyang/springcloud_learn/tree/master/springcloud_sofalookout_server

Eureka Client源码地址:https://gitee.com/dalaoyang/springcloud_learn/tree/master/springcloud_sofalookout_client

你可能感兴趣的:(SpringCloud使用Sofa-lookout监控(基于Eureka))