openjdk k8s port-forward 连接容器jmx服务
jmx 是java 自带的,如果需要使用我们只需要添加对应的配置即可,以下演示docker 集成jmx
使用kompose 生成k8s 的部署文件,使用port-forward 进行连接,所以java.rmi.server.hostname=localhost
环境准备
参考github 项目 https://github.com/rongfengliang/openjdk-docker-jmx
- docker-compose 文件
version: "3"
services:
app:
build: ./
image: dalongrong/java-jmx-openjdk
ports:
- "8080:8080"
- "30384:30384"
- dockerfile
FROM openjdk:8u222-jdk
LABEL AUTHOR="dalongrong"
LABEL EMAIL="1141591465@qq.com"
WORKDIR /
COPY webapi-0.0.1-SNAPSHOT.jar /webapi-0.0.1-SNAPSHOT.jar
COPY docker-entrypiont.sh /docker-entrypiont.sh
RUN chmod +x /docker-entrypiont.sh
EXPOSE 30384 8080
ENTRYPOINT [ "/docker-entrypiont.sh" ]
- docker-entrypiont.sh
主要是进行java 启动参数的配置,com.sun.management.jmxremote.local.only=false 参数比较重要
#!/bin/sh
java \
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=30384 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.rmi.port=30384 \
-Dcom.sun.management.jmxremote.local.only=false \
-Djava.rmi.server.hostname=localhost \
-jar /webapi-0.0.1-SNAPSHOT.jar
- 生成k8s deploy 文件
kompose -f docker-compose.yaml -o k8s
- 修改service port 为nodeport
需要确保端口与jmx 一致,不然连接也会有问题 - 部署
kubectl apply -f ./k8s
port-forward 暴露
kubectl port-forward pod/jmx-demo-142211177-xz2rt 30384:30384
连接服务
- 启动jconsole
jconsole - 连接

- 效果

