Problem
ELK visualizations were not loading. Looked at the logs and saw the following error:
logstash java.lang.OutOfMemoryError: Java heap space
Solution
Added the JAVA OPTS setting to the docker-compose.yml file:
environment:
- "LS_JAVA_OPTS=-Xms5120m -Xmx5120m"
- "LS_HEAP_SIZE=5g"
Optionally stop the ELK containers and then run docker-compose up -d so that the containers are recreated with the new parameters:
root@whiscardz:/opt/docker-elk# docker-compose stop
Stopping logstash ... done
Stopping kibana ... done
Stopping elasticsearch ... done
root@whiscardz:/opt/docker-elk# docker-compose up -d
Recreating elasticsearch ... done
Recreating logstash ... done
Recreating kibana ... done
root@whiscardz:/opt/docker-elk#
How to check if heap was updated:
Exec into the logstash container and then run either of the following commands:
root@whiscardz:/opt/docker-elk# docker exec -it mylogstashcontainerid /bin/bash
bash-4.2$ ps -ef | grep logstash
logstash 1 0 18 09:41 ? 00:58:45 /bin/java -Dls.cgroup.cpuacct.path.override=/ -Dls.cgroup.cpu.path.override=/ -Xms5120m -Xmx5120m
OR
root@whiscardz:/opt/docker-elk# docker exec -it mylogstashcontainerid /bin/bash
bash-4.2$ jps -lvm
1 org.logstash.Logstash -Dls.cgroup.cpuacct.path.override=/ -Dls.cgroup.cpu.path.override=/ -Xms5120m -Xmx5120m
196 jdk.jcmd/sun.tools.jps.Jps -lvm -Dapplication.home=/usr/lib/jvm/java-11-openjdk-11.0.7.10-4.el7_8.x86_64 -Xms8m -Djdk.module.main=jdk.jcmd
bash-4.2$
References
How to change the JVM parameter for a Docker container
Setting JVM options for an Elasticsearch service run in a Docker container
Manually set the heap size
10 Important JVM Options for Production JAVA Application System
Getting the parameters of a running JVM
Java.lang.OutOfMemoryError: Java heap space on Elasticsearch in AWS