tools: add ppf-logs
View container logs with -f follow and -n line count. Resolves dynamic UID and container name per node role.
This commit is contained in:
78
tools/ppf-logs
Executable file
78
tools/ppf-logs
Executable file
@@ -0,0 +1,78 @@
|
||||
#!/bin/bash
|
||||
# ppf-logs -- view PPF container logs
|
||||
#
|
||||
# Usage:
|
||||
# ppf-logs [options] [node]
|
||||
#
|
||||
# Defaults to odin if no node specified.
|
||||
|
||||
set -eu
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
# shellcheck disable=SC1091
|
||||
. "$SCRIPT_DIR/lib/ppf-common.sh"
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Usage
|
||||
# ---------------------------------------------------------------------------
|
||||
usage() {
|
||||
cat <<EOF
|
||||
Usage: ppf-logs [options] [node]
|
||||
|
||||
View PPF container logs.
|
||||
|
||||
Nodes:
|
||||
odin, cassius, edge, sentinel (default: odin)
|
||||
|
||||
Options:
|
||||
-f follow log output
|
||||
-n LINES number of lines to show (default: 40)
|
||||
--help show this help
|
||||
--version show version
|
||||
|
||||
Examples:
|
||||
ppf-logs last 40 lines from odin
|
||||
ppf-logs cassius last 40 lines from cassius
|
||||
ppf-logs -f edge follow edge worker logs
|
||||
ppf-logs -n 100 sentinel last 100 lines from sentinel
|
||||
EOF
|
||||
exit 0
|
||||
}
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Parse args
|
||||
# ---------------------------------------------------------------------------
|
||||
FOLLOW=0
|
||||
LINES=40
|
||||
NODE=""
|
||||
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
--help|-h) usage ;;
|
||||
--version|-V) echo "ppf-logs $PPF_TOOLS_VERSION"; exit 0 ;;
|
||||
-f) FOLLOW=1 ;;
|
||||
-n) shift; LINES="${1:?'-n' requires a number}" ;;
|
||||
-*) die "Unknown option: $1" ;;
|
||||
*) NODE="$1" ;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
NODE="${NODE:-$MASTER}"
|
||||
|
||||
# Validate node
|
||||
is_master "$NODE" || is_worker "$NODE" || die "Unknown node: $NODE"
|
||||
|
||||
CNAME=$(container_name "$NODE")
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Build podman logs command
|
||||
# ---------------------------------------------------------------------------
|
||||
CMD="podman logs --tail $LINES"
|
||||
[ "$FOLLOW" -eq 1 ] && CMD="$CMD -f"
|
||||
CMD="$CMD $CNAME"
|
||||
|
||||
section "$NODE ($CNAME)"
|
||||
|
||||
# Run with raw output -- logs go straight to terminal
|
||||
podman_cmd "$NODE" "$CMD"
|
||||
Reference in New Issue
Block a user