Tag: jmx

如何通过JMX连接到远程Docker容器

我有一个在远程机器的容器中运行的Spring Boot应用程序,我必须使用哪些JVM参数通过Java Mission Control或JVisual VM(通过JMX)连接到它?

在Docker容器输出JMX RMI连接错误的Datadog代理启动

我正在尝试从自己的Docker容器中存在的内部应用程序收集JMX(通过RMI)指标的datadog-agent拒绝连接。 但是,jconsole能够从自己的Docker容器中存在的应用程序收集指标。 datadog-agent存在于它自己的容器中。 两个容器都存在于同一主机上的同一个networking中。 有任何想法吗? 我看了其他堆栈溢出问题。 已经在自定义的jmx.yaml文件/etc/dd-agent/conf.d/jmx.yaml中尝试了IP地址0.0.0.0以及特定的主机地址 Docker容器0: *运行输出kafkastream指标的my_streams_app *执行通过: `docker run -d –name my_streams_app -v /var/run/docker.sock:/var/run/docker.sock:ro -v /proc/:/host/proc/:ro -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro -e API_KEY=someapikeyhere -e SD_JMX_ENABLE=yes -p 9998:9998 –network=my_streams_default quay.io/temp/my_streams` jconsole是能够拿起度量emmitted。 docker集装箱1: *在容器中运行datadog-agent * Datadog-agent使用JMX默认(RMI)从上面的容器0中的my_streams_app中获取指标。 *两个容器在相同的主机(我的笔记本电脑的MAC OSX)在同一个networking上运行 *能够从docker容器中的datadog-agent内的netcat到另一个容器中的my_streams_app ip和端口。 使用0.0.0.0和9998,也可以使用特定的IP地址 *命令从容器内运行datadog代理 docker run -v /var/run/docker.sock:/var/run/docker.sock:ro -v /proc/:/host/proc/:ro -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro -e LOG_LEVEL=DEBUG -e SD_BACKEND=docker –network=mystreams_default 4b1488e74733 jmxconfiguration从容器内通过datadog […]

如何在Docker Swarm中为Swarm集群中的特定容器启用JMX?

问题陈述:我需要通过JMX连接到Docker群服务中的特定容器。 服务没有暴露在任何端口上,所以我不能通过直接打开暴露端口上的docker基板来访问JMX。 另外,在服务暴露的情况下,群集负载平衡并不能保证我打哪个容器。

DC / OS JMX访问Java应用程序

我是docker和dc / os的新手。 我在Microsoft Azure中部署了dc / os群集。 我需要通过jmx设置访问我的Java应用程序,但我不能。 我们以部署一个standart tomcat镜像为例。 我的泊坞窗安装在我的本地机器上。 使用jmx访问来运行一个tomcat容器我使用这个命令: docker run -e JAVA_OPTS= "-Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=127.0.0.1 -Dcom.sun.management.jmxremote.port=8081 -Dcom.sun.management.jmxremote.rmi.port=8081 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false" -p 8080:8080 -p 8081:8081 tomcat:8.0 我可以通过端口8081连接到Tomcat。 我尝试在dc / os群集中执行相同的操作。 我使用下面的jsonconfiguration来部署: { "id": "/tomcat", "instances": 1, "cpus": 1, "mem": 512, "container": { "type": "DOCKER", "docker": { "image": "tomcat:8.0", "network": "BRIDGE", "portMappings": [ { […]

使用Docker for Mac与JMX连接

我正在为使用Docker for Mac在Docker容器中运行的Tomcat设置JMX连接而苦苦挣扎。 我想我理解基础知识,并在tomcat / bin目录中有一个setenv.sh,如下所示: CATALINA_OPTS="-Dcom.sun.management.jmxremote=true\ -Dcom.sun.management.jmxremote.local.only=false\ -Dcom.sun.management.jmxremote.authenticate=false\ -Dcom.sun.management.jmxremote.ssl=false\ -Djava.rmi.server.hostname=185.83.15.228\ -Dcom.sun.management.jmxremote.port=9999\ -Dcom.sun.management.jmxremote.rmi.port=9999" 我认为有问题的部分可能是java.rmi.server.hostname属性。 我已经设置这个主机的IP,但我也尝试了其他明显的东西。 我相信这应该是jconsole或jvisualvm将运行的机器的IP,但这不适用于我。 我开始像这样的容器: docker run -d -v /Users/timbo/tomcat-jmx.sh:/usr/local/tomcat/bin/setenv.sh -p 8080:8080 -p 9999:9999 tomcat:8.0 所以端口9999是暴露的。 当我尝试连接使用jvisualvm连接到本地主机:9999(这将为Mac的Docker路由到实际上在172.17.0.2的容器)我得到的错误:无法连接到本地:9999使用服务:jmx:rmi:// / JNDI / RMI://本地主机:9999 / jmxrmi 任何提示什么是错的?

在GCE上的Docker中将VisualVM或JConsole附加到Java

我正在尝试在远程Java-in-Docker进程中获取一些CPU采样。 我已经在这里看到了相关的问题,并尝试了一切,没有用,所以我在这里发布我的设置。 我有一个在Google Compute Engine(GCE)实例的Docker容器中运行的Java进程(openjdk-8)。 GCE实例和容器都运行Debian-9。 我想将VisualVM或JConsole附加到我的Java进程。 我能够在本地运行我的docker容器,并使用localhost:9010连接到visualvm和jconsole。 我使用以下命令启动VM启动脚本中的容器: docker run -d -p 9010:9010 <my container> Dockerfile还有: EXPOSE 9010 由Dockerfile CMD启动的Java进程具有以下相关的参数: "-Dcom.sun.management.jmxremote", \ "-Dcom.sun.management.jmxremote.port=9010", \ "-Dcom.sun.management.jmxremote.rmi.port=9010", \ "-Dcom.sun.management.jmxremote.local.only=false", \ "-Dcom.sun.management.jmxremote.authenticate=false", \ "-Dcom.sun.management.jmxremote.ssl=false", \ 我在我的gcloud防火墙中打开了端口9010,使用: gcloud compute firewall-rules create jmx-port –allow=tcp:9010,udp:9010 我已经validation与netcat的端口是开放的,我可以做一个TCP连接到它。 我从同一个Docker容器中打开了其他端口,客户端成功连接到这些端口。 他们被暴露并以相同的方式映射到主机端口(-p端口:端口),并以相同的方式在防火墙中打开。 我正在传递GCE实例的外部IP地址。 例如,如果我这样做: gcloud compute instances list 它告诉我: NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP […]

如何从Docker容器中运行的进程访问JMX(Java Beans)

当使用Docker运行进程时,为什么很难连接到JMX端口(使用JConsole)。 当然,我已经将JMX端口暴露给主机 ,甚至在运行Java进程时使用了Sun特定的选项 (遵循http://ptmccarthy.github.io/2014/07/24/remote-jmx-with-docker/ )。 我能够telnet到主机IP和公开的JMX端口,这表明它是可访问的。 但我找不出一种方法来使用JConsole并连接到容器中运行的JMX服务。 -Djava.rmi.server.hostname=$JMX_HOSTNAME -Dcom.sun.management.jmxremote.port=$JMX_PORT -Dcom.sun.management.jmxremote.rmi.port=$JMX_PORT

重写JMX在Docker WLS容器中的工作方式

我有一个WebLogic泊坞窗容器。 WLSpipe理端口configuration为7001.当我运行容器时,我使用–hostname = [hosts'hostname]并将7001端口暴露在不同的主机端口上,例如使用-p 8001:7001。 我做端口映射的原因是因为我想要在同一个主机上运行多个WLS容器。 我在这个WebLogic上部署了一些应用程序。 这些应用程序使用外部SDK(我不控制)使用JMX(RuntimeServiceMBean的getURL操作)来获取应用程序URL。 这是错误的地方。 该URL以http:// [容器的IP]:7001forms出现。 我想它检索http:// [主机的主机名]:8001 – 即我用来启动容器的主机名和7001映射的端口,即8001。 有没有办法做到这一点?

使JMX与spotify / kafka Docker镜像一起工作

我试图让JMX使用spotify/kafka Docker镜像。 我有一个docker-compose.yml : version: '2' services: my-kafka: image: spotify/kafka # Using this instead of wurstmeister's because it didn't work with /var/run/docker.sock on Windows while this one has integrated ZK and works hostname: my-kafka restart: unless-stopped ports: – "9092:9092" # Kafka – "2181:2181" # Zookeeper – "7203:7203" # JMX environment: KAFKA_ADVERTISED_HOST_NAME: my-kafka KAFKA_ADVERTISED_PORT: 9092 KAFKA_OPTS: […]

使用JConsole监视Docker中的Java应用程序

我想监视Java应用程序,使用JConsole在Docker容器中运行,但得到一个错误: 连接失败:JRMP连接build立期间出错; 嵌套的exception是java.net.SocketException; 我使用本指南中的下一个docker params(也使用了注释中的diff额外标志,如:Djava.rmi.server.hostname = 10.16.114.98 + –net = host,) docker run -p 8080:8080 -p 9010:9010 –rm -e JAVA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.rmi.port=9010 -Dcom.sun.management.jmxremote.ssl=false" gateway 操作系统:红帽7 这是docker inspect的输出: [ { "Id": "06df0e186f49297e217bab77c9101926bc2333c429d4551a151a64159a82c942", "Created": "2017-08-18T12:52:37.002174333Z", "Path": "/bin/sh", "Args": [ "-c", "echo \"The application will start in ${JHIPSTER_SLEEP}s…\" \u0026\u0026 sleep ${JHIPSTER_SLEEP} \u0026\u0026 java -Djava.security.egd=file:/dev/./urandom -jar /app.war" […]