docker-compose部署kafka集群;单节点单zk-CSDN博客
springboot整合kafka;docker部署kafka-CSDN博客
kafka使用SSL加密和认证--todo_ssl.truststore.location-CSDN博客
version: '3.8'services:zookeeper1:image: zookeeper:3.9.1container_name: zookeeper1-clusterhostname: zookeeper-clusterports:- "2185:2181"environment:ZOOKEEPER_CLIENT_PORT: 2181ZOOKEEPER_TICK_TIME: 2000ZOOKEEPER_INIT_LIMIT: 10ZOOKEEPER_SYNC_LIMIT: 5volumes:- ./zookeeper-data:/data- ./zookeeper-datalog:/datalognetworks:- kafka-cluster-networkkafka1:image: bitnami/kafka:3.8container_name: kafka1-clusterdepends_on:- zookeeper1ports:- "9099:9092" # Kafka 客户端连接端口- "9101:9101" # Prometheus 抓取指标的端口environment:KAFKA_BROKER_ID: 1KAFKA_ZOOKEEPER_CONNECT: zookeeper-cluster:2181KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.118.20:9099KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092KAFKA_CFG_MESSAGE_MAX_BYTES: 2097152KAFKA_CFG_REPLICA_FETCH_MAX_BYTES: 3145728KAFKA_CFG_FETCH_MAX_BYTES: 5242880KAFKA_OPTS: "-javaagent:/opt/jmx_exporter/jmx_prometheus_javaagent-0.20.0.jar=9101:/opt/jmx_exporter/kafka-jmx-exporter-config.yaml"volumes:- ./kafka1-data:/bitnami/kafka- ./jmx_prometheus_javaagent-0.20.0.jar:/opt/jmx_exporter/jmx_prometheus_javaagent-0.20.0.jar- ./kafka-jmx-exporter-config.yaml:/opt/jmx_exporter/kafka-jmx-exporter-config.yamlnetworks:- kafka-cluster-networkkafka2:image: bitnami/kafka:3.8container_name: kafka2-clusterdepends_on:- zookeeper1ports:- "9096:9092" # Kafka 客户端连接端口- "9102:9102" # Prometheus 抓取指标的端口environment:KAFKA_BROKER_ID: 2KAFKA_ZOOKEEPER_CONNECT: zookeeper-cluster:2181KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.118.20:9096KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092KAFKA_CFG_MESSAGE_MAX_BYTES: 2097152KAFKA_CFG_REPLICA_FETCH_MAX_BYTES: 3145728KAFKA_CFG_FETCH_MAX_BYTES: 5242880KAFKA_OPTS: "-javaagent:/opt/jmx_exporter/jmx_prometheus_javaagent-0.20.0.jar=9102:/opt/jmx_exporter/kafka-jmx-exporter-config.yaml"volumes:- ./kafka2-data:/bitnami/kafka- ./jmx_prometheus_javaagent-0.20.0.jar:/opt/jmx_exporter/jmx_prometheus_javaagent-0.20.0.jar- ./kafka-jmx-exporter-config.yaml:/opt/jmx_exporter/kafka-jmx-exporter-config.yamlnetworks:- kafka-cluster-networkkafka3:image: bitnami/kafka:3.8container_name: kafka3-clusterdepends_on:- zookeeper1ports:- "9097:9092" # Kafka 客户端连接端口- "9103:9103" # Prometheus 抓取指标的端口environment:KAFKA_BROKER_ID: 3KAFKA_ZOOKEEPER_CONNECT: zookeeper-cluster:2181KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.118.20:9097KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092KAFKA_CFG_MESSAGE_MAX_BYTES: 2097152KAFKA_CFG_REPLICA_FETCH_MAX_BYTES: 3145728KAFKA_CFG_FETCH_MAX_BYTES: 5242880KAFKA_OPTS: "-javaagent:/opt/jmx_exporter/jmx_prometheus_javaagent-0.20.0.jar=9103:/opt/jmx_exporter/kafka-jmx-exporter-config.yaml"volumes:- ./kafka3-data:/bitnami/kafka- ./jmx_prometheus_javaagent-0.20.0.jar:/opt/jmx_exporter/jmx_prometheus_javaagent-0.20.0.jar- ./kafka-jmx-exporter-config.yaml:/opt/jmx_exporter/kafka-jmx-exporter-config.yamlnetworks:- kafka-cluster-networkkafka-ui:image: provectuslabs/kafka-ui:v0.7.2container_name: kafka-ui-clusterhostname: kafka-ui-clusterports:- "9098:8080"depends_on:- kafka1- kafka2- kafka3environment:KAFKA_CLUSTERS_0_NAME: kafka-clusterKAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: 192.168.118.20:9096,192.168.118.20:9097,192.168.118.20:9099KAFKA_CLUSTERS_0_ZOOKEEPER: zookeeper-cluster:2181networks:- kafka-cluster-networknetworks:kafka-cluster-network:driver: bridge
下载
jmx_prometheus_javaagent-0.20.0.jar
Central Repository: io/prometheus/jmx/jmx_prometheus_javaagent/0.20.0/
或者https://github.com/prometheus/jmx_exporter/releases/tag/0.20.0
下载 https://github.com/prometheus/jmx_exporter/tree/main/exampleskafka-jmx-exporter-config.yaml
https://github.com/prometheus/jmx_exporter/tree/main/examples
1、在启动kafka时配置代理
2、同时文件也挂载进去
KAFKA_OPTS: "-javaagent:/opt/jmx_exporter/jmx_prometheus_javaagent-0.20.0.jar=9102:/opt/jmx_exporter/kafka-jmx-exporter-config.yaml"
volumes:- ./kafka2-data:/bitnami/kafka- ./jmx_prometheus_javaagent-0.20.0.jar:/opt/jmx_exporter/jmx_prometheus_javaagent-0.20.0.jar- ./kafka-jmx-exporter-config.yaml:/opt/jmx_exporter/kafka-jmx-exporter-config.yaml
- "9103:9103" # Prometheus 抓取指标的端口
启动服务后 检查一下 是否配置成功
http://192.168.118.20:9101/metrics
部署prometheus 和 grafana
version: '3.8'services:prometheus:image: bitnami/prometheus:3.0.0container_name: prometheushostname: prometheusports:- "9090:9090" # Prometheus Web UI 端口volumes:- ./prometheus.yml:/etc/prometheus/prometheus.yml- ./prometheus-data:/prometheuscommand:- '--config.file=/etc/prometheus/prometheus.yml'- '--web.enable-lifecycle'- '--storage.tsdb.retention.time=90d'- "--storage.tsdb.path=/prometheus"- "--web.enable-admin-api"restart: alwaysgrafana:image: grafana/grafana:11.3.3container_name: grafanahostname: grafanaports:- "3000:3000" # Grafana Web UI 端口environment:GF_SECURITY_ADMIN_PASSWORD: admin # 设置 Grafana 的管理员密码volumes:- ./grafana-storage:/var/lib/grafanarestart: always
prometheus.yml 如下配置global:scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.# scrape_timeout is set to the global default (10s).# Alertmanager configuration alerting:alertmanagers:- static_configs:- targets:# - alertmanager:9093# Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_files:# - "first_rules.yml"# - "second_rules.yml"# A scrape configuration containing exactly one endpoint to scrape: # Here it's Prometheus itself. scrape_configs:- job_name: 'kafka'static_configs:- targets:- '192.168.118.20:9101' # 对应 kafka1 的 JMX Exporter 端口- '192.168.118.20:9102' # 对应 kafka2 的 JMX Exporter 端口- '192.168.118.20:9103' # 对应 kafka3 的 JMX Exporter 端口- job_name: "node"static_configs:- targets: ["localhost:9100"]
grafana: 用户名和密码 都是 admin admin
http://192.168.xxx.xxx:3000/
https://grafana.com/grafana/dashboards/11962-kafka-metrics/
https://grafana.com/grafana/dashboards/11962-kafka-metrics/
https://grafana.com/grafana/dashboards/10973-kafka-dashboard333/
Kafka Dashboard | Grafana Labs
该模版需要更新yaml