diff --git a/manifests/params.pp b/manifests/params.pp index 147f3b1f..aeb2f1fd 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -40,6 +40,7 @@ $dd_user = 'dd-agent' $dd_group = 'root' $service_name = 'datadog-agent' + $sysprobe_service_name = 'datadog-agent-sysprobe' $agent6_log_file = '/var/log/datadog/agent.log' $package_name = 'datadog-agent' $permissions_directory = '0755' @@ -56,6 +57,7 @@ $dd_user = 'dd-agent' $dd_group = 'root' $service_name = 'datadog-agent' + $sysprobe_service_name = 'datadog-agent-sysprobe' $agent6_log_file = '/var/log/datadog/agent.log' $package_name = 'datadog-agent' $permissions_directory = '0755' diff --git a/manifests/system_probe.pp b/manifests/system_probe.pp new file mode 100644 index 00000000..3a5a1282 --- /dev/null +++ b/manifests/system_probe.pp @@ -0,0 +1,53 @@ +include datadog_agent::params +class datadog_agent::system_probe( + Boolean $enabled = false, + Optional[String] $log_file = undef, + Optional[String] $sysprobe_socket = undef, + + Boolean $service_enable = true, + String $service_ensure = 'running', + Optional[String] $service_provider = undef, +) inherits datadog_agent::params { + + if $::operatingsystem == 'Windows' { + # Datadog does not currently support Windows and macOS platforms for Network Performance Monitoring + fail('Network performance monitoring is only supported on Linux.') + } + + if $service_provider { + service { $datadog_agent::params::sysprobe_service_name: + ensure => $service_ensure, + enable => $service_enable, + provider => $service_provider, + hasstatus => false, + pattern => 'dd-agent', + require => Package[$datadog_agent::params::package_name], + } + } else { + service { $datadog_agent::params::sysprobe_service_name: + ensure => $service_ensure, + enable => $service_enable, + hasstatus => false, + pattern => 'dd-agent', + require => Package[$datadog_agent::params::package_name], + } + } + + $sysprobe_config = { + 'system_probe_config' => { + 'enabled' => $enabled, + 'sysprobe_socket' => $sysprobe_socket, + 'log_file' => $log_file, + } + } + + file { '/etc/datadog-agent/system-probe.yaml': + owner => $datadog_agent::params::dd_user, + group => 'dd-agent', + mode => '0640', + content => template('datadog_agent/system_probe.yaml.erb'), + notify => Service[$datadog_agent::params::sysprobe_service_name], + require => File['/etc/datadog-agent'], + } + +} diff --git a/templates/system_probe.yaml.erb b/templates/system_probe.yaml.erb new file mode 100644 index 00000000..45543b75 --- /dev/null +++ b/templates/system_probe.yaml.erb @@ -0,0 +1,6 @@ +### MANAGED BY PUPPET + +<% +require 'yaml' +%> +<%= @sysprobe_config.to_yaml %>