SpringCloud使用Prometheus监控(基于Eureka)

2023-05-16

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

1.Prometheus介绍

在之前写过两篇有关Prometheus使用的文章,如下:

《SpringBoot使用prometheus监控》

《SpringBoot使用SOFA-Lookout监控》

但是如果使用微服务的话,一个服务一个服务的配置似乎太麻烦,Prometheus提供了很多服务发现的机制去统一配置服务,具体可以查看官网介绍:[https://prometheus.io/docs/prometheus/latest/configuration/configuration/]()

包含如下这些配置:

从图中可以看出,这里提供了Consul的服务发现机制,没有Eureka的服务发现机制。但是如果Eureka想要使用的话可以通过配置一个适配器的方式,使用consul_sd_config配置的方式使用Prometheus服务发现。

2.Eureka Server

创建一个Eureka Server,这里使用的Eureka最新版本Greenwich.SR1,也就是现在Idea默认创建的,在配置中加入eureka-consul-adapter依赖,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.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.dalaoyang</groupId>
    <artifactId>springcloud_prometheus_server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springcloud_prometheus_server</name>
    <description>springcloud_prometheus_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>

    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
        </repository>
    </repositories>

</project>

这里需要注意一下SpringCloud版本与eureka-consul-adapter的对照,如下所示。

剩下的就是一些简单地配置,如配置文件:

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

启动类加入注解启动注册中心,如下:

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

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

}

3.Eureka Client

其实这个也没什么好说的,和普通使用Prometheus一样,当然,也可以使用SOFA-Lookout的模式,这里根据情况自行选择即可,这里以使用micrometer-registry-prometheus依赖为例,完整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.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.dalaoyang</groupId>
    <artifactId>springcloud_prometheus_client</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springcloud_prometheus_client</name>
    <description>springcloud_prometheus_client</description>

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Greenwich.SR1</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <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>io.micrometer</groupId>
            <artifactId>micrometer-registry-prometheus</artifactId>
            <version>1.1.3</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>

    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
        </repository>
    </repositories>

</project>

配置文件如下,端口号8888,如下:

##端口号
server.port=8888

spring.application.name=springboot_prometheus_client

eureka.client.service-url.defaultZone=http://server1:8761/eureka/

management.endpoints.web.exposure.include=*
management.metrics.tags.application=${spring.application.name}

启动类如下:

@SpringBootApplication
public class SpringcloudPrometheusClientApplication {

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

    @Bean
    MeterRegistryCustomizer<MeterRegistry> configurer(
            @Value("${spring.application.name}") String applicationName) {
        return (registry) -> registry.config().commonTags("application", applicationName);
    }

}

4.Prometheus配置

在Prometheus中配置eureka地址(server),以及需要收集的服务(services)。

  - job_name: 'consul-prometheus'
    scheme: http
    metrics_path: '/actuator/prometheus'
    consul_sd_configs:
    #consul 地址
      - server: '127.0.0.1:8761'
        scheme: http
        services: [SPRINGBOOT_PROMETHEUS_CLIENT]

5.测试

分别启动Eureka-Server和Eureka-Client,首先查看Eureka界面,如下:

接下来查看一下Prometheus,如下:

从上图可以看到,服务以及被收集了,接下来查看grafana控制台,如图:

6.源码

源码地址:

Eureka Server : https://gitee.com/dalaoyang/springcloud_learn/tree/master/springcloud_prometheus_server

Eureka Client : https://gitee.com/dalaoyang/springcloud_learn/tree/master/springcloud_prometheus_client

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringCloud使用Prometheus监控(基于Eureka) 的相关文章

