diff --git a/CHANGELOG.md b/CHANGELOG.md index 279f4c6d..c12febc0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +* **role:logstash**: Add optional variables `logstash__monitoring_cluster_uuid`, `logstash__monitoring_enabled`. * **role:elasticsearch**: Add optional variables `elasticsearch__cluster_routing_allocation_disk_watermark_flood_stage_frozen_max_headroom`, `elasticsearch__cluster_routing_allocation_disk_watermark_flood_stage_max_headroom`, `elasticsearch__cluster_routing_allocation_disk_watermark_high_max_headroom`, `elasticsearch__cluster_routing_allocation_disk_watermark_low_max_headroom`. * **role:elasticsearch**: Add optional variable `elasticsearch__cluster_routing_allocation_disk_watermark_flood_stage_frozen`. * **role:graylog_datanode**: Add optional variable `graylog_datanode__raw`. diff --git a/roles/logstash/README.md b/roles/logstash/README.md index cd9a5f0b..3de468de 100644 --- a/roles/logstash/README.md +++ b/roles/logstash/README.md @@ -84,6 +84,18 @@ If you use the [logstash playbook](https://github.com/Linuxfabrik/lfops/blob/mai * Type: String. * Default: `'info'` +`logstash__monitoring_cluster_uuid` + +* Elasticsearch Cluster UUID. Binds the metrics of Logstash to this specific cluster. +* Type: String. +* Default: unset + +`logstash__monitoring_enabled` + +* Enables or disables default collection of Logstash monitoring data. +* Type: Bool. +* Default: `true` + `logstash__node_name` * A descriptive name for the node. @@ -218,6 +230,8 @@ logstash__grok_patterns__host_var: state: 'absent' logstash__java_opts: '-Djava.io.tmpdir={{ logstash__path_data }}/tmp' logstash__log_level: 'info' +logstash__monitoring_cluster_uuid: 'zk-HjQtYQGyL3NFSSu7InA' +logstash__monitoring_enabled: false logstash__node_name: '{{ ansible_facts["nodename"] }}' logstash__path_data: '/var/lib/logstash' logstash__path_logs: '/var/log/logstash' diff --git a/roles/logstash/defaults/main.yml b/roles/logstash/defaults/main.yml index 9c184b69..930d342c 100644 --- a/roles/logstash/defaults/main.yml +++ b/roles/logstash/defaults/main.yml @@ -14,6 +14,7 @@ logstash__java_opts: > -Xms{{ [((ansible_facts["memtotal_mb"] * 0.6) | int), 8192] | min }}m -Xmx{{ [((ansible_facts["memtotal_mb"] * 0.6) | int), 8192] | min }}m logstash__log_level: 'info' +logstash__monitoring_enabled: true logstash__node_name: '{{ ansible_facts["nodename"] }}' logstash__path_data: '/var/lib/logstash' logstash__path_logs: '/var/log/logstash' diff --git a/roles/logstash/tasks/main.yml b/roles/logstash/tasks/main.yml index 021909c5..3bf4de78 100644 --- a/roles/logstash/tasks/main.yml +++ b/roles/logstash/tasks/main.yml @@ -1,3 +1,15 @@ +- block: + + - name: 'Ensure cluster uuid is valid' + ansible.builtin.assert: + that: + - 'logstash__monitoring_cluster_uuid is ansible.builtin.regex("^[A-Za-z0-9_-]{22}$")' + fail_msg: '`logstash__monitoring_cluster_uuid: {{ logstash__monitoring_cluster_uuid }}` is not a valid cluster uuid' + when: 'logstash__monitoring_cluster_uuid is defined and logstash__monitoring_cluster_uuid | length > 0' + + tags: + - 'always' + - block: - name: 'Install logstash' diff --git a/roles/logstash/templates/etc/logstash/logstash.yml.j2 b/roles/logstash/templates/etc/logstash/logstash.yml.j2 index 45106d1d..a2d3900d 100644 --- a/roles/logstash/templates/etc/logstash/logstash.yml.j2 +++ b/roles/logstash/templates/etc/logstash/logstash.yml.j2 @@ -1,5 +1,5 @@ # {{ ansible_managed }} -# 2026012801 +# 2026042801 # Settings file in YAML # @@ -374,6 +374,13 @@ path.logs: '{{ logstash__path_logs }}' #xpack.geoip.downloader.enabled: true #xpack.geoip.downloader.endpoint: "https://geoip.elastic.co/v1/database" +# Stack Monitoring +# https://www.elastic.co/docs/reference/logstash/monitoring-with-elastic-agent +monitoring.enabled: {{ logstash__monitoring_enabled | bool | string | lower }} +{% if logstash__monitoring_cluster_uuid is defined and logstash__monitoring_cluster_uuid | length > 0 %} +monitoring.cluster_uuid: '{{ logstash__monitoring_cluster_uuid }}' +{% endif %} + {% if logstash__raw | length %} # raw {{ logstash__raw }}