大数据笔记--kafka工具AKHQ

news2025/2/27 8:30:23

目录

一、项目背景

二、项目目标

三、项目部署

1、前提条件

2、流程

2.1、准备工作

2.2、安装AKHQ

2.3、配置AKHQ

2.4、启动AKHQ

四、验证


一、项目背景

日常运维工作中,越来越多的团队成员,包括开发人员、数据分析师和业务运营团队,需要实时查看和监控kafka主题中的数据,这对快速诊断问题、优化性能和支持数据驱动的决策十分重要。

二、项目目标

本文档旨在指导技术团队将 Apache Kafka 集群与 AKHQ 监控工具成功集成。

适用于需要监控和管理 Kafka 集群的技术团队。

三、项目部署

1、前提条件

  • 集群为prod环境kafka集群与log_kafka集群

  • 具有访问 Kafka 集群所需的kerberos相关文件和权限。

  • 一台服务器用于部署 AKHQ。

  • JDK 11+ 我安装的JDK 17+

2、流程

2.1、准备工作

集群keytabprincipal
kafka

kafka-01:9092

kafka-02:9092

kafka-03:9092

kafka-04:9092

kafka-05:9092

/etc/keytabs/kafka-01.keytabkafka/kafka-01@principal
log_kafka

log_kafka-01:9092

log_kafka-02:9092

log_kafka-03:9092

log_kafka-04:9092

log_kafka-05:9092

/etc/keytabs/log_kafka-01.keytabkafka/log_kafka-01@principal
ladp

server: ldap://ldap.server.com:389
managerDn: "cn=ladp,OU=ldap,OU=Corp Services,DC=dc,DC=intra"
managerPassword: "*****"
searchbase: "OU=Ou Users,OU=Corp Users,DC=DC,DC=intra"

filter: "sAMAccountName={0}"
groupbase: "OU=Ou Users,OU=Corp Users,DC=DC,DC=intra"
filter: "(objectClass=groupofnames)"

AKHQip:8443/data/src

2.2、安装AKHQ

在目标服务器上,安装Java 17 环境,上传akhq-0.24.0-all.jar

#登陆akhq机器,检查是否有jdk11+
java -version
cd /data/src/
tar -zxvf akhq-0.24.0-all.jar
ln -s /data/src/akhq-0.24.0/ /data/service/akhq

2.3、配置AKHQ

  创建 AKHQ 的 application.yml 文件,添加 Kafka 集群的配置信息。

  配置 AKHQ 的LDAP 集成、用户角色和权限。

  设置日志格式。

# 进入AKHQ配置主机
cd /data/service/akhq/
# 注意创建log目录
mkdir log
touch application.yml

application.yml内容

# debug配置
#logger:
#   levels:
     #root: DEBUG
#     org.akhq.configs: TRACE
#     io.micronaut: DEBUG
#     io.micronaut.security.ldap: TRACE
#     io.micronaut.configuration.security: TRACE
#     java.security: TRACE

micronaut:
  security:
    enabled: true #是否开启安全认证
    # Ldap authenticaton configuration
    ldap:
      default:
        enabled: true #是否开启ladp
        context:
          server: "ldap://ldap.server.com:389" #ladp地址
          managerDn: "cn=cn,OU=ldap,OU=Corp Services,DC=DC,DC=intra" #ldap管理员账号密码
          managerPassword: "密码"
        search:
          base: "OU=Ou Users,OU=Corp Users,DC=DC,DC=intra"
          filter: "sAMAccountName={0}" #ladp 查询用户
        groups:
          enabled: true        #是否使用ldap组
          base: "OU=Ou Users,OU=Corp Users,DC=DC,DC=intra"
          filter: "(objectClass=groupofnames)" #查询组
  server:
    port: 8443        #akhq服务端口
    cors:
      enabled: true    #是否转发前端(无影响)
      configurations:
        all:
          allowedOrigins:
            - http://localhost:3000

