Skip to content

Commit 2648a4f

Browse files
authored
Allow multiple MySQL instances (DataDog#267)
* Allowing Multiple MySQL instances * Tweaking tags and Dealing with undef sock declarations * Trying to fix Travis Failures involving the sock declaration * [puppet] address issue with undefined sock parameter.
1 parent c0da53b commit 2648a4f

2 files changed

Lines changed: 67 additions & 18 deletions

File tree

manifests/integrations/mysql.pp

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,30 @@
3434
# password => 'some_pass',
3535
# user => 'datadog'
3636
# }
37+
# Sample Usage (Instance):
38+
# class { 'datadog_agent::integrations::mysql' :
39+
# instances => [{
40+
# host => 'localhost',
41+
# password => 'mypassword',
42+
# user => 'datadog',
43+
# port => '3306',
44+
# tags => ['instance:mysql1'],
45+
# replication => '0',
46+
# galera_cluster => '0',
47+
# extra_status_metrics => 'true',
48+
# extra_innodb_metrics => 'true',
49+
# extra_performance_metrics => 'true',
50+
# schema_size_metrics => 'true',
51+
# disable_innodb_metrics => 'false',
52+
# }
53+
# }
3754
#
3855
#
3956
class datadog_agent::integrations::mysql(
4057
$password,
4158
$host = 'localhost',
4259
$user = 'datadog',
60+
$port = 3306,
4361
$sock = undef,
4462
$tags = [],
4563
$replication = '0',
@@ -49,11 +67,34 @@
4967
$extra_performance_metrics = false,
5068
$schema_size_metrics = false,
5169
$disable_innodb_metrics = false,
70+
$instances = undef,
5271
) inherits datadog_agent::params {
5372
include datadog_agent
5473

5574
validate_array($tags)
5675

76+
if !$instances and $host {
77+
$_instances = [{
78+
'host' => $host,
79+
'password' => $password,
80+
'user' => $user,
81+
'port' => $port,
82+
'sock' => $sock,
83+
'tags' => $tags,
84+
'replication' => $replication,
85+
'galera_cluster' => $galera_cluster,
86+
'extra_status_metrics' => $extra_status_metrics,
87+
'extra_innodb_metrics' => $extra_innodb_metrics,
88+
'extra_performance_metrics' => $extra_performance_metrics,
89+
'schema_size_metrics' => $schema_size_metrics,
90+
'disable_innodb_metrics' => $disable_innodb_metrics,
91+
}]
92+
} elsif !$instances{
93+
$_instances = []
94+
} else {
95+
$_instances = $instances
96+
}
97+
5798
file { "${datadog_agent::params::conf_dir}/mysql.yaml":
5899
ensure => file,
59100
owner => $datadog_agent::params::dd_user,

templates/agent-conf.d/mysql.yaml.erb

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,26 +5,34 @@
55
init_config:
66

77
instances:
8-
- server: <%= @host %>
9-
user: <%= @user %>
10-
pass: <%= @password %>
11-
<% if @sock -%>
12-
sock: <%= @sock %>
8+
<%- (Array(@_instances)).each do |instance| -%>
9+
- server: <%= instance['host'] %>
10+
user: <%= instance['user'] %>
11+
pass: <%= instance['password'] %>
12+
<% if instance['port'] -%>
13+
port: <%= instance['port'] %>
1314
<% end -%>
14-
# port: 3306 # Optional
15-
# defaults_file: my.cnf # Alternate configuration mechanism
16-
<% if !@tags.empty? -%>
17-
tags: # Optional
18-
<% @tags.each do |tag| -%>
19-
- <%= tag %>
15+
<% if instance['sock'] and instance['sock'] != :undef -%>
16+
sock: <%= instance['sock'] %>
2017
<% end -%>
18+
19+
<% if instance['tags'] and ! instance['tags'].empty? -%>
20+
tags:
21+
<%- Array(instance['tags']).each do |tag| -%>
22+
<%- if tag != '' -%>
23+
- <%= tag %>
24+
<%- end -%>
25+
<%- end -%>
2126
<% end -%>
27+
2228
options: # Optional
23-
replication: <%= @replication %>
24-
galera_cluster: <%= @galera_cluster %>
25-
extra_status_metrics: <%= @extra_status_metrics %>
26-
extra_innodb_metrics: <%= @extra_innodb_metrics %>
27-
extra_performance_metrics: <%= @extra_performance_metrics %>
28-
schema_size_metrics: <%= @schema_size_metrics %>
29-
disable_innodb_metrics: <%= @disable_innodb_metrics %>
29+
replication: <%= instance['replication'] %>
30+
galera_cluster: <%= instance['galera_cluster'] %>
31+
extra_status_metrics: <%= instance['extra_status_metrics'] %>
32+
extra_innodb_metrics: <%= instance['extra_innodb_metrics'] %>
33+
extra_performance_metrics: <%= instance['extra_performance_metrics'] %>
34+
schema_size_metrics: <%= instance['schema_size_metrics'] %>
35+
disable_innodb_metrics: <%= instance['disable_innodb_metrics'] %>
36+
37+
<% end -%>
3038

0 commit comments

Comments
 (0)