diff --git a/manifests/integrations/mysql.pp b/manifests/integrations/mysql.pp index 3ea45fde..0b258119 100644 --- a/manifests/integrations/mysql.pp +++ b/manifests/integrations/mysql.pp @@ -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', @@ -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, diff --git a/templates/agent-conf.d/mysql.yaml.erb b/templates/agent-conf.d/mysql.yaml.erb index c800249f..ee446cd5 100644 --- a/templates/agent-conf.d/mysql.yaml.erb +++ b/templates/agent-conf.d/mysql.yaml.erb @@ -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 !@tags.empty? -%> - 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 -%>