Last active
July 14, 2023 22:05
-
-
Save ludenus/577b6337ecd21944467026dfce2a2f35 to your computer and use it in GitHub Desktop.
prepare eks node for running java asyc profiler
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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