作者:Smokeyi\链接:https://www.cnblogs.com/2YSP/...一、背景SpringBoot的应用监控方案有很多,SpringBoot+Prometheus+Grafana是比较常用的一种目前使用的解决方案之一。三者的关系大致如下:2.开发SpringBoot应用首先,创建一个SpringBoot项目。pom文件如下:启动spring-boot-starter-weborg.projectlomboklomboktrue可选>io.prometheussimpleclient_spring_boot<版本>0.8.1org.springframework.bootspring-boot-starter-seCurity推荐一个SpringBoot基础教程和实例:https://github.com/javastacks...注:这里的SpringBoot版本是1.5.7.RELEASE,所以最新的2不是使用.X是因为最新的simpleclient_spring_boot只支持1.5.X,不知道2.X版本能不能支持MonitorDemoApplication启动类包cn.sp添加注解;importio.prometheus.client.spring.boot.EnablePrometheusEndpoint;importio.prometheus.client.spring.boot.EnableSpringBootMetricsCollector;importorg.springframework.boot.SpringApplication;importorg.弹簧框架。boot.autoconfigure.SpringBootApplication;@EnablePrometheusEndpoint@EnableSpringBootMetricsCollector@SpringBootApplicationpublicclassMonitorDemoApplication{publicstaticvoidmain(String[]args){SpringApplication.run(MonitorDemoApplication.class,args);}}配置文件application.ymlserver:port:8848application:name:monitor-demosecurity:user:name:adminpassword:1234basic:enabled:true#安全路径列表,逗号分隔,这里只对/admin路径进行认证path:/admin#actuator的前缀exposedinterfacemanagement:context-path:/admin#Actuator暴露接口使用的端口,为了和api接口使用的端口分开port:8888security:enabled:真实角色:SUPERUSER测试代码TestController@RequestMapping("/heap/test")@RestControllerpublicclassTestController{publicstaticfinalMapmap=newConcurrentHashMap<>();@RequestMapping("")publicStringtestHeapUsed(){for(inti=0;i<10000000;i++){地图。放(我+“”,新的对象());}返回“确定”;}}这里的逻辑是请求这个接口后创建大量对象保存在map中增加堆内存占用,方便后面测试邮件报警激活项目后可以看到有IDEA中有很多Endpoints,如图:一开始我的IDEA并没有显示这个Endpoints。后来发现是我用的idea版本太旧了,还是2017.1,而这个需要idea2017.2以上才能看到。后来又得重新下载安装,耗时很长。...启动完成后访问http://localhost:8888/admin/p...可以看到服务对外暴露的监控指标。注意:由于开启了安全认证,访问该网址需要提示输入账号/密码。如果提示404,请检查您的请求地址是否正确。如果不设置management.context-path,默认地址为http://ip:port/prometheus三、安装Prometheus下载地址点击此处,本文下载Windows版本prometheus-2.17.2.windows-amd64.tar.gz.解压后,修改prometheus.yml文件,配置数据采集的目标信息。scrape_configs:#作业名称作为标签`job=`添加到从此配置中抓取的任何时间序列。#-job_name:'prometheus'#metrics_path默认为'/metrics'#scheme默认为'http'。#static_configs:#-targets:['localhost:9090']-job_name:'monitor-demo'scrape_interval:5s#抓取间隔scrape_timeout:5smetrics_path:/admin/prometheusscheme:httpbasic_auth:#authenticationinformationusername:adminpassword:1234static_configs:-targets:-127.0.0.1:8888#这里填写SpringBoot应用的IP+端口号。更多配置信息,请参考官方文档。现在你可以启动普罗米修斯了。输入命令行:prometheus.exe--config.file=prometheus.yml访问http://localhost:9090/targets查看SpringBoot采集状态是否正常。4.安装Grafana下载地址点击这里,本文使用Windows版本grafana-6.3.3.windows-amd64.zip。解压后运行bin目录下的grafana-server.exe启动。在浏览器中访问http://localhost:3000可以看到登录页面。默认账户密码为admin/admin。立即开始创建您自己的可视化监控仪表板。1.设置数据源2.创建Dashboard3.填写收集到的索引点注意:这里的索引点不能随便填写,必须存在并且在Prometheus中可以看到。4.选择图表样式5.填写标题描述最后点击右上角的保存,输入Dashboard的名称。提示:这里的图表布局可以用鼠标拖动。5.添加邮件报警。实际项目中,当监控到的某个指标超过阈值时(比如CPU占用率过高),希望监控系统自动通过短信、钉钉和Email等告警方式通知运维人员及时,Grafana支持这个功能。第一步:点击【Alerting】——>【Notificationchannels】添加通知通道创建通道。这里的Type有很多选项,包括webhook、DingTalk等,这里我们以email为例。第二步:邮件配置Grafana默认使用conf目录下的defaults.ini作为配置文件运行。根据官方的建议,我们不要更改defaults.ini,而是在同一目录下新建一个配置文件custom.ini。以腾讯企业邮箱为例,配置如下:#####################################SMTP/Emailing#####################[smtp]enabled=truehost=smtp.exmail.qq.com:465user=xxxx@ininin.com#如果密码包含#或;你必须用三重引号把它包起来。Ex"""#password;"""password=XXXcert_file=key_file=skip_verify=truefrom_address=xxxx@ininin.comfrom_name=Grafanaehlo_identity=ininin.com然后需要重启Grafana,命令grafana-server。exe-config=E:\file\grafana-6.3.3\conf\custom.ini第三步:为指标添加alert配置告警规则配置通知方式和信息Evaluateevery表示检测评价率,这里测试效果,改到1秒For如果警报规则配置了For,并且查询违反了配置的阈值,那么它将首先从OK变为Pending。从OK到PendingGrafana不发送任何通知。一旦警报规则触发的时间超过持续时间,它将更改为警报并发送警报通知。Conditionswhen表示何时,of表示条件,isabove表示触发值。同时上面设置后会有一条红线。如果没有数据或者所有值为null,这里选择触发告警如果执行错误或者超时如果执行错误或者超时,这里选择触发告警注意:下一次触发,比如10秒后,不会再次触发,防止警报风暴!第四步:测试请求http://localhost:8848/heap/test接口后,内存增加大于设置的阈值,然后收到告警邮件。这里不显示图片,我不明白为什么。6.总结一下,这套监控功能还是挺强大的,只是Prometheus的表情比较多。近期热点文章推荐:1.1000+Java面试题及答案(2022最新版)2.厉害了!Java协程来了。..3.SpringBoot2.x教程,太全面了!4.不要用爆破爆满画面,试试装饰者模式,这才是优雅的方式!!5.《Java开发手册(嵩山版)》最新发布,赶快下载吧!感觉不错,别忘了点赞+转发!