前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >构建kafka-eagle docker镜像

构建kafka-eagle docker镜像

作者头像
johnhuster的分享
发布2022-03-28 21:19:56
9230
发布2022-03-28 21:19:56
举报
文章被收录于专栏:johnhuster

kafka-eagle是一款不错的kafka监控平台,笔者觉得比kafka-manager可用性要好些,官网地址为www.kafka-eagle.org,下面给出几个使用页面:

官网仅给出了非docker部署方式,但是docker部署已经成为了一种趋势,且能让kafka集群不对外暴露端口的前提下完成对kafka的监控,下面给出kafka-eagle构建流程:

1、下载需要版本的kafka-eagle,笔者使用的是2.0.3版本,对应文件为kafka-eagle-web-2.0.3-bin.tar.gz

2、编写Dockerfile,给出笔者使用的Dockerfile,Dockerfile与kafka-eagle-web-2.0.3-bin.tar.gz在同一目录

代码语言:javascript
复制
from openjdk:8u282-slim

ENV KE_HOME=/opt/kafka-eagle
ENV EAGLE_VERSION=2.0.3

#ADD system-config.properties /tmp

COPY kafka-eagle-web-${EAGLE_VERSION}-bin.tar.gz  /tmp

RUN mkdir -p /opt/kafka-eagle/conf

RUN tar zxvf /tmp/kafka-eagle-web-${EAGLE_VERSION}-bin.tar.gz -C /opt/kafka-eagle --strip-components 1 && \
    chmod +x /opt/kafka-eagle/bin/ke.sh && \
    mkdir -p /hadoop/kafka-eagle/db

EXPOSE 8048 8080

COPY system-config.properties /opt/kafka-eagle/conf/system-config.properties
COPY entrypoint.sh /opt/kafka-eagle/bin/entrypoint.sh

RUN chmod +x /opt/kafka-eagle/bin/entrypoint.sh

WORKDIR /opt/kafka-eagle

CMD ["sh", "/opt/kafka-eagle/bin/entrypoint.sh"]

3、编写entrypoint.sh文件,参考如下:

代码语言:javascript
复制
#!/bin/bash

# 实现通过KAFKA_EAGLE_XX前缀来替代system-config.properties对应配置的功能
echo "" >> "$KE_HOME/conf/system-config.properties"

(
    function updateConfig() {
        key=$1
        value=$2
        file=$3

        # Omit $value here, in case there is sensitive information
        echo "[Configuring] '$key' in '$file'"

        # If config exists in file, replace it. Otherwise, append to file.
        if grep -E -q "^#?$key=" "$file"; then
            sed -r -i "s@^#?$key=.*@$key=$value@g" "$file" #note that no config values may contain an '@' char
        else
            echo "$key=$value" >> "$file"
        fi
    }

    # Fixes #312
    # KAFKA_VERSION + KAFKA_HOME + grep -rohe KAFKA[A-Z0-0_]* /opt/kafka/bin | sort | uniq | tr '\n' '|'
    EXCLUSIONS="|KAFKA_VERSION|KAFKA_HOME|KAFKA_DEBUG|KAFKA_GC_LOG_OPTS|KAFKA_HEAP_OPTS|KAFKA_JMX_OPTS|KAFKA_JVM_PERFORMANCE_OPTS|KAFKA_LOG|KAFKA_OPTS|"

    # Read in env as a new-line separated array. This handles the case of env variables have spaces and/or carriage returns. See #313
    IFS=$'\n'
    for VAR in $(env)
    do
        env_var=$(echo "$VAR" | cut -d= -f1)
        if [[ "$EXCLUSIONS" = *"|$env_var|"* ]]; then
            echo "Excluding $env_var from broker config"
            continue
        fi
		
        if [[ $env_var =~ ^KAFKA_EAGLE ]]; then
            kafka_name=$(echo "$env_var" | cut -d_ -f3- | tr '[:upper:]' '[:lower:]' | tr _ .)
            updateConfig "$kafka_name" "${!env_var}" "$KAFKA_HOME/config/server.properties"
        fi
    done
)

/opt/kafka-eagle/bin/ke.sh start
tail -f /dev/null

4、启动kafka-eagle以及mysql服务,参考如下:

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

networks:
  cluster_default:
    external: true

services:
  kafka-eagle:
    restart: always
    image: repos.jtl3d.com/kafka-eagle:1.0.0
    deploy:
      placement:
        constraints:                      # 添加条件约束
          - node.labels.server==tb
    networks:
      - cluster_default
    ports:
      - "8148:8048"
    environment:
      KAFKA_EAGLE_CLUSTER1_ZK_LIST: zk1:2181,zk2:2181,zk3:2181
      KAFKA_EAGLE_KAFKA_EAGLE_URL: jdbc:mysql://mysql:3306/ke?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
      KAFKA_EAGLE_KAFKA_EAGLE_USERNAME: root
      KAFKA_EAGLE_KAFKA_EAGLE_PASSWORD: 123456
      TZ: Asia/Shanghai

  mysql:
    image: "mysql:5.7"
    deploy:
        placement:
          constraints:                      # 添加条件约束
           - node.labels.server==tb
    restart: always  
    environment:
         MYSQL_ROOT_PASSWORD: "123456"
         MYSQL_USER: 'root'
         MYSQL_PASS: '123456'

    networks:
        - cluster_default
    ports:
        - "3306:3306"

PS:

笔者在部署时使用的portainer,将kafka集群与kafka-eagle放在一个网络下,这样就可以通过域名访问的kafka broker以及zookeeper服务。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/01/25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档