Skip to content

Commit 50a9834

Browse files
authored
Merge pull request #16 from companieshouse/feature/cloudwatch
Implement CloudWatch logging for nGsrc, Tuxedo, and CloudWatch agent
2 parents a516ef9 + ab5b139 commit 50a9834

File tree

5 files changed

+190
-1
lines changed

5 files changed

+190
-1
lines changed

roles/deploy/defaults/main.yml

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,123 @@
11
---
22

3+
cloudwatch_agent:
4+
path: /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl
5+
config_dir: /opt/aws/amazon-cloudwatch-agent/etc
6+
log_file: /opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log
7+
metrics_collection_interval: 60
8+
user: cwagent
9+
10+
tuxedo_log_default_parent: /var/log/tuxedo
11+
12+
tuxedo_log_files:
13+
ewf:
14+
- file_pattern: CHG-stdout.txt
15+
cloudwatch_log_group_name: frontend-tuxedo-ewf-chg-stdout
16+
- file_pattern: CHG-stderr.txt
17+
cloudwatch_log_group_name: frontend-tuxedo-ewf-chg-stderr
18+
- file_pattern: BE-stdout.txt
19+
cloudwatch_log_group_name: frontend-tuxedo-ewf-be-stdout
20+
- file_pattern: BE-stderr.txt
21+
cloudwatch_log_group_name: frontend-tuxedo-ewf-be-stderr
22+
- file_pattern: DBG-stdout.txt
23+
cloudwatch_log_group_name: frontend-tuxedo-ewf-dbg-stdout
24+
- file_pattern: DBG-stderr.txt
25+
cloudwatch_log_group_name: frontend-tuxedo-ewf-dbg-stderr
26+
- file_pattern: CS-stdout.txt
27+
cloudwatch_log_group_name: frontend-tuxedo-ewf-cs-stdout
28+
- file_pattern: CS-stderr.txt
29+
cloudwatch_log_group_name: frontend-tuxedo-ewf-cs-stderr
30+
- file_pattern: Sys-stdout.txt
31+
cloudwatch_log_group_name: frontend-tuxedo-ewf-sys-stdout
32+
- file_pattern: Sys-stderr.txt
33+
cloudwatch_log_group_name: frontend-tuxedo-ewf-sys-stderr
34+
- file_pattern: VXBRL-stdout.txt
35+
cloudwatch_log_group_name: frontend-tuxedo-ewf-vxbrl-stdout
36+
- file_pattern: VXBRL-stderr.txt
37+
cloudwatch_log_group_name: frontend-tuxedo-ewf-vxbrl-stderr
38+
- file_pattern: VTNEP-stdout.txt
39+
cloudwatch_log_group_name: frontend-tuxedo-ewf-vtnep-stdout
40+
- file_pattern: VTNEP-stderr.txt
41+
cloudwatch_log_group_name: frontend-tuxedo-ewf-vtnep-stderr
42+
- file_pattern: TRXML-stdout.txt
43+
cloudwatch_log_group_name: frontend-tuxedo-ewf-trxml-stdout
44+
- file_pattern: TRXML-stderr.txt
45+
cloudwatch_log_group_name: frontend-tuxedo-ewf-trxml-stderr
46+
- file_pattern: ULOG*
47+
cloudwatch_log_group_name: frontend-tuxedo-ewf-ulog
48+
- file_pattern: ois-ngsrv.log
49+
cloudwatch_log_group_name: frontend-tuxedo-ewf-ngsrv-ois
50+
- file_pattern: search-ngsrv.log
51+
cloudwatch_log_group_name: frontend-tuxedo-ewf-ngsrv-search
52+
- file_pattern: chips-ngsrv.log
53+
cloudwatch_log_group_name: frontend-tuxedo-ewf-ngsrv-chips
54+
- file_pattern: ef-ngsrv.log
55+
cloudwatch_log_group_name: frontend-tuxedo-ewf-ngsrv-ef
56+
- file_pattern: ixbrl-ngsrv.log
57+
cloudwatch_log_group_name: frontend-tuxedo-ewf-ngsrv-ixbrl
58+
- file_pattern: tnep-ngsrv.log
59+
cloudwatch_log_group_name: frontend-tuxedo-ewf-ngsrv-tnep
60+
- file_pattern: trans-ngsrv.log
61+
cloudwatch_log_group_name: frontend-tuxedo-ewf-ngsrv-trans
62+
- file_pattern: gen-ngsrv.log
63+
cloudwatch_log_group_name: frontend-tuxedo-ewf-ngsrv-gen
64+
65+
xml:
66+
- file_pattern: CHG-stdout.txt
67+
cloudwatch_log_group_name: frontend-tuxedo-xml-chg-stdout
68+
- file_pattern: CHG-stderr.txt
69+
cloudwatch_log_group_name: frontend-tuxedo-xml-chg-stderr
70+
- file_pattern: BE-stdout.txt
71+
cloudwatch_log_group_name: frontend-tuxedo-xml-be-stdout
72+
- file_pattern: BE-stderr.txt
73+
cloudwatch_log_group_name: frontend-tuxedo-xml-be-stderr
74+
- file_pattern: DBG-stdout.txt
75+
cloudwatch_log_group_name: frontend-tuxedo-xml-dbg-stdout
76+
- file_pattern: DBG-stderr.txt
77+
cloudwatch_log_group_name: frontend-tuxedo-xml-dbg-stderr
78+
- file_pattern: CS-stdout.txt
79+
cloudwatch_log_group_name: frontend-tuxedo-xml-cs-stdout
80+
- file_pattern: CS-stderr.txt
81+
cloudwatch_log_group_name: frontend-tuxedo-xml-cs-stderr
82+
- file_pattern: Sys-stdout.txt
83+
cloudwatch_log_group_name: frontend-tuxedo-xml-sys-stdout
84+
- file_pattern: Sys-stderr.txt
85+
cloudwatch_log_group_name: frontend-tuxedo-xml-sys-stderr
86+
- file_pattern: VXBRL-stdout.txt
87+
cloudwatch_log_group_name: frontend-tuxedo-xml-vxbrl-stdout
88+
- file_pattern: VXBRL-stderr.txt
89+
cloudwatch_log_group_name: frontend-tuxedo-xml-vxbrl-stderr
90+
- file_pattern: VTNEP-stdout.txt
91+
cloudwatch_log_group_name: frontend-tuxedo-xml-vtnep-stdout
92+
- file_pattern: VTNEP-stderr.txt
93+
cloudwatch_log_group_name: frontend-tuxedo-xml-vtnep-stderr
94+
- file_pattern: TRXML-stdout.txt
95+
cloudwatch_log_group_name: frontend-tuxedo-xml-trxml-stdout
96+
- file_pattern: TRXML-stderr.txt
97+
cloudwatch_log_group_name: frontend-tuxedo-xml-trxml-stderr
98+
- file_pattern: IXBRL-stdout.txt
99+
cloudwatch_log_group_name: frontend-tuxedo-xml-ixbrl-stdout
100+
- file_pattern: IXBRL-stderr.txt
101+
cloudwatch_log_group_name: frontend-tuxedo-xml-ixbrl-stderr
102+
- file_pattern: ULOG*
103+
cloudwatch_log_group_name: frontend-tuxedo-xml-ulog
104+
- file_pattern: ois-ngsrv.log
105+
cloudwatch_log_group_name: frontend-tuxedo-xml-ngsrv-ois
106+
- file_pattern: search-ngsrv.log
107+
cloudwatch_log_group_name: frontend-tuxedo-xml-ngsrv-search
108+
- file_pattern: chips-ngsrv.log
109+
cloudwatch_log_group_name: frontend-tuxedo-xml-ngsrv-chips
110+
- file_pattern: ef-ngsrv.log
111+
cloudwatch_log_group_name: frontend-tuxedo-xml-ngsrv-ef
112+
- file_pattern: ixbrl-ngsrv.log
113+
cloudwatch_log_group_name: frontend-tuxedo-xml-ngsrv-ixbrl
114+
- file_pattern: tnep-ngsrv.log
115+
cloudwatch_log_group_name: frontend-tuxedo-xml-ngsrv-tnep
116+
- file_pattern: trans-ngsrv.log
117+
cloudwatch_log_group_name: frontend-tuxedo-xml-ngsrv-trans
118+
- file_pattern: gen-ngsrv.log
119+
cloudwatch_log_group_name: frontend-tuxedo-xml-ngsrv-gen
120+
3121
tuxedo_service_group: tuxedo
4122
tuxedo_service_users:
5123
- ceu

roles/deploy/tasks/deploy.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,16 @@
168168
chdir: "/home/{{ tuxedo_user }}/{{ deployment_dir }}/config"
169169
executable: /bin/bash
170170

171+
- name: "{{ tuxedo_user }} : Create CloudWatch agent configuration file for Tuxedo service group"
172+
template:
173+
src: templates/cloudwatch-config-service.json.j2
174+
dest: "{{ cloudwatch_agent.config_dir }}//cloudwatch-config-{{ tuxedo_user }}.json"
175+
trim_blocks: False
176+
177+
- name: "{{ tuxedo_user }} : Add configuration for Tuxedo service group to CloudWatch agent"
178+
command:
179+
cmd: "{{ cloudwatch_agent.path }} -a append-config -m ec2 -s -c file:{{ cloudwatch_agent.config_dir }}//cloudwatch-config-{{ tuxedo_user }}.json"
180+
171181
- name: "{{ tuxedo_user }} : Start Tuxedo services"
172182
become_user: "{{ tuxedo_user }}"
173183
shell: "source $HOME/deployment/config/envfile && tmboot -y"

roles/deploy/tasks/main.yml

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
---
22

3+
- name: Set EC2 metadata facts
4+
amazon.aws.ec2_metadata_facts:
5+
36
- name: Check required variables are set
47
assert:
58
that:
@@ -14,11 +17,27 @@
1417
msg: "Required variable(s) empty or undefined"
1518

1619
# The hostname is assumed to be in the format: frontend-tuxedo-<environment>-<instance-index>
17-
- set_fact:
20+
- name: Set Tuxedo facts for config population
21+
set_fact:
1822
tuxedo_domain_id_suffix: "{{ ansible_facts.hostname | regex_replace('^frontend-tuxedo-([A-Za-z].*)-(\\d+)$', 'INSTANCE_\\2_\\1_DOM') | upper }}"
1923
tuxedo_logical_machine_id_suffix: "{{ ansible_facts.hostname | regex_replace('^frontend-tuxedo-([A-Za-z].*)-(\\d+)$', 'INSTANCE_\\2_\\1_SRV') | upper }}"
2024
tuxedo_local_domain_suffix: "{{ ansible_facts.hostname | regex_replace('^frontend-tuxedo-([A-Za-z].*)-(\\d+)$', 'INSTANCE_\\2_\\1_LOD') | upper }}"
2125

26+
- name: Set CloudWatch agent facts for config population
27+
set_fact:
28+
cloudwatch_log_stream_name: "{{ ansible_ec2_instance_id }}_{{ ansible_ec2_hostname }}"
29+
region: "{{ ansible_ec2_instance_identity_document_region }}"
30+
31+
- name: Create CloudWatch agent configuration file for instance
32+
template:
33+
src: templates/cloudwatch-config.json.j2
34+
dest: "{{ cloudwatch_agent.config_dir }}/cloudwatch-config.json"
35+
trim_blocks: False
36+
37+
- name: Start CloudWatch agent using primary configuration file
38+
command:
39+
cmd: "{{ cloudwatch_agent.path }} -a fetch-config -m ec2 -s -c file:{{ cloudwatch_agent.config_dir }}//cloudwatch-config.json"
40+
2241
- name: Using constructed variable suffixes
2342
ansible.builtin.debug:
2443
var: "{{ item }}"
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"logs": {
3+
"logs_collected": {
4+
"files": {
5+
"collect_list": [
6+
{% if tuxedo_user in tuxedo_log_files -%}
7+
{%+ for log in tuxedo_log_files[tuxedo_user] -%}
8+
{
9+
"file_path": "{{ log.file_path_parent | default(tuxedo_log_default_parent) }}/{{ tuxedo_user }}/{{ log.file_pattern }}",
10+
"log_group_name": "{{ log.cloudwatch_log_group_name }}",
11+
"log_stream_name": "{{ cloudwatch_log_stream_name }}"
12+
}{%- if not loop.last -%},{%- endif -%}
13+
{% endfor -%}
14+
{% endif %}
15+
]
16+
}
17+
},
18+
"log_stream_name": "{{ cloudwatch_log_stream_name }}"
19+
}
20+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"agent": {
3+
"metrics_collection_interval": {{ cloudwatch_agent.metrics_collection_interval }},
4+
"region": "{{ region }}",
5+
"logfile": "{{ cloudwatch_agent.log_file }}",
6+
"debug": false,
7+
"run_as_user": "{{ cloudwatch_agent.user }}"
8+
},
9+
"logs": {
10+
"logs_collected": {
11+
"files": {
12+
"collect_list": [
13+
{
14+
"file_path": "{{ cloudwatch_agent.log_file }}",
15+
"log_group_name": "frontend-tuxedo-cloudwatch",
16+
"log_stream_name": "{{ cloudwatch_log_stream_name }}"
17+
}
18+
]
19+
}
20+
}
21+
}
22+
}

0 commit comments

Comments
 (0)