初识Spring boot监控

 更新时间:2018年03月23日 15:13:16   作者:大名Dean鼎  
这篇文章主要介绍了spring boot监控的相关知识,文中给大家介绍了查看监控数据,数据可视化的相关知识,需要的朋友可以参考下

最近对devOps这个话题有点兴趣,所以研究了一下monitor相关的开源项目,翻到medium上的一篇文章,而且实际项目中也曾看到devOps组的同事搭过类似的监控,就想过把瘾,了解一下监控可视化。

被监控服务配置

本地正好有spring-boot的项目,并且也依赖了jolokia(主要就是为了把JMX的mbean通过HTTP暴露出去)

项目配置也少不了

endpoints:
 enabled: true
 jmx:
  enabled: true
 jolokia:
  enabled: true
management:
 security:
  enabled: false

访问一下URL看看是不是ok

http://localhost:8080/jolokia/read/org.springframework.boot:name=metricsEndpoint,type=Endpoint/Data

搭建监控系统

如果能看到数据,说明server端配置没问题了,下面我们怎么搭建Telegraf + InfluxDB + Grafana呢,这个三个组件是这么配合的,Telegraf实际就是收集信息的,比如每隔10s访问一次上面那个URL得到metrics,收集到的数据存到InfluxDB,然后Grafana做数据可视化。

但是如果纯手动安装实在太麻烦,求助万能的github,找到一个非常棒的项目(https://github.com/samuelebistoletti/docker-statsd-influxdb-grafana), 直接fork然后修改一些配置就可以为自己的项目服务了。如果你不了解相关配置可以先直接run起来,然后通过ssh进去一探究竟。

ssh root@localhost -p 22022

配置方面,主要是要修改Telegraf的,因为它是对接不同项目的,你需要收集什么样的信息,比如cpu,disk,net等等都要在Telegraf里配。简单起见,我只设置了三个输入。

# /etc/telegraf/telegraf.conf
[[inputs.jolokia]]
 context = "/jolokia"
[[inputs.jolokia.servers]]
 name = "springbootapp"
 host = "{app ip address}"
 port = "8080"
[[inputs.jolokia.metrics]]
 name = "metrics"
 mbean = "org.springframework.boot:name=metricsEndpoint,type=Endpoint"
 attribute = "Data"
[[inputs.jolokia.metrics]]
 name = "tomcat_max_threads"
 mbean = "Tomcat:name=\"http-nio-8080\",type=ThreadPool"
 attribute = "maxThreads"
[[inputs.jolokia.metrics]]
 name = "tomcat_current_threads_busy"
 mbean = "Tomcat:name=\"http-nio-8080\",type=ThreadPool"
 attribute = "currentThreadsBusy"

其实就是spring-boot标准的metrics以及tomcat的Threads。

完成之后重启服务/etc/init.d/telegraf restart

查看监控数据

我们访问InfluxDB看看有数据了没有http://localhost:3004/,切换数据库到Telegraf。输入以下命令试试吧

SHOW MEASUREMENTS
SELECT * FROM jolokia
SELECT * FROM cpu
SELECT * FROM mem
SELECT * FROM diskio

比如输入SELECT * FROM jolokia就能看到spring-boot暴露了哪些数据,从time列也可以看出Telegraf是每隔10s收集一次,太频繁了对server也是压力。

上面基本涵盖了cpu,内存和存储的一些metrics。

其实也可以配置网络相关的,感兴趣的可以看官方的telegraf.conf,里面有配置[[inputs.net]]的例子。

数据可视化

数据有了,下一步就是可视化。

按照Github上面说的进入http://localhost:3003/

Using the wizard click on Add data source
Choose a name for the source and flag it as Default
Choose InfluxDB as type
Choose direct as access
Fill remaining fields as follows and click on Add without altering other fields
Url: http://localhost:8086
Database: telegraf
User: telegraf
Password: telegraf

添加好InfluxDB后,新建一个Dashboard,然后快速的ADD几个Graph来。

为了演示,我添加了三个,分别使用下面三组查询语句来渲染出三张图表

SELECT MEAN(usage_system) + MEAN(usage_user) AS cpu_total FROM cpu WHERE $timeFilter GROUP BY time($interval)
SELECT mean("total") as "total" FROM "mem" WHERE $timeFilter GROUP BY time($interval) fill(null)
SELECT mean("used") as "used" FROM "mem" WHERE $timeFilter GROUP BY time($interval) fill(null)
SELECT mean("metrics_heap.used") as "heap_usage" FROM "jolokia" WHERE $timeFilter GROUP BY time($interval) fill(null)

第一张是CPU占用率;第二张是内存占用情况,绿线是Total,黄线是Used;第三张是jolokia提供的jvm heap的使用,可以到看到GC的情况。

刚才还配置了Tomcat的收集,想看Tomcat的Thread情况也是妥妥的。

SELECT mean("tomcat_max_threads") FROM "jolokia" WHERE $timeFilter GROUP BY time($interval) fill(null)
SELECT mean("tomcat_current_threads_busy") FROM "jolokia" WHERE $timeFilter GROUP BY time($interval) fill(null)

小结

以上所述是小编给大家介绍的Spring boot监控,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • IDEA 单元测试创建方法详解(2020.03版本亲测)

    IDEA 单元测试创建方法详解(2020.03版本亲测)

    这篇文章主要介绍了IDEA 单元测试创建方法详解(2020.03版本亲测),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • 详解Java中$符的各种使用场景

    详解Java中$符的各种使用场景

    在Java编程中,我们会经常看到$符的身影,比如经常在配置文件中看到$符号作为变量占位符,用于在运行时动态地获取变量值。本文将详细介绍$符号在Java编程中的各种应用场景,以帮助您更好地理解和运用这个符号,感兴趣的小伙伴可以收藏一下
    2023-04-04
  • SpringBatch结合SpringBoot简单使用实现工资发放批处理操作方式

    SpringBatch结合SpringBoot简单使用实现工资发放批处理操作方式

    这篇文章主要介绍了SpringBatch结合SpringBoot简单使用实现工资发放批处理操作方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Java集合之CopyOnWriteArrayList详解

    Java集合之CopyOnWriteArrayList详解

    这篇文章主要介绍了Java集合之CopyOnWriteArrayList详解,CopyOnWriteArrayList是ArrayList的线程安全版本,内部也是通过数组实现,每次对数组的修改都完全拷贝一份新的数组来修改,修改完了再替换掉老数组,这样保证了只阻塞写操作,需要的朋友可以参考下
    2023-12-12
  • Springboot+Thymeleaf+Jpa实现登录功能(附源码)

    Springboot+Thymeleaf+Jpa实现登录功能(附源码)

    最近有学习到关于Springboot+Thymeleaf+Jpa的综合运用知识,因此想写一个简单的登录界面来尝试一下,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • SpringBoot请求参数传递与接收说明小结

    SpringBoot请求参数传递与接收说明小结

    这篇文章主要介绍了SpringBoot请求参数传递与接收,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • spring监视器actuator配置应用

    spring监视器actuator配置应用

    这篇文章主要介绍了spring监视器actuator配置应用,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • SpringBoot参数校验及原理全面解析

    SpringBoot参数校验及原理全面解析

    文章介绍了SpringBoot中使用@Validated和@Valid注解进行参数校验的方法,包括基本用法和进阶用法,如自定义验证注解、多属性联合校验和嵌套校验,并简要介绍了实现原理
    2024-11-11
  • Java 异常处理小结,从入门到精通

    Java 异常处理小结,从入门到精通

    这篇文章主要介绍了Java 异常处理小结,从入门到精通,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • 通过Java代码技巧改善性能

    通过Java代码技巧改善性能

    在本篇文章里小编给大家分享了关于通过Java代码技巧改善性能的相关知识点,需要的朋友们参考下。
    2019-05-05

最新评论