k8s 微服务spring boot JVM 监控

目录

1.前言

1.1 JVM监控方案

1.2 接入操作步骤

2. 服务开启actuator prometheus监控

2.1 示例参考添加依赖

2.2 配置prometheus监控

3 配置 prometheus 监控

4 配置jvm grafana dashboard


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参考ID:9568(也可自行搜索Dashboards | Grafana Labs

效果如下

 到此,jvm监控及展示基本告一段落,关于grafana dashboard的问题,大家可自行搜索使用其它面板,哪个更符合自己实际需求,自行研究吧。觉得有用的点个赞和收藏吧~

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 可以使用Zabbix的Java Gateway来监控Spring微服务JVM。首先需要在Zabbix Server上安装Java Gateway,并在Zabbix Web界面上配置Java Gateway的主机和端口。然后在Spring微服务JVM参数中添加JMX监控参数,并在Zabbix Web界面上添加JMX监控项和触发器来监控JVM的性能指标。具体的配置方法可以参考Zabbix官方文档或者相关的技术博客。 ### 回答2: Zabbix是一款流行的开源监控工具,可以用于监控各种服务器和应用程序。如果我们想要监控Spring微服务JVM,可以通过以下步骤来实现。 首先,我们需要在Zabbix服务器上安装并配置Zabbix Agent。Zabbix Agent是一个在被监控主机上运行的软件,可以收集各种指标并将其发送到Zabbix服务器。 接下来,我们需要在Spring微服务的服务器上安装并配置Zabbix Agent。这样,Zabbix Agent将能够连接到Zabbix服务器,并传输JVM的指标数据。 然后,我们需要在Zabbix服务器上创建一个新的主机,用于监控Spring微服务JVM。我们需要指定主机的IP地址和其他相关信息,并将其与之前安装的Zabbix Agent关联起来。 一旦主机创建完毕,我们可以开始配置监控项。监控项定义了我们希望收集的特定指标,如内存使用情况、垃圾回收时间等。对于JVM监控,常见的监控项包括堆内存使用率、线程数、垃圾回收时间等。 配置完监控项后,我们还可以创建触发器和动作。触发器用于定义何时触发警报,而动作则定义了在触发警报时采取的操作,如发送电子邮件或短信通知。 最后,我们可以将监控结果以图表或图形的形式展示在Zabbix的仪表板上。这样,我们就可以实时监控Spring微服务JVM性能,并及时进行故障排除和性能优化。 总而言之,通过安装并配置Zabbix Agent,创建主机、监控项、触发器和动作,并展示监控结果,我们可以使用Zabbix来监控Spring微服务JVM。这样,我们可以及时发现和解决潜在的性能问题,提高应用程序的可靠性和可用性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值