Skip to content

Instantly share code, notes, and snippets.

@ludenus
Last active July 14, 2023 22:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ludenus/577b6337ecd21944467026dfce2a2f35 to your computer and use it in GitHub Desktop.
Save ludenus/577b6337ecd21944467026dfce2a2f35 to your computer and use it in GitHub Desktop.
prepare eks node for running java asyc profiler
#!/bin/bash
set -a # export all functions
set -e
set -o pipefail
me=`basename "$0"`
date_fmt='+%Y-%m-%d %H:%M:%S %z'
export version=${JA_PRF_VERSION:-'2.9'}
export async_profiler_tarball_url="https://github.com/jvm-profiling-tools/async-profiler/releases/download/v${version}/async-profiler-${version}-linux-x64.tar.gz"
export workdir=${JA_PRF_WORKDIR:-'/tmp'}
export host=`hostname`
# functions ====================================================================
function log() {
echo "`date "$date_fmt"` [${me}@${host}] ${1}"
}
function die() {
local msg=${1:-"ERROR: die for reason unknown"}
local code=${2:-254}
log "${msg}" >&2
exit ${code}
}
function setup_sysctl() {
log " ... setup sysctl params"
# https://github.com/async-profiler/async-profiler#basic-usage
sysctl kernel.perf_event_paranoid=1 || die "ERROR: failed to set_prerequisites" 11
sysctl kernel.kptr_restrict=0 || die "ERROR: failed to set_prerequisites" 12
log "[ok] setup sysctl params"
}
function setup_java() {
log " ... setup java"
( which java || yum install -y java ) && java --version || die "ERROR: java is required" 13
log "[ok] setup java"
}
function setup_java_async_profiler() {
log " ... setup java async profiler: ${workdir}"
mkdir -p ${workdir}
if [ ! -d "${workdir}/async-profiler-${version}-linux-x64" ]; then
log " ... download java async profiler package: ${async_profiler_tarball_url} "
curl -LsSf "${async_profiler_tarball_url}" | tar -xz -C ${workdir}
else
log " ... java async profiler package found: ${workdir}/async-profiler-${version}-linux-x64"
fi
log "[ok] setup java async profiler"
}
function setup_node() {
setup_sysctl
setup_java
setup_java_async_profiler
}
# main ====================================================================
setup_node
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment