@@ -214,6 +214,11 @@ | |||
# (Optional) Boolean. Set to true if sensubility should be executed by exec plugin. | |||
# Defaults to false. | |||
# | |||
# [*enable_libpodstats*] | |||
# (Optional) Boolean. Set to true if the collectd libpodstats plugin should be | |||
# loaded | |||
# Defaults to false. | |||
# | |||
class tripleo::profile::base::metrics::collectd ( | |||
$step = Integer(hiera('step')), | |||
$enable_file_logging = false, | |||
@@ -259,10 +264,20 @@ class tripleo::profile::base::metrics::collectd ( | |||
$collectd_manage_repo = false, | |||
$python_read_plugins = [], | |||
$enable_sensubility = false, | |||
$enable_libpodstats = false, | |||
) { | |||
if $step >= 3 { | |||
if $enable_libpodstats { | |||
$typesdb = ['/usr/share/collectd/types.db', '/usr/share/collectd/types.db.libpodstats'] | |||
include ::tripleo::profile::base::metrics::collectd::libpodstats | |||
} else { | |||
$typesdb = ['/usr/share/collectd/types.db'] | |||
} | |||
class {'::collectd': | |||
manage_repo => $collectd_manage_repo | |||
manage_repo => $collectd_manage_repo, | |||
typesdb => $typesdb, | |||
} | |||
class { '::collectd::plugin::python': | |||
@@ -0,0 +1,70 @@ | |||
# Copyright 2018 Red Hat, Inc. | |||
# | |||
# Licensed under the Apache License, Version 2.0 (the "License"); you may | |||
# not use this file except in compliance with the License. You may obtain | |||
# a copy of the License at | |||
# | |||
# http://www.apache.org/licenses/LICENSE-2.0 | |||
# | |||
# Unless required by applicable law or agreed to in writing, software | |||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | |||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | |||
# License for the specific language governing permissions and limitations | |||
# under the License. | |||
# | |||
# == Define: tripleo::profile::base::metrics::collectd::sensubility | |||
# | |||
# This is used to create configuration file for collectd-sensubility plugin | |||
# | |||
# === Parameters | |||
# | |||
# [*ensure*] | |||
# (Optional) String. Action to perform with sensubility plugin | |||
# configuration file. | |||
# Defaults to 'present' | |||
# | |||
# [*config_path*] | |||
# (Optional) String. Path to configuration file. | |||
# Defaults to /etc/collectd.d/libpodstats.conf | |||
class tripleo::profile::base::metrics::collectd::libpodstats ( | |||
$ensure = 'present', | |||
$config_path = '/etc/collectd.d/libpodstats.conf' | |||
) { | |||
$db = '/usr/share/collectd/types.db.libpodstats' | |||
package { 'collectd-libpod-stats': | |||
ensure => $ensure | |||
} | |||
::collectd::type { 'pod_cpu': | |||
target => $db, | |||
types => [{ | |||
ds_type => 'GAUGE', | |||
min => 0, | |||
max => 100.1, | |||
ds_name => 'percent', | |||
}, | |||
{ | |||
ds_type => 'DERIVE', | |||
min => 0, | |||
max => 'U', | |||
ds_name => 'time', | |||
} | |||
] | |||
} | |||
::collectd::type { 'pod_memory': | |||
target => $db, | |||
ds_type => 'GAUGE', | |||
min => 0, | |||
max => 281474976710656, | |||
ds_name => 'value', | |||
} | |||
file { $config_path: | |||
ensure => $ensure, | |||
mode => '0644', | |||
content => template('tripleo/metrics/libpodstats.conf.epp'), | |||
} | |||
} |
@@ -1,3 +1,4 @@ | |||
# | |||
# Copyright (C) 2017 Red Hat, Inc. | |||
# | |||
@@ -26,6 +27,15 @@ checks={\"standalone_check\":{\"command\":\"echo 'foobar'\",\"interval\":5}} | |||
[amqp1] | |||
" | |||
libpodstats_typesdb = '/usr/share/collectd/types.db.libpodstats' | |||
libpodstats_conf = ' | |||
LoadPlugin libpodstats | |||
<Plugin "libpodstats"> | |||
</Plugin> | |||
' | |||
exec_cmd = <<-EOS | |||
Exec \"collectd:collectd\" \"collectd-sensubility\" | |||
EOS | |||
@@ -116,6 +126,46 @@ describe 'tripleo::profile::base::metrics::collectd' do | |||
is_expected.to contain_file('/etc/collectd-sensubility.conf').with_content(sensubility_conf) | |||
end | |||
end | |||
context 'with defaults and enabled libpodstats' do | |||
let(:params) do | |||
{ :step => 3, | |||
:enable_libpodstats => true } | |||
end | |||
it '' do | |||
is_expected.to compile.with_all_deps | |||
is_expected.to contain_package('collectd-libpod-stats').with(:ensure => 'present') | |||
is_expected.to contain_class('collectd').with({ | |||
:typesdb => [ | |||
'/usr/share/collectd/types.db', | |||
libpodstats_typesdb, | |||
], | |||
}) | |||
is_expected.to contain_collectd__type('pod_memory').with({ | |||
:target => libpodstats_typesdb, | |||
:ds_type => 'GAUGE', | |||
:min => 0, | |||
:max => 281474976710656, | |||
:ds_name => 'value', | |||
}) | |||
is_expected.to contain_collectd__type('pod_cpu').with({ | |||
:target => libpodstats_typesdb, | |||
:types => [{ | |||
'ds_type' => 'GAUGE', | |||
'min' => 0, | |||
'max' => 100.1, | |||
'ds_name' => 'percent', | |||
}, | |||
{ | |||
'ds_type' => 'DERIVE', | |||
'min' => 0, | |||
'max' => 'U', | |||
'ds_name' => 'time', | |||
}, | |||
], | |||
}) | |||
end | |||
end | |||
end | |||
on_supported_os.each do |os, facts| | |||
@@ -0,0 +1,4 @@ | |||
LoadPlugin libpodstats | |||
<Plugin "libpodstats"> | |||
</Plugin> |