diff options
| author | 2022-03-15 20:03:28 +0000 | |
|---|---|---|
| committer | 2022-03-15 20:03:28 +0000 | |
| commit | 32ea5455e343f43d4853b7667f740b69d4d71a00 (patch) | |
| tree | 98a8a633beb2f3a0f41c7a63492788c88807a28a | |
| parent | Add Kibana and NGINX config for Kibana (diff) | |
Add Filebeat
| -rw-r--r-- | roles/filebeat/README.md | 3 | ||||
| -rw-r--r-- | roles/filebeat/handlers/main.yml | 6 | ||||
| -rw-r--r-- | roles/filebeat/tasks/main.yml | 57 | ||||
| -rw-r--r-- | roles/filebeat/templates/filebeat.yml.j2 | 97 | ||||
| -rw-r--r-- | roles/filebeat/vars/main/vars.yml | 7 | ||||
| -rw-r--r-- | roles/filebeat/vars/main/vault.yml | 8 |
6 files changed, 178 insertions, 0 deletions
diff --git a/roles/filebeat/README.md b/roles/filebeat/README.md new file mode 100644 index 0000000..7b65e9a --- /dev/null +++ b/roles/filebeat/README.md @@ -0,0 +1,3 @@ +# Role "filebeat" + +The filebeat role installs and configures the filebeat agent, used to ship logs to Elasticsearch. diff --git a/roles/filebeat/handlers/main.yml b/roles/filebeat/handlers/main.yml new file mode 100644 index 0000000..5580f47 --- /dev/null +++ b/roles/filebeat/handlers/main.yml @@ -0,0 +1,6 @@ +- name: restart filebeat + service: + state: restarted + name: filebeat + tags: + - role::filebeat diff --git a/roles/filebeat/tasks/main.yml b/roles/filebeat/tasks/main.yml new file mode 100644 index 0000000..ba3f8e9 --- /dev/null +++ b/roles/filebeat/tasks/main.yml @@ -0,0 +1,57 @@ +--- +- name: Install GPG + package: + name: gpg + state: present + tags: + - role::filebeat + +- name: Install Elasticsearch signing key + shell: >- + wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | + gpg --yes --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg + args: + creates: /usr/share/keyrings/elasticsearch-keyring.gpg + tags: + - role::filebeat + +- name: Add Elasticsearch repository to apt + copy: + content: >- + deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] + https://artifacts.elastic.co/packages/8.x/apt stable main + dest: /etc/apt/sources.list.d/elastic-8.x.list + owner: root + group: root + mode: 0644 + tags: + - role::filebeat + register: add_filebeat_repo + +- name: Install Filebeat + apt: + pkg: filebeat + state: present + update_cache: "{{ add_filebeat_repo.changed }}" + tags: + - role::filebeat + +- name: Configure Filebeat + template: + src: filebeat.yml.j2 + dest: /etc/filebeat/filebeat.yml + mode: 0644 + owner: root + group: root + tags: + - role::filebeat + notify: + - restart filebeat + +- name: Start and enable Filebeat + service: + name: filebeat + state: started + enabled: true + tags: + - role::filebeat diff --git a/roles/filebeat/templates/filebeat.yml.j2 b/roles/filebeat/templates/filebeat.yml.j2 new file mode 100644 index 0000000..c2b48f7 --- /dev/null +++ b/roles/filebeat/templates/filebeat.yml.j2 @@ -0,0 +1,97 @@ +# For more available modules and options, please see the filebeat.reference.yml sample +# configuration file. + +# ============================== Filebeat inputs =============================== + +filebeat.inputs: + +# Each - is an input. Most options can be set at the input level, so +# you can use different inputs for various configurations. +# Below are the input specific configurations. + +# filestream is an input for collecting log messages from files. +- type: filestream + + # Change to true to enable this input configuration. + enabled: false + + # Paths that should be crawled and fetched. Glob based paths. + paths: + - /var/log/*.log + + # Exclude lines. A list of regular expressions to match. It drops the lines that are + # matching any regular expression from the list. + #exclude_lines: ['^DBG'] + + # Include lines. A list of regular expressions to match. It exports the lines that are + # matching any regular expression from the list. + #include_lines: ['^ERR', '^WARN'] + + # Exclude files. A list of regular expressions to match. Filebeat drops the files that + # are matching any regular expression from the list. By default, no files are dropped. + #prospector.scanner.exclude_files: ['.gz$'] + + # Optional additional fields. These fields can be freely picked + # to add additional information to the crawled log files for filtering + #fields: + # level: debug + # review: 1 + +# ============================== Filebeat modules ============================== + +filebeat.config.modules: + # Glob pattern for configuration loading + path: ${path.config}/modules.d/*.yml + + # Set to true to enable config reloading + reload.enabled: false + + # Period on which files under path should be checked for changes + #reload.period: 10s + +filebeat.modules: +{% if "nginx" in group_names %} +- module: nginx + access: + enabled: {{ 'nginx' in group_names }} + error: + enabled: {} +{% endif %} +{% if inventory_hostname == "lovelace" %} +- module: postgresql + log: + enabled: {{ inventory_hostname == "lovelace" }} +{% endif %} +- module: system + auth: + + + +# ======================= Elasticsearch template setting ======================= + +setup.template.settings: + index.number_of_shards: 1 + +# ================================== Outputs =================================== + +# Configure what output to use when sending the data collected by the beat. + +# ---------------------------- Elasticsearch Output ---------------------------- +output.elasticsearch: + # Array of hosts to connect to. + hosts: ["{{ filebeat_elasticsearch_host }}"] + + protocol: "https" + username: "{{ filebeat_elastic_username }}" + password: "{{ filebeat_elastic_password}}" + + ssl: + enabled: true + ca_trusted_fingerprint: "{{ filebeat_elastic_fingerprint }}" + +processors: + - add_host_metadata: + when.not.contains.tags: forwarded + - add_cloud_metadata: ~ + - add_docker_metadata: ~ + - add_kubernetes_metadata: ~ diff --git a/roles/filebeat/vars/main/vars.yml b/roles/filebeat/vars/main/vars.yml new file mode 100644 index 0000000..ec23785 --- /dev/null +++ b/roles/filebeat/vars/main/vars.yml @@ -0,0 +1,7 @@ +filebeat_kibana_host: "http://10.5.0.0:5601" +filebeat_elasticsearch_host: "10.5.0.0:9200" + +filebeat_elastic_username: "pydis" +filebeat_elastic_password: "{{ encrypted_filebeat_elastic_password }}" +filebeat_elastic_fingerprint: >- + e75cfe8591cb5d30ce31f9a094053f4e0090ebd057a120ac9dcbbf5754fb5a73 diff --git a/roles/filebeat/vars/main/vault.yml b/roles/filebeat/vars/main/vault.yml new file mode 100644 index 0000000..b2eca18 --- /dev/null +++ b/roles/filebeat/vars/main/vault.yml @@ -0,0 +1,8 @@ +$ANSIBLE_VAULT;1.1;AES256 +62373038653236313435346433326232383433306265326437303133636536393163373333666432 +3136356638363739653737326363663361653834633038350a356334313264653932333935386665 +39383738393839623937616231633430633465366537363032323133636133653963383036616234 +3433643532393937360a343938643730376330396537343133616462363339643066393631623137 +64616336666638623030343065633965306531303933646232383334333162336438643433623462 +31613039323033333063323736323262326638333765663930633532363531323462396264383966 +306636386335386565636633316235653332 |