export.sh 2.5 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
#!/bin/bash

# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

if [ -z "$ROCKETMQ_HOME" ]; then
  ## resolve links - $0 may be a link to maven's home
  PRG="$0"

  # need this for relative symlinks
  while [ -h "$PRG" ]; do
    ls=$(ls -ld "$PRG")
    link=$(expr "$ls" : '.*-> \(.*\)$')
    if expr "$link" : '/.*' >/dev/null; then
      PRG="$link"
    else
      PRG="$(dirname "$PRG")/$link"
    fi
  done

  saveddir=$(pwd)

  ROCKETMQ_HOME=$(dirname "$PRG")/..

  # make it fully qualified
  ROCKETMQ_HOME=$(cd "$ROCKETMQ_HOME" && pwd)

  cd "$saveddir"
fi

export ROCKETMQ_HOME

namesrvAddr=
while [ -z "${namesrvAddr}" ]; do
  read -p "Enter name server address list:" namesrvAddr
done

clusterName=
while [ -z "${clusterName}" ]; do
  read -p "Choose a cluster to export:" clusterName
done

read -p "Enter file path to export [default /tmp/rocketmq/export]:" filePath
if [ -z "${filePath}" ]; then
  filePath="/tmp/rocketmq/config"
fi

if [[ -e ${filePath} ]]; then
  rm -rf ${filePath}
fi

sh ${ROCKETMQ_HOME}/bin/mqadmin exportMetrics -c ${clusterName} -n ${namesrvAddr} -f ${filePath}
sh ${ROCKETMQ_HOME}/bin/mqadmin exportConfigs -c ${clusterName} -n ${namesrvAddr} -f ${filePath}
sh ${ROCKETMQ_HOME}/bin/mqadmin exportMetadata -c ${clusterName} -n ${namesrvAddr} -f ${filePath}

cd ${filePath} || exit

configs=$(cat ./configs.json)
if [ -z "$configs" ]; then
  configs="{}"
fi
metadata=$(cat ./metadata.json)
if [ -z "$metadata" ]; then
  metadata="{}"
fi
metrics=$(cat ./metrics.json)
if [ -z "$metrics" ]; then
  metrics="{}"
fi

echo "{
    \"configs\": ${configs},
    \"metadata\": ${metadata},
    \"metrics\": ${metrics}
  }" >rocketmq-metadata-export.json

echo -e "[INFO] The RocketMQ metadata has been exported to the file:${filePath}/rocketmq-metadata-export.json"