栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Docker下Prometheus和Grafana三部曲之三:自定义监控项开发和配置

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Docker下Prometheus和Grafana三部曲之三:自定义监控项开发和配置

com.spotify

docker-maven-plugin

0.4.12

bolingcavalry/${project.artifactId}

${project.version}

java:8u111-jdk

[“java”, “-jar”, “/${project.build.finalName}.jar”]

/

${project.build.directory}

${project.build.finalName}.jar

  1. 修改系统配置文件application.yml的内容,增加prometheus的SDK会用到的配置,以及关闭security验证:

management:

endpoints:

web:

exposure:

include: ‘*’

jmx:

exposure:

include: ‘*’

shutdown:

enabled: true

metrics:

distribution:

percentiles-histogram[http.server.requests]: true

security:

enabled: false

spring:

metrics:

servo:

enabled: false

security:

basic:

enabled: false

  1. 增加一个configuration类,作用是向spring容器注册一个Counter实例,该实例用户向prometheus上报数据:

package com.bolingcavalry.prometheusdemo;

import io.micrometer.core.instrument.Counter;

import io.micrometer.prometheus.PrometheusMeterRegistry;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

@Configuration

public class PromConfig {

@Autowired

PrometheusMeterRegistry registry;

@Bean

public Counter getCounter() {

Counter counter = Counter.builder(“my_sample_counter”)

.tags(“status”, “success”)

.description(“A simple Counter to illustrate custom Counters in Spring Boot and Prometheus”)

.register(registry);

return counter;

}

}

从上述代码可见,Counter.builder方法会实例化一个Counter类,这个类就代表了一个prometheus的监控项,可以用来上报名为"my_sample_counter"的监控数据,另外这个监控数据还会带上名为"status=success"的tag(稍后展示的实际数据可以看到);

4. 做一个响应web请求的controller,每收到一次web请求,都通过调用counter.increment()方法上报一次监控数据:

package com.bolingcavalry.prometheusdemo;

import io.micrometer.core.instrument.Counter;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.RestController;

import java.time.LocalDateTime;

@RestController

class GreetingController {

@Autowired

Counter counter;

@GetMapping(“/greet”)

String greet(@RequestParam(defaultValue = “World”) String name) {

counter.increment();

return "Hello: " + name + " " + LocalDateTime.now();

}

}

  1. 应用的入口类没有什么特别的,如下:

package com.bolingcavalry.prometheusdemo;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication

public class PrometheusdemoApplication {

public static void main(String[] args) {

SpringApplication.run(PrometheusdemoApplication.class, args);

}

}

  1. 另外为了方便大家实战,我把前面几篇文章用到的脚本内容也放在这个工程中了,在名为files的文件夹下:

以上就是整个web工程的全部内容了,接下来要将此工程编译并构建成Docker镜像;

[](()构建应用的Docker镜像
  1. 请确认当前的电脑上maven和Docker环境都已经配置好,我这里Maven版本是3.6.0,在pom.xml文件所在目录执行以下命令,即可将当前工程构建成Docker镜像:

mvn clean package -U -DskipTests docker:build

如果控制台输出以下内容代表构建成功:

[INFO] — spring-boot-maven-plugin:1.5.19.RELEASE:repackage (default) @ prometheusdemo —

[INFO]

[INFO] — docker-maven-plugin:0.4.12:build (default 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 -cli) @ prometheusdemo —

[INFO] Copying /root/work/temp/201903/09/prometheusdemo/target/prometheusdemo-0.0.1-SNAPSHOT.jar -> /root/work/temp/201903/09/prometheusdemo/target/docker/prometheusdemo-0.0.1-SNAPSHOT.jar

[INFO] Building image bolingcavalry/prometheusdemo

Step 1/3 : FROM java:8u111-jdk

—> d23bdf5b1b1b

Step 2/3 : ADD /prometheusdemo-0.0.1-SNAPSHOT.jar //

—> 2c5819935f94

Removing intermediate container 7d42332c1da5

Step 3/3 : ENTRYPOINT java -jar /prometheusdemo-0.0.1-SNAPSHOT.jar

—> Running in 52407ee52ae4

—> c2e2c7027455

Removing intermediate container 52407ee52ae4

Successfully built c2e2c7027455

[INFO] Built bolingcavalry/prometheusdemo

[INFO] Tagging bolingcavalry/prometheusdemo with 0.0.1-SNAPSHOT

[INFO] ------------------------------------------------------------------------

[INFO] BUILD SUCCESS

[INFO] ------------------------------------------------------------------------

[INFO] Total time: 25.294 s

[INFO] Finished at: 2019-03-10T11:42:25+08:00

[INFO] ------------------------------------------------------------------------

  1. 输入docker images命令检查本地镜像,可以看到新构建的内容,如下图红框:

  1. 由于基础镜像使用的是JDK官方版,整个镜像的体积较大,达到了660MB,您可以修改pom.xml中关于基础镜像的设置,将baseImage节点的内容从java:8u111-jdk改为openjdk:8u191-jdk-alpine3.9,重新构建后,新的镜像体积会缩小到122MB,如下图:

以上就是web工程的开发以及Docker镜像的制作过程了,接下来看看如何进行配置,在Grafana上看到监控数据;

[](()配置自定义监控项
  1. 宿主机的IP地址是192.168.1.101,在浏览器上看看web工程给prometheus提供的数据,访问地址是:[http://192.168.1.101:8081/prometheus](() ,如下图,代码中自定义的监控项在数据中可以看到,不过名称被加了个后缀,变成了my_sample_counter_total,另外tag的内容status="success"也出现了:

  1. 有了上述内容,prometheus就能采集到业务上报的监控项了,接下来我们来试试在Grafana页面上如何配置这个监控项的展示页面,前面的实战中,我们是通过import_dashboard.sh脚本导入的,现在我们自己动手配置一个一模一样的;

  2. 在Grafana页面点击manage,再点击"+Dashboard"按钮,如下图:

4. 对新增的Dashboard进行设置,如下图红框所示:

  1. 填写基本信息,除了名称、描述、还可以打上一些标签:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/836339.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号