我正在尝试一个简单的例子,用Grafana来使用Kafka和卡夫卡出口商。我有一个类似于以下内容的docker-compose.yml:
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数据源时,我会得到一个错误:
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端点包含实际的度量:
> 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不应该走这条路吗?
发布于 2022-01-05 07:14:15
不能将Grafana Prometheus数据源直接连接到出口商。您需要设置一个Prometheus服务器,从该服务器中刮取kafka导出度量,并最终将Grafana连接到Prometheus服务器。
发布于 2022-01-05 21:36:50
为了显示@usuario的答案的实现,docker-compose.yml需要一个Prometheus服务,
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导出程序:
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 )的指标:

https://stackoverflow.com/questions/70586927
复制相似问题