From 1e2462351b535bd064ef5aa34b18c197b860b8a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eric=20B=C3=BCrki?= Date: Tue, 28 Apr 2026 10:09:53 +0200 Subject: [PATCH 1/4] added logstash__monitoring_cluster_uuid, logstash__monitoring_enabled --- roles/logstash/README.md | 12 ++++++++++++ roles/logstash/defaults/main.yml | 1 + roles/logstash/tasks/main.yml | 12 ++++++++++++ .../logstash/templates/etc/logstash/logstash.yml.j2 | 7 +++++++ 4 files changed, 32 insertions(+) diff --git a/roles/logstash/README.md b/roles/logstash/README.md index cd9a5f0b..57d7ed26 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. 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..de36d7cc 100644 --- a/roles/logstash/templates/etc/logstash/logstash.yml.j2 +++ b/roles/logstash/templates/etc/logstash/logstash.yml.j2 @@ -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 | 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 }} From 53cba35f379f26f53504af432917202a43064337 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eric=20B=C3=BCrki?= Date: Tue, 28 Apr 2026 14:13:32 +0200 Subject: [PATCH 2/4] update template timestamp, add examples --- roles/logstash/README.md | 2 ++ roles/logstash/templates/etc/logstash/logstash.yml.j2 | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/roles/logstash/README.md b/roles/logstash/README.md index 57d7ed26..3de468de 100644 --- a/roles/logstash/README.md +++ b/roles/logstash/README.md @@ -230,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/templates/etc/logstash/logstash.yml.j2 b/roles/logstash/templates/etc/logstash/logstash.yml.j2 index de36d7cc..e79484c5 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 # From 02f03361ded1a561c4a70470e9b43f6baa5f3414 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eric=20B=C3=BCrki?= Date: Tue, 28 Apr 2026 15:34:12 +0200 Subject: [PATCH 3/4] update changelog, update template --- CHANGELOG.md | 2 ++ roles/logstash/templates/etc/logstash/logstash.yml.j2 | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d96cfaf6..22af8e37 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +* **role:logstash**: Add variable `logstash__monitoring_enabled`. +* **role:logstash**: Add optional variable `logstash__monitoring_cluster_uuid`. * **role:graylog_datanode**: Add optional variable `graylog_datanode__raw`. * **role:graylog_datanode**: Add optional variables `graylog_datanode__path_repos`, `graylog_datanode__node_search_cache_size` to configure searchable snapshot locations and size of disk-based searchable snapshot cache. * **role:infomaniak_vm**: Add `keep_port_on_absent` subkey on `infomaniak_vm__networks` entries to preserve the port (and its fixed IP) when the VM is set to `infomaniak_vm__state: 'absent'`, so the same IP can be re-used diff --git a/roles/logstash/templates/etc/logstash/logstash.yml.j2 b/roles/logstash/templates/etc/logstash/logstash.yml.j2 index e79484c5..a2d3900d 100644 --- a/roles/logstash/templates/etc/logstash/logstash.yml.j2 +++ b/roles/logstash/templates/etc/logstash/logstash.yml.j2 @@ -376,9 +376,9 @@ path.logs: '{{ logstash__path_logs }}' # Stack Monitoring # https://www.elastic.co/docs/reference/logstash/monitoring-with-elastic-agent -monitoring.enabled: {{ logstash__monitoring_enabled | string | lower }} +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 }} +monitoring.cluster_uuid: '{{ logstash__monitoring_cluster_uuid }}' {% endif %} {% if logstash__raw | length %} From d00edc9dd3def4208ba8cf0e271fb45c7a72111a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eric=20B=C3=BCrki?= Date: Tue, 28 Apr 2026 15:39:37 +0200 Subject: [PATCH 4/4] update changelog --- CHANGELOG.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 22af8e37..2d52e760 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,8 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added -* **role:logstash**: Add variable `logstash__monitoring_enabled`. -* **role:logstash**: Add optional variable `logstash__monitoring_cluster_uuid`. +* **role:logstash**: Add optional variables `logstash__monitoring_cluster_uuid`, `logstash__monitoring_enabled`. * **role:graylog_datanode**: Add optional variable `graylog_datanode__raw`. * **role:graylog_datanode**: Add optional variables `graylog_datanode__path_repos`, `graylog_datanode__node_search_cache_size` to configure searchable snapshot locations and size of disk-based searchable snapshot cache. * **role:infomaniak_vm**: Add `keep_port_on_absent` subkey on `infomaniak_vm__networks` entries to preserve the port (and its fixed IP) when the VM is set to `infomaniak_vm__state: 'absent'`, so the same IP can be re-used