首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Kafka出口商添加到Grafana中作为数据源?

如何将Kafka出口商添加到Grafana中作为数据源?
EN

Stack Overflow用户
提问于 2022-01-05 01:40:51
回答 2查看 1.9K关注 0票数 1

我正在尝试一个简单的例子,用Grafana来使用Kafka和卡夫卡出口商。我有一个类似于以下内容的docker-compose.yml

代码语言:javascript
复制
version: '2'

networks:
  app-tier:
    driver: bridge

services:
  zookeeper:
    image: 'bitnami/zookeeper:latest'
    environment:
      - 'ALLOW_ANONYMOUS_LOGIN=yes'
    networks:
      - app-tier
  kafka:
    image: 'bitnami/kafka:latest'
    environment:
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
      - ALLOW_PLAINTEXT_LISTENER=yes
    networks:
      - app-tier
  kafka-exporter:
    build: kafka-exporter
    ports:
      - "9308:9308"
    networks:
      - app-tier
    entrypoint: ["run.sh"]
  grafana:
    image: grafana/grafana
    ports:
      - "3000:3000"
    networks:
      - app-tier

其中,run.sh是一个包装脚本,用于在Kafka启动时继续重新尝试运行出口商,请参见https://github.com/khpeek/kafka-exporter-example。问题是,当我登录Grafana并尝试使用URL http://kafka-exporter:9308/metrics添加Prometheus数据源时,我会得到一个错误:

代码语言:javascript
复制
Error reading Prometheus: bad_response: readObjectStart: expect { or n, but found <, error found in #1 byte of ...|<html> |..., bigger context ...|<html> <head><title>Kafka Exporter</title>|...

下面是它在UI中的外观:

Grafana似乎忽略了/metrics路径,并试图直接从http://kafka-exporter:9308中抓取数据,这看起来确实像错误消息描述的那样:

相反,/metrics端点包含实际的度量:

代码语言:javascript
复制
> curl localhost:9308/metrics
# HELP go_gc_duration_seconds A summary of the pause duration of garbage collection cycles.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 0
go_gc_duration_seconds{quantile="0.25"} 0
go_gc_duration_seconds{quantile="0.5"} 0
go_gc_duration_seconds{quantile="0.75"} 0
go_gc_duration_seconds{quantile="1"} 0
go_gc_duration_seconds_sum 0
go_gc_duration_seconds_count 0
# HELP go_goroutines Number of goroutines that currently exist.
# TYPE go_goroutines gauge
go_goroutines 20
...

我为什么要犯这个错误?Grafana不应该走这条路吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-05 07:14:15

不能将Grafana Prometheus数据源直接连接到出口商。您需要设置一个Prometheus服务器,从该服务器中刮取kafka导出度量,并最终将Grafana连接到Prometheus服务器。

票数 2
EN

Stack Overflow用户

发布于 2022-01-05 21:36:50

为了显示@usuario的答案的实现,docker-compose.yml需要一个Prometheus服务,

代码语言:javascript
复制
version: '2'

networks:
  app-tier:
    driver: bridge

services:
  zookeeper:
    image: 'bitnami/zookeeper:latest'
    environment:
      - 'ALLOW_ANONYMOUS_LOGIN=yes'
    networks:
      - app-tier
  kafka:
    image: 'bitnami/kafka:latest'
    environment:
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
      - ALLOW_PLAINTEXT_LISTENER=yes
    networks:
      - app-tier
  kafka-exporter:
    build: kafka-exporter
    ports:
      - "9308:9308"
    networks:
      - app-tier
    entrypoint: ["run.sh"]
  cli:
    image: 'bitnami/kafka:latest'
    environment:
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
      - ALLOW_PLAINTEXT_LISTENER=yes
    networks:
      - app-tier
  prometheus:
    image: bitnami/prometheus:latest
    ports:
      - "9090:9090"
    volumes:
      - "./prometheus/prometheus.yml:/opt/bitnami/prometheus/conf/prometheus.yml"
    networks:
      - app-tier
  grafana:
    image: grafana/grafana
    ports:
      - "3000:3000"
    networks:
      - app-tier

其中,prometheus/prometheus.yml配置文件被静态地配置为刮取Kafka导出程序:

代码语言:javascript
复制
global:
  scrape_interval: 10s
  scrape_timeout: 10s
  evaluation_interval: 1m

scrape_configs:
  - job_name: kafka-exporter
    metrics_path: /metrics
    honor_labels: false
    honor_timestamps: true
    sample_limit: 0
    static_configs:
      - targets: ['kafka-exporter:9308']

现在可以添加Prometheus数据源,可以查看卡夫卡出口商(如kafka_consumergroup_lag )的指标:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70586927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档