Spring Boot源码&&框架&&相关技术文章

Spring Boot 应用可视化监控

2017-11-02  本文已影响110人  陈小白_

欢迎访问我的网站:原文

使用spring-actuator 并且使用prometheus, grafana 做可视化视图展示

总体过程图:

2017-11-02-17-21-51

监控

SpringBoot 应用监控

SpringBoot 其实也整合了 ops 的功能,也就是运维的部分能力。通过引入包spring-boot-starter-actuator来监控相关的指标信息,详情文档:Actuator 介绍。另外在新版本的actuator中已经有了加密信息,所以对于一些信息的获取可能需要授权,因此我们还需要引入spring-security,pom 文件如下:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

当然既然引入了spring-security,我们就需要对其做一些配置,我的完整配置是这样的:

# 应用的api端口
server.port=8818
# 启用基础认证
security.basic.enabled = true

# 安全路径列表,逗号分隔,此处只针对/admin路径进行认证
security.basic.path = /admin

# 认证使用的用户名
security.user.name = admin

# 认证使用的密码。 默认情况下,启动时会记录随机密码。
security.user.password = 123456

# 可以访问管理端点的用户角色列表,逗号分隔
management.security.roles = SUPERUSER

# actuator暴露接口使用的端口,为了和api接口使用的端口进行分离
management.port = 8099

# actuator暴露接口的前缀
management.context-path = /admin

# actuator是否需要安全保证
management.security.enabled = true

# actuator的metrics接口是否需要安全保证
endpoints.metrics.sensitive = false

# actuator的metrics接口是否开启
endpoints.metrics.enabled=true

# actuator的health接口是否需要安全保证
endpoints.health.sensitive=false

# actuator的health接口是否开启
endpoints.health.enabled=true

指标采集

采集应用的指标信息,我们使用的是prometheus,相应的我们引入包:

<dependency>
    <groupId>io.prometheus</groupId>
    <artifactId>simpleclient_spring_boot</artifactId>
    <version>0.0.26</version>
</dependency>

之后在程序中开启相应的配置:

@SpringBootApplication
@EnablePrometheusEndpoint
@EnableSpringBootMetricsCollector
public class DemoApplication {

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

这个时候我们可以开始启动我们的应用程序,并且访问相关接口:http://localhost:8099/admin/prometheus

输入 properties 文件中的账号密码,就能看到下图:
![2017-11-02-16-26-20](http:https://img.haomeiwen.com/i1630004/5b6bc460db037137.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240

数据收集

我们采集了指标信息之后就可以开始数据收集了,这个时候我们需要用到Prometheus工具,注意这里是工具,不再是 jar 包了。我使用的是 prometheus 的 docker 镜像,当然你也可以根据需要自己选择,先准备一份 Promethus 的配置文件,更多的配置文档请查看:配置文档

global:
  scrape_interval: 10s
  scrape_timeout: 10s
  evaluation_interval: 10m
scrape_configs:
  - job_name: spring-boot
    scrape_interval: 5s
    scrape_timeout: 5s
    metrics_path: /admin/prometheus
    scheme: http
    basic_auth:
      username: admin
      password: 123456
    static_configs:
      - targets:
        - 192.168.11.54:8099

之后我们准备服务:

docker run -d --name prometheus -p 9090:9090 -v D:\chenzhijun\test\actuator\prometheus\prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus

请注意,D:\chenzhijun\test\actuator\prometheus\prometheus.yml ,是我的配置文件存放地址,我们需要将它放到容器里面去,所以用了-v来做文件映射。/etc/prometheus/prometheus.yml这个是容器启动的时候去取的默认配置,这里我是直接覆盖掉了它。prom/prometheus这是镜像,如果本地没有,就回去你设置好的镜像仓库去取。

启动完成后用docker ps看下是否已经启动成功,之后打开浏览器输入:
http://localhost:9090/targets,如果看到下图就是成功了:

2017-11-02-16-40-26

ps: 这里需要注意一点,我们在prometheums.yml中使用的IP地址一定要准确,因为我是docker访问的,所以我使用的是宿主机的地址

数据可视化展示

同样的我也是使用 docker :

docker run --name grafana -d -p 3000:3000 grafana/grafana

成功之后访问:http:localhost:3000,输入账号密码:admin/admin
之后就开始配置 grafna。

  1. 先配置数据源,这里稍微注意下 ip 地址
    2017-11-02-16-49-26
  2. 新建 dashboard
    2017-11-02-16-51-04
  3. 配置图形数据
    2017-11-02-16-51-28
  4. 选择指标,这里的指标数据只能是promethues采集到了的数据http://localhost:9090/graph:

2017-11-02-16-52-58

4.1. prometh采集的数据http://localhost:9090/graph

2017-11-02-16-54-12
  1. 最终结果

2017-11-02-17-03-01

源码

actuator 源码

参考资料

SpringBoot 应用监控踩坑集锦

Spring Boot 应用可视化监控

prometheus_started

Grafana

上一篇下一篇

猜你喜欢

热点阅读