Skip to content

Instantly share code, notes, and snippets.

@mplovepop
Last active October 29, 2018 18:29
Show Gist options
  • Save mplovepop/a950907f9566c18b736e31d783be24af to your computer and use it in GitHub Desktop.
Save mplovepop/a950907f9566c18b736e31d783be24af to your computer and use it in GitHub Desktop.
Use eliot-tree to view papertrail logs. Requires: papertrail, jq, eliot-tree, and a papertrail API token
#!/bin/bash
set -o errexit
eliot_cmd="eliot-prettyprint"
eliot_args=()
papertrail_args=("--json")
jq_term=".events[].message"
grep_cmd="cat"
grep_args=("-")
usage() {
cat <<EOF 1>&2
Usage: eliot-papertrail [-hcf]
[-p <papertrail-group (str)>]
[-s <papertrail-system (str)>]
[-t <time filter (str)>]
[-g <grep search text (str)>]
[-l <eliot field-limit (int)>]
EOF
}
if [[ "$1" = "--help" || "$1" = "help" ]] ; then
usage
exit 0
fi
while getopts ":hfcp:s:t:g:l:" o; do
case "${o}" in
p)
papertrail_args+=("--group" "${OPTARG}")
;;
s)
papertrail_args+=("--system" "${OPTARG}")
;;
t)
eliot_cmd="eliot-tree"
papertrail_args+=("--min-time" "${OPTARG}")
jq_term=".message"
;;
g)
grep_cmd="grep"
grep_args=("${OPTARG}")
;;
l)
eliot_cmd="eliot-tree"
eliot_args+=("--field-limit" "${OPTARG}")
;;
c)
eliot_cmd="eliot-tree"
eliot_args+=("--color" "always")
;;
f)
papertrail_args+=("--follow")
;;
h)
usage
exit 0
;;
*)
usage
exit 1
;;
esac
done
shift $((OPTIND-1))
papertrail "${papertrail_args[@]}" \
| jq -r "${jq_term}" \
| $grep_cmd "${grep_args[@]}" \
| $eliot_cmd "${eliot_args[@]}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment