本文介绍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如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.dalaoyang</groupId>
<artifactId>springcloud_sofalookout_server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springcloud_sofalookout_server</name>
<description>springcloud_sofalookout_server</description> <properties>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.SR1</spring-cloud.version>
</properties> <dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency> <dependency>
<groupId>at.twinformatics</groupId>
<artifactId>eureka-consul-adapter</artifactId>
<version>1.1.0</version>
</dependency>
</dependencies> <dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build> </project>

配置文件如下:

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依赖:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.dalaoyang</groupId>
<artifactId>springcloud_sofalookout_client</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springcloud_sofalookout_client</name>
<description>springcloud_sofalookout_client</description> <properties>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.SR1</spring-cloud.version>
</properties> <dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency> <dependency>
<groupId>com.alipay.sofa.lookout</groupId>
<artifactId>lookout-sofa-boot-starter</artifactId>
<version>1.5.2</version>
</dependency>
<dependency>
<groupId>com.alipay.sofa.lookout</groupId>
<artifactId>lookout-reg-prometheus</artifactId>
<version>1.5.2</version>
</dependency>
</dependencies> <dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build> </project>

配置文件配置如下:

##端口号
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,如图所示。

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

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

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

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

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)的更多相关文章

  1. SpringCloud使用Prometheus监控(基于Eureka)

    本文介绍SpringCloud使用Prometheus,基于Eureka服务发现. 1.Prometheus介绍 在之前写过两篇有关Prometheus使用的文章,如下: <SpringBoot ...

  2. SpringCloud实战——(4)基于Eureka、Zuul

  3. 跟我学SpringCloud | 第二篇:注册中心Eureka

    Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry和Service Discovery实现.也是springcloud体系中最重要最核心的组 ...

  4. 微服务框架SpringCloud(Dalston版)学习 (一):Eureka服务注册与发现

    eureka-server eureka服务端,提供服务的注册与发现,类似于zookeeper 新建spring-boot工程,pom依赖: <dependency> <groupI ...

  5. Spring Boot Admin 详解(Spring Boot 2.0,基于 Eureka 的实现)

    原文:https://blog.csdn.net/hubo_88/article/details/80671192 Spring Boot Admin 用于监控基于 Spring Boot 的应用,它 ...

  6. Prometheus基于Eureka的服务发现

    Prometheus基于Eureka的服务发现 一.背景 二.实现步骤 1.eureka 客户端注册到prometheus中 2.prometheus中的写法 3.实现效果 三.完整代码 四.参考链接 ...

  7. 基于Eureka的服务治理

    代码地址如下:http://www.demodashi.com/demo/11927.html 一.服务的注册与发现 关系调用说明: 服务生产者启动时,向服务注册中心注册自己提供的服务 服务消费者启动 ...

  8. 运维监控-基于yum的方式部署 Zabbix Agent 4.0 版本

    运维监控-基于yum的方式部署 Zabbix Agent 4.0 版本 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 上一篇博客我们分享了如何基于yum的方式部署zabbix 4. ...

  9. 运维监控-基于yum的方式部署Zabbix Server 4.0 版本

    运维监控-基于yum的方式部署Zabbix Server 4.0 版本 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.如何选择zabbix版本 1>.打开zabbix官方 ...

随机推荐

  1. 如何设置Maven代理

    1.公司的网络走的是代理,那么如何设置maven下载jar包时也走代理呢. 根据百度出来的两篇文章 设置了一下,但是还是报错. Plugin org.apache.maven.plugins:mave ...

  2. trackerClient.getConnection()为null

    如题,整了个fastDFS文件服务器.但是集成项目spring boot时上传文件失败! Debug到trackerClient.getConnection()时为null.于是看了服务器上track ...

  3. python基础学习小结

    Python是一门面向对象的解释性语言(脚本语言),这一类语言的特点就是不用编译,程序在运行的过程中,由对应的解释器向CPU进行翻译,个人理解就是一边编译一边执行.而JAVA这一类语言是需要预先编译的 ...

  4. [Android] Android 支持下拉刷新、上拉加载更多 的 XRecyclerview

    XRecyclerView一个实现了下拉刷新,滚动到底部加载更多以及添加header功能的的RecyclerView.使用方式和RecyclerView完全一致,不需要额外的layout,不需要写特殊 ...

  5. 线段树——习题、lazy解析

    习题: C. Cloud Computing lazy操作解析:

  6. reduce/filter/map/zip/isinstance/list列表推导式

  7. Luogu P4204 神奇口袋 题解报告

    题目传送门 [题目大意] 一个口袋里装了t种颜色的球,第i种颜色的球的数目为a[i],每次随机抽一个小球,然后再放d个这种颜色的小球进口袋. 给出n个要求,第x个抽出的球颜色为y,求满足条件的概率. ...

  8. eclipse快速查看工程代码行数

    1.点击要统计的项目或许文件夹,在菜单栏点击Search,然后点击File... 2.选中正则表达式(Regular expression),并在搜索文本框输入\n ;3.在文件名中输入*或*.jav ...

  9. 015_ICMP专项研究监控

    一.数据demo cat /proc/net/snmp Ip: Forwarding DefaultTTL InReceives InHdrErrors InAddrErrors ForwDatagr ...

  10. Linux下查看CPU型号,内存大小,硬盘空间,进程等的命令(详解)

    转自:http://www.jb51.net/article/97157.htm 1 查看CPU 1.1 查看CPU个数 # cat /proc/cpuinfo | grep "physic ...