Merge pull request #560 from enovance/sensu

monitoring: Initial commit for sensu configuration
This commit is contained in:
Emilien Macchi 2014-09-28 23:45:07 -04:00
commit b03b511882
9 changed files with 263 additions and 0 deletions

View File

@ -48,6 +48,9 @@ fixtures:
'corosync':
repo: 'git://github.com/enovance/puppetlabs-corosync.git'
ref: '79b61302b07fef30b65a42f3b55229616018aacf'
'datacat':
repo: 'git://github.com/enovance/puppet-datacat.git'
ref: '6a2017b31a8808de35b89d90b9e2b681ef9a0918'
'firewall':
repo: 'git://github.com/enovance/puppetlabs-firewall.git'
ref: '6540b31b0ca0727094ddf44436274436d2853d6d'
@ -57,6 +60,9 @@ fixtures:
'elasticsearch':
repo: 'git://github.com/enovance/puppet-elasticsearch.git'
ref: '6d08442e8382f0f47388d4185122992c2d73cd9b'
'gcc':
repo: 'git://github.com/enovance/puppetlabs-gcc.git'
ref: '272e6595a2f4824dafa71a2b751960659c05c35d'
'git':
repo: 'git://github.com/enovance/puppetlabs-git.git'
ref: '0df1f62130a7752c728efb7555f2b07ca178ee5b'
@ -90,9 +96,18 @@ fixtures:
'ntp':
repo: 'git://github.com/enovance/puppetlabs-ntp.git'
ref: 'eb02ba2937ce86fb609ae41499767244b78ec58d'
'puppetdbquery':
repo: 'git://github.com/enovance/puppet-puppetdbquery.git'
ref: '89194917744f929bb600c31d7d6f822b529f5f03'
'redis':
repo: 'git://github.com/enovance/puppet-redis.git'
ref: '1b2b2cea8c9acc08cfa01b42e47fad17f3c4d03d'
'sysctl':
repo: 'git://github.com/enovance/puppet-sysctl.git'
ref: '4a463384e844f51b270428643a5b8beb3628e854'
'uchiwa':
repo: 'git://github.com/enovance/yelp-uchiwa.git'
ref: '8eafd8167ff7d4f1cd696e4d098e3e1497c28279'
'inifile':
repo: 'git://github.com/enovance/puppetlabs-inifile'
ref: 'ae23a4db97d2815ec305d0529912685f07746d3c'
@ -102,6 +117,9 @@ fixtures:
'vcsrepo':
repo: 'git://github.com/enovance/puppetlabs-vcsrepo.git'
ref: '4592bfd59cd5d4795069798a14b483e16c98c1ff'
'wget':
repo: 'git://github.com/enovance/puppet-wget.git'
ref: '1c3ea6f1c822a99b52defb87305ea5977cba4293'
'stdlib':
repo: 'git://github.com/enovance/puppetlabs-stdlib.git'
ref: '8a9b2dfc0e463bec39c00c82c30e0a8a8b7867f3'
@ -120,6 +138,9 @@ fixtures:
'kmod':
repo: 'git://github.com/enovance/puppet-kmod.git'
ref: 'accc40093e6f8ee9cc472e9eb6ba3bab4bad3a1f'
'sensu':
repo: 'git://github.com/enovance/sensu-puppet.git'
ref: '4a16ebf3503bfc9ae6192ae3120cb29b9e5c8445'
'ssh':
repo: 'git://github.com/enovance/puppet-ssh.git'
ref: '10675c0d80511a8cdd514af67b695887fa97ec40'

View File

@ -80,9 +80,15 @@ mod 'corosync',
mod 'dnsclient',
:git => 'git://github.com/enovance/puppet-module-dnsclient.git',
:ref => '4158b30f4660623f98dcdbd1ce9b482556180b57'
mod 'datacat',
:git => 'git://github.com/enovance/puppet-datacat.git',
:ref => '6a2017b31a8808de35b89d90b9e2b681ef9a0918'
mod 'elasticsearch',
:git => 'git://github.com/enovance/puppet-elasticsearch.git',
:ref => '6d08442e8382f0f47388d4185122992c2d73cd9b'
mod 'gcc',
:git => 'git://github.com/enovance/puppetlabs-gcc.git',
:ref => '272e6595a2f4824dafa71a2b751960659c05c35d'
mod 'git',
:git => 'git://github.com/enovance/puppetlabs-git.git',
:ref => '0df1f62130a7752c728efb7555f2b07ca178ee5b'
@ -139,9 +145,15 @@ mod 'ntp',
mod 'pacemaker',
:git => 'git://github.com/enovance/puppet-pacemaker.git',
:ref => '56bbb3580bb7fa62bf57c2ed7a30b938e42b8cc3'
mod 'puppetdbquery',
:git => 'git://github.com/enovance/puppet-puppetdbquery.git',
:ref => '89194917744f929bb600c31d7d6f822b529f5f03'
mod 'rabbitmq',
:git => 'git://github.com/enovance/puppetlabs-rabbitmq.git',
:ref => '25420cb3c26c9a8432ab519d43c094d614d4fec4'
mod 'redis',
:git => 'git://github.com/enovance/puppet-redis.git',
:ref => '1b2b2cea8c9acc08cfa01b42e47fad17f3c4d03d'
mod 'rhnreg_ks',
:git => 'git://github.com/enovance/puppet-rhnreg_ks.git',
:ref => '8fdc051992b44a09f39d3b510d7cd6db5ed5ff66'
@ -151,6 +163,9 @@ mod 'rpcbind',
mod 'rsync',
:git => 'git://github.com/enovance/puppetlabs-rsync.git',
:ref => '7122983d89bf68bc4170415cc03212f6a8a4636e'
mod 'sensu',
:git => 'git://github.com/enovance/sensu-puppet.git',
:ref => '4a16ebf3503bfc9ae6192ae3120cb29b9e5c8445'
mod 'ssh',
:git => 'git://github.com/enovance/puppet-ssh.git',
:ref => '10675c0d80511a8cdd514af67b695887fa97ec40'
@ -168,9 +183,15 @@ mod 'sysctl',
mod 'types',
:git => 'git://github.com/enovance/puppet-module-types.git',
:ref => '4c58ae8b6cdb1a9da3da9654a35375e274019dfb'
mod 'uchiwa',
:git => 'git://github.com/enovance/yelp-uchiwa.git',
:ref => '8eafd8167ff7d4f1cd696e4d098e3e1497c28279'
mod 'vswitch',
:git => 'git://github.com/enovance/puppet-vswitch.git',
:ref => '49dbaff15e8f017dbe365ebf08eb505472b695a1'
mod 'wget',
:git => 'git://github.com/enovance/puppet-wget.git'
:ref => '1c3ea6f1c822a99b52defb87305ea5977cba4293'
mod 'xinetd',
:git => 'git://github.com/enovance/puppetlabs-xinetd.git',
:ref => '7557af0e418d1a587df04fe7d01322ff2473c32e'

View File

@ -41,6 +41,10 @@ class cloud::messaging(
# we ensure having an array
$array_rabbit_names = any2array($rabbit_names)
Class['rabbitmq'] -> Rabbitmq_vhost <<| |>>
Class['rabbitmq'] -> Rabbitmq_user <<| |>>
Class['rabbitmq'] -> Rabbitmq_user_permissions <<| |>>
# Packaging issue: https://bugzilla.redhat.com/show_bug.cgi?id=1033305
if $::osfamily == 'RedHat' {
file {'/usr/sbin/rabbitmq-plugins':

View File

@ -0,0 +1,22 @@
#
# Copyright (C) 2014 eNovance SAS <licensing@enovance.com>
#
# 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.
#
class cloud::monitoring::agent::sensu {
Package['sensu'] -> Sensu::Plugin <<| |>>
include ::sensu
}

View File

@ -0,0 +1,105 @@
#
# Copyright (C) 2014 eNovance SAS <licensing@enovance.com>
#
# 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.
#
# [*checks*]
# (optionnal) Hash of checks and their respective options
# Defaults to {}.
# Example :
# $checks = {
# 'ntp' => {
# 'command' => '/etc/sensu/plugins/check-ntp.sh'},
# 'http' => {
# 'command' => '/etc/sensu/plugins/check-http.sh'},
# }
#
# [*handlers*]
# (optionnal) Hash of handlers and their respective options
# Defaults to {}.
# Example :
# $handlers = {
# 'mail' => {
# 'command' => 'mail -s "Sensu Alert" contact@example.com'},
# }
#
# [*plugins*]
# (optionnal) Hash of handlers and their respective options
# Defaults to {}.
# Example :
# $plugins = {
# 'http://www.example.com/ntp.sh' => {
# 'type' => 'url',
# 'install_path' => '/etc/sensu/plugins',
# }
# }
#
# [*rabbitmq_user*]
# (optionnal) Rabbitmq user
# Defaults to 'sensu'
#
# [*rabbitmq_password*]
# (optionnal) Rabbitmq_password
# Defaults to 'rabbitpassword'
#
# [*rabbitmq_vhost*]
# (optionnal) Rabbitmq vhost
# Defaults to '/sensu'
#
# [*uchiwa_ip*]
# (optionnal) IP address to bind uchiwa to
# Defaults to '%{::ipaddress}'
class cloud::monitoring::server::sensu (
$checks = {},
$handlers = {},
$plugins = {},
$rabbitmq_user = 'sensu',
$rabbitmq_password = 'rabbitpassword',
$rabbitmq_vhost = '/sensu',
$uchiwa_ip = $::ipaddress,
) {
@@rabbitmq_user { $rabbitmq_user :
password => $rabbitmq_password,
}
@@rabbitmq_vhost { $rabbitmq_vhost :
ensure => present,
}
@@rabbitmq_user_permissions { "${rabbitmq_user}@${rabbitmq_vhost}" :
configure_permission => '.*',
read_permission => '.*',
write_permission => '.*',
}
$rabbitmq_user_realized = query_nodes("Rabbitmq_user['${rabbitmq_user}']")
if size($rabbitmq_user_realized) >= 1 {
Service['redis-6379'] -> Service['sensu-api'] -> Service['sensu-server'] -> Service['uchiwa']
Service['sensu-server'] -> Sensu::Plugin <<| |>>
include cloud::monitoring::agent::sensu
include redis
create_resources('sensu::check', $checks)
create_resources('sensu::handler', $handlers)
create_resources('@@sensu::plugin', $plugins)
include ::uchiwa
uchiwa::api { 'OpenStack' :
host => $uchiwa_ip,
}
}
}

View File

@ -0,0 +1,47 @@
#
# Copyright (C) 2014 eNovance SAS <licensing@enovance.com>
#
# 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.
#
# Unit tests for cloud::monitoring::agent::sensu class
#
require 'spec_helper'
describe 'cloud::monitoring::agent::sensu' do
shared_examples_for 'openstack sensu monitoring agent' do
it 'include ::sensu' do
should contain_class('sensu')
end
end
context 'on Debian platforms' do
let :facts do
{ :osfamily => 'Debian' }
end
it_configures 'openstack sensu monitoring agent'
end
context 'on RedHat platforms' do
let :facts do
{ :osfamily => 'RedHat' }
end
it_configures 'openstack sensu monitoring agent'
end
end

View File

@ -0,0 +1,43 @@
#
# Copyright (C) 2014 eNovance SAS <licensing@enovance.com>
#
# 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.
#
# Unit tests for cloud::monitoring::server::sensu class
#
require 'spec_helper'
describe 'cloud::monitoring::server::sensu' do
shared_examples_for 'openstack sensu monitoring server' do
end
context 'on Debian platforms' do
let :facts do
{ :osfamily => 'Debian' }
end
it_configures 'openstack sensu monitoring server'
end
context 'on RedHat platforms' do
let :facts do
{ :osfamily => 'RedHat' }
end
it_configures 'openstack sensu monitoring server'
end
end