akhq:                #服务配置
  server:
    access-log: # 日志配置 (可选)
      enabled: true # true by default
      name: org.akhq.log.access # Logger name
      format: "[Date: {}] [Duration: {} ms] [Url: {} {}] [Status: {}] [Ip: {}] [User: {}]" # Logger format
  connections:        #集群配置
    kafka-prod:       # prod集群
      properties:
        bootstrap.servers:  "kafka-01:9092,kafka-02:9092,kafka-03:9092,kafka-04:9092,kafka-05:9092" #kafka集群地址
        security.protocol: SASL_PLAINTEXT
        sasl.mechanism: GSSAPI
        sasl.jaas.config: com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true keyTab="/etc/keytabs/kafka-01.keytab" storeKey=true serviceName="kafka" client=true useTicketCache=true principal="kafka/kafka-01@principal"; #认证文件,连接参数
    
    log-kafka-prod: #logkafka集群
      properties:
        bootstrap.servers: "log_kafka-01:9092,log_kafka-02:9092,log_kafka-03:9092,log_kafka-04:9092,log_kafka-05:9092"
        security.protocol: SASL_PLAINTEXT
        sasl.mechanism: GSSAPI
        sasl.jaas.config: com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true keyTab="/etc/keytabs/log_kafka-01.keytab" storeKey=true serviceName="kafka" client=true useTicketCache=true principal="kafka/log_kafka-01@principal";

  pagination:    #页面页数,线程数
    page-size: 25 # number of elements per page (default : 25)
    threads: 16 # Number of parallel threads to resolve page
    
  security:
    default-group: no-roles # Default groups for all the user even unlogged user
    # Groups definition
    groups:        #权限相关配置
      admin: # unique key
        name: admin # Group name
        roles:  # roles for the group
          - topic/read
          - topic/insert
          - topic/delete
          - topic/config/update
          - node/read
          - node/config/update
          - topic/data/read
          - topic/data/insert
          - topic/data/delete
          - group/read
          - group/delete
          - group/offsets/update
          - registry/read
          - registry/insert
          - registry/update
          - registry/delete
          - registry/version/delete
          - acls/read
          - connect/read
          - connect/insert
          - connect/update
          - connect/delete
          - connect/state/update
        attributes:  #正则过滤指定主题,*表示全部显示,test.*表示test开始的主题显示
          # Regexp list to filter topic available for group
          topics-filter-regexp:
            - ".*"
          # Regexp list to filter connect configs visible for group
          connects-filter-regexp:
            - ".*"
          # Regexp list to filter consumer groups visible for group
          consumer-groups-filter-regexp:
            - ".*"
      topic-reader: # unique key #只读权限
        name: topic-reader # Other group
        roles:
          - topic/read
          - topic/data/read
          
    # Basic auth configuration
    basic-auth:        #本地账号
      - username: admin # Username    
        password: 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918 # Password in sha256
        groups: # Groups for the user
          - admin
          - topic-reader

    # Ldap Groups configuration (when using ldap)
    ldap:     #根据ldap组来设置权限,目前我们ladp只有一个组,所有用现在只有只读权限
      default-group: topic-reader
      groups:
        - name: group-ldap-1
          groups: # Akhq groups list
            - topic-reader
      users:  #指定ldap用户有管理员权限
        - username: user1 # ldap user id
          groups: # Akhq groups list
            - admin
        - username: user2
          groups:
            - admin
        - username: user3
          groups:
            - admin
    # 数据脱敏相关配置
    # # Data masking configuration
    # data-masking:
    #   filters:
    #     - description: "Masks value for secret-key fields"
    #       search-regex: '"(secret-key)":".*"'
    #       replacement: '"$1":"xxxx"'
    #     - description: "Masks last digits of phone numbers"
    #       search-regex: '"([\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?)[0-9]{4,6}"'
    #       replacement: '"$1xxxx"'

2.4、启动AKHQ

  配置akhq启动脚本

  检查启动日志,确认没有错误信息。

#进入akhq配置主机
ssh ip
cd /data/service/akhq/
touch akhq_service.sh
vi akhq_service.sh
#添加如下内容

#!/bin/bash

# AKHQ start/stop/restart script

# Configuration
AKHQ_JAR="/data/service/akhq/akhq-0.24.0-all.jar"
CONFIG_FILE="/data/service/akhq/application.yml"
LOG_DIR="/data/service/akhq/log"
LOG_FILE="${LOG_DIR}/akhq.log"
PID_FILE="/data/service/akhq/akhq.pid"
JAVA_HOME="/data/src/zulu17.42.21-ca-crac-jdk17.0.7-linux_x64"

# Ensure log directory exists
mkdir -p "$LOG_DIR"

