No description
Find a file
Adrien Waksberg 909083757f
Some checks failed
/ lint (push) Successful in 1m35s
/ molecule (push) Failing after 7m17s
release: version v1.2.0
2025-06-07 11:04:06 +02:00
.forgejo/workflows chore: add quote for all string in yaml 2025-06-07 10:54:10 +02:00
defaults chore: add quote for all string in yaml 2025-06-07 10:54:10 +02:00
handlers chore: add quote for all string in yaml 2025-06-07 10:54:10 +02:00
meta test: add support debian 13 2025-06-07 11:03:11 +02:00
molecule/default test: add support debian 13 2025-06-07 11:03:11 +02:00
tasks chore: add quote for all string in yaml 2025-06-07 10:54:10 +02:00
templates feat: manage logging config 2024-03-12 16:59:54 +01:00
.gitignore chore: add quote for all string in yaml 2025-06-07 10:54:10 +02:00
.gitlab-ci.yml chore: add quote for all string in yaml 2025-06-07 10:54:10 +02:00
.yamllint chore: add quote for all string in yaml 2025-06-07 10:54:10 +02:00
CHANGELOG.md release: version v1.2.0 2025-06-07 11:04:06 +02:00
LICENSE first version 2019-09-10 08:57:26 +02:00
README.md release: version v1.2.0 2025-06-07 11:04:06 +02:00

Ansible role: Logstash

Version License Build

Install and configure logstash

Requirements

  • Ansible >= 2.9
  • Debian
    • Bookworm
    • Trixie

Role variables

  • logstash_major_version set major version to install- (default: 7)
  • logstash_plugins - array with the plugins to install
  - name: logstash-output-influxdb
    state: present
  path.data: /var/lib/logstash
  path.logs: /var/log/logstash
  • logstash_inputs - hash with the inputs configurations
  file:
    path: /var/log/syslog
  beats:
    port: 5444
  • logstash_outputs - array with the outputs configuration
  - >
    file {
      path => "/var/log/syslog"
      codec => "json"
    }
  • logstash_filters - array with the filters configuration
  - >
    grok {
      match => { "message" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}" }
    }
  • logstash_pattern - hash with grok patterns
  postfix: |
    # Syslog stuff
    PROCESS ([\w._\/%-]+)
    COMPID postfix\/%{PROCESS:process}(?:\[%{NUMBER:pid}\])?
    POSTFIX (?:%{SYSLOGTIMESTAMP:timestamp}|%{TIMESTAMP_ISO8601:timestamp8601}) (?:%{SYSLOGFACILITY} )?%{SYSLOGHOST:logsource} %{COMPID}:
  • logstash_logging_config - hash with logging config (log4j2)
status: "error"
name: "LogstashPropertiesConfig"
appender.rolling.type: "RollingFile"
appender.rolling.name: "plain_rolling"
appender.rolling.fileName: "${sys:ls.logs}/logstash-plain.log"
appender.rolling.filePattern: "${sys:ls.logs}/logstash-plain-%d{yyyy-MM-dd}-%i.log.gz"
appender.rolling.policies.type: "Policies"
appender.rolling.policies.time.type: "TimeBasedTriggeringPolicy"
appender.rolling.policies.time.interval: "1"
appender.rolling.policies.time.modulate: true
appender.rolling.layout.type: "PatternLayout"
appender.rolling.layout.pattern: "[%d{ISO8601}][%-5p][%-25c]%notEmpty{[%X{pipeline.id}]}%notEmpty{[%X{plugin.id}]} %m%n"
appender.rolling.policies.size.type: "SizeBasedTriggeringPolicy"
appender.rolling.policies.size.size: "100MB"
appender.rolling.strategy.type: "DefaultRolloverStrategy"
appender.rolling.strategy.max: 30
appender.rolling.avoid_pipelined_filter.type: "PipelineRoutingFilter"
appender.routing.type: "PipelineRouting"
appender.routing.name: "pipeline_routing_appender"
appender.routing.pipeline.type: "RollingFile"
appender.routing.pipeline.name: "appender-${ctx:pipeline.id}"
appender.routing.pipeline.fileName: "${sys:ls.logs}/pipeline_${ctx:pipeline.id}.log"
appender.routing.pipeline.filePattern: "${sys:ls.logs}/pipeline_${ctx:pipeline.id}.%i.log.gz"
appender.routing.pipeline.layout.type: "PatternLayout"
appender.routing.pipeline.layout.pattern: "[%d{ISO8601}][%-5p][%-25c] %m%n"
appender.routing.pipeline.policy.type: "SizeBasedTriggeringPolicy"
appender.routing.pipeline.policy.size: "100MB"
appender.routing.pipeline.strategy.type: "DefaultRolloverStrategy"
appender.routing.pipeline.strategy.max: 30
rootLogger.level: "${sys:ls.log.level}"
rootLogger.appenderRef.rolling.ref: "${sys:ls.log.format}_rolling"
rootLogger.appenderRef.routing.ref: "pipeline_routing_appender"

How to use

- hosts: server
  roles:
    - logstash

Development

Test with molecule and docker

  • install docker
  • install python3 and python3-pip
  • install molecule and dependencies pip3 install molecule molecule-docker docker ansible-lint pytest-testinfra yamllint
  • run molecule test

License

Copyright (c) 2019 Adrien Waksberg

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.