使用Spring Boot与Micrometer获取的指标数据发送到Elasticsearch中,并在Kibana中展示

想要做的事情 zuò de shì

    Spring Bootアプリケーションのメトリクスを可視化したい

听说使用Micrometer库可以轻松获取应用程序的度量指标。

在中国,”メトリクス”是指根据CPU和内存使用情况,对于Spring Boot还可以默认获取到URL访问情况等作为”メトリクス”的数据。

可以看看这附近。

    • JVM and System Metrics

 

    • Cache Metrics

 

    Spring Boot / Metrics

似乎可以添加自己获取的项目。

做过的事情

    • Spring BootアプリケーションにMicrometerを入れ、Elasticsearchにメトリクス送信

 

    Kibanaで表示

通过Micrometer收集的指标将被保存在某个数据存储中,但保存位置可以选择多个。

微米尺文件说明

CloudWatch、Elasticsearch、Datadog、Prometheus等等。

这一次,我们决定将数据存入Elasticsearch,并尝试使用Kibana进行可视化。

环境

这次的实施环境。

$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 18.04.1 LTS
Release:	18.04
Codename:	bionic


$ java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-0ubuntu0.18.04.1-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)


$ mvn -version
Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T03:41:47+09:00)
Maven home: /path/to/.sdkman/candidates/maven/current
Java version: 1.8.0_191, vendor: Oracle Corporation, runtime: /usr/lib/jvm/java-8-openjdk-amd64/jre
Default locale: ja_JP, platform encoding: UTF-8
OS name: "linux", version: "4.15.0-39-generic", arch: "amd64", family: "unix"

指定的应用程序

超级简单,我们将创建一个小型应用程序。

在pom.xml文件中的依赖关系。

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.1.1.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>io.micrometer</groupId>
            <artifactId>micrometer-registry-elastic</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.1.1.RELEASE</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

在使用Spring Boot的时候,需要添加spring-boot-starter-actuator,并且要将指标发送到Elasticsearch,所以需要添加micrometer-registry-elastic。

发送间隔稍微缩短了一点,设定为每5秒发送一次。

src/main/resources/application.properties可以用下面的方式进行重述:

主目录/src/资源/应用程序配置.properties

management.metrics.export.elastic.step=5s

设置请参考此处。

弹性万用表

度量 / 支持的监控系统 / 弹性

这是我准备的应用程式。

主要的应用程序在`src/main/java/com/example/micrometer/elastic/App.java`。

package com.example.micrometer.elastic;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class App {
    public static void main(String... args) {
        SpringApplication.run(App.class, args);
    }
}

这次我们没有准备控制器或任何其他东西,但是在Spring Boot应用程序中,当我们添加Micrometer时,可以像Spring Web MVC一样获取指标。

安装和启动Elasticsearch

下载并解压tar.gz文件。

$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.2.tar.gz
$ tar xf elasticsearch-6.5.2.tar.gz
$ cd elasticsearch-6.5.2

启动。

$ bin/elasticsearch

确认。

$ curl localhost:9200{
  "name" : "qd3p2vS",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "6kr__MvLRsuxV5-8d8j5UQ",
  "version" : {
    "number" : "6.5.2",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "9434bed",
    "build_date" : "2018-11-29T23:58:20.891072Z",
    "build_snapshot" : false,
    "lucene_version" : "7.5.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

Kibana的安装和启动

下载tar.gz文件并进行解压。

$ wget https://artifacts.elastic.co/downloads/kibana/kibana-6.5.2-linux-x86_64.tar.gz
$ tar xf kibana-6.5.2-linux-x86_64.tar.gz
$ cd kibana-6.5.2-linux-x86_64

启动。

$ bin/kibana

当访问 http://localhost:5601 时,可以找到 Kibana。

範囲を選択_116.png

启动应用程序,尝试将指标可视化。

开始。

$ mvn spring-boot:run 

启动后,尝试访问Kibana。

由于已经将指标发送到名为“metrics-yyyy-mm”的索引中,所以我们要在“Discover”中进行注册。

範囲を選択_117.png

时间字段是@timestamp。

範囲を選択_118.png

在「发现」功能下,您可以查看发送的数据。

範囲を選択_122.png

那么,请选择“Visualize”并进行展示。

这次我们将尝试对Java虚拟机的内存进行可视化。

Y轴按照值的平均进行,X轴为日期的直方图,字段为@timestamp,时间间隔进行分钟筛选。

範囲を選択_121.png

我们进一步通过应用筛选器(Filters)来缩小了显示目标的度量标准,具体为使用名称(name)为“jvm_memory_used”的度量标准。

範囲を選択_121.png

它以逼真的方式显示出来了。

广告
将在 10 秒后关闭
bannerAds