Add collectd-sensubility configuration
This patch adds possibility to configure collectd-exec to execute collectd-sensubility and configure this extension. Change-Id: Ieb5042603ff76fd22f867a17a853bb1ec6a744f2
This commit is contained in:
parent
2a930a1a8f
commit
e78c4f30e0
@ -205,6 +205,10 @@
|
|||||||
# (Optional) List of strings. List of third party python packages to install.
|
# (Optional) List of strings. List of third party python packages to install.
|
||||||
# Defaults to [].
|
# Defaults to [].
|
||||||
#
|
#
|
||||||
|
# [*enable_sensubility*]
|
||||||
|
# (Optional) Boolean. Set to true if sensubility should be executed by exec plugin.
|
||||||
|
# Defaults to false.
|
||||||
|
#
|
||||||
class tripleo::profile::base::metrics::collectd (
|
class tripleo::profile::base::metrics::collectd (
|
||||||
$step = Integer(hiera('step')),
|
$step = Integer(hiera('step')),
|
||||||
|
|
||||||
@ -248,7 +252,8 @@ class tripleo::profile::base::metrics::collectd (
|
|||||||
$amqp_interval = undef,
|
$amqp_interval = undef,
|
||||||
$service_names = hiera('enabled_services', []),
|
$service_names = hiera('enabled_services', []),
|
||||||
$collectd_manage_repo = false,
|
$collectd_manage_repo = false,
|
||||||
$python_read_plugins = []
|
$python_read_plugins = [],
|
||||||
|
$enable_sensubility = false,
|
||||||
) {
|
) {
|
||||||
if $step >= 3 {
|
if $step >= 3 {
|
||||||
class {'::collectd':
|
class {'::collectd':
|
||||||
@ -357,5 +362,9 @@ class tripleo::profile::base::metrics::collectd (
|
|||||||
batch_size => $gnocchi_batch_size,
|
batch_size => $gnocchi_batch_size,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if $enable_sensubility {
|
||||||
|
include ::tripleo::profile::base::metrics::collectd::sensubility
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
147
manifests/profile/base/metrics/collectd/sensubility.pp
Normal file
147
manifests/profile/base/metrics/collectd/sensubility.pp
Normal file
@ -0,0 +1,147 @@
|
|||||||
|
# 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, which should be populated.
|
||||||
|
# Defaults to '/etc/collectd-sensubility.conf'.
|
||||||
|
#
|
||||||
|
# [*log_file*]
|
||||||
|
# (Optional) String. Override default log file path (/var/log/collectd/sensubility.log).
|
||||||
|
# Defaults to undef.
|
||||||
|
#
|
||||||
|
# [*log_level*]
|
||||||
|
# (Optional) String. Override default logging level (WARN).
|
||||||
|
# Defaults to undef.
|
||||||
|
#
|
||||||
|
# [*connection*]
|
||||||
|
# (Optional) String. URL to Sensu sever side (be default "ampq://sensu:sensu@localhost:5672//sensu")
|
||||||
|
# Defaults to undef.
|
||||||
|
#
|
||||||
|
# [*subscriptions*]
|
||||||
|
# (Optional) List of strings. List of channels to subscribe to.
|
||||||
|
# Defaults to undef.
|
||||||
|
#
|
||||||
|
# [*client_name*]
|
||||||
|
# (Optional) String. Name of the client displayed on Sensu server side (by default COLLECTD_HOSTNAME env or hostname).
|
||||||
|
# Defaults to undef.
|
||||||
|
#
|
||||||
|
# [*client_address*]
|
||||||
|
# (Optional) String. Address of the client displayed on Sensu server side (by default IP address of host).
|
||||||
|
# Defaults to undef.
|
||||||
|
#
|
||||||
|
# [*keepalive_interval*]
|
||||||
|
# (Optional) Integer. Interval in seconds for sending keepalive messages to Sensu server side (By default 20).
|
||||||
|
# Defaults to undef.
|
||||||
|
#
|
||||||
|
# [*tmp_base_dir*]
|
||||||
|
# (Optional) String. Path to temporary directory which is used for creation of check scripts
|
||||||
|
# (by default /var/tmp/collectd-sensubility-checks).
|
||||||
|
# Defaults to undef.
|
||||||
|
#
|
||||||
|
# [*shell_path*]
|
||||||
|
# (Optional) String. Path to shell used for executing check scripts (by default /usr/bin/sh).
|
||||||
|
# Defaults to undef.
|
||||||
|
#
|
||||||
|
# [*worker_count*]
|
||||||
|
# (Optional) String. Number of goroutines spawned for executing check scripts (by default 2).
|
||||||
|
# Defaults to undef.
|
||||||
|
#
|
||||||
|
# [*checks*]
|
||||||
|
# (Optional) Hash representing definitions of standalone checks (by default {}).
|
||||||
|
# Defaults to undef.
|
||||||
|
#
|
||||||
|
# [*amqp_host*]
|
||||||
|
# (Optional) String. Hostname or IP address of the AMQP 1.0 intermediary.
|
||||||
|
# Defaults to the undef
|
||||||
|
#
|
||||||
|
# [*amqp_port*]
|
||||||
|
# (Optional) String. Service name or port number on which the AMQP 1.0
|
||||||
|
# intermediary accepts connections. This argument must be a string,
|
||||||
|
# even if the numeric form is used.
|
||||||
|
# Defaults to undef
|
||||||
|
#
|
||||||
|
# [*amqp_user*]
|
||||||
|
# (Optional) String. User part of credentials used to authenticate to the
|
||||||
|
# AMQP 1.0 intermediary.
|
||||||
|
# Defaults to undef
|
||||||
|
#
|
||||||
|
# [*amqp_password*]
|
||||||
|
# (Optional) String. Password part of credentials used to authenticate
|
||||||
|
# to the AMQP 1.0 intermediary.
|
||||||
|
# Defaults to undef
|
||||||
|
class tripleo::profile::base::metrics::collectd::sensubility (
|
||||||
|
$ensure = 'present',
|
||||||
|
$config_path = '/etc/collectd-sensubility.conf',
|
||||||
|
$log_file = undef,
|
||||||
|
$log_level = undef,
|
||||||
|
$connection = undef,
|
||||||
|
$subscriptions = undef,
|
||||||
|
$client_name = undef,
|
||||||
|
$client_address = undef,
|
||||||
|
$keepalive_interval = undef,
|
||||||
|
$tmp_base_dir = undef,
|
||||||
|
$shell_path = undef,
|
||||||
|
$worker_count = undef,
|
||||||
|
$checks = undef,
|
||||||
|
$amqp_host = undef,
|
||||||
|
$amqp_port = undef,
|
||||||
|
$amqp_user = undef,
|
||||||
|
$amqp_password = undef
|
||||||
|
) {
|
||||||
|
include ::collectd
|
||||||
|
include ::collectd::plugin::exec
|
||||||
|
|
||||||
|
package { 'collectd-sensubility':
|
||||||
|
ensure => $ensure,
|
||||||
|
}
|
||||||
|
|
||||||
|
file { $config_path:
|
||||||
|
ensure => $ensure,
|
||||||
|
mode => '0644',
|
||||||
|
content => epp('tripleo/metrics/collectd-sensubility.conf.epp', {
|
||||||
|
log_file => $log_file,
|
||||||
|
log_level => $log_level,
|
||||||
|
connection => $connection,
|
||||||
|
subscriptions => $subscriptions,
|
||||||
|
client_name => $client_name,
|
||||||
|
client_address => $client_address,
|
||||||
|
keepalive_interval => $keepalive_interval,
|
||||||
|
tmp_base_dir => $tmp_base_dir,
|
||||||
|
shell_path => $shell_path,
|
||||||
|
worker_count => $worker_count,
|
||||||
|
checks => inline_template('<%= @checks.to_json %>'),
|
||||||
|
amqp_host => $amqp_host,
|
||||||
|
amqp_port => $amqp_port,
|
||||||
|
amqp_user => $amqp_user,
|
||||||
|
amqp_password => $amqp_password
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
collectd::plugin::exec::cmd { 'sensubility':
|
||||||
|
user => 'collectd',
|
||||||
|
group => 'collectd',
|
||||||
|
exec => ['collectd-sensubility'],
|
||||||
|
}
|
||||||
|
}
|
@ -16,8 +16,27 @@
|
|||||||
|
|
||||||
require 'spec_helper'
|
require 'spec_helper'
|
||||||
|
|
||||||
|
sensubility_conf = "
|
||||||
|
[default]
|
||||||
|
|
||||||
|
[sensu]
|
||||||
|
connection=ampq://sensu:sensu@localhost:5672//sensu
|
||||||
|
subscriptions=default,test
|
||||||
|
checks={\"standalone_check\":{\"command\":\"echo 'foobar'\",\"interval\":5}}
|
||||||
|
|
||||||
|
[amqp1]
|
||||||
|
"
|
||||||
|
exec_cmd = <<-EOS
|
||||||
|
Exec \"collectd:collectd\" \"collectd-sensubility\"
|
||||||
|
EOS
|
||||||
|
|
||||||
|
|
||||||
describe 'tripleo::profile::base::metrics::collectd' do
|
describe 'tripleo::profile::base::metrics::collectd' do
|
||||||
shared_examples_for 'tripleo::profile::base::metrics::collectd' do
|
shared_examples_for 'tripleo::profile::base::metrics::collectd' do
|
||||||
|
before :each do
|
||||||
|
facts.merge!({ :step => params[:step] })
|
||||||
|
end
|
||||||
|
|
||||||
context 'with step less than 3' do
|
context 'with step less than 3' do
|
||||||
let(:params) { { :step => 2, :gnocchi_server => 'localhost' } }
|
let(:params) { { :step => 2, :gnocchi_server => 'localhost' } }
|
||||||
it 'should do nothing' do
|
it 'should do nothing' do
|
||||||
@ -80,6 +99,26 @@ describe 'tripleo::profile::base::metrics::collectd' do
|
|||||||
)
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'with defaults and enabled sensubility' do
|
||||||
|
let(:params) do
|
||||||
|
{ :step => 3,
|
||||||
|
:amqp_host => 'localhost',
|
||||||
|
:enable_sensubility => true }
|
||||||
|
end
|
||||||
|
it 'has collectd class with exec plugin and enabled sensubility' do
|
||||||
|
is_expected.to compile.with_all_deps
|
||||||
|
is_expected.to contain_package('collectd-sensubility').with(:ensure => 'present')
|
||||||
|
is_expected.to contain_class('collectd')
|
||||||
|
is_expected.to contain_class('collectd::plugin::exec')
|
||||||
|
is_expected.to contain_concat__fragment('collectd_plugin_exec_conf_sensubility').with({
|
||||||
|
:order => 50,
|
||||||
|
:target => '/etc/collectd.d/exec-config.conf',
|
||||||
|
:content => exec_cmd,
|
||||||
|
})
|
||||||
|
is_expected.to contain_file('/etc/collectd-sensubility.conf').with_content(sensubility_conf)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
on_supported_os.each do |os, facts|
|
on_supported_os.each do |os, facts|
|
||||||
|
8
spec/fixtures/hieradata/step3.yaml
vendored
8
spec/fixtures/hieradata/step3.yaml
vendored
@ -1,2 +1,10 @@
|
|||||||
---
|
---
|
||||||
step: 3
|
step: 3
|
||||||
|
tripleo::profile::base::metrics::collectd::sensubility::connection: 'ampq://sensu:sensu@localhost:5672//sensu'
|
||||||
|
tripleo::profile::base::metrics::collectd::sensubility::subscriptions:
|
||||||
|
- default
|
||||||
|
- test
|
||||||
|
tripleo::profile::base::metrics::collectd::sensubility::checks:
|
||||||
|
standalone_check:
|
||||||
|
command: "echo 'foobar'"
|
||||||
|
interval: 5
|
||||||
|
67
templates/metrics/collectd-sensubility.conf.epp
Normal file
67
templates/metrics/collectd-sensubility.conf.epp
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
<%- | Optional[String] $log_file,
|
||||||
|
Optional[String] $log_level,
|
||||||
|
Optional[String] $connection,
|
||||||
|
Optional[Array] $subscriptions,
|
||||||
|
Optional[String] $client_name,
|
||||||
|
Optional[String] $client_address,
|
||||||
|
Optional[Integer] $keepalive_interval,
|
||||||
|
Optional[String] $tmp_base_dir,
|
||||||
|
Optional[String] $shell_path,
|
||||||
|
Optional[Integer] $worker_count,
|
||||||
|
Optional[String] $checks,
|
||||||
|
Optional[String] $amqp_host,
|
||||||
|
Optional[String] $amqp_port,
|
||||||
|
Optional[String] $amqp_user,
|
||||||
|
Optional[String] $amqp_password
|
||||||
|
| -%>
|
||||||
|
|
||||||
|
[default]
|
||||||
|
<% unless $log_file =~ Undef { -%>
|
||||||
|
log_file=<%=$log_file%>
|
||||||
|
<%- } -%>
|
||||||
|
<% unless $log_level =~ Undef { -%>
|
||||||
|
log_level=<%=$log_level%>
|
||||||
|
<%- } -%>
|
||||||
|
|
||||||
|
[sensu]
|
||||||
|
<% unless $connection =~ Undef { -%>
|
||||||
|
connection=<%=$connection%>
|
||||||
|
<%- } -%>
|
||||||
|
<% unless $subscriptions =~ Undef { -%>
|
||||||
|
subscriptions=<%=$subscriptions.join(',')%>
|
||||||
|
<%- } -%>
|
||||||
|
<% unless $client_name =~ Undef { -%>
|
||||||
|
client_name=<%=$client_name%>
|
||||||
|
<%- } -%>
|
||||||
|
<% unless $client_address =~ Undef { -%>
|
||||||
|
client_address=<%=$client_address%>
|
||||||
|
<%- } -%>
|
||||||
|
<% unless $keepalive_interval =~ Undef { -%>
|
||||||
|
keepalive_interval=<%=$keepalive_interval%>
|
||||||
|
<%- } -%>
|
||||||
|
<% unless $tmp_base_dir =~ Undef { -%>
|
||||||
|
tmp_base_dir=<%=$tmp_base_dir%>
|
||||||
|
<%- } -%>
|
||||||
|
<% unless $shell_path =~ Undef { -%>
|
||||||
|
shell_path=<%=$shell_path%>
|
||||||
|
<%- } -%>
|
||||||
|
<% unless $worker_count =~ Undef { -%>
|
||||||
|
worker_count=<%=$worker_count%>
|
||||||
|
<%- } -%>
|
||||||
|
<% unless $checks =~ Undef { -%>
|
||||||
|
checks=<%=$checks%>
|
||||||
|
<%- } -%>
|
||||||
|
|
||||||
|
[amqp1]
|
||||||
|
<% unless $amqp_host =~ Undef { -%>
|
||||||
|
host=<%=$amqp_host%>
|
||||||
|
<%- } -%>
|
||||||
|
<% unless $amqp_port =~ Undef { -%>
|
||||||
|
port=<%=$amqp_port%>
|
||||||
|
<%- } -%>
|
||||||
|
<% unless $amqp_user =~ Undef { -%>
|
||||||
|
user=<%=$amqp_user%>
|
||||||
|
<%- } -%>
|
||||||
|
<% unless $amqp_password =~ Undef { -%>
|
||||||
|
password=<%=$amqp_password%>
|
||||||
|
<%- } -%>
|
Loading…
Reference in New Issue
Block a user