Skip to content

Commit

Permalink
Allow multiple MySQL instances (DataDog#267)
Browse files Browse the repository at this point in the history
* 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.
  • Loading branch information
truthbk authored Dec 19, 2016
1 parent c0da53b commit 2648a4f
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 18 deletions.
41 changes: 41 additions & 0 deletions manifests/integrations/mysql.pp
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,30 @@
# password => 'some_pass',
# user => 'datadog'
# }
# Sample Usage (Instance):
# class { 'datadog_agent::integrations::mysql' :
# instances => [{
# host => 'localhost',
# password => 'mypassword',
# user => 'datadog',
# port => '3306',
# tags => ['instance:mysql1'],
# replication => '0',
# galera_cluster => '0',
# extra_status_metrics => 'true',
# extra_innodb_metrics => 'true',
# extra_performance_metrics => 'true',
# schema_size_metrics => 'true',
# disable_innodb_metrics => 'false',
# }
# }
#
#
class datadog_agent::integrations::mysql(
$password,
$host = 'localhost',
$user = 'datadog',
$port = 3306,
$sock = undef,
$tags = [],
$replication = '0',
Expand All @@ -49,11 +67,34 @@
$extra_performance_metrics = false,
$schema_size_metrics = false,
$disable_innodb_metrics = false,
$instances = undef,
) inherits datadog_agent::params {
include datadog_agent

validate_array($tags)

if !$instances and $host {
$_instances = [{
'host' => $host,
'password' => $password,
'user' => $user,
'port' => $port,
'sock' => $sock,
'tags' => $tags,
'replication' => $replication,
'galera_cluster' => $galera_cluster,
'extra_status_metrics' => $extra_status_metrics,
'extra_innodb_metrics' => $extra_innodb_metrics,
'extra_performance_metrics' => $extra_performance_metrics,
'schema_size_metrics' => $schema_size_metrics,
'disable_innodb_metrics' => $disable_innodb_metrics,
}]
} elsif !$instances{
$_instances = []
} else {
$_instances = $instances
}

file { "${datadog_agent::params::conf_dir}/mysql.yaml":
ensure => file,
owner => $datadog_agent::params::dd_user,
Expand Down
44 changes: 26 additions & 18 deletions templates/agent-conf.d/mysql.yaml.erb
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,34 @@
init_config:

instances:
- server: <%= @host %>
user: <%= @user %>
pass: <%= @password %>
<% if @sock -%>
sock: <%= @sock %>
<%- (Array(@_instances)).each do |instance| -%>
- server: <%= instance['host'] %>
user: <%= instance['user'] %>
pass: <%= instance['password'] %>
<% if instance['port'] -%>
port: <%= instance['port'] %>
<% end -%>
# port: 3306 # Optional
# defaults_file: my.cnf # Alternate configuration mechanism
<% if [email protected]? -%>
tags: # Optional
<% @tags.each do |tag| -%>
- <%= tag %>
<% if instance['sock'] and instance['sock'] != :undef -%>
sock: <%= instance['sock'] %>
<% end -%>

<% if instance['tags'] and ! instance['tags'].empty? -%>
tags:
<%- Array(instance['tags']).each do |tag| -%>
<%- if tag != '' -%>
- <%= tag %>
<%- end -%>
<%- end -%>
<% end -%>

options: # Optional
replication: <%= @replication %>
galera_cluster: <%= @galera_cluster %>
extra_status_metrics: <%= @extra_status_metrics %>
extra_innodb_metrics: <%= @extra_innodb_metrics %>
extra_performance_metrics: <%= @extra_performance_metrics %>
schema_size_metrics: <%= @schema_size_metrics %>
disable_innodb_metrics: <%= @disable_innodb_metrics %>
replication: <%= instance['replication'] %>
galera_cluster: <%= instance['galera_cluster'] %>
extra_status_metrics: <%= instance['extra_status_metrics'] %>
extra_innodb_metrics: <%= instance['extra_innodb_metrics'] %>
extra_performance_metrics: <%= instance['extra_performance_metrics'] %>
schema_size_metrics: <%= instance['schema_size_metrics'] %>
disable_innodb_metrics: <%= instance['disable_innodb_metrics'] %>

<% end -%>

0 comments on commit 2648a4f

Please sign in to comment.