
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
JMX Exporter是一个JMX到Prometheus的导出器,能够可配置地抓取和暴露JMX目标的mBeans。该导出器旨在作为Java Agent运行,暴露HTTP服务器并提供本地JVM的指标。也可作为独立HTTP服务器运行并抓取远程JMX目标,但存在配置复杂、无法暴露进程指标(如内存和CPU使用率)等缺点,因此强烈建议以Java Agent方式运行。
适用于需要将Java应用的JMX指标集成到Prometheus监控系统的场景,包括:
下载JMX Exporter JAR文件:https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.15.0/jmx_prometheus_javaagent-0.15.0.jar
运行Java应用时添加Java Agent参数:
bashjava -javaagent:./jmx_prometheus_javaagent-0.15.0.jar=8080:config.yaml -jar yourJar.jar
8080: 暴露指标的HTTP端口config.yaml: 配置文件路径访问指标:指标将在 http://localhost:8080/metrics 可用
绑定到特定IP:将端口号改为 host:port,例如 192.168.1.100:8080:config.yaml
参考示例脚本 ./run_sample_httpserver.sh,该脚本演示如何针对自身运行HTTP服务器。
注意:由于JMX特性,
/metrics端点可能超过Prometheus默认的10秒抓取超时时间。
使用Maven构建:
bashmvn package
配置文件采用YAML格式,以下是包含所有可能选项的示例:
yaml--- startDelaySeconds: 0 hostPort: 127.0.0.1:1234 username: password: jmxUrl: service:jmx:rmi:///jndi/rmi://127.0.0.1:1234/jmxrmi ssl: false lowercaseOutputName: false lowercaseOutputLabelNames: false whitelistObjectNames: ["org.apache.cassandra.metrics:*"] blacklistObjectNames: ["org.apache.cassandra.metrics:type=ColumnFamily,*"] rules: - pattern: 'org.apache.cassandra.metrics<type=(\w+), name=(\w+)><>Value: (\d+)' name: cassandra_$1_$2 value: $3 valueFactor: 0.001 labels: {} help: "Cassandra metric $1 $2" cache: false type: GAUGE attrNameSnakeCase: false
| 参数名称 | 描述 |
|---|---|
| startDelaySeconds | 开始处理请求前的延迟时间(秒)。延迟期间的请求将返回空指标集。 |
| hostPort | 通过远程JMX连接的主机和端口。若未指定此参数和jmxUrl,将连接本地JVM。 |
| username | 远程JMX密码认证的用户名。 |
| password | 远程JMX密码认证的密码。 |
| jmxUrl | 完整的JMX连接URL。若指定hostPort,则不应设置此参数。 |
| ssl | 是否通过SSL连接JMX。配置证书需设置系统属性:-Djavax.net.ssl.keyStore=/home/user/.keystore-Djavax.net.ssl.keyStorePassword=changeit-Djavax.net.ssl.trustStore=/home/user/.truststore-Djavax.net.ssl.trustStorePassword=changeit |
| lowercaseOutputName | 是否将输出指标名称转为小写。适用于默认格式和name。默认为false。 |
| lowercaseOutputLabelNames | 是否将输出标签名称转为小写。适用于默认格式和labels。默认为false。 |
| whitelistObjectNames | 要查询的http://docs.oracle.com/javase/6/docs/api/javax/management/ObjectName.html%E5%88%97%E8%A1%A8%E3%80%82%E9%BB%98%E8%AE%A4%E4%B8%BA%E6%89%80%E6%9C%89mBeans%E3%80%82 |
| blacklistObjectNames | 不查询的http://docs.oracle.com/javase/6/docs/api/javax/management/ObjectName.html%E5%88%97%E8%A1%A8%E3%80%82%E4%BC%98%E5%85%88%E7%BA%A7%E9%AB%98%E4%BA%8EwhitelistObjectNames%E3%80%82%E9%BB%98%E8%AE%A4%E4%B8%BA%E7%A9%BA%E3%80%82 |
| rules | 按顺序应用的规则列表,匹配第一个规则后停止处理。未匹配的属性不会被收集。若未指定,默认收集所有内容并使用默认格式。 |
规则(rules)参数说明
| 参数名称 | 描述 |
|---|---|
| pattern | 匹配每个bean属性的正则模式。模式未锚定。捕获组可用于其他选项。默认为匹配所有内容。 |
| attrNameSnakeCase | 将属性名称转换为蛇形命名(如anAttrName转为an_attr_name)。影响模式匹配的名称和默认格式。默认为false。 |
| name | 指标名称。可使用pattern的捕获组。若未指定,使用默认格式。若计算为空,停止处理此属性。 |
| value | 指标值。可使用静态值或pattern的捕获组。若未指定,使用抓取的mBean值。 |
| valueFactor | 可选数值,将value(或未指定value时的mBean值)乘以该因子,主要用于单位转换(如毫秒转秒)。 |
| labels | 标签名到标签值的映射。可使用pattern的捕获组。必须设置name才能使用。忽略空名称和值。若未指定且不使用默认格式,则无标签。 |
| help | 指标帮助文本。可使用pattern的捕获组。必须设置name才能使用。默认为mBean属性描述和完整属性名。 |
| cache | 是否缓存bean名称表达式到规则计算(匹配和不匹配)。不建议用于匹配bean值的规则,因为仅缓存首次抓取的值。收集大量mbeans时可提升性能。默认为false。 |
| type | 指标类型,可为GAUGE、COUNTER或UNTYPED。必须设置name才能使用。默认为UNTYPED。 |
指标名称和标签名称会被 sanitize:除[a-zA-Z0-9:_]外的所有字符替换为下划线,相邻下划线会被合并。标签值和帮助文本无限制。
最小配置为{}, 将连接本地JVM并以默认格式收集所有指标。注意:即使未导出,抓取器始终处理所有mBeans。
模式匹配的输入格式为:
domain<beanpropertyName1=beanPropertyValue1, beanpropertyName2=beanPropertyValue2, ...><key1, key2, ...>attrName: value
| 部分 | 描述 |
|---|---|
| domain | Bean名称,即JMX对象名中冒号前的部分。 |
| beanPropertyName/Value | Bean属性,即JMX对象名中冒号后的键值对。 |
| keyN | 若遇到复合或表格数据,属性名将添加到此列表。 |
| attrName | 属性名。对于表格数据,为列名。若设置attrNameSnakeCase,将转为蛇形命名。 |
| value | 属性值。 |
除attrNameSnakeCase的转换外,这些值不会被转义或修改。默认帮助信息包含此字符串(除value外)。
默认格式会将beans转换为合理的指标,格式为:
domain_beanPropertyValue1_key1_key2_...keyN_attrName{beanpropertyName2="beanPropertyValue2", ...}: value
若某部分未设置,则会被排除。
使用Maven运行测试:
bashmvn test
可在独立模式启动JMX抓取器以调试调用:
bashgit clone https://github.com/prometheus/jmx_exporter.git cd jmx_exporter mvn package java -cp collector/target/collector*.jar io.prometheus.jmx.JmxScraper service:jmx:rmi:your_url
创建logging.properties文件,内容如下:
handlers=java.util.logging.ConsoleHandler java.util.logging.ConsoleHandler.level=ALL io.prometheus.jmx.level=ALL io.prometheus.jmx.shaded.io.prometheus.jmx.level=ALL
Java启动时添加以下参数:
bash-Djava.util.logging.config.file=/path/to/logging.properties
构建过程中会创建Debian二进制包,可用于将可执行文件安装到/usr/bin/jmx_exporter,配置文件位于/etc/jmx_exporter/jmx_exporter.yaml。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务
以下是 xzxwl/jmx-exporter 相关的常用 Docker 镜像,适用于 不同场景 等不同场景: