diff --git a/elk_metrics_6x/roles/elastic_dependencies/defaults/main.yml b/elk_metrics_6x/roles/elastic_dependencies/defaults/main.yml index bf038c8f..8554a42f 100644 --- a/elk_metrics_6x/roles/elastic_dependencies/defaults/main.yml +++ b/elk_metrics_6x/roles/elastic_dependencies/defaults/main.yml @@ -42,3 +42,8 @@ elastic_lxc_template_config: 2: aa_profile: lxc.aa_profile mount: lxc.mount.entry + +# Set the elastic search heap size. If this option is undefined the value will +# be derived automatically using 1/4 of the available RAM for logstash and 1/2 +# of the available RAM for elasticsearch. The value is expected to be in MiB. +# elastic_heap_size_default: 10240 # type `int` diff --git a/elk_metrics_6x/roles/elastic_dependencies/tasks/main.yml b/elk_metrics_6x/roles/elastic_dependencies/tasks/main.yml index e35394f5..d78fc92c 100644 --- a/elk_metrics_6x/roles/elastic_dependencies/tasks/main.yml +++ b/elk_metrics_6x/roles/elastic_dependencies/tasks/main.yml @@ -49,9 +49,8 @@ tags: - always -- name: Set elastic heap defaults +- name: Set elastic log rotate path set_fact: - elastic_heap_size_default: "{{ _elastic_heap_size_default }}" elastic_log_rotate_path: "/var/log/{{ service_name }}" - name: Configure systcl vm.max_map_count=524288 on elastic hosts diff --git a/elk_metrics_6x/roles/elastic_logstash/defaults/main.yml b/elk_metrics_6x/roles/elastic_logstash/defaults/main.yml index a401c77c..65d3f6b7 100644 --- a/elk_metrics_6x/roles/elastic_logstash/defaults/main.yml +++ b/elk_metrics_6x/roles/elastic_logstash/defaults/main.yml @@ -86,3 +86,8 @@ logstash_arcsight_event_brokers: [] ## detect the media type where the queue will exist. If the media type is ## "rotational" in memory queues will be used. # logstash_queue_type: + +# Set the logstash search heap size. If this option is undefined the value will +# be derived automatically using 1/4 of the available RAM for logstash and 1/2 +# of the available RAM for elasticsearch. The value is expected to be in MiB. +# logstash_heap_size: 10240 # type `int` diff --git a/elk_metrics_6x/roles/elastic_logstash/tasks/main.yml b/elk_metrics_6x/roles/elastic_logstash/tasks/main.yml index 98ade79a..a0d84dd0 100644 --- a/elk_metrics_6x/roles/elastic_logstash/tasks/main.yml +++ b/elk_metrics_6x/roles/elastic_logstash/tasks/main.yml @@ -71,6 +71,12 @@ - key: LS_OPEN_FILES value: 32768 +- name: Set service specific haap size + set_fact: + _service_heap_size: "{{ logstash_heap_size }}" + when: + - logstash_heap_size is defined + - name: Drop jvm conf file(s) template: src: "{{ item.src }}" diff --git a/elk_metrics_6x/roles/elasticsearch/defaults/main.yml b/elk_metrics_6x/roles/elasticsearch/defaults/main.yml index 3750d6bc..97fccbe3 100644 --- a/elk_metrics_6x/roles/elasticsearch/defaults/main.yml +++ b/elk_metrics_6x/roles/elasticsearch/defaults/main.yml @@ -28,3 +28,8 @@ elastic_plugins: - ingest-attachment - ingest-geoip - ingest-user-agent + +# Set the logstash search heap size. If this option is undefined the value will +# be derived automatically using 1/4 of the available RAM for logstash and 1/2 +# of the available RAM for elasticsearch. The value is expected to be in MiB. +# elastic_heap_size: 10240 # type `int` diff --git a/elk_metrics_6x/roles/elasticsearch/tasks/main.yml b/elk_metrics_6x/roles/elasticsearch/tasks/main.yml index 78d9ecf4..0c08ede8 100644 --- a/elk_metrics_6x/roles/elasticsearch/tasks/main.yml +++ b/elk_metrics_6x/roles/elasticsearch/tasks/main.yml @@ -81,6 +81,12 @@ - key: MAX_MAP_COUNT value: 524288 +- name: Set service specific haap size + set_fact: + _service_heap_size: "{{ elastic_heap_size }}" + when: + - elastic_heap_size is defined + - name: Drop jvm conf file(s) template: src: "{{ item.src }}" diff --git a/elk_metrics_6x/roles/elasticsearch/vars/vars_default.yml b/elk_metrics_6x/roles/elasticsearch/vars/vars_default.yml index 147f27f2..727a28d3 100644 --- a/elk_metrics_6x/roles/elasticsearch/vars/vars_default.yml +++ b/elk_metrics_6x/roles/elasticsearch/vars/vars_default.yml @@ -13,5 +13,4 @@ # See the License for the specific language governing permissions and # limitations under the License. -# Set elasticsearch facts -elastic_heap_size: "{{ elastic_heap_size_default }}" +place_holder: true diff --git a/elk_metrics_6x/roles/elasticsearch/vars/vars_kibana.yml b/elk_metrics_6x/roles/elasticsearch/vars/vars_kibana.yml index 7ba4f17d..f76d67cc 100644 --- a/elk_metrics_6x/roles/elasticsearch/vars/vars_kibana.yml +++ b/elk_metrics_6x/roles/elasticsearch/vars/vars_kibana.yml @@ -18,7 +18,6 @@ elasticsearch_node_master: false elasticsearch_node_data: false elasticsearch_node_ingest: false elastic_coordination_node: true -elastic_heap_size: "{{ (elastic_heap_size_default | int) // 3 }}" # This variable is redefined because kibana runs elasticsearch but only in a # load balancer capacity. diff --git a/elk_metrics_6x/templates/jvm.options.j2 b/elk_metrics_6x/templates/jvm.options.j2 index 6ccde2d8..f2e76559 100644 --- a/elk_metrics_6x/templates/jvm.options.j2 +++ b/elk_metrics_6x/templates/jvm.options.j2 @@ -1,8 +1,12 @@ ## JVM configuration -{% if (not (elasticsearch_node_master | default(master_node)) | bool) and (not (elasticsearch_node_data | default(data_node)) | bool) %} -{% set heap_size = (elastic_heap_size_default | int) // 2 %} +{% if _service_heap_size is defined %} +{% set heap_size = _service_heap_size %} {% else %} -{% set heap_size = (elastic_heap_size_default | int) %} +{% if (not (elasticsearch_node_master | default(master_node)) | bool) and (not (elasticsearch_node_data | default(data_node)) | bool) %} +{% set heap_size = elastic_heap_size_default | default((_elastic_heap_size_default | int) // 2) %} +{% else %} +{% set heap_size = elastic_heap_size_default | default(_elastic_heap_size_default | int) %} +{% endif %} {% endif %} # Xms represents the initial size of total heap space -Xms{{ heap_size }}m