fuel-plugin-lma-collector/deployment_scripts/puppet/modules/lma_collector/manifests/afd_filter.pp

65 lines
2.3 KiB
Puppet

# Copyright 2015 Mirantis, 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 lma_collector::afd_filter (
$type,
$cluster_name,
$logical_name,
$alarms,
$alarms_definitions,
$message_matcher,
$activate_alerting = true,
$enable_notification = false,
) {
include lma_collector::params
include lma_collector::service::metric
$lua_modules_dir = $lma_collector::params::lua_modules_dir
# name cannot contain '-'
$afd_file = join(['lma_alarms_', sanitize_name_for_lua($name)], '')
$afd_filename = "${lua_modules_dir}/${afd_file}.lua"
# Create the Lua structures that describe alarms
file { $afd_filename:
ensure => present,
content => template('lma_collector/lma_alarms.lua.erb'),
notify => Class['lma_collector::service::metric'],
}
# Create the confguration file for Heka
heka::filter::sandbox { "afd_${type}_${cluster_name}_${logical_name}":
config_dir => $lma_collector::params::metric_config_dir,
filename => "${lma_collector::params::plugins_dir}/filters/afd.lua",
message_matcher => join(["(Type == \'metric\' || Type == \'heka.sandbox.metric\' ",
"|| Type == \'heka.sandbox.multivalue_metric\') && (${message_matcher})"], ''),
ticker_interval => 10,
config => {
hostname => $::hostname,
afd_type => $type,
afd_file => $afd_file,
afd_cluster_name => $cluster_name,
afd_logical_name => $logical_name,
activate_alerting => $activate_alerting,
enable_notification => $enable_notification,
},
module_directory => $lua_modules_dir,
require => File[$afd_filename],
notify => Class['lma_collector::service::metric'],
}
}