| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- #!/bin/bash
- set -euo pipefail
- shopt -s nullglob
- ROOT_DIR="$(cd "$(dirname "$(readlink "$0" || echo "$0")")"/..; pwd -P)"
- echo "Running node dump in ${ROOT_DIR}"
- cd "${ROOT_DIR}"
- DUMP="log/node_dump_$(date +"%Y%m%d_%H%M%S").tar.gz"
- CONF_DUMP="log/conf.dump"
- SYSINFO="log/sysinfo.txt"
- LOG_MAX_AGE_DAYS=3
- collect() {
- echo "========================================================"
- echo " $*"
- echo "========================================================"
- eval "$*" || echo "Unavailable"
- echo -e '\n'
- }
- show_help() {
- echo "Collect information about the EMQ X node
- USAGE:
- bin/node_dump [-a DAYS]
- OPTIONS:
- -a n Set maximum age of collected log files in days (3 by default)"
- exit 1
- }
- while getopts "a:h" opt; do
- case "${opt}" in
- a) LOG_MAX_AGE_DAYS="${OPTARG}" ;;
- h) show_help ;;
- *) ;;
- esac
- done
- # Collect system info:
- {
- collect bin/emqx_ctl broker
- collect bin/emqx eval "'emqx_node_dump:sys_info()'"
- collect uname -a
- collect uptime
- collect free -h
- collect netstat -tnl
- collect bin/emqx_ctl plugins list
- collect bin/emqx_ctl modules list
- collect bin/emqx_ctl vm all
- collect bin/emqx_ctl listeners
- } > "${SYSINFO}"
- # Collect information about the configuration:
- {
- collect bin/emqx eval "'emqx_node_dump:app_env_dump()'"
- } > "${CONF_DUMP}"
- # Pack files
- {
- find log -mtime -"${LOG_MAX_AGE_DAYS}" \( -name '*.log.*' -or -name 'run_erl.log*' \)
- echo "${SYSINFO}"
- echo "${CONF_DUMP}"
- } | tar czf "${DUMP}" -T -
- ## Cleanup:
- rm "${SYSINFO}"
- #rm "${CONF_DUMP}" # Keep it for inspection
- echo "Created a node dump ${DUMP}"
- echo -e "\nWARNING: this script tries to obfuscate secrets, but make sure to
- inspect log/conf.dump file manually before uploading the node dump
- to a public location."
|