首页 > 开发 > Java > 正文

初识Spring boot监控

2024-07-14 08:40:06
字体:
来源:转载
供稿:网友

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

被监控服务配置

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

项目配置也少不了

endpoints: enabled: true jmx:  enabled: true jolokia:  enabled: truemanagement: 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 MEASUREMENTSSELECT * FROM jolokiaSELECT * FROM cpuSELECT * FROM memSELECT * FROM diskio

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

spring,boot,监控

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

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

数据可视化

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

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

Using the wizard click on Add data sourceChoose a name for the source and flag it as DefaultChoose InfluxDB as typeChoose direct as accessFill remaining fields as follows and click on Add without altering other fieldsUrl: http://localhost:8086Database: telegrafUser: telegrafPassword: 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的情况。

spring,boot,监控

刚才还配置了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,监控

小结

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


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表