大数据笔记--kafka工具AKHQ

打印 上一主题 下一主题

主题 890|帖子 890|积分 2670

目次

一、项目配景
二、项目目标
三、项目摆设
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
  1. #登陆akhq机器,检查是否有jdk11+
  2. java -version
  3. cd /data/src/
  4. tar -zxvf akhq-0.24.0-all.jar
  5. ln -s /data/src/akhq-0.24.0/ /data/service/akhq
复制代码
2.3、配置AKHQ

  创建 AKHQ 的 application.yml 文件,添加 Kafka 集群的配置信息。
  配置 AKHQ 的LDAP 集成、用户角色和权限。
  设置日志格式。
  1. # 进入AKHQ配置主机
  2. cd /data/service/akhq/
  3. # 注意创建log目录
  4. mkdir log
  5. touch application.yml
复制代码
application.yml内容
  1. # debug配置
  2. #logger:
  3. #   levels:
  4.      #root: DEBUG
  5. #     org.akhq.configs: TRACE
  6. #     io.micronaut: DEBUG
  7. #     io.micronaut.security.ldap: TRACE
  8. #     io.micronaut.configuration.security: TRACE
  9. #     java.security: TRACE
  10. micronaut:
  11.   security:
  12.     enabled: true #是否开启安全认证
  13.     # Ldap authenticaton configuration
  14.     ldap:
  15.       default:
  16.         enabled: true #是否开启ladp
  17.         context:
  18.           server: "ldap://ldap.server.com:389" #ladp地址
  19.           managerDn: "cn=cn,OU=ldap,OU=Corp Services,DC=DC,DC=intra" #ldap管理员账号密码
  20.           managerPassword: "密码"
  21.         search:
  22.           base: "OU=Ou Users,OU=Corp Users,DC=DC,DC=intra"
  23.           filter: "sAMAccountName={0}" #ladp 查询用户
  24.         groups:
  25.           enabled: true        #是否使用ldap组
  26.           base: "OU=Ou Users,OU=Corp Users,DC=DC,DC=intra"
  27.           filter: "(objectClass=groupofnames)" #查询组
  28.   server:
  29.     port: 8443        #akhq服务端口
  30.     cors:
  31.       enabled: true    #是否转发前端(无影响)
  32.       configurations:
  33.         all:
  34.           allowedOrigins:
  35.             - http://localhost:3000
  36. akhq:                #服务配置
  37.   server:
  38.     access-log: # 日志配置 (可选)
  39.       enabled: true # true by default
  40.       name: org.akhq.log.access # Logger name
  41.       format: "[Date: {}] [Duration: {} ms] [Url: {} {}] [Status: {}] [Ip: {}] [User: {}]" # Logger format
  42.   connections:        #集群配置
  43.     kafka-prod:       # prod集群
  44.       properties:
  45.         bootstrap.servers:  "kafka-01:9092,kafka-02:9092,kafka-03:9092,kafka-04:9092,kafka-05:9092" #kafka集群地址
  46.         security.protocol: SASL_PLAINTEXT
  47.         sasl.mechanism: GSSAPI
  48.         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"; #认证文件,连接参数
  49.    
  50.     log-kafka-prod: #logkafka集群
  51.       properties:
  52.         bootstrap.servers: "log_kafka-01:9092,log_kafka-02:9092,log_kafka-03:9092,log_kafka-04:9092,log_kafka-05:9092"
  53.         security.protocol: SASL_PLAINTEXT
  54.         sasl.mechanism: GSSAPI
  55.         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";
  56.   pagination:    #页面页数,线程数
  57.     page-size: 25 # number of elements per page (default : 25)
  58.     threads: 16 # Number of parallel threads to resolve page
  59.    
  60.   security:
  61.     default-group: no-roles # Default groups for all the user even unlogged user
  62.     # Groups definition
  63.     groups:        #权限相关配置
  64.       admin: # unique key
  65.         name: admin # Group name
  66.         roles:  # roles for the group
  67.           - topic/read
  68.           - topic/insert
  69.           - topic/delete
  70.           - topic/config/update
  71.           - node/read
  72.           - node/config/update
  73.           - topic/data/read
  74.           - topic/data/insert
  75.           - topic/data/delete
  76.           - group/read
  77.           - group/delete
  78.           - group/offsets/update
  79.           - registry/read
  80.           - registry/insert
  81.           - registry/update
  82.           - registry/delete
  83.           - registry/version/delete
  84.           - acls/read
  85.           - connect/read
  86.           - connect/insert
  87.           - connect/update
  88.           - connect/delete
  89.           - connect/state/update
  90.         attributes:  #正则过滤指定主题,*表示全部显示,test.*表示test开始的主题显示
  91.           # Regexp list to filter topic available for group
  92.           topics-filter-regexp:
  93.             - ".*"
  94.           # Regexp list to filter connect configs visible for group
  95.           connects-filter-regexp:
  96.             - ".*"
  97.           # Regexp list to filter consumer groups visible for group
  98.           consumer-groups-filter-regexp:
  99.             - ".*"
  100.       topic-reader: # unique key #只读权限
  101.         name: topic-reader # Other group
  102.         roles:
  103.           - topic/read
  104.           - topic/data/read
  105.          
  106.     # Basic auth configuration
  107.     basic-auth:        #本地账号
  108.       - username: admin # Username   
  109.         password: 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918 # Password in sha256
  110.         groups: # Groups for the user
  111.           - admin
  112.           - topic-reader
  113.     # Ldap Groups configuration (when using ldap)
  114.     ldap:     #根据ldap组来设置权限,目前我们ladp只有一个组,所有用现在只有只读权限
  115.       default-group: topic-reader
  116.       groups:
  117.         - name: group-ldap-1
  118.           groups: # Akhq groups list
  119.             - topic-reader
  120.       users:  #指定ldap用户有管理员权限
  121.         - username: user1 # ldap user id
  122.           groups: # Akhq groups list
  123.             - admin
  124.         - username: user2
  125.           groups:
  126.             - admin
  127.         - username: user3
  128.           groups:
  129.             - admin
  130.     # 数据脱敏相关配置
  131.     # # Data masking configuration
  132.     # data-masking:
  133.     #   filters:
  134.     #     - description: "Masks value for secret-key fields"
  135.     #       search-regex: '"(secret-key)":".*"'
  136.     #       replacement: '"$1":"xxxx"'
  137.     #     - description: "Masks last digits of phone numbers"
  138.     #       search-regex: '"([\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?)[0-9]{4,6}"'
  139.     #       replacement: '"$1xxxx"'
