Skip to content

Instantly share code, notes, and snippets.

@mrsiano
Last active April 11, 2018 15:37
Show Gist options
  • Save mrsiano/627c7ce7049ccc84a853b1120badb66b to your computer and use it in GitHub Desktop.
Save mrsiano/627c7ce7049ccc84a853b1120badb66b to your computer and use it in GitHub Desktop.
JVM collector for docker
#!/bin/bash
#
# usage ./jvm_collector.sh <container name> <interval>
container_name=$1
interval=$2
# get jvm pid
jpid=$(docker exec -ti `docker ps --filter name=$container_name --format "{{.Names}}"` ps -ef |grep java |grep -v grep |awk '{print $2}')
while true; do
# Heap Stats
heap_used=$(docker exec -ti `docker ps --filter name=$container_name --format "{{.Names}}"` jmap -histo $jpid |grep Total |awk '{print $3/1024/1024}')
echo "$(date +'%m-%d-%y-%H:%M:%S') $heap_used" >> heap.log
# Threads Stats
docker exec -ti `docker ps --filter name=$container_name --format "{{.Names}}"` jstack $jpid > /tmp/threads.log
b=`grep -c BLOCK /tmp/threads.log`
ru=`grep -c RUNN /tmp/threads.log`
w=`grep -c WAITING /tmp/threads.log`
echo "$(date +'%m-%d-%y-%H:%M:%S') - running:$ru blocked:$b waiting:$w" >> threadstats.log
sleep $interval
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment