Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions docs/logstash-pipelines.md
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,10 @@ Here the `default` output only receives the events that haven't already been sen

Every Output can have a `congestion:` option with a numerical value. If the Redis key already holds more items than the value says, the output will stop.

### Unsafe shutdown ###

If you need unsafe Logstash shutdowns, e.g. for testing, you can set `logstash_pipeline_unsafe_shutdown` to `true`. If you want better controll over which pipeline is allowed to shutdown unsafely, there are `ansible_input_unsafe_shutdown`and `ansible_forwarder_unsafe_shutdown` for default pipelines. And every pipeline has it's own `unsafe_shutdown` setting. All three default to the value of `logstash_pipeline_unsafe_shutdown` which by itself defaults to `false`.

## Caveats ##

There are still some minor issues you need to keep in mind:
Expand Down
1 change: 1 addition & 0 deletions molecule/elasticstack_default/converge.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
elasticstack_release: "{{ lookup('env', 'ELASTIC_RELEASE') | int}}"
elasticsearch_heap: "1"
elasticstack_full_stack: true
logstash_pipeline_unsafe_shutdown: true
beats_filebeat_syslog_udp: true
beats_filebeat_syslog_tcp: true
beats_filebeat_modules:
Expand Down
1 change: 1 addition & 0 deletions molecule/logstash_full_stack-oss/converge.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
elasticstack_full_stack: true
elasticstack_variant: oss
logstash_security: false
logstash_pipeline_unsafe_shutdown: true
elasticstack_security: false
beats_filebeat_syslog_udp: true
beats_filebeat_syslog_tcp: true
Expand Down
1 change: 1 addition & 0 deletions molecule/logstash_pipelines/converge.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
key: forwarder
logstash_pipeline_identifier_field_name: "[mytest][pipelines]"
logstash_pipeline_identifier_defaults: true
logstash_pipeline_unsafe_shutdown: true
elasticstack_release: "{{ lookup('env', 'ELASTIC_RELEASE') | int}}"
elasticstack_full_stack: false
tasks:
Expand Down
1 change: 1 addition & 0 deletions molecule/logstash_specific_version/converge.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
logstash_logging_console: false
logstash_logging_slow_file: false
logstash_pipeline_identifier: false
logstash_pipeline_unsafe_shutdown: true
elasticstack_release: "{{ lookup('env', 'ELASTIC_RELEASE') | int}}"
elasticstack_full_stack: false
tasks:
Expand Down
9 changes: 5 additions & 4 deletions roles/logstash/defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ logstash_config_path_logs: /var/log/logstash
# pipeline configuration #
logstash_manage_pipelines: true
logstash_queue_type: persisted
logstash_pipeline_unsafe_shutdown: false

# this will deactivate all pipeline management
logstash_no_pipelines: false
Expand All @@ -38,10 +39,10 @@ logstash_pipelines:
logstash_elasticsearch_output: true
logstash_validate_after_inactivity: '300'
logstash_beats_input: true
ansible_input_queue_type: memory
ansible_input_queue_max_bytes: 1gb
ansible_forwarder_queue_type: memory
ansible_forwarder_queue_max_bytes: 1gb
logstash_input_queue_type: memory
logstash_input_queue_max_bytes: 1gb
logstash_forwarder_queue_type: memory
logstash_forwarder_queue_max_bytes: 1gb
logstash_sniffing: false

# logstash security
Expand Down
36 changes: 24 additions & 12 deletions roles/logstash/templates/pipelines.yml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -19,21 +19,29 @@
# Default beat input #
# Autoconfigured Redis outputs: input

- pipeline.id: ansible-input
path.config: "/etc/logstash/conf.d/ansible-input/*.conf"
queue.type: {{ ansible_input_queue_type }}
queue.max_bytes: {{ ansible_input_queue_max_bytes }}
- pipeline
id: ansible-input
unsafe_shutdown: {{ ansible_input_unsafe_shutdown | default({{ logstash_pipeline_unsafe_shutdown }}) }}
path
config: "/etc/logstash/conf.d/ansible-input/*.conf"
queue
type: {{ logstash_input_queue_type }}
max_bytes: {{ logstash_input_queue_max_bytes }}

{% endif %}
{% if logstash_elasticsearch_output | bool %}

# Default elasticsearch output #
# Autoconfigured Redis input: forwarder

- pipeline.id: ansible-forwarder
path.config: "/etc/logstash/conf.d/ansible-forwarder/*.conf"
queue.type: {{ ansible_forwarder_queue_type }}
queue.max_bytes: {{ ansible_forwarder_queue_max_bytes }}
- pipeline
id: ansible-forwarder
unsafe_shutdown: {{ ansible_forwarder_unsafe_shutdown | default({{ logstash_pipeline_unsafe_shutdown }}) }}
path
config: "/etc/logstash/conf.d/ansible-forwarder/*.conf"
queue
type: {{ logstash_forwarder_queue_type }}
max_bytes: {{ logstash_forwarder_queue_max_bytes }}

{% endif %}
{% if logstash_pipelines is defined %}
Expand Down Expand Up @@ -64,10 +72,14 @@

{% endif %}

- pipeline.id: {{ item.name }}
path.config: "/etc/logstash/conf.d/{{ item.name }}/*.conf"
queue.type: {{ item.queue_type | default('memory') }}
queue.max_bytes: {{ item.queue_max_bytes | default('1gb') }}
- pipeline
id: {{ item.name }}
unsafe_shutdown: {{ item.unsafe_shutdown | default({{ logstash_pipeline_unsafe_shutdown }}) }}
path
config: "/etc/logstash/conf.d/{{ item.name }}/*.conf"
queue
type: {{ item.queue_type | default('memory') }}
max_bytes: {{ item.queue_max_bytes | default('1gb') }}

{% endfor %}
{% endif %}