Skip to content

Commit 866b640

Browse files
committed
ENH: Add filebeat
Install filebeat on the stack VM and then add filebeat to config to all services that provide logs
1 parent fab9306 commit 866b640

File tree

14 files changed

+213
-0
lines changed

14 files changed

+213
-0
lines changed

chatops_deployment/ansible/configure.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,15 @@
88
ansible.builtin.include_role:
99
name: add_ssh_key
1010

11+
12+
- name: Set up filebeat
13+
hosts: stack
14+
gather_facts: false
15+
roles:
16+
- role: filebeat
17+
tags:
18+
- filebeat
19+
1120
- name: Configure load balancer
1221
hosts: stack
1322
roles:
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
- type: filestream
3+
id: alertmanager
4+
enabled: true
5+
paths:
6+
- /opt/alertmanager/alertmanager.log
7+
fields:
8+
service.name: alertmanager
9+
fields_under_root: true

chatops_deployment/ansible/roles/alertmanager/tasks/main.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,3 +66,12 @@
6666
owner: alertmanager
6767
group: alertmanager
6868
mode: "0770"
69+
70+
- name: Copy filebeat external config
71+
become: true
72+
ansible.builtin.copy:
73+
src: alertmanager.filebeat.yml
74+
dest: /var/filebeat/alertmanager.filebeat.yml
75+
owner: root
76+
group: root
77+
mode: "0640"
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
- type: filestream
3+
id: docker
4+
prospector.scanner.symlinks: true
5+
paths:
6+
- "/var/lib/docker/containers/*/*.log"
7+
parsers:
8+
- container:
9+
stream: all
10+
format: docker
11+
- multiline:
12+
type: pattern
13+
pattern: "^\\[\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2},\\d{3}\\]"
14+
negate: true
15+
match: after
16+
fields:
17+
service.name: chatops
18+
fields_under_root: true

chatops_deployment/ansible/roles/chatops/tasks/main.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,3 +54,12 @@
5454
- /etc/chatops/config.yml:/usr/src/app/cloud_chatops/config/config.yml
5555
- /etc/chatops/secrets.yml:/usr/src/app/cloud_chatops/secrets/secrets.yml
5656
network_mode: host
57+
58+
- name: Copy filebeat external config
59+
become: true
60+
ansible.builtin.copy:
61+
src: docker.filebeat.yml
62+
dest: /var/filebeat/docker.filebeat.yml
63+
owner: root
64+
group: root
65+
mode: "0640"
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
- name: Restart Filebeat
3+
become: true
4+
ansible.builtin.systemd_service:
5+
name: filebeat.service
6+
state: restarted
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
---
2+
- name: Install prerequisite packages
3+
become: true
4+
ansible.builtin.apt:
5+
pkg:
6+
- apt-transport-https
7+
- software-properties-common
8+
- wget
9+
update_cache: true
10+
11+
- name: Create key directory
12+
become: true
13+
ansible.builtin.file:
14+
path: /etc/apt/keyrings
15+
state: directory
16+
mode: "0755"
17+
18+
- name: Add Elasticsearch key and repository to apt
19+
become: true
20+
block:
21+
- name: Add key
22+
ansible.builtin.get_url:
23+
url: https://artifacts.elastic.co/GPG-KEY-elasticsearch
24+
dest: /etc/apt/keyrings/elasticsearch.asc
25+
mode: "0755"
26+
27+
- name: Add repository
28+
ansible.builtin.apt_repository:
29+
repo: "deb [signed-by=/etc/apt/keyrings/elasticsearch.asc] https://artifacts.elastic.co/packages/9.x/apt stable main"
30+
state: present
31+
32+
- name: Install Filebeat
33+
become: true
34+
ansible.builtin.apt:
35+
name: filebeat
36+
state: latest # noqa: package-latest
37+
update_cache: true
38+
39+
- name: Template filebeat config
40+
become: true
41+
ansible.builtin.template:
42+
src: filebeat.yml.j2
43+
dest: "/etc/filebeat/filebeat.yml"
44+
owner: root
45+
group: root
46+
mode: "0640"
47+
notify:
48+
- Restart Filebeat
49+
50+
- name: Copy Logstash SSL certificate
51+
become: true
52+
ansible.builtin.copy:
53+
src: "./{{ env }}_ssl/logstash.crt"
54+
dest: "/etc/filebeat"
55+
owner: root
56+
group: root
57+
mode: "0400"
58+
notify:
59+
- Restart Filebeat
60+
61+
- name: Create filebeat external config directory
62+
become: true
63+
ansible.builtin.file:
64+
path: /var/filebeat
65+
state: directory
66+
owner: root
67+
group: root
68+
mode: "0770"
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
output.logstash:
2+
hosts: ["localhost:5044"]
3+
ssl:
4+
enabled: true
5+
certificate_authorities: ["/etc/filebeat/logstash.crt"]
6+
7+
filebeat.config.inputs:
8+
enabled: true
9+
path: /var/filebeat/*.filebeat.yml
10+
reload.enabled: true
11+
reload.period: 10s
12+
13+
processors:
14+
- add_host_metadata:
15+
when.not.contains.tags: forwarded
16+
17+
logging.level: info
18+
logging.to_files: true
19+
logging.files:
20+
path: /var/log/filebeat
21+
name: filebeat
22+
keepfiles: 7
23+
permissions: 0640
24+
25+
filebeat.inputs:
26+
- type: filestream
27+
id: filebeat
28+
enabled: true
29+
paths:
30+
- /etc/filebeat/filebeat.log
31+
- /etc/filebeat/logs/*.ndjson
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
- type: filestream
3+
id: grafana
4+
enabled: true
5+
paths:
6+
- /var/log/grafana/grafana.log
7+
fields:
8+
service.name: grafana
9+
fields_under_root: true

chatops_deployment/ansible/roles/grafana/tasks/main.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,3 +81,12 @@
8181
ansible.builtin.systemd_service:
8282
state: restarted
8383
name: grafana-server.service
84+
85+
- name: Copy filebeat external config
86+
become: true
87+
ansible.builtin.copy:
88+
src: grafana.filebeat.yml
89+
dest: /var/filebeat/grafana.filebeat.yml
90+
owner: root
91+
group: root
92+
mode: "0640"

0 commit comments

Comments
 (0)