k8s 微服务spring boot JVM 监控
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
目录
1.前言
服务 | 部署环境 | 监控 |
spring-demo | k8s v1.22 | Prometheus Operator |
1.1 JVM监控方案
- 侵入式指标采集SpringBoot 2.0 自带监控功能Actuator
- 非侵入式采集JMX Exporter
两者各有优缺点基本指标均包含如jvm堆内存使用、非堆内存使用、qps、负载等指标可以对应用进行较为全面的监控。这里不讨论哪种方式更优由于部分原因本方案使用的是actuator。
业务系统为java服务以微服务的形式部署在K8S采用SpringBoot框架。使用SpringBoot自带监控功能Actuator可以帮助实现对程序内部运行情况监控比如监控状况、Bean加载情况、环境变量、日志信息、线程信息、健康检查、审计、统计和HTTP追踪等。Actuator同时还可以与外部应用监控系统整合比如Prometheus。
1.2 接入操作步骤
- 服务增加spring-boot-starter-actuator依赖
- 启用 prometheus和health监控
- 配置 prometheus 监控
- 添加grafana dashboard
2. 服务开启actuator prometheus监控
官方文档Spring Boot Actuator: Production-ready Features
2.1 示例参考添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
2.2 配置prometheus监控
编辑application.properties
#prometheus配置
spring.application.name = spring-demo
management.security.enabled = false
management.metrics.export.prometheus.enabled = true
management.metrics.export.prometheus.step = 1ms
management.metrics.export.prometheus.descriptions = true
management.web.server.auto-time-requests = true
management.endpoint.prometheus.enabled = true
#启用 prometheus监控
management.endpoints.web.exposure.include=prometheus
#management.endpoints.web.exposure.include=*
management.endpoints.web.base-path = /
完成配置后访问 curl -i http://localhost:port/actuator/prometheus即可查看jvm prometheus监控指标
3 配置 prometheus 监控
微服务是部署在K8S环境K8S使用的是云原生proemetheus operator监控方案这里使用servicemonitor对服务进行监控。
创建servicemonitor 资源yaml文件 spring-demo-monitor.yaml
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
labels:
project: spring-demo
name: spring-demo-jvm
namespace: default
spec:
endpoints:
- interval: 30s
path: /actuator/prometheus
port: http
scheme: http
namespaceSelector:
matchNames:
- default
selector:
matchLabels:
app: spring-demo
创建资源kubectl apply -f spring-demo-monitor.yaml
查看资源
> kubectl get servicemonitors
NAME AGE
spring-demo-jvm 17h
创建servicemonitor资源后可以在targets中查看
targets正常后可以查询Jvm相关监控指标如jvm_memory_used_bytes
到这里后就可以通过grafana将jvm的监控信息展示出来
4 配置jvm grafana dashboard
添加数据源略jvm所在的prometheus
dashboard参考ID9568也可自行搜索Dashboards | Grafana Labs
效果如下
到此jvm监控及展示基本告一段落关于grafana dashboard的问题大家可自行搜索使用其它面板哪个更符合自己实际需求自行研究吧。觉得有用的点个赞和收藏吧~