| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- #!/bin/sh
- set -eu
- # shellcheck disable=SC1090,SC1091
- RUNNER_ROOT_DIR="$(cd "$(dirname "$(readlink "$0" || echo "$0")")"/..; pwd -P)"
- echo "Running node dump in ${RUNNER_ROOT_DIR}"
- BASE_RUNNER_ROOT_DIR="${BASE_RUNNER_ROOT_DIR:-$RUNNER_ROOT_DIR}"
- # shellcheck disable=SC1090,SC1091
- . "$RUNNER_ROOT_DIR"/releases/emqx_vars
- cd "${RUNNER_ROOT_DIR}"
- DUMP="$EMQX_LOG_DIR/node_dump_$(date +"%Y%m%d_%H%M%S").tar.gz"
- CONF_DUMP="$EMQX_LOG_DIR/conf.dump"
- LICENSE_INFO="$EMQX_LOG_DIR/license_info.txt"
- SYSINFO="$EMQX_LOG_DIR/sysinfo.txt"
- LOG_MAX_AGE_DAYS=3
- collect() {
- echo "========================================================"
- echo " $*"
- echo "========================================================"
- eval "$*" || echo "Unavailable"
- echo
- }
- show_help() {
- echo "Collect information about the EMQX node
- USAGE:
- $0 [-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 "$RUNNER_BIN_DIR"/emqx_ctl broker
- collect "$RUNNER_BIN_DIR"/emqx eval "'emqx_node_dump:sys_info()'"
- collect uname -a
- collect uptime
- collect free
- collect netstat -tnl
- collect "$RUNNER_BIN_DIR"/emqx_ctl plugins list
- collect "$RUNNER_BIN_DIR"/emqx_ctl vm all
- collect "$RUNNER_BIN_DIR"/emqx_ctl listeners
- } > "${SYSINFO}"
- # Collect information about the configuration:
- {
- collect "$RUNNER_BIN_DIR"/emqx eval "'emqx_node_dump:app_env_dump()'"
- } > "${CONF_DUMP}"
- # Collect license info:
- {
- collect "$RUNNER_BIN_DIR"/emqx_ctl license info
- } > "${LICENSE_INFO}"
- # Pack files
- {
- find "$EMQX_LOG_DIR" -mtime -"${LOG_MAX_AGE_DAYS}" \( -name '*.log.*' -or -name 'run_erl.log*' \)
- echo "${SYSINFO}"
- echo "${CONF_DUMP}"
- echo "${LICENSE_INFO}"
- } | tar czf "${DUMP}" -T -
- ## Cleanup:
- rm "${SYSINFO}" "${LICENSE_INFO}"
- #rm "${CONF_DUMP}" # Keep it for inspection
- echo "Created a node dump ${DUMP}"
- echo
- echo "WARNING: 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."
|