cookbook 'monit-ng', '= 1.5.0'
monit-ng
(31) Versions
1.5.0
-
Follow12
Installs and configures monit
cookbook 'monit-ng', '= 1.5.0', :supermarket
knife supermarket install monit-ng
knife supermarket download monit-ng
Chef monit cookbook
Installs and configures Monit, with a resource
provider for managing additional monit checks.
Recipes
-
monit::default
: installs and optionally configures monit -
monit::repo
: installs monit from a package repository -
monit::source
: installs monit from source -
monit::config
: configures monit -
monit::{crond,ntpd,postfix,rsyslog,sshd}
: install common service checks
Dependencies
- yum-epel
- ubuntu
- apt
- build-essential
Attributes
default['monit']['install_method']
(default:repo
): whether to install using repository or source, options: repo, sourcedefault['monit']['configure']
(default:true
): should we setup the global configdefault['monit']['conf_file']
(default:calculated
): monit configuration filedefault['monit']['conf_dir']
(default:calculated
): .monitrc configuration files directorydefault['monit']['init_style']
(default:calculated
): monit service init styledefault['monit']['config']['mmonit_url']
(default:nil
): mmonit urldefault['monit']['config']['poll_freq']
(default:60
): how often should monit polldefault['monit']['config']['start_delay']
(default:5
): configure a delay before beginning polling after service startdefault['monit']['config']['eventqueue_dir']
(default:/var/tmp
): where to queue events if mail server unavailabledefault['monit']['config']['eventqueue_slots']
(default:100
): events backlog queue sizedefault['monit']['config']['log_file']
(default:/var/log/monit.log
): monit log file locationdefault['monit']['config']['id_file']
(default:/var/lib/monit.id
): mmonit system id file locationdefault['monit']['config']['state_file']
(default:/var/run/monit.state
): where to save state between startupsdefault['monit']['config']['port']
(default:2812
): monit web interface listener portdefault['monit']['config']['listen']
(default:127.0.0.1
): monit web interface listener addressdefault['monit']['config']['allow']
(default:localhost
): list of permitted control port accessors (host, basic-auth, pam, htpasswd)default['monit']['config']['mail_from']
(default:node fqdn | localhost
): email notification from addressdefault['monit']['config']['mail_subject']
(default:$SERVICE $EVENT at $DATE
): notification email subjectdefault['monit']['config']['mail_message']
(default:text
): email notification body-
default['monit']['config']['subscribers']
(default:[]
): this attributes configuresset alert
config option for eachHash
element (subscriber) with attributename
andsubscriptions
, e.g. chef role"default_attributes": {
"monit": {
"config": {
"subscribers": [
{
"name": "root@localhost",
"subscriptions": [ "nonexist", "timeout", "resource", "icmp", "connection"]
}
]
}
}
} -
default['monit']['config']['mail_servers']
(default:[]
): this attributes configuresset mailserver
config option for eachHash
element (mail server) with below attributes, e.g. chef role"default_attributes": {
"monit": {
"config": {
"mail_servers": [
{
"hostname": "localhost",
"port": 25,
"username": null,
"password": null,
"security": null,
"timeout": "30 seconds"
}
]
}
}
}
monit_check resource examples
External Service Check
monit_check 'facebook_api' do check_type 'host' check_id 'api.facebook.com' group 'external' tests [ { 'condition' => 'failed port 80 proto http', 'action' => 'alert' }, { 'condition' => 'failed port 443 type tcpSSL proto http', 'action' => 'alert' }, ] end
SSHD
monit_check 'sshd' do check_id '/var/run/sshd.pid' group 'system' start '/etc/init.d/ssh start' stop '/etc/init.d/ssh stop' tests [ { 'condition' => "failed port #{node.openssh.server.port} proto ssh for 3 cycles", 'action' => 'restart' }, { 'condition' => '3 restarts within 5 cycles', 'action' => 'alert' }, ] end
Postfix
monit_check 'postfix' do check_id '/var/spool/postfix/pid/master.pid' group 'system' start '/etc/init.d/postfix start' stop '/etc/init.d/postfix stop' tests [ { 'condition' => 'failed port 25 proto smtp', 'action' => 'restart' }, { 'condition' => '3 restarts within 5 cycles', 'action' => 'alert' }, ] end
Nginx
monit_check 'nginx' do check_id '/var/run/nginx.pid' group 'app' start '/etc/init.d/nginx start' stop '/etc/init.d/nginx stop' tests [ { 'condition' => 'failed port 80', 'action' => 'restart' }, { 'condition' => '3 restarts within 5 cycles', 'action' => 'alert' } ] end
Memcache
monit_check 'memcache' do check_id '/var/run/memcached.pid' group 'app' start '/etc/init.d/memcached start' stop '/etc/init.d/memcached stop' tests [ { 'condition' => 'failed port 11211 proto memcache', 'action' => 'restart' }, { 'condition' => '3 restarts within 15 cycles', 'action' => 'alert' }, ] end
Redis
monit_check 'redis' do check_id '/var/run/redis/redis-server.pid' group 'database' start '/etc/init.d/redis-server start' stop '/etc/init.d/redis-server stop' tests [ { 'condition' => 'failed host 127.0.0.1 port 6379 send "SET MONIT-TEST value\r\n" expect "OK" send "EXISTS MONIT-TEST\r\n" expect ":1"', 'action' => 'restart' }, { 'condition' => '3 restarts within 5 cycles', 'action' => 'alert' }, ] end
Solr
monit_check 'solr' do check_id '/var/run/tomcat6.pid' group 'app' start '/etc/init.d/tomcat6 start' stop '/etc/init.d/tomcat6 stop' tests [ { 'condition' => 'failed port 8080 proto http and request "/solr/admin/ping" for 2 cycles', 'action' => 'restart' }, { 'condition' => '3 restarts within 5 cycles', 'action' => 'timeout' }, ] end
MongoDB
monit_check 'mongo' do check_id "#{node.mongodb.dbpath}/mongod.lock" group 'database' start '/etc/init.d/mongodb start' stop '/etc/init.d/mongodb stop' tests [ { 'condition' => "failed port #{node.mongodb.port} proto http for 2 cycles", 'action' => 'restart with timeout 60 seconds' }, { 'condition' => '3 restarts within 10 cycles', 'action' => 'timeout' }, ] end
Contributing
- Fork the repository on Github
- Create a named feature branch (like
add_component_x
) - Write your change
- Write tests for your change (if applicable)
- Run the tests (
rake
), ensuring they all pass - Write new resource/attribute description to
README.md
- Write description about changes to PR
- Submit a Pull Request using Github
Copyright & License
Authors:: Nathan Williams and Contributors
<pre>
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.
</pre>
Dependent cookbooks
yum-epel >= 0.0.0 |
ubuntu >= 0.0.0 |
apt >= 0.0.0 |
build-essential >= 0.0.0 |
Contingent cookbooks
1.5.0 / 2015-03-02
Features/Fixes:
* use latest monit (5.12) for source install
* skip yum-epel setup on amazon linux (thanks @vkhatri!)
* enforce upcased mailserver security values (thanks @vkhatri!)
* better reflect upstream configuration defaults by not specifying default mailservers/subscribers list (thanks @vkhatri!)
* improved documentation (thanks @vkhatri!)
* update global config template to support multiple or empty mail_servers config
Known Issues:
* Monit 5.12 may segfault on some platforms when system hostname resolving fails
1.4.1 / 2015-01-04
- testing updates
- documentation updates/corrections (thanks NinjaTux!)
- add quote-wrapping of smtp username/password (thanks alappe!)
- update to monit release 5.11
1.4.0 / 2014-11-04
- updated to monit 5.10 for source-install
- better support for multiple init systems
- improved support for reloading service if monit_check resources updated during the run
1.3.1 / 2014-10-29
- update bundle and fix up foodcritic, rubocop, chefspec
- add chefspec coverage reporting to list uncovered resources
- move service provider selection into attributes to facilitate wrapper cookbooks choosing preference
1.3.0 / 2014-10-29
- consolidate suite runlist into setup
- bugfix: correct service check start/stop commands under systemd
- bugfix: fix duplicate service notifications from monit_check resources
- remove snmpd recipe
- update the setup recipe to: install all needed services, set up non-pid-having services under systemd to have a pid, include all core-service recipes
- expand integration testing to cover all core-service checks, rootfs check
1.2.1 / 2014-10-23
- tidies up 1.2.0, simplifies service provider selection, fixes foodcritic warnings
1.2.0 / 2014-10-23
- update source package to 5.9
- prefer upstart init on ubuntu >= 12.04
- prefer systemd init on centos >= 7.0
- unwind sysv init on upstart/systemd platforms to help migrate from pre-1.2.0 cookbook (to be removed in 1.3)
- spec updates for serverspec 2.0
- bug-fix: correct LSB headers in sysv script to fix debian support
- add debian to test platforms
- use cookbook_name when loading our own recipes
1.1.5 / 2014-10-11
- update check_pairs to support multiple id_types for a check (thanks @vkhatri!)
- add
matching
id_type for process checks (thanks @vkhatri!)
1.1.4 / 2014-09-10
- add start config for /etc/default/monit in Ubuntu 14.04 (thanks @kevit!)
1.1.3 / 2014-09-05
- update source install to 5.8.1
1.1.2 / 2014-09-05
- rename to monit-ng
1.1.0 / 2014-04-26
- fix default overriding instance args
1.0.2 / 2014-04-26
- code cleanup
- cleaner attributes
1.0.0 / 2014-04-25
- release version 1.0.0
Foodcritic Metric
1.5.0 passed this metric
1.5.0 passed this metric