Skip to content

Commit 5e28b47

Browse files
committed
Graylog: separate hosts groups by scope
This commit reviews the entire Graylog playbook (and role) so that it will be to totally separate the hosts by their scope. For each scope comes a specific group: - graylog_mongodb: hosts deploying MongoDB cluster; - graylog_elastic: hosts deploying Elasticsearch cluster; - graylog_server: hosts deploying Graylog server; - graylog_frontend: hosts deployinh Graylog VIP (NGinx/Keepalived); All the hosts will be grouped under a specific macro group declared as follows: [graylog:children] graylog_mongodb graylog_elastic graylog_server graylog_frontend The main playbook will configure the various roles on the different groups so that it is now possible to split the entire Graylog setup between single purpose machine groups.
1 parent 07703e2 commit 5e28b47

18 files changed

+128
-119
lines changed

graylog.yml

+9-1
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,23 @@
1313
- import_tasks: 'roles/graylog-server/tasks/common.yml'
1414

1515
# Configurations for backend servers
16-
- hosts: graylog_backend
16+
- hosts: graylog_mongodb
1717
become: true
1818
tasks:
1919
- import_role:
2020
name: 'mongodb-cluster'
2121

22+
# Configurations for elastic servers
23+
- hosts: graylog_elastic
24+
become: true
25+
tasks:
2226
- import_role:
2327
name: 'ansible-elasticsearch'
2428

29+
# Configurations for graylog servers
30+
- hosts: graylog_server
31+
become: true
32+
tasks:
2533
- import_role:
2634
name: 'graylog-server'
2735

inventory/lab/group_vars/graylog.yml

-4
This file was deleted.

inventory/lab/group_vars/graylog_backend.yml

-70
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
---
2+
3+
# Configurations for ElasticSearch cluster
4+
es_repo_name: "6.x"
5+
es_version: "6.8.10"
6+
es_cluster_name: "graylog-es-cluster"
7+
es_instance_name: "graylog-es-cluster1"
8+
es_scripts: false
9+
es_templates: false
10+
es_version_lock: false
11+
es_heap_size: "512m"
12+
es_data_dirs:
13+
- "/store/elasticsearch/data"
14+
es_log_dir: "/store/elasticsearch/log"
15+
es_work_dir: "/store/elasticsearch/tmp"
16+
es_bulk_queue_size: -1
17+
es_config:
18+
cluster.name: "graylog-es-cluster"
19+
network.host:
20+
- "{{ ansible_eth0.ipv4.address }}"
21+
- "_local_"
22+
transport.host: "{{ graylog_elastic_addr }}"
23+
discovery.zen.ping.unicast.hosts:
24+
- 192.168.122.21
25+
- 192.168.122.22
26+
- 192.168.122.23
27+
http.port: 9200
28+
transport.tcp.port: 9300
29+
node.data: true
30+
node.master: true
31+
node.name: "{{ ansible_hostname }}"
32+
bootstrap.memory_lock: true

inventory/lab/group_vars/graylog_frontend.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ keepalived_vrrp_vips:
77
- '192.168.122.25/24'
88

99
# Nginx configuration
10-
nginx_backend_servers: "{{ groups['graylog_backend'] }}"
10+
nginx_backend_servers: "{{ groups['graylog_server'] }}"
1111
nginx_backend_port: 9000
1212
nginx_http_name: logmaster
1313
nginx_http_port: 80
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
---
2+
3+
# Configurations for MongoDB cluster
4+
mongodb_master_node: "graylog-1"
5+
mongodb_nodes: "graylog-1,graylog-2,graylog-3"
6+
# Config Server
7+
mongodb_cs_bind_ip: "{{ graylog_mongodb_addr }}"
8+
mongodb_cs_logpath: "/store/mongodb/cs/log"
9+
mongodb_cs_dbpath: "/store/mongodb/cs/data"
10+
mongodb_cs_replica_set_name: "configReplSet"
11+
# Query Router
12+
mongodb_qr_bind_ip: "{{ graylog_mongodb_addr }}"
13+
mongodb_qr_logpath: "/store/mongodb/qr/log"
14+
mongodb_qr_rs_nodes: "graylog-1:27019,graylog-2:27019,graylog-3:27019"
15+
# Shard Node
16+
mongodb_sn_bind_ip: "{{ graylog_mongodb_addr }}"
17+
mongodb_sn_logpath: "/store/mongodb/sn/log"
18+
mongodb_sn_dbpath: "/store/mongodb/sn/data"
19+
mongodb_sn_replica_set_name: "graylog-shard-rs0"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
3+
# Configurations for Graylog Server
4+
graylog_server_password_secret: "2jueVqZpwLLjaWxV"
5+
graylog_server_admin_password: "8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918"
6+
graylog_server_inputbuffer_size: 524288
7+
graylog_server_rest_listen_ip: "{{ ansible_eth0.ipv4.address }}"
8+
graylog_server_web_listen_ip: "{{ ansible_eth0.ipv4.address }}"
9+
graylog_server_timezone: 'Europe/Rome'
10+
graylog_server_elasticsearch_cluster_name: "graylog-es-cluster"
11+
graylog_server_elasticsearch_hosts: "http://graylog-1:9200,http://graylog-2:9200,http://graylog-3:9200"
12+
graylog_server_mongodb_uri: "mongodb://graylog-1:27017,graylog-2:27017,graylog-3:27017/graylog"
13+
graylog_server_message_journal_dir: '/store/graylog/journal'
14+
#graylog_server_processbuffer_processors: 32
15+
#graylog_server_outputbuffer_processors: 156
16+
#graylog_server_outputbuffer_processor_keep_alive_time: 5000
17+
#graylog_server_outputbuffer_processor_threads_core_pool_size: 36
18+
#graylog_server_outputbuffer_processor_threads_max_pool_size: 156
19+
#graylog_server_min_heap: '2048m'
20+
#graylog_server_max_heap: '2048m'

inventory/lab/host_vars/graylog-1.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22

3-
interconnect_name: 'graylog-1-int'
4-
interconnect_addr: '192.168.122.21'
3+
graylog_elastic_addr: '192.168.122.21'
4+
graylog_mongodb_addr: '192.168.122.21'
55
server_weight: 1
66
graylog_server_inputbuffer_size: 65536
77
graylog_server_is_master: true

inventory/lab/host_vars/graylog-2.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22

3-
interconnect_name: 'graylog-2-int'
4-
interconnect_addr: '192.168.122.22'
3+
graylog_elastic_addr: '192.168.122.22'
4+
graylog_mongodb_addr: '192.168.122.22'
55
server_weight: 3
66
graylog_server_inputbuffer_size: 65536
77
keepalived_vrrp_priority: 100

inventory/lab/host_vars/graylog-3.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22

3-
interconnect_name: 'graylog-3-int'
4-
interconnect_addr: '192.168.122.23'
3+
graylog_elastic_addr: '192.168.122.23'
4+
graylog_mongodb_addr: '192.168.122.23'
55
server_weight: 3
66
graylog_server_inputbuffer_size: 65536
77
keepalived_vrrp_priority: 120

inventory/lab/hosts

+18-5
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,29 @@
1-
# New Graylog Environment
2-
[graylog]
1+
# Graylog hosts
2+
[graylog:children]
3+
graylog_mongodb
4+
graylog_elastic
5+
graylog_server
6+
graylog_frontend
7+
8+
# Graylog Mongodb servers
9+
[graylog_mongodb]
10+
graylog-1
11+
graylog-2
12+
graylog-3
13+
14+
# Graylog Elastic servers
15+
[graylog_elastic]
316
graylog-1
417
graylog-2
518
graylog-3
619

7-
# Backend servers (ElasticSearch + Graylog Server + MongoDB)
8-
[graylog_backend]
20+
# Graylog servers
21+
[graylog_server]
922
graylog-1
1023
graylog-2
1124
graylog-3
1225

13-
# Frontend servers (VIP + Graylog Web + ClusterControl)
26+
# Frontend servers (NGinx/Keepalived)
1427
[graylog_frontend]
1528
graylog-1
1629
graylog-2

roles/graylog-server/tasks/check_variables.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@
1616
msg: 'Variable graylog_server_elasticsearch_cluster_name required'
1717
when: graylog_server_elasticsearch_cluster_name is not defined
1818

19-
- name: Check graylog_server_elasticsearch_discovery_zen_ping_unicast_hosts variable
19+
- name: Check graylog_server_elasticsearch_hosts variable
2020
fail:
21-
msg: 'Variable graylog_server_elasticsearch_discovery_zen_ping_unicast_hosts required'
22-
when: graylog_server_elasticsearch_discovery_zen_ping_unicast_hosts is not defined
21+
msg: 'Variable graylog_server_elasticsearch_hosts required'
22+
when: graylog_server_elasticsearch_hosts is not defined
2323

2424
- name: Check graylog_server_mongodb_uri variable
2525
fail:

roles/graylog-server/tasks/common.yml

-8
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,3 @@
4747
state: present
4848
with_items:
4949
- "{{ groups['graylog'] }}"
50-
51-
- name: "Build hosts file for backend interconnect graylog group"
52-
lineinfile:
53-
dest: /etc/hosts
54-
regexp: "^{{ hostvars[item].interconnect_addr }} {{ hostvars[item].interconnect_name }}$"
55-
line: "{{ hostvars[item].interconnect_addr }} {{ hostvars[item].interconnect_name }}"
56-
state: present
57-
with_items: "{{ groups['graylog_backend'] }}"

roles/graylog-server/templates/server.conf.j2

+1-2
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@ http_bind_address = {{ graylog_server_http_bind_address_ip }}:{{ graylog_server_
1515
elasticsearch_shards = {{ graylog_server_elasticsearch_shards }}
1616
elasticsearch_replicas = {{ graylog_server_elasticsearch_replicas }}
1717
elasticsearch_cluster_name = {{ graylog_server_elasticsearch_cluster_name }}
18-
elasticsearch_discovery_zen_ping_unicast_hosts = {{ graylog_es_cluster_interconnect_nodes }}
19-
elasticsearch_network_host = {{ interconnect_addr }}
18+
elasticsearch_hosts = {{ graylog_server_elasticsearch_hosts }}
2019

2120
# Buffer
2221
processbuffer_processors = {{graylog_server_processbuffer_processors}}

roles/mongodb-cluster/tasks/main.yml

+13-13
Original file line numberDiff line numberDiff line change
@@ -94,9 +94,9 @@
9494
src: 'mongo-check-rs.js'
9595

9696
# Mongo CS - Config Server
97-
- name: "Check for port {{ mongodb_cs_port }} on {{ graylog_mongo_master_node }} to be accessible"
97+
- name: "Check for port {{ mongodb_cs_port }} on {{ mongodb_master_node }} to be accessible"
9898
wait_for:
99-
host: "{{ graylog_mongo_master_node }}"
99+
host: "{{ mongodb_master_node }}"
100100
port: "{{ mongodb_cs_port }}"
101101
state: started
102102
delay: 5
@@ -108,19 +108,19 @@
108108

109109
- name: Check if Mongo Config Server is already active
110110
shell: |
111-
mongo --host {{ graylog_mongo_master_node }} --port {{ mongodb_cs_port }} --quiet mongo-check-rs.js
111+
mongo --host {{ mongodb_master_node }} --port {{ mongodb_cs_port }} --quiet mongo-check-rs.js
112112
register: mongo_initial_cs_status
113113
changed_when: false
114114
failed_when: false
115115

116116
- block:
117117
- name: Create Config Server in Mongo
118118
shell: |
119-
mongo --host {{ graylog_mongo_master_node }} --port {{ mongodb_cs_port }} < cs.js
119+
mongo --host {{ mongodb_master_node }} --port {{ mongodb_cs_port }} < cs.js
120120
121121
- name: Check Mongo Config Server status
122122
shell: |
123-
mongo --host {{ graylog_mongo_master_node }} --port {{ mongodb_cs_port }} --quiet mongo-check-rs.js
123+
mongo --host {{ mongodb_master_node }} --port {{ mongodb_cs_port }} --quiet mongo-check-rs.js
124124
register: mongo_cs_status
125125
changed_when: false
126126
until: mongo_cs_status.stdout == 'OK'
@@ -130,9 +130,9 @@
130130
- mongo_initial_cs_status.stdout != 'OK'
131131

132132
# Mongo SN - Shard Node
133-
- name: "Check for port {{ mongodb_sn_port }} on {{ graylog_mongo_master_node }} to be accessible"
133+
- name: "Check for port {{ mongodb_sn_port }} on {{ mongodb_master_node }} to be accessible"
134134
wait_for:
135-
host: "{{ graylog_mongo_master_node }}"
135+
host: "{{ mongodb_master_node }}"
136136
port: "{{ mongodb_sn_port }}"
137137
state: started
138138
delay: 5
@@ -144,19 +144,19 @@
144144

145145
- name: Check if Mongo Shard Node is already active
146146
shell: |
147-
mongo --host {{ graylog_mongo_master_node }} --port {{ mongodb_sn_port }} --quiet mongo-check-rs.js
147+
mongo --host {{ mongodb_master_node }} --port {{ mongodb_sn_port }} --quiet mongo-check-rs.js
148148
register: mongo_initial_sn_status
149149
changed_when: false
150150
failed_when: false
151151

152152
- block:
153153
- name: Create Shard Node in Mongo
154154
shell: |
155-
mongo --host {{ graylog_mongo_master_node }} --port {{ mongodb_sn_port }} < sn.js
155+
mongo --host {{ mongodb_master_node }} --port {{ mongodb_sn_port }} < sn.js
156156
157157
- name: Check Mongo Shard Node status
158158
shell: |
159-
mongo --host {{ graylog_mongo_master_node }} --port {{ mongodb_sn_port }} --quiet mongo-check-rs.js
159+
mongo --host {{ mongodb_master_node }} --port {{ mongodb_sn_port }} --quiet mongo-check-rs.js
160160
register: mongo_sn_status
161161
changed_when: false
162162
until: mongo_sn_status.stdout == 'OK'
@@ -166,9 +166,9 @@
166166
- mongo_initial_sn_status.stdout != 'OK'
167167

168168
# Mongo QR - Query Router
169-
- name: "Check for port {{ mongodb_qr_port }} on {{ graylog_mongo_master_node }} to be accessible"
169+
- name: "Check for port {{ mongodb_qr_port }} on {{ mongodb_master_node }} to be accessible"
170170
wait_for:
171-
host: "{{ graylog_mongo_master_node }}"
171+
host: "{{ mongodb_master_node }}"
172172
port: "{{ mongodb_qr_port }}"
173173
state: started
174174
delay: 5
@@ -180,7 +180,7 @@
180180

181181
- name: Create Mongo QR - Query Router
182182
shell: |
183-
mongo --host {{ graylog_mongo_master_node }} --port {{ mongodb_qr_port }} --quiet qr.js
183+
mongo --host {{ mongodb_master_node }} --port {{ mongodb_qr_port }} --quiet qr.js
184184
when:
185185
- graylog_server_is_master is defined
186186
- graylog_server_is_master|bool

templates/mongo/cs.js.j2

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
rs.initiate( { _id: "configReplSet", configsvr: true, version: 1, members: [ { _id: 0, host: "{{ graylog_mongo_master_node }}:{{ mongodb_cs_port }}", priority: 1, votes: 1 } ] } )
1+
rs.initiate( { _id: "configReplSet", configsvr: true, version: 1, members: [ { _id: 0, host: "{{ mongodb_master_node }}:{{ mongodb_cs_port }}", priority: 1, votes: 1 } ] } )
22

3-
{% for node in es_cluster_interconnect_nodes.split(',') -%}
4-
{% if node != graylog_mongo_master_node -%}
3+
{% for node in mongodb_nodes.split(',') -%}
4+
{% if node != mongodb_master_node -%}
55
rs.add( { host: "{{ node.strip() }}:{{ mongodb_cs_port }}", priority: 1, votes: 1 } )
66
{% endif -%}
77
{% endfor %}

templates/mongo/qr.js.j2

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
sh.addShard("graylog-shard-rs0/{% for node in es_cluster_interconnect_nodes.split(',') -%}{{ node.strip() }}:{{ mongodb_sn_port }}{%- if not loop.last -%},{%- endif -%}{%- endfor -%}")
1+
sh.addShard("graylog-shard-rs0/{% for node in mongodb_nodes.split(',') -%}{{ node.strip() }}:{{ mongodb_sn_port }}{%- if not loop.last -%},{%- endif -%}{%- endfor -%}")
22
sh.enableSharding("graylog")

templates/mongo/sn.js.j2

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
rs.initiate( { _id: "graylog-shard-rs0", members: [ { _id: 0, host: "{{ graylog_mongo_master_node }}:{{ mongodb_sn_port }}" } ] })
1+
rs.initiate( { _id: "graylog-shard-rs0", members: [ { _id: 0, host: "{{ mongodb_master_node }}:{{ mongodb_sn_port }}" } ] })
22

3-
{% for node in es_cluster_interconnect_nodes.split(',') -%}
3+
{% for node in mongodb_nodes.split(',') -%}
44
rs.add("{{ node.strip() }}:{{ mongodb_sn_port }}")
55
{% endfor %}

0 commit comments

Comments
 (0)