【问题标题】:Monitoring Elassandra with Prometheus using Docker使用 Docker 使用 Prometheus 监控 Elassandra
【发布时间】:2019-10-23 16:49:49
【问题描述】:

我正在尝试使用 this instruction 之后的特殊配置运行 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 指标!

【问题讨论】:

    标签: docker docker-compose prometheus elassandra


    【解决方案1】:

    在您的 config.yml 中,您使用的是 hostPort: localhost:5556,但您应该尝试连接到主机 elassandra(您的 docker-compose.yml 文件中的 docker 容器的名称)。

    确保正确配置 Elassandra 以允许远程 JMX 连接。有关如何设置的详细信息,请参阅How to enable remote JMX connections in Elassandra?

    【讨论】:

    • 嗨奥利弗,我已经更新了帖子并应用了你提到的更改。不幸的是,它仍然不能正常工作。您能给我们更多提示吗?
    • jmx_exporter 日志中有任何错误吗?我看到您编辑了您的问题以包含要公开的 ENV 变量,但它们似乎不正确,例如JVM_OPTS 没有在你的 docker-compose 文件中正确设置,Djava.rmi.server.hostname 似乎也错了。
    • 我已经按照你说的改了。但它仍然没有显示指标。我不知道如何解决它。我在帖子中添加了一张照片,刚刚更新了配置。
    • 您的 JVM_OPTS 变量仍然错误(或者您没有更新您的 docker-compose 文件),请再查看答案中链接的链接 SO 页面。
    • 我已将它们放在我的 docker-compose 文件中,但它仍然有一些错误,例如 elassandra | Error: Could not find or load main class " 并在这篇文章中更新了我的 docker-compose。由于我是 Elassandra 的新手,请您给我更详细的解决方案吗?
    猜你喜欢
    • 1970-01-01
    • 2016-05-29
    • 1970-01-01
    • 2022-11-04
    • 2021-08-18
    • 2018-05-22
    • 1970-01-01
    • 2020-09-08
    • 2020-05-27
    相关资源
    最近更新 更多