SpringCloud使用Prometheus監(jiān)控(基于Eureka)

本文介紹SpringCloud使用Prometheus式散,基于Eureka服務(wù)發(fā)現(xiàn)僧家。

1.Prometheus介紹

在之前寫過(guò)兩篇有關(guān)Prometheus使用的文章澳泵,如下:

《SpringBoot使用prometheus監(jiān)控》

《SpringBoot使用SOFA-Lookout監(jiān)控》

但是如果使用微服務(wù)的話性湿,一個(gè)服務(wù)一個(gè)服務(wù)的配置似乎太麻煩,Prometheus提供了很多服務(wù)發(fā)現(xiàn)的機(jī)制去統(tǒng)一配置服務(wù)襟衰,具體可以查看官網(wǎng)介紹:https://prometheus.io/docs/prometheus/latest/configuration/configuration/

包含如下這些配置:

image

從圖中可以看出贴铜,這里提供了Consul的服務(wù)發(fā)現(xiàn)機(jī)制,沒(méi)有Eureka的服務(wù)發(fā)現(xiàn)機(jī)制瀑晒。但是如果Eureka想要使用的話可以通過(guò)配置一個(gè)適配器的方式绍坝,使用consul_sd_config配置的方式使用Prometheus服務(wù)發(fā)現(xiàn)。

2.Eureka Server

創(chuàng)建一個(gè)Eureka Server瑰妄,這里使用的Eureka最新版本Greenwich.SR1陷嘴,也就是現(xiàn)在Idea默認(rèn)創(chuàng)建的,在配置中加入eureka-consul-adapter依賴间坐,pom文件完整內(nèi)容如下所示。

<?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的對(duì)照邑退,如下所示竹宋。

image

剩下的就是一些簡(jiǎn)單地配置,如配置文件:

server.port=8761

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

##禁止自己向自己注冊(cè)
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false

啟動(dòng)類加入注解啟動(dòng)注冊(cè)中心地技,如下:

@SpringBootApplication
@EnableEurekaServer //啟動(dòng)服務(wù)注冊(cè)中心
public class SpringcloudPrometheusServerApplication {

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

}

3.Eureka Client

其實(shí)這個(gè)也沒(méi)什么好說(shuō)的蜈七,和普通使用Prometheus一樣,當(dāng)然莫矗,也可以使用SOFA-Lookout的模式飒硅,這里根據(jù)情況自行選擇即可,這里以使用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>

配置文件如下,端口號(hào)8888妹懒,如下:

##端口號(hào)
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}

啟動(dòng)類如下:

@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)雀监,以及需要收集的服務(wù)(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.測(cè)試

分別啟動(dòng)Eureka-Server和Eureka-Client,首先查看Eureka界面会前,如下:

image

接下來(lái)查看一下Prometheus好乐,如下:

image

從上圖可以看到,服務(wù)以及被收集了瓦宜,接下來(lái)查看grafana控制臺(tái)蔚万,如圖:

image

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市临庇,隨后出現(xiàn)的幾起案子反璃,更是在濱河造成了極大的恐慌,老刑警劉巖苔巨,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件版扩,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡侄泽,警方通過(guò)查閱死者的電腦和手機(jī)礁芦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)悼尾,“玉大人柿扣,你說(shuō)我怎么就攤上這事」胛海” “怎么了未状?”我有些...
    開(kāi)封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)析桥。 經(jīng)常有香客問(wèn)我司草,道長(zhǎng),這世上最難降的妖魔是什么泡仗? 我笑而不...
    開(kāi)封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任埋虹,我火速辦了婚禮,結(jié)果婚禮上娩怎,老公的妹妹穿的比我還像新娘搔课。我一直安慰自己,他們只是感情好截亦,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布爬泥。 她就那樣靜靜地躺著,像睡著了一般崩瓤。 火紅的嫁衣襯著肌膚如雪袍啡。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天谷遂,我揣著相機(jī)與錄音葬馋,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛畴嘶,可吹牛的內(nèi)容都是我干的蛋逾。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼窗悯,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼区匣!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起蒋院,我...
    開(kāi)封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤亏钩,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后欺旧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體姑丑,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年辞友,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了栅哀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡称龙,死狀恐怖留拾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鲫尊,我是刑警寧澤痴柔,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站疫向,受9級(jí)特大地震影響咳蔚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜搔驼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一屹篓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧匙奴,春花似錦、人聲如沸妄荔。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)啦租。三九已至哗伯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間篷角,已是汗流浹背焊刹。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人虐块。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓俩滥,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親贺奠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子霜旧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 前提 最近公司在聯(lián)合運(yùn)維做一套全方位監(jiān)控的系統(tǒng),應(yīng)用集群的技術(shù)棧是SpringCloud體系儡率。雖然本人沒(méi)有參與具體...
    zhrowable閱讀 7,200評(píng)論 0 22
  • 一 概述 關(guān)于微服務(wù)的介紹目前已經(jīng)有很多文章做了介紹挂据,本文不再對(duì)微服務(wù)的概念再做進(jìn)一步闡述,重點(diǎn)將介紹微服務(wù)架構(gòu)具...
    java菜閱讀 5,373評(píng)論 0 5
  • 注:一些內(nèi)容是個(gè)人見(jiàn)解儿普,如有不準(zhǔn)確的歡迎指正~ 一崎逃,基本概念 SpringCloud定義 Spring Cloud...
    邊學(xué)邊記閱讀 481評(píng)論 0 0
  • “煜哥,你跟張國(guó)杰和都喝了眉孩,就不和我喝个绍,就是看不起我咯∩紫瘢” “就不和你喝障贸,我不受這套,你就是想灌我吟宦±航啵” 這是他們?nèi)?..
    吳所畏閱讀 421評(píng)論 0 0
  • 呆在辦公室里,心里常常會(huì)產(chǎn)生嫉妒 嫉妒有人比我年輕討巧 嫉妒有人比我會(huì)撒嬌 嫉妒有人比我會(huì)左右逢源 嫉妒有人比我會(huì)...
    hello阿黛閱讀 95評(píng)論 0 0