Skip to content

Commit e93f6db

Browse files
committed
cruise control: severale enhancements
1 parent c708636 commit e93f6db

File tree

7 files changed

+139
-3
lines changed

7 files changed

+139
-3
lines changed

roles/amq_streams_cruise_control/defaults/main.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
---
22
amq_streams_cruise_control_home: /opt/cruise-control/
33
amq_streams_cruise_control_service_name: amq_streams_cruise_control
4-
amq_streams_cruise_control_server_start: "{{ amq_streams_cruise_control_home }}/kafka-cruise-control-start.sh"
4+
amq_streams_cruise_control_server_start: "{{ amq_streams_cruise_control_home }}/kafka-cruise-control-start.sh"
55
amq_streams_cruise_control_server_stop: "{{ amq_streams_cruise_control_home }}/kafka-cruise-control-stop.sh"
66
amq_streams_cruise_control_server_config: "/etc/amq_streams_cruise_control.properties"
77
amq_streams_cruise_control_config_template: 'templates/service.conf.j2'
88
amq_streams_cruise_control_config_properties_template: 'templates/cruisecontrol.properties.j2'
9+
amq_streams_cruise_control_path_to_log4j_properties: "{{ amq_streams_cruise_control_home }}/config/log4j.properties"
10+
amq_streams_cruise_control_log4j_template: 'templates/log4j.properties.j2'
11+
amq_streams_cruise_control_logfilename: '/var/log/cruise-control'
12+
amq_streams_cruise_control_capacity_template: 'templates/capacity.json.j2'
13+
amq_streams_cruise_control_path_to_capacity_file: "{{ amq_streams_cruise_control_home }}/config/capacity.json"
914
amq_streams_cruise_control_user: root
1015
amq_streams_cruise_control_group: root
1116
amq_streams_cruise_control_zk_host: "{{ groups['zookeepers'][0] }}"

roles/amq_streams_cruise_control/handlers/main.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,6 @@
1010
name: "{{ amq_streams_cruise_control_service_name }}"
1111
state: stopped
1212
become: yes
13+
14+
- name: "Refresh capacity.json"
15+
ansible.builtin.include_tasks: capacity.yml
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
---
2+
- name: "Ensure required parameters are provided"
3+
ansible.builtin.assert:
4+
that:
5+
- amq_streams_cruise_control_capacity_template is defined and amq_streams_cruise_control_capacity_template | length > 0
6+
- amq_streams_cruise_control_path_to_capacity_file is defined and amq_streams_cruise_control_path_to_capacity_file | length > 0
7+
quiet: True
8+
9+
- name: "Ensure capacity.json is properly configured"
10+
ansible.builtin.template:
11+
src: "{{ amq_streams_cruise_control_capacity_template }}"
12+
dest: "{{ amq_streams_cruise_control_path_to_capacity_file }}"
13+
owner: "{{ amq_streams_cruise_control_user | default(omit) }}"
14+
group: "{{ amq_streams_cruise_control_group | default(omit) }}"
15+
mode: 0644
16+
notify: "Restart {{ amq_streams_cruise_control_service_name }}"

roles/amq_streams_cruise_control/tasks/main.yml

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,29 @@
1414
name: amq_streams_common
1515
tasks_from: install.yml
1616

17-
# TODO deal with FW, if enabled
17+
- name: "Deploy custom log4j config (if provided)"
18+
when:
19+
- amq_streams_cruise_control_logfilename is defined
20+
block:
21+
- name: "Ensure dirname for logfile exits {{ amq_streams_cruise_control_logfilename | dirname }}"
22+
ansible.builtin.file:
23+
path: "{{ amq_streams_cruise_control_logfilename | dirname }}"
24+
state: directory
25+
26+
- name: "Ensure log4j logging is properly configured"
27+
ansible.builtin.template:
28+
src: "{{ amq_streams_cruise_control_log4j_template }}"
29+
dest: "{{ amq_streams_cruise_control_path_to_log4j_properties }}"
30+
owner: "{{ amq_streams_cruise_control_user | default(omit) }}"
31+
group: "{{ amq_streams_cruise_control_group | default(omit) }}"
32+
mode: 0644
33+
34+
- name: "Ensure capacity.json is properly configured"
35+
ansible.builtin.include_tasks: capacity.yml
36+
when:
37+
- amq_streams_broker_inventory_group is defined and amq_streams_broker_inventory_group | length > 0
38+
39+
#TODO: Deal with FW if enabled
1840

1941
- name: "Deploy Cruise Control as a systemd service."
2042
ansible.builtin.include_role:
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"brokerCapacities":[
3+
{%if amq_streams_broker_inventory_group is defined and amq_streams_broker_inventory_group | length > 0 %}{% for broker in amq_streams_broker_inventory_group %}{
4+
"brokerId": "{{ amq_streams_broker_inventory_group.index(broker) }}",
5+
"capacity": {
6+
"DISK": "500000",
7+
"CPU": "100",
8+
"NW_IN": "50000",
9+
"NW_OUT": "50000"
10+
},
11+
"doc": "This overrides the capacity for broker {{ amq_streams_broker_inventory_group.index(broker) }}."
12+
},{% endfor %}{% endif %}
13+
{
14+
"brokerId": "-1",
15+
"capacity": {
16+
"DISK": "100000",
17+
"CPU": "100",
18+
"NW_IN": "10000",
19+
"NW_OUT": "10000"
20+
},
21+
"doc": "This is the default capacity. Capacity unit used for disk is in MB, cpu is in percentage, network throughput is in KB."
22+
}
23+
]
24+
}
25+

roles/amq_streams_cruise_control/templates/cruisecontrol.properties.j2

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ min.samples.per.broker.metrics.window=1
8787

8888
# The configuration for the BrokerCapacityConfigFileResolver (supports JBOD, non-JBOD, and heterogeneous CPU core capacities)
8989
#capacity.config.file={{ amq_stream_cruise_control_home }}/config/capacity.json
90-
capacity.config.file={{ amq_stream_cruise_control_home }}/config/capacityJBOD.json
90+
capacity.config.file={{ amq_stream_cruise_control_home }}/config/capacity.json
9191

9292
# Configurations for the analyzer
9393
# =======================================
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
#
2+
# Copyright 2017 LinkedIn Corp. Licensed under the BSD 2-Clause License (the "License"). See License in the project root for license information.
3+
#
4+
5+
rootLogger.level=INFO
6+
appenders=console, kafkaCruiseControlAppender, operationAppender, requestAppender
7+
8+
{%if amq_streams_cruise_control_logfilename is defined and amq_streams_cruise_control_logfilename | length > 0 %}property.filename={{ amq_streams_cruise_control_logfilename }}"
9+
{% endif %}
10+
11+
appender.console.type=Console
12+
appender.console.name=STDOUT
13+
appender.console.layout.type=PatternLayout
14+
appender.console.layout.pattern=[%d] %p %m (%c)%n
15+
16+
appender.kafkaCruiseControlAppender.type=RollingFile
17+
appender.kafkaCruiseControlAppender.name=kafkaCruiseControlFile
18+
appender.kafkaCruiseControlAppender.fileName=${filename}/kafkacruisecontrol.log
19+
appender.kafkaCruiseControlAppender.filePattern=${filename}/kafkacruisecontrol.log.%d{yyyy-MM-dd-HH}
20+
appender.kafkaCruiseControlAppender.layout.type=PatternLayout
21+
appender.kafkaCruiseControlAppender.layout.pattern=[%d] %p %m (%c)%n
22+
appender.kafkaCruiseControlAppender.policies.type=Policies
23+
appender.kafkaCruiseControlAppender.policies.time.type=TimeBasedTriggeringPolicy
24+
appender.kafkaCruiseControlAppender.policies.time.interval=1
25+
26+
appender.operationAppender.type=RollingFile
27+
appender.operationAppender.name=operationFile
28+
appender.operationAppender.fileName=${filename}/kafkacruisecontrol-operation.log
29+
appender.operationAppender.filePattern=${filename}/kafkacruisecontrol-operation.log.%d{yyyy-MM-dd}
30+
appender.operationAppender.layout.type=PatternLayout
31+
appender.operationAppender.layout.pattern=[%d] %p [%c] %m %n
32+
appender.operationAppender.policies.type=Policies
33+
appender.operationAppender.policies.time.type=TimeBasedTriggeringPolicy
34+
appender.operationAppender.policies.time.interval=1
35+
36+
appender.requestAppender.type=RollingFile
37+
appender.requestAppender.name=requestFile
38+
appender.requestAppender.fileName=${filename}/kafkacruisecontrol-request.log
39+
appender.requestAppender.filePattern=${filename}/kafkacruisecontrol-request.log.%d{yyyy-MM-dd-HH}
40+
appender.requestAppender.layout.type=PatternLayout
41+
appender.requestAppender.layout.pattern=[%d] %p %m (%c)%n
42+
appender.requestAppender.policies.type=Policies
43+
appender.requestAppender.policies.time.type=TimeBasedTriggeringPolicy
44+
appender.requestAppender.policies.time.interval=1
45+
46+
# Loggers
47+
logger.cruisecontrol.name=com.linkedin.kafka.cruisecontrol
48+
logger.cruisecontrol.level=debug
49+
logger.cruisecontrol.appenderRef.kafkaCruiseControlAppender.ref=kafkaCruiseControlFile
50+
51+
logger.detector.name=com.linkedin.kafka.cruisecontrol.detector
52+
logger.detector.level=info
53+
logger.detector.appenderRef.kafkaCruiseControlAppender.ref=kafkaCruiseControlFile
54+
55+
logger.operationLogger.name=operationLogger
56+
logger.operationLogger.level=info
57+
logger.operationLogger.appenderRef.operationAppender.ref=operationFile
58+
59+
logger.CruiseControlPublicAccessLogger.name=CruiseControlPublicAccessLogger
60+
logger.CruiseControlPublicAccessLogger.level=info
61+
logger.CruiseControlPublicAccessLogger.appenderRef.requestAppender.ref=requestFile
62+
63+
rootLogger.appenderRefs=console, kafkaCruiseControlAppender
64+
rootLogger.appenderRef.console.ref=STDOUT
65+
rootLogger.appenderRef.kafkaCruiseControlAppender.ref=kafkaCruiseControlFile

0 commit comments

Comments
 (0)