随机推荐

  • Linux命令模拟Http的get或post请求

    Http请求指的是客户端向服务器的请求消息 xff0c Http请求主要分为get或post两种 xff0c 在Linux系统下可以用curl和wget命令来模拟Http的请求 get请求 xff1a 1 使用curl命令 xff1a cu
  • 使用Python实现Hadoop MapReduce程序

    转自 xff1a 使用Python实现Hadoop MapReduce程序 英文原文 xff1a Writing an Hadoop MapReduce Program in Python 根据上面两篇文章 xff0c 下面是我在自己的ub
  • windows+R键的应用

    windows 43 R 然后输入以下几个命令 1 cmd 用于Windows命令行操作 比如 ping某个网络 看看是不是通的 或者directory等等Windows命令行操作 2 远程桌面连接 mstsc 3 dxdiag 是Wind
  • 用命令行方式关闭linux防火墙

    sbin iptables I INPUT p tcp dport 80 j ACCEPT sbin iptables I INPUT p tcp dport 22 j ACCEPT etc rc d init d iptables sav
  • cenotos 7桌面环境装mysql_CenotOS Linux 5 下Oracle 10g安装指南

    收集整理了一篇比较完美的CenotOS Linux 5 下Oracle 10g安装教程 分享个朋友们 xff01 Author xff1a David Young e4twood 64 gmail com Last 收集整理了一篇比较完美的
  • Curl命令使用解析大全

    自己翻译了好几天 xff0c 希望大家多多指正 linux下wget使用命令解析大全 名称 curl 传输URL 概要 curl 选项 URL 描述 curl是一个可以从服务器传输数据或者传输数据到一个服务器的工具 xff0c 支持以下协议
  • java核心技术读书笔记

    对象的三个特征 对象的行为 可以对对象施加哪些操作 或者可以对对象施加哪些方法 对象的状态 当施加哪些方法时 对象如何响应 对象的标识 如何辨别具有相同行为与状态的不同的对象 对象的行为是用可调用的方法定义的 对象的状态每个对象保存着描述当
  • centos vnc配置笔记

    1 首先查询是否安装VNC Server rpm qa grep vnc 如果有类似于 xff1a vnc server 的值返回说明已经安装了vnc server 如果没有安装采用yum安装 yum y install vnc 2 配置V
  • ONF解决方案与合作伙伴副主席Aseem Parikh:CORD的社区增长概况及全球发展趋势

    由天地互连 下一代互联网国家工程中心主办的 2017全球SDNFV技术大会 xff08 2017 chinasdn org xff09 于 2017年8月2 3日 xff0c 在北京国宾酒店火热开幕 在3日上午的大会中 xff0c ONF解
  • 视觉语言导航综述Visual Language Navigation

    abstract 视觉语言导航任务 Visual Language Navigation 是让智能体跟着自然语言指令进行导航 xff0c 这个任务需要同时理解自然语言指令与视角中可以看见的图像信息 xff0c 然后在环境中对自身所处状态做出
  • Android 8.0 系统编译解决卡在Ensuring Jack server is installed and started

    参考 xff1a https www cnblogs com zzb Dream 90Time p 9273844 html 这个解决方法是比较全的 xff0c 但是我所有操作都做了 xff0c 依然无法正常编译 解决这个问题花了我2天时间
  • [转]以下划线开头的变量名

    C 43 43 系 统头文件里将宏名 变量名 内部函数名用 开 头就是为了避免与用户用的名字冲突 因为当你 xff03 i nclude 系 统头文件时 xff0c 这些文件里的名字都有了定义 xff0c 如果与你用的名字冲突 xff0c
  • 爬虫所需要的爬虫代理ip究竟是什么?

    爬虫所需要的爬虫代理ip究竟是什么 当我们对某些网站进行爬去的时候 xff0c 我们经常会换IP来避免爬虫程序被封锁 其实也是一个比较简单的操作 xff0c 目前网络上有很多IP代理商 xff0c 例如西刺 xff0c 芝麻 xff0c 犀
  • DirectUI的初步分析

    最近由于项目的需要学习了一下DirectUI方面的东西 主要借鉴的是一个国外程序员写的代码 见引用一 看了后发现它更多的是探讨一种实现的可能性和思路 和实际应用还是有距离的 不过其实现还是很有意思的 在写此小结的时候又发现国内一个程序员将这
  • pcnet32 device eth0 does not seem to be present网卡无法激活

    前一段跟着老师上课的时候学习模块的内容 xff0c 当时不知道无意中动了哪个模块 xff0c 导致无法启动网卡 系统启动日志 xff1a Bringing up interface eth0 pcnet32 device eth0 does
  • Nodejs版本管理方法

    简介 我以前写过关于Nodejs的版本管理 那个时候使用的是n来管理 但是n会在home目录下创建的安装目录不是隐藏的 所以对于我这个强迫症来说就很烦 所以现在就来说说nvm这个nodejs的版本管理工具 安装 安装很简单 一个命令搞定 使
  • 企业面试题:查找/oldboy下所有7天以前以log结尾的文件移动/tmp下。

    企业必考面试题 xff1a 查找 oldboy目录下所有7天以前的以log结尾的文件移动到 tmp下 要求 xff1a 请给出至少三种实现方法 xff0c 有能力的朋友试试看 xff01 工作做事给老大 xff0c 给面试官多种方案 xff
  • 问题:Excel在“xxx.xlsx”中发现不可读取的内容。是否恢复此工作薄的内容?【原创】...

    现象 xff1a 点 34 是 Y 34 提示信息中提到的error242440 02 xml文件 xff1a 问题重现 xff1a package poi import java io FileNotFoundException impo
  • Echarts调整图表上下左右的间距,Echarts调整柱状图左右的间距

    Echarts调整图表上下左右的间距 xff0c Echarts调整柱状图左右的间距 gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt
  • SpringCloud使用Prometheus监控(基于Eureka)

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