说明
以上是一个简单的jmx k8s 运行,实际上我们也可以通过prometheus 的jmx expoter 进行监控也是不错的
参考资料
https://www.jankacik.com/Blog/monitoring-java-application-on-docker-with-jmx/
https://github.com/rongfengliang/openjdk-docker-jmx
https://www.jamasoftware.com/blog/monitoring-java-applications/
openjdk k8s port-forward 连接容器jmx服务的更多相关文章
- 京东的Netty实践,京麦TCP网关长连接容器架构
背景 早期京麦搭建 HTTP 和 TCP 长连接功能主要用于消息通知的推送,并未应用于 API 网关.随着逐步对 NIO 的深入学习和对 Netty 框架的了解,以及对系统通信稳定能力越来越高的要求, ...
- Kubernetes Port Forward 机制访问 pod
需求:研发需要调试部署的pod是否能正常提供访问,但又不对pod进行暴露到集群外. 实现:通过Kubernetes的Port Forward机制对本机端口映射到pod端口来实现 1.安装kubectl ...
- 【技术分享】linux各种一句话反弹shell总结——攻击者指定服务端,受害者主机(无公网IP)主动连接攻击者的服务端程序(CC server),开启一个shell交互,就叫反弹shell。
反弹shell背景: 想要搞清楚这个问题,首先要搞清楚什么是反弹,为什么要反弹.假设我们攻击了一台机器,打开了该机器的一个端口,攻击者在自己的机器去连接目标机器(目标ip:目标机器端口),这是比较常规 ...
- Blazor+Dapr+K8s微服务之基于WSL安装K8s集群并部署微服务
前面文章已经演示过,将我们的示例微服务程序DaprTest1部署到k8s上并运行.当时用的k8s是Docker for desktop 自带的k8s,只要在Docker for deskto ...
- Erlang C1500K长连接推送服务-内存
上篇 Erlang C1500K长连接推送服务-性能 提到:150w连接,使用了23GB内存,每个连接占用15KB,约一半是内核使用. 大概分析一下: 1. Erlang 节点 12GB,内部因为有内 ...
- Java JDBC连接SQL Server2005错误:通过port 1433 连接到主机 localhost 的 TCP/IP 连接失败
错误原因例如以下: Exception in thread "main" org.hibernate.exception.JDBCConnectionException: Cann ...
- docker使用ssh远程连接容器(没钱买服务器又不想安装虚拟机患者必备)
突然有需求,需要使用go语言写个ssh终端连接功能,这时候手上又没有服务器,虚拟机也没有,正好使用docker搞起来 docker容器开启sshd服务,模拟服务器 我们知道docker是可以用exec ...
- 基于容器微服务的PaaS云平台设计(一) 实现容器微服务和持续集成
版权声明:本文为博主原创文章,欢迎转载,转载请注明作者.原文超链接 ,博主地址:http://www.cnblogs.com/SuperXJ/ 前言:关于什么是容器微服务PaaS和容器微服务PaaS的 ...
- docker练习-容器和服务
使用定义容器 Dockerfile Dockerfile定义容器内环境中发生的事情.对网络接口和磁盘驱动器等资源的访问在此环境中进行虚拟化,该环境与系统的其他部分隔离,因此您需要将端口映射到外部世界, ...
随机推荐
- pytest_用例a失败,跳过测试用例b和c并标记失败xfail
前言 当用例a失败的时候,如果用例b和用例c都是依赖于第一个用例的结果,那可以直接跳过用例b和c的测试,直接给他标记失败xfail用到的场景,登录是第一个用例,登录之后的操作b是第二个用例,登录之后操 ...
- Js的iframe相关问题,如何判断当前是否在iframe中,iframe和它的父窗口如何通信
一.前言: 在web中,为了丰富我们的内容,往往需要引用其它HTML文件,这时候就需要用到 iframe 标签,本文就主要记录一下使用iframe所需要注意的问题 iframe 所使用的环境(笔者所遇 ...
- Linux学习笔记之tail命令显示最后n行
tail :输出文件的最后几行. 用于linux查看日志的时候很方便,假如日志文件为:Console.log用法:1. tail Console.log tail # 输出文件最后10行的内容 2. ...
- 在Linux系统中创建SSH服务器别名
如果你经常通过 SSH 访问许多不同的远程系统,这个技巧将为你节省一些时间.你可以通过 SSH 为频繁访问的系统创建 SSH 别名,这样你就不必记住所有不同的用户名.主机名.SSH 端口号和 IP 地 ...
- nodeJS从入门到进阶三(MongoDB数据库)
一.MongoDB数据库 1.概念 数据库(DataBase)是一个按照数据结构进行数据的组织,管理,存放数据的仓库. 2.关系型数据库 按照关系模型存储的数据库,数据与数据之间的关系非常密切,可以实 ...
- HANA- SAP S4/HANA BP屏幕增强添加自定义字段(BDT方式)
转载:https://www.cnblogs.com/hhelibeb/p/7412792.html 这里我们可以使用的技术是Business Data Toolset(以下简称BDT). 以下是网络 ...
- 【转】java 环境变量:path与classpath区别
path指示java命令的路径,像javac.java.javaw等: classpath是javac编译器的一个环境变量,它的作用与import.package关键字有关,当你写下improt ja ...
- Github强制找回管理员账号密码
步骤: 1. 登录Github所在的服务器,切换用户为git:su git 2. 进入Github的Rails控制台:gitlab-rails console production 3. 查看超级管理 ...
- 【转载】Linux磁盘管理:LVM逻辑卷管理
Linux学习之CentOS(二十五)--Linux磁盘管理:LVM逻辑卷基本概念及LVM的工作原理 这篇随笔将详细讲解Linux磁盘管理机制中的LVM逻辑卷的基本概念以及LVM的工作原理!!! 一. ...
- RocketMQ-c#代码
导入包: https://github.com/gaufung/rocketmq-client-dotnet/tree/master using org.apache.rocketmq.client. ...