start() {
    if [ -f "$PID_FILE" ]; then
        echo "AKHQ is already running."
    else
        echo "Starting AKHQ..."
        #nohup "$JAVA_HOME/bin/java" -Dmicronaut.config.files="$CONFIG_FILE"  -jar "$AKHQ_JAR" >> "$LOG_FILE" 2>&1 &
        nohup "$JAVA_HOME/bin/java" -Dmicronaut.config.files="$CONFIG_FILE" -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5005 -jar "$AKHQ_JAR" >> "$LOG_FILE" 2>&1 &
        echo $! > "$PID_FILE"
        echo "AKHQ started."
    fi
}

stop() {
    if [ ! -f "$PID_FILE" ]; then
        echo "AKHQ is not running."
    else
        PID=$(cat "$PID_FILE")
        echo "Stopping AKHQ..."
        kill "$PID"
        rm "$PID_FILE"
        echo "AKHQ stopped."
    fi
}

restart() {
    echo "Restarting AKHQ..."
    stop
    sleep 2
    start
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        restart
        ;;
    *)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
esac

四、验证

访问 AKHQ 的 UI,检查是否能够成功连接到 Kafka 集群并显示相关信息。

Prod: http://ip:8443/ui/login

尝试执行一些基本操作,如查看主题、消费者组等,以验证集成成功。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1913761.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【1.4】动态规划-解目标和

一、题目 给你一个整数数组nums和一个整数target 。 向数组中的每个整数前添加或 - ,然后串联起所有整数,可以构造一个表达式: 例 如 , nums[2,1] , 可 以 在 2 之 前 添 加 , 在 1 之 前 添 加 - &…

[leetcode] car-pooling 拼车

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:bool carPooling(vector<vector<int>>& trips, int capacity) {int to_max 0;for (const auto& trip: trips) {to_max max(to_max, trip[2]);}vector<int> diff(to_max 1);for…

智慧城市大数据运营中心 IOC:Web GIS 地图应用助力智能决策

利用图扑 HT for Web GIS 技术&#xff0c;智慧城市大数据运营中心 (IOC) 实现动态可视化展示&#xff0c;整合多源数据&#xff0c;提高城市管理和资源分配效率&#xff0c;支持智能决策与实时监控。

自定义波形图View,LayoutInflater动态加载控件保存为本地图片

效果图&#xff1a; 页面布局&#xff1a; <?xml version"1.0" encoding"utf-8"?><LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools"android:la…

Web3学习路线图,从入门到精通

前面我们聊了Web3的知识图谱&#xff0c;内容是相当的翔实&#xff0c;要从哪里入手可以快速的入门Web3&#xff0c;本篇就带你看看Web3的学习路线图&#xff0c;一步一步深入学习Web3。 这张图展示了Web3学习路线图&#xff0c;涵盖了区块链基础知识、开发方向、应用开发等内…

Canvas:掌握图像变换合成与裁剪状态像素操作

想象一下&#xff0c;用几行代码就能创造出如此逼真的图像和动画&#xff0c;仿佛将艺术与科技完美融合&#xff0c;前端开发的Canvas技术正是这个数字化时代中最具魔力的一环&#xff0c;它不仅仅是网页的一部分&#xff0c;更是一个无限创意的画布&#xff0c;一个让你的想象…

【深度学习(42)】通过vscode使用anaconda的python环境

按ctrlshiftp&#xff0c;选择Python:Select Interpreter 选择anaconda下的python虚拟环境

【spark】Exception in thread “main“ ExitCodeException exitCode=-1073741701

在window上运行spark程序写到本地文件的时候报错。 val rdd sc.sparkContext.parallelize(list)val arr rdd.collect()arr.foreach(println)rdd.saveAsTextFile("test1")sc.close()错误信息: zhangsan lisi wangwu Exception in thread "main" ExitCode…

连续6年夺冠 6项细分领域第一,中电金信持续领跑中国银行业IT解决方案市场

7月9日&#xff0c;工信部赛迪顾问发布《2023年度中国银行业IT解决方案市场分析报告》&#xff08;简称《报告》&#xff09;。中电金信以7.38%的市场份额再度蝉联2023中国银行业IT解决方案市场份额第一&#xff0c;以显著优势持续领跑中国银行业IT解决方案市场。在细分领域&am…

【普中】基于51单片机的矩阵电子密码锁LCD1602液晶显示 proteus仿真+程序+设计报告+讲解视频

【普中】基于51单片机的矩阵电子密码锁LCD1602液晶显示设计 1.主要功能&#xff1a;讲解视频&#xff1a;2.仿真3. 程序代码4. 设计报告5. 设计资料内容清单&&下载链接资料下载链接&#xff1a; 【普中】基于51单片机的矩阵电子密码锁LCD1602液晶显示设计 ( proteus仿真…

UV胶,它是否有毒?如同那些隐藏在黑暗中的危险之物?

UV胶&#xff0c;它是否有毒&#xff1f;如同那些隐藏在黑暗中的危险之物&#xff1f; 关于uv胶的毒性问题&#xff0c;或许我们可以这样深入探讨。UV胶&#xff0c;如同一位戴着神秘面纱的访客&#xff0c;在我们的生活中悄然出现&#xff0c;却带着诸多疑问。那么&#xff0…

怎样把视频字幕提取出来?分享4个零门槛的字幕提取工具

暑假正是弯道超车的好机会&#xff01;相信不少朋友都会选择宅在家自学网课。 不可否认的是&#xff0c;海量学习资源的确可以让学习变得更加便捷与自由。然而&#xff0c;如何高效地吸收和理解在线课程也就成为了一个关键问题。不敢想倘若此时能够拥有一款高效又实用的视频提…

菜花插画:成都亚恒丰创教育科技有限公司

菜花插画&#xff1a;田园诗意的视觉盛宴 在纷扰繁杂的都市生活中&#xff0c;人们往往渴望一抹清新与宁静&#xff0c;以慰藉心灵的疲惫。而菜花插画&#xff0c;恰似一股来自乡野的清风&#xff0c;以其独特的田园诗意&#xff0c;成都亚恒丰创教育科技有限公司为我们的视觉…

结构体案例1

代码 #include <iostream> using namespace std; #include <string> #include <ctime>//学生的结构体 struct Student {string sName;int score; }; //老师的结构体定义 struct Teacher {string tName;struct Student sArray[5]; };//给老师和学生赋值的函数…

HTML5使用<progress>进度条、<meter>刻度条

1、<progress>进度条 定义进度信息使用的是 progress 标签。它表示一个任务的完成进度&#xff0c;这个进度可以是不确定的&#xff0c;只是表示进度正在进行&#xff0c;但是不清楚还有多少工作量没有完成&#xff0c;也可以用0到某个最大数字&#xff08;如&#xff1…

在网上申请流量卡审核失败,可能是你的年龄有问题!

在网上申请流量卡审核失败&#xff0c;可能是你的年龄有问题&#xff01; 先上个图&#xff1a; ​ 网上的流量卡并不是随意申请的&#xff0c;而是填写申请信息后由运营商进行审核&#xff0c;审核通过后才会发卡&#xff0c;如果你提交的订单没有审核通过&#xff0c;那么大…

Unity之OpenXR+XR Interaction Toolkit实现 Gaze眼部追踪

使用 Unity OpenXR 实现Gaze眼部追踪 在虚拟现实(VR)和增强现实(AR)应用中,眼动追踪是一项强大而受欢迎的技术。它可以让开发者更好地理解用户的注意力和行为,并创造出更加沉浸和智能的体验。在本文中,我们将探讨如何使用 Unity OpenXR 实现Gaze眼部追踪功能。 Unity …

MySQL体系架构解析

1.MySQL体系架构 1.1.MySQL的分支与变种 MySQL变种有好几个,主要有三个久经考验的主流变种:Percona Server,MariaDB和 Drizzle。它们都有活跃的用户社区和一些商业支持,均由独立的服务供应商支持。同时还有几个优秀的开源关系数据库,值得我们了解一下。 1.1.1.Drizzle …

RockyLinux9上安装Nacos2.3.0(非Docker安装)

RockyLinux9上安装Nacos2.3.0 说明什么是Nacos下载并安装创建一个nacos-conf数据库修改application.properties文件 启动如果在项目中使用需要注意访问网址查看是否成功 开启访问鉴权 说明 本文采用的是&#xff1a;安装包安装&#xff0c;非Docker安装&#xff0c;系统采用的R…

雷池WAF动态防护功能初体验

一、 介绍 大名鼎鼎的雷池WAF最近新上了个名为 动态防护 的功能 所谓动态防护&#xff0c;是在用户浏览到的网页内容不变的情况下&#xff0c;将网页赋予动态特性&#xff0c;即使是静态页面&#xff0c;也会具有动态的随机性。 说白了就是给你网站的 html 和 js 代码加上加密…