Skip to content

Instantly share code, notes, and snippets.

@futeng
Created January 14, 2021 01:18
Show Gist options
  • Save futeng/7374fc0a75d89d1413d6ee99cc7c3b69 to your computer and use it in GitHub Desktop.
Save futeng/7374fc0a75d89d1413d6ee99cc7c3b69 to your computer and use it in GitHub Desktop.
[Get ledgers] Get current ledgers and their topics #pulsar #shellfor
#!/usr/bin/env bash
#
# Copyright futeng@tydic.com
# May 7, 2020
#
# 脚本:get-ledgers.sh
# 功能:获取当前现存所有 ledger 及其对应的 topic 信息
# 位置:Pulsar安装主目录的子目录执行,或者配置 PULSAR_ADMIN 变量
# 执行:sh get-ledgers.sh
BIN_BOOKKEEPER="../bin/bookkeeper"
array=$($BIN_BOOKKEEPER shell listledgers | grep -v JMX | grep ledgerID | awk '{print $2}')
# 方法1(推荐)
# element like :
# LedgerMetadata{formatVersion=3, ensembleSize=2, writeQuorumSize=2, ackQuorumSize=2, state=CLOSED, length=65, lastEntryId=0, digestType=CRC32C, password=base64:, ensembles={0=[192.168.129.124:3181, 192.168.129.125:3181]}, customMetadata={pulsar/managed-ledger=base64:cHVibGljL2RlZmF1bHQvcGVyc2lzdGVudC90ZXN0, component=base64:bWFuYWdlZC1sZWRnZXI=, application=base64:cHVsc2Fy}}
for element in ${array[@]}
do
echo
echo "1. ledgerID: $element"
ledgermetadata=$($BIN_BOOKKEEPER shell ledgermetadata -l $element | grep LedgerMetadata)
echo "2. ledgerMetadata: $ledgermetadata"
ledgerBase64=$(echo $ledgermetadata | grep managed-ledger | awk -F "managed-ledger=base64:" '{print $2}' | awk -F ", component" '{print $1}' | awk -F ", application" '{print $1}' | awk -F ", pulsar/cursor" '{print $1}')
echo "3. ledgerBase64: $ledgerBase64"
topicPath=$(echo "$ledgerBase64" | base64 --decode)
echo "4. ledger->topic: $topicPath"
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment