21f1f28ab3
Fixes for this patchset: - split out elk-openstack-client.yml to match what's done elsewhere Fixes for patchset #11: - split out filebeat into separate role for openstack clients - update README.md to use elk-openstack-client.yml for this purpose - cleanup filebeat.yml.j2 to use correct syntax (no need for " anymore) Fixes for patchset #10: - add SELinux boolean "httpd_can_network_connect" - add libsemanage-python package dependency for booleans Fixes for patchset #9: - fix for RHEL7 clients, we need to specify remote EPEL rpm - RHEL7 clients need rpm_key module to import EPEL GPG key - switch to using uri module instead of curl for checking elasticsearch indices - add python-httplib2 dependency (needed for uri module) - use curl -XPOST instead of PUT for filebeat index template in elasticsearch Fixes from patchset #7 - remove unneeded rpm usage, switch to yum module - add logic to heapsize tuning so systems > 64G of memory will never exceed the 32G recommended heapsize - logic fix for prepopulating local logs into logstash - remove elasticsearch.yml, rpm provides this and we're not customizing it yet Fixes from patchset #6: - use yum repo Ansible module where we can - remove unecessary EPEL installation (only nginx needs it) - disable EPEL repo after installation to avoid OpenStack breakage This adds: (ELK Server) - Automated ELK stack deployment - SSL client generation - Heap size tuning (1/2 of available memory) - Firewall port additions (depending on active or not) - Supports either firewalld or iptables-services - Additional upstream Filebeat Kibana dashboards (ELK Client) - Sets up filebeat with appropriate SSL certificates - utilizes both hostnames and SubjectAltName support (for environments without DNS services). (Usage) ansible-playbook -i hosts install/elk.yml ansible-playbook -i hosts install/elk-client.yml --extra-vars 'elk_server=X.X.X.X' Change-Id: Iee29f985e0bbcdf706ad869f132d4c0f1593a6b6
89 lines
2.7 KiB
Bash
Executable File
89 lines
2.7 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# check in case a user was using this mechanism
|
|
if [ "x$ES_CLASSPATH" != "x" ]; then
|
|
cat >&2 << EOF
|
|
Error: Don't modify the classpath with ES_CLASSPATH. Best is to add
|
|
additional elements via the plugin mechanism, or if code must really be
|
|
added to the main classpath, add jars to lib/ (unsupported).
|
|
EOF
|
|
exit 1
|
|
fi
|
|
|
|
ES_CLASSPATH="$ES_HOME/lib/elasticsearch-2.2.0.jar:$ES_HOME/lib/*"
|
|
|
|
if [ "x$ES_MIN_MEM" = "x" ]; then
|
|
ES_MIN_MEM=8g
|
|
fi
|
|
if [ "x$ES_MAX_MEM" = "x" ]; then
|
|
ES_MAX_MEM=8g
|
|
fi
|
|
if [ "x$ES_HEAP_SIZE" != "x" ]; then
|
|
ES_MIN_MEM=$ES_HEAP_SIZE
|
|
ES_MAX_MEM=$ES_HEAP_SIZE
|
|
fi
|
|
|
|
# min and max heap sizes should be set to the same value to avoid
|
|
# stop-the-world GC pauses during resize, and so that we can lock the
|
|
# heap in memory on startup to prevent any of it from being swapped
|
|
# out.
|
|
JAVA_OPTS="$JAVA_OPTS -Xms${ES_MIN_MEM}"
|
|
JAVA_OPTS="$JAVA_OPTS -Xmx${ES_MAX_MEM}"
|
|
|
|
# new generation
|
|
if [ "x$ES_HEAP_NEWSIZE" != "x" ]; then
|
|
JAVA_OPTS="$JAVA_OPTS -Xmn${ES_HEAP_NEWSIZE}"
|
|
fi
|
|
|
|
# max direct memory
|
|
if [ "x$ES_DIRECT_SIZE" != "x" ]; then
|
|
JAVA_OPTS="$JAVA_OPTS -XX:MaxDirectMemorySize=${ES_DIRECT_SIZE}"
|
|
fi
|
|
|
|
# set to headless, just in case
|
|
JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true"
|
|
|
|
# Force the JVM to use IPv4 stack
|
|
if [ "x$ES_USE_IPV4" != "x" ]; then
|
|
JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true"
|
|
fi
|
|
|
|
# Add gc options. ES_GC_OPTS is unsupported, for internal testing
|
|
if [ "x$ES_GC_OPTS" = "x" ]; then
|
|
ES_GC_OPTS="$ES_GC_OPTS -XX:+UseParNewGC"
|
|
ES_GC_OPTS="$ES_GC_OPTS -XX:+UseConcMarkSweepGC"
|
|
ES_GC_OPTS="$ES_GC_OPTS -XX:CMSInitiatingOccupancyFraction=75"
|
|
ES_GC_OPTS="$ES_GC_OPTS -XX:+UseCMSInitiatingOccupancyOnly"
|
|
fi
|
|
|
|
JAVA_OPTS="$JAVA_OPTS $ES_GC_OPTS"
|
|
|
|
# GC logging options
|
|
if [ -n "$ES_GC_LOG_FILE" ]; then
|
|
JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCDetails"
|
|
JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCTimeStamps"
|
|
JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCDateStamps"
|
|
JAVA_OPTS="$JAVA_OPTS -XX:+PrintClassHistogram"
|
|
JAVA_OPTS="$JAVA_OPTS -XX:+PrintTenuringDistribution"
|
|
JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCApplicationStoppedTime"
|
|
JAVA_OPTS="$JAVA_OPTS -Xloggc:$ES_GC_LOG_FILE"
|
|
|
|
# Ensure that the directory for the log file exists: the JVM will not create it.
|
|
mkdir -p "`dirname \"$ES_GC_LOG_FILE\"`"
|
|
fi
|
|
|
|
# Causes the JVM to dump its heap on OutOfMemory.
|
|
JAVA_OPTS="$JAVA_OPTS -XX:+HeapDumpOnOutOfMemoryError"
|
|
# The path to the heap dump location, note directory must exists and have enough
|
|
# space for a full heap dump.
|
|
#JAVA_OPTS="$JAVA_OPTS -XX:HeapDumpPath=$ES_HOME/logs/heapdump.hprof"
|
|
|
|
# Disables explicit GC
|
|
JAVA_OPTS="$JAVA_OPTS -XX:+DisableExplicitGC"
|
|
|
|
# Ensure UTF-8 encoding by default (e.g. filenames)
|
|
JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"
|
|
|
|
# Use our provided JNA always versus the system one
|
|
JAVA_OPTS="$JAVA_OPTS -Djna.nosys=true"
|