diff --git a/roles/fluent-bit-servarr/defaults/main.yml b/roles/fluent-bit-servarr/defaults/main.yml new file mode 100644 index 0000000..31585ed --- /dev/null +++ b/roles/fluent-bit-servarr/defaults/main.yml @@ -0,0 +1 @@ +fluent_bit_servarr_outputs: [] diff --git a/roles/fluent-bit-servarr/handlers/main.yml b/roles/fluent-bit-servarr/handlers/main.yml new file mode 100644 index 0000000..7ad12c9 --- /dev/null +++ b/roles/fluent-bit-servarr/handlers/main.yml @@ -0,0 +1,4 @@ +- name: restart fluent-bit + service: + name: fluent-bit + state: restarted diff --git a/roles/fluent-bit-servarr/meta/main.yml b/roles/fluent-bit-servarr/meta/main.yml new file mode 100644 index 0000000..bbb2a56 --- /dev/null +++ b/roles/fluent-bit-servarr/meta/main.yml @@ -0,0 +1,2 @@ +dependencies: +- role: systemd-base diff --git a/roles/fluent-bit-servarr/tasks/main.yml b/roles/fluent-bit-servarr/tasks/main.yml new file mode 100644 index 0000000..0c563ad --- /dev/null +++ b/roles/fluent-bit-servarr/tasks/main.yml @@ -0,0 +1,12 @@ +- name: ensure fluent-bit configuration for servarr is in place + copy: + content: |+ + {{ fluent_bit_servarr_config | to_nice_yaml(indent=2) }} + dest: /etc/fluent-bit/include/servarr.yml + mode: u=rw,go=r + owner: root + group: root + notify: + - restart fluent-bit + tags: + - config diff --git a/roles/fluent-bit-servarr/vars/main.yml b/roles/fluent-bit-servarr/vars/main.yml new file mode 100644 index 0000000..bf273b0 --- /dev/null +++ b/roles/fluent-bit-servarr/vars/main.yml @@ -0,0 +1,45 @@ +servarr_logs: +- /var/log/prowlarr/*.txt +- /var/log/radarr/*.txt +- /var/log/sonarr/*.txt + +fluent_bit_servarr_config: + multiline_parsers: + - name: multiline_servarr + type: regex + flush_timeout: 500 + rules: + - state: start_state + regex: ^\d{4}-\d{2}-\d{2} [ 0-2]?\d:\d{2}:\d{2}\.\d+\| + next_state: cont + - state: cont + regex: ^(?!\d{4}-\d{2}-\d{2} [ 0-2]?\d:\d{2}:\d{2}\.\d+\|).* + next_state: cont + + parsers: + - name: servarr + format: regex + regex: /^(?\d{4}-\d{2}-\d{2} [ 0-2]?\d:\d{2}:\d{2}\.\d+)\|(?[^|]+)\|(?[^|]+)\|(?.*)/m + time_key: timestamp + time_format: '%Y-%m-%d %H:%M:%S.%L' + + pipeline: + inputs: + - name: tail + alias: servarr + tag: servarr + path: '{{ servarr_logs | join(",") }}' + path_key: filename + multiline.parser: multiline_servarr + db: /var/lib/fluent-bit/servarr.db + read_from_head: true + + filters: + - name: parser + alias: servarr + match: servarr + key_name: log + parser: servarr + reserve_data: true + + outputs: '{{ fluent_bit_servarr_outputs }}' diff --git a/servarr.yml b/servarr.yml index d731add..5d63cb8 100644 --- a/servarr.yml +++ b/servarr.yml @@ -1,3 +1,9 @@ - import_playbook: prowlarr.yml - import_playbook: radarr.yml - import_playbook: sonarr.yml + +- hosts: servarr + roles: + - role: fluent-bit-servarr + tags: + - fluent-bit