docker - 使用 Docker 使用 Prometheus 监控 Elassandra
问题描述
我正在尝试按照此指令运行具有特殊配置的 jmx-exporter 容器。
我一步一步地做了所有的说明。这是我的docker-compose
文件和conf/config.yml
.
码头工人撰写:
version: '2'
services:
prometheus:
image: prom/prometheus
container_name: prometheus
volumes:
- /prometheus:/prometheus
- ./conf/prome.yml:/etc/prometheus/prometheus.yml
command:
- --config.file=/etc/prometheus/prometheus.yml
ports:
- '6009:9090'
jmx-exporter:
image: sscaling/jmx-prometheus-exporter
container_name: jmx-exporter
ports:
- 6011:5556
depends_on:
- elassandra
elassandra:
image: strapdata/elassandra
container_name: elassandra
volumes:
- /var/lib/cassandra:/var/lib/cassandra
environment:
- CASSANDRA_LISTEN_ADDRESS=localhost
- CASSANDRA_RPC_ADDRESS=localhost
- CASSANDRA_START_RPC=false
- CASSANDRA_CLUSTER_NAME='DockerTest Cluster'
- CASSANDRA_NUM_TOKENS=8
- CASSANDRA#
- LOCAL_JMX="no"
- Dcassandra.jmx.remote.port="7199"
- Dcom.sun.management.jmxremote.port="7199"
- Dcom.sun.management.jmxremote.rmi.port="7199"
- Dcom.sun.management.jmxremote.authenticate=false
- JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=127.0.0.1"
- JMX_PORT="7199"
- JVM_OPTS="$JVM_OPTS -Dcassandra.jmx.remote.port=5556"
- JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.rmi.port=5556"
- JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=false"
volumes:
prometheus_data: {}
elassandra_data: {}
conf/config.yml
startDelaySeconds: 0
hostPort: elassandra:7199
#username:
#password:
#jmxUrl: service:jmx:rmi:///jndi/rmi://127.0.0.1:60/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"
type: GAUGE
attrNameSnakeCase: false
每当我跑步时docker-compose -f docker-compose.yml up
,我都会面对以下页面localhost:6011
:
问题是我不知道如何使用 jmx-exporter 监控 elassandra 及其指标,我主要获取 java 指标!
解决方案
在您正在使用的 config.yml 中,hostPort: localhost:5556
但您应该尝试连接到主机elassandra
(您的 docker-compose.yml 文件中的 docker 容器的名称)。
确保正确配置 Elassandra 以允许远程 JMX 连接。请参阅如何在 Elassandra 中启用远程 JMX 连接?有关如何设置的详细信息。
推荐阅读
- javascript - 如何使用 Javascript 拆分数组中的多个字符串?
- c++ - InterfaceSupportsErrorInfo:我如何知道接口 ID?
- bash - 基于单个字段列出整行比 grep 快得多
- android - 房间数据库插入的 OnSuccessListner
- php - 未定义的属性:Illuminate\Database\MySqlConnection - 查询包含参数,但是我收到此错误。怎么了
- javascript - 输入字段失去了对复杂 Formik 表单中每个值变化的关注
- python - 带有加权平均趋势线的 Python 2d 比率图
- c++ - 在 linux 上为 windows 构建 gcc 插件
- python - 报告变量未定义
- css - 当 @include 一个 mixin 时,它引用了一个之前传递的变量