jmxtrans docker-compose 运行
以下是一个简单的demo,使用jmxtrans 进行jmx 指标的处理,项目使用docker-compose 运行
同时写入数据到graphite
环境准备
- docker-compose文件
version: "3"
services:
graphite:
image: graphiteapp/graphite-statsd
ports:
- "80:80"
- "2003-2004:2003-2004"
- "2023-2024:2023-2024"
- "8125:8125/udp"
- "8126:8126"
jmxtrans:
build:
context: ./
dockerfile: Dockerfile-jmxtrans
app:
build: ./
image: dalongrong/java-jmx-openjdk
container_name: app
ports:
- "8080:8080"
- "30384:30384"
- dockerfile 说明
包含了一个spring boot 的项目app
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:
#!/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 \
-Dcom.sun.management.jmxremote.host=app \
-Djava.rmi.server.hostname=app \
-jar /webapi-0.0.1-SNAPSHOT.jar
jmxtrans Dockerfile-jmxtrans
#!/bin/sh
java -jar /jmxtrans-270-all.jar -f /jmxtrans.json
jmxtrans 配置json 文件jmxtrans.json
{
"servers": [{
"port": "30384",
"host": "app",
"numQueryThreads" : 4,
"queries": [
{
"obj": "Tomcat:type=ThreadPool,name=\"http-nio-8080\"",
"resultAlias":"http-nio-8080",
"attr": ["acceptCount","currentThreadsBusy","currentThreadCount"],
"outputWriters": [{
"@class": "com.googlecode.jmxtrans.model.output.GraphiteWriterFactory",
"port": 2003,
"host": "graphite",
"rootPrefix":"webapi",
"typeNames" : ["name"],
"flushStrategy" :"always",
"poolSize" : 10
}]
},
{
"obj": "java.lang:type=Memory",
"resultAlias":"Memory",
"attr" : [ "HeapMemoryUsage", "NonHeapMemoryUsage" ],
"outputWriters": [{
"@class": "com.googlecode.jmxtrans.model.output.GraphiteWriterFactory",
"port": 2003,
"host": "graphite",
"rootPrefix":"webapi",
"typeNames" : ["name"],
"flushStrategy" :"always",
"poolSize" : 10
}]
}
,
{
"obj": "java.lang:type=ClassLoading",
"resultAlias":"ClassLoading",
"attr": ["TotalLoadedClassCount","LoadedClassCount","UnloadedClassCount"],
"outputWriters": [{
"@class": "com.googlecode.jmxtrans.model.output.GraphiteWriterFactory",
"port": 2003,
"rootPrefix":"webapi",
"typeNames" : ["name"],
"flushStrategy" :"always",
"poolSize" : 10,
"host": "graphite"
}]
}
]
}]
}
配置说明
- jmx 服务app
主要是通过运行的时候启动jmx 配置,具体可以参考docker-entrypiont.sh - jmxtrans
通过docker 运行,主要是配置文件jmxtrans.json 添加了几个查询,同时通过GraphiteWriter
写入数据到Graphite
几个参数的说明,如果看了官方的wiki 以及代码就会发现,有几个参数是必须写的,但是wiki 不是很清楚
主要是rootPrefix,flushStrategy,typeNames
启动&&测试
- 启动
docker-compose up -d
- 效果

说明
以上是一个简单的docker-compose 运行,实际上我们可以进行扩展,添加更多的jmx 指标,对于kuberntes 的运行方式,可以参考类似的方式,只是
我们可以使用localhost 在pod 中运行多个容器的方式解决,还是比较方便的
参考资料
https://github.com/jmxtrans/jmxtrans/wiki/GraphiteWriter
https://github.com/jmxtrans/jmxtrans/wiki/Queries
https://github.com/rongfengliang/openjdk-docker-jmx/tree/jmxtrans
https://github.com/rongfengliang/jmxtrans-docker-compose
jmxtrans docker-compose 运行的更多相关文章
- dotnet跨平台 - 使用Nginx+Docker Compose运行.NETCore项目
参考文档: https://docs.docker.com/install/linux/docker-ce/centos/ http://www.dockerinfo.net/document htt ...
- .NET遇上Docker - 使用Docker Compose组织Ngnix和.NETCore运行
本文工具准备: Docker for Windows Visual Studio 2015 与 Visual Studio Tools for Docker 或 Visual Studio 2017 ...
- Docker:Docker Compose 详解
Docker Compose 概述与安装? 前面我们使用 Docker 的时候,定义 Dockerfile 文件,然后使用 docker build.docker run 等命令操作容器.然而微服务架 ...
- 使用 pycharm调试docker环境运行的Odoo
2019日 星期一 安装docker windows系统,参考 docker官方文档 Mac系统,参考 docker官方文档 构建自定义ODOO镜像 标准ODOO镜像可能不包含特别的python模块, ...
- [phvia/dkc] Docker Compose 快速构建(LNMP+Node)运行环境
快速构建(LNMP+Node)运行环境. dkc 在此作为 docker-compose 的缩写,你可以理解为 alias dkc=docker-compose 准备 安装 docker 选择1) 从 ...
- ASP.NET Core 如何在运行Docker容器时指定容器外部端口(docker compose)
前面我写了一系列关于持续集成的文章,最终构建出来的镜像运行之后,应该会发现每次构建运行之后端口都变了,这对于我们来说是十分不方便的,所以我们可以通过修改docker compose的配置文件来完成我们 ...
- 利用 Docker Compose 搭建 SpringBoot 运行环境(超详细步骤和分析)
0.前言 相信点进来看这篇文章的同学们已经对 Docker Dompose 有一定的了解了,下面,我们拿最简单的例子来介绍如何使用 Docker Compose 来管理项目. 本文例子: 一个应用服务 ...
- [Docker6] Docker compose多容器运行与管理
六.Docker compose docker compose就是通过yml文件来定义和运行多个容器docker应用程序的工具,三步过程就能跑起一个compose: 定义应用程序的环境(yml中) 定 ...
- Docker compose学习笔记
一.compose compose 作用 你的应用可能需要很多个服务,比如web服务,数据库服务,缓存服务等等.我们可以把这些服务放到单独的容器里面,如果手工去配置这些服务会有些麻烦,docker c ...
- Docker Compose—简化复杂容器应用的利器
Compose是用于定义和运行复杂Docker应用的工具.你可以在一个文件中定义一个多容器的应用,然后使用一条命令来启动你的应用,然后所有相关的操作都会被自动完成. 1. 安装Docker和Compo ...
随机推荐
- 学java必须知道的那些queue
队列是我们学java必须接触到的知识,很多内容都和它相关,但是你真的了解它们的概念和使用方法吗?在本文,你可以获取关于queue的一切信息,希望我能够帮助你在java的学习道路上乘风破浪. 概念 队列 ...
- Partition5:Partiton Scheme是否指定Next Used?
在SQL Server中,为Partition Scheme多次指定Next Used,不会出错,最后一次指定的FileGroup是Partition Scheme的Next Used,建议,在执行P ...
- HTML5 极简的JS函数
页面初始化 mui框架将很多功能配置都集中在mui.init方法中,要使用某项功能,只需要在mui.init方法中完成对应参数配置即可,目前支持在mui.init方法中配置的功能包括:创建子页面.关闭 ...
- Net实现钩子函数(Hook)以及通过SendMessage实现自动点击按钮和给文本框赋值
1.实现钩子函数 钩子(Hook)的实现需要三个主要的函数和一个委托 [DllImport("user32.dll", CharSet = CharSet.Auto, Callin ...
- C#类型成员:方法
一.方法 方法的基本结构:返回值 方法名(参数){ 内容 },其中无返回值时用void,有返回值时用返回值类型,参数可以是零到无限个,参数由参数类型和参数名组成. void Method1() { } ...
- JavaWeb 之 MVC 开发模式
MVC 开发模式 一.JSP 演变历史 1. 早期只有servlet,只能使用response输出标签数据,非常麻烦 2. 后来又jsp,简化了Servlet的开发,如果过度使用jsp,在jsp中即写 ...
- 查找单链表中倒数第k个结点
本文转自:程序员面试题6--查找链表中倒数第k个结点 题目:输入一个单向链表,输出该链表中倒数第k个结点.链表的倒数第0个结点为链表的尾指针.链表结点定义如下: struct ListNode { i ...
- java-ExceptionHandler全局异常处理
springmvc配置文件: <!-- 定义全局异常处理,只有一个全局异常处理器起作用 --> <bean id="exceptionResolver" clas ...
- 修改Nodejs内置的npm默认配置路径方法
Nodejs 内置的npm默认会把模块安装在c盘的用户AppData目录下(吐槽一下:不明白为啥现在的软件都喜欢把资源装在这里) C盘这么小,肯定是不行的,下面一步步修改到D盘 1.打开cmd命令行, ...
- 二十六、聊聊mysql如何实现分布式锁
分布式锁的功能 分布式锁使用者位于不同的机器中,锁获取成功之后,才可以对共享资源进行操作 锁具有重入的功能:即一个使用者可以多次获取某个锁 获取锁有超时的功能:即在指定的时间内去尝试获取锁,超过了超时 ...