监控容器内的JVM

监控容器内的JVM

一,不使用k8s,仅仅使用docker

目前测试可行办法是HOST为宿主机ip,network_mode为"host"
如下:
entrypoint.sh HOST为宿主机ip


```bash
#!/usr/bin/env bash
set -x

JMX_PORT=9010
HOST="172.31.32.13"

java \
  -Dsun.management.jmxremote.level=FINEST \
  -Dsun.management.jmxremote.handlers=java.util.logging.ConsoleHandler \
  -Djava.util.logging.ConsoleHandler.level=FINEST \
  -Dcom.sun.management.jmxremote.local.only=false \
  -Dcom.sun.management.jmxremote.ssl=false \
  -Dcom.sun.management.jmxremote.authenticate=false \
  -Dcom.sun.management.jmxremote.port=$JMX_PORT \
  -Dcom.sun.management.jmxremote.rmi.port=$JMX_PORT \
  -Dcom.sun.management.jmxremote.host=$HOST \
  -Djava.rmi.server.hostname=$HOST \
  -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 \
  -jar /opt/app/app.jar

并配合docker-compose.yml  networks:host

```bash
version: "2"
services:
  loop:
    build: .
    ports:
      - "9010:9010"
      - "5005:5005"
    network_mode: "host"

可以使用jvisaulvm远程连接
备注:当不使用network_mode:“host”
HOST:改为172.31.32.13,127.0.0.1 0.0.0.0 皆不通

二,监控k8s环境下的pod中的jvm

Step1 修改Deployment.yaml,添加以下System Properties

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.port=1100
-Dcom.sun.management.jmxremote.rmi.port=1100
-Djava.rmi.server.hostname=localhost

注意,-Djava.rmi.server.hostname一定要设置成localhost

Step2 修改Deployment.yaml,添加Container Port

containers:
- name: ...
  image: ...
  ports:
  - containerPort: 1100
    name: tcp-jmx

Step3 部署Deployment

Step4 利用kubectl转发端口

kubectl -n <namespace> port-forward <pod-name> 1100

Step5 启动VisualVm,创建JMX连接localhost:1100

或启动jconsole jconsole localhost:1100

监控Kubernetes(K8s)容器内部的JVM是一种重要的操作,它能够帮助我们了解JVM的性能和健康状况以及整个容器环境中JVM的运行情况。以下是一些方法和工具来监控K8s容器内部的JVM。 首先,我们可以使用Kubernetes Dashboard或类似的监控工具来查看容器的资源使用情况,例如CPU、内存和存储。这可以帮助我们了解JVM是否正在消耗太多的资源或者是否需要进行资源调整。 其次,我们可以通过日志收集工具,如ELK(Elasticsearch、Logstash和Kibana)堆栈,监控JVM的日志输出。这些工具可以帮助我们实时查看JVM的日志,并进行搜索和过滤。 另外,可以使用性能监控工具,例如Prometheus和Grafana,来监控JVM的性能指标,如内存使用、GC(垃圾回收)时间、线程和类加载情况等。这些工具提供了仪表板和可视化图表,使我们能够直观地了解JVM的运行情况。 还可以使用工具如VisualVM和JMX(Java Management Extensions)来远程监控JVM。这些工具可以通过JMX协议访问JVM的MBean(管理Bean),并提供可视化界面来监控和分析JVM的运行时数据。 最后,我们还可以使用APM(Application Performance Monitoring)工具来监控K8s容器内部的JVM。APM工具可以提供更深入的性能监控和分析,例如方法级别的调用链跟踪、错误和异常的监测等。 综上所述,监控K8s容器内部的JVM可以通过使用Kubernetes Dashboard、ELK堆栈、Prometheus和Grafana、VisualVM、JMX和APM等工具来实现。这可以帮助我们全面了解JVM的性能和健康状况,并及时发现和解决潜在的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值