复制代码
2.4、启动AKHQ

  配置akhq启动脚本
  查抄启动日志,确认没有错误信息。
  1. #进入akhq配置主机
  2. ssh ip
  3. cd /data/service/akhq/
  4. touch akhq_service.sh
  5. vi akhq_service.sh
  6. #添加如下内容
  7. #!/bin/bash
  8. # AKHQ start/stop/restart script
  9. # Configuration
  10. AKHQ_JAR="/data/service/akhq/akhq-0.24.0-all.jar"
  11. CONFIG_FILE="/data/service/akhq/application.yml"
  12. LOG_DIR="/data/service/akhq/log"
  13. LOG_FILE="${LOG_DIR}/akhq.log"
  14. PID_FILE="/data/service/akhq/akhq.pid"
  15. JAVA_HOME="/data/src/zulu17.42.21-ca-crac-jdk17.0.7-linux_x64"
  16. # Ensure log directory exists
  17. mkdir -p "$LOG_DIR"
  18. start() {
  19.     if [ -f "$PID_FILE" ]; then
  20.         echo "AKHQ is already running."
  21.     else
  22.         echo "Starting AKHQ..."
  23.         #nohup "$JAVA_HOME/bin/java" -Dmicronaut.config.files="$CONFIG_FILE"  -jar "$AKHQ_JAR" >> "$LOG_FILE" 2>&1 &
  24.         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 &
  25.         echo $! > "$PID_FILE"
  26.         echo "AKHQ started."
  27.     fi
  28. }
  29. stop() {
  30.     if [ ! -f "$PID_FILE" ]; then
  31.         echo "AKHQ is not running."
  32.     else
  33.         PID=$(cat "$PID_FILE")
  34.         echo "Stopping AKHQ..."
  35.         kill "$PID"
  36.         rm "$PID_FILE"
  37.         echo "AKHQ stopped."
  38.     fi
  39. }
  40. restart() {
  41.     echo "Restarting AKHQ..."
  42.     stop
  43.     sleep 2
  44.     start
  45. }
  46. case "$1" in
  47.     start)
  48.         start
  49.         ;;
  50.     stop)
  51.         stop
  52.         ;;
  53.     restart)
  54.         restart
  55.         ;;
  56.     *)
  57.         echo "Usage: $0 {start|stop|restart}"
  58.         exit 1
  59. esac
复制代码
四、验证

访问 AKHQ 的 UI,查抄是否能够乐成连接到 Kafka 集群并显示相干信息。
Prod: http://ip:8443/ui/login
实验实验一些基本操作,如查看主题、消耗者组等,以验证集成乐成。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

缠丝猫

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表