serverdensity_agent
Version information
This version is compatible with:
- RedHat, Ubuntu, Debian, CentOS
Start using this module
Add this module to your Puppetfile:
mod 'serverdensity-serverdensity_agent', '2.3.6'
Learn more about managing modules with a PuppetfileDocumentation
serverdensity_agent
Puppet Module for deploying the Server Density Agent and agent plugins
Platforms
- Amazon Linux
- CentOS
- RHEL
- Debian
- Ubuntu
Support for Ubuntu Precise is now deprecated and agent updates are no longer provided after 2.1.6. This mainfest will install agent 2.1.6 for any server detected as Ubuntu Precise
Usage
This will create a new device, and then use the agent key provided automatically by the API to configure the agent on the node.
Create an API token by logging into your Server Density account, clicking your name top left, clicking Preferences then going to the Security tab.
class { 'serverdensity_agent':
sd_account => 'example',
api_token => 'APITOKENHERE',
}
Fixed key config
This will install the agent, with the basic configuration, using the key that is provided.
class { 'serverdensity_agent':
sd_account => 'example',
agent_key => '1234567890abcdef',
}
Installing an agent plugin
This will upload a plugin, and add custom config for it.
serverdensity_agent::plugin::v1{ 'MyPlugin':
source => 'puppet:///mymodule/myplugin.py',
config => {
custom_key1 => 'foo',
}
}
NB - To access the value for custom_key1
from your plugin script, you can read it from the rawConfig dict, e.g:
def __init__(self, agentConfig, checksLogger, rawConfig):
self.agentConfig = agentConfig
self.checksLogger = checksLogger
self.rawConfig = rawConfig
# Grab the custom key
self.key1 = self.rawConfig['MyPlugin']['custom_key1']
Optional Parameters
There are some optional parameters that can be used to configure other parts of the agent
use_fqdn
- This will cause the class to use the facter Fully Qualified Domain Name rather than the detected hostname. Useful in times where the sd-agent and puppet disagree on what the hostname should be.server_name
- String. The reported name of the serverserver_group
- Sets the group for the server that is addedv1_plugin_directory
- The directory to install 3rd party legacy agent plugins tolog_level
- String. Logging level to use for agent. Defaults to INFO if not set.service_enabled
- Boolean. Ensures the sd-agent service is enabled and running through the system service facility, default: true. Useful when using an alternative process manager, e.g supervisoruse_sdstatsd
- Boolean. Ensures the sdstatsd service is enabled and running, default: false. [https://support.serverdensity.com/hc/en-us/articles/360001082706-Monitoring-with-SdStatsdstatsd_forward_host
- String. Allows sdstatsd to forward statsd packets to another host and port, default: undef and therefore off.statsd_forward_port
- String. Allows sdstatsd to forward statsd packets to another host and port, default: undef and therefore off.
Upgrade to Server Density Agent Puppet Module 2.x
Many parameters have been deprecated and some have changed between the 0.9.x/1.x puppet module to the 2.x series. The 0.9.x series will be identified by 1.x. in this section
sd_url changes and new sd_account parameter
- The
sd_url
parameter points tohttps://accountname.agent.serverdensity.io/
instead ofhttps://accountname.serverdensity.io/
. Notice the.agent
subdomain after the account name. - The
sd_account
parameter is prefered oversd_url
.
Hence the 1.x declaration:
class { 'serverdensity_agent':
sd_url => 'https://example.serverdensity.io/',
api_token => 'APITOKENHERE',
}
Should read in the 2.x version:
class { 'serverdensity_agent':
sd_url => 'https://example.agent.serverdensity.io/',
api_token => 'APITOKENHERE',
}
But the use of sd_account
is preferred so this is the current best practice:
class { 'serverdensity_agent':
sd_account => 'example',
api_token => 'APITOKENHERE',
}
Changed parameters
plugin_directory -> v1_plugin_directory
The name has changed and the default location has changed from /usr/bin/sd-agent/plugins
to /usr/local/sd-agent-plugins
.
logging_level -> log_level
Aesthetic change to maintain coherence with the v2 agent configuration file.
Deprecated parameters
Deprecated by the serverdensity_agent::plugin::apache class
- apache_status_url
- apache_status_user
- apache_status_pass
Check the class documentation for further details. Basic example:
class { 'serverdensity_agent::plugin::apache':
apache_status_url => 'http://localhost/server-status?auto',
apache_user => 'admin',
apache_password => 'honshu'
}
Deprecated by the serverdensity_agent::plugin::mongo class
- mongodb_server
- mongodb_dbstats
- mongodb_replset
Check the class documentation for further details. Basic example:
serverdensity_agent::plugin::mongo { 'mongodb://localhost:27017/admin': }
Deprecated by the serverdensity_agent::plugin::mysql class
- mysql_server
- mysql_user
- mysql_pass
Check the class documentation for further details. Basic example:
class { 'serverdensity_agent::plugin::mysql':
server => 'localhost',
user => 'root',
password => 'honshu'
}
Basic example with replication monitoring enabled:
class { 'serverdensity_agent::plugin::mysql':
server => 'localhost',
user => 'root',
password => 'honshu',
repl => true,
}
Deprecated by the serverdensity_agent::plugin::nginx class
- nginx_status_url
Check the class documentation for further details. Basic example:
class { 'serverdensity_agent::plugin::nginx':
nginx_status_url => 'http://localhost/nginx_status/',
ssl_validation => false,
}
Deprecated by the serverdensity_agent::plugin::rabbitmq class
- rabbitmq_status_url
- rabbitmq_user
- rabbitmq_pass
Check the class documentation for further details. Basic example:
class { 'serverdensity_agent::plugin::rabbitmq':
rabbitmq_api_url => 'http://localhost:55672/api/',
rabbitmq_user => 'guest',
rabbitmq_pass => 'guest'
}
Removed parameters
- api_username
- api_password
- fpm_status_url
- tmp_directory
- pidfile_directory
- logtail_paths
New Classes
Disk
Check the class documentation for further details. Basic example:
class { 'serverdensity_agent::plugin::disk':
use_mount => 'no',
excluded_filesystems => ['tmpfs', 'run'],
excluded_disks => ['/dev/sda', '/dev/sdb'],
excluded_disk_re => '/dev/sda.*',
excluded_mountpoint_re => '/mnt/no-monitor.*',
all_partitions => false,
tag_by_filesystem => 'yes'
}
Network
Check the class documentation for further details. Basic example:
class { 'serverdensity_agent::plugin::network':
excluded_interfaces => ['lo','lo0'],
collect_connection_state => true,
excluded_interface_re => 'eth*',
combine_connection_states => true
}
Known issues
Restart the puppet master on module upgrade
When using Puppet in infrastructure mode a restart of the Puppet master is needed to clean up the facter and custom functions caches.
Changelog
v2.3.6 (09-02-2021)
- Updated GCP metadata endpoint.
v2.3.5 (26-05-2020)
- Added support for Ubuntu Eoan and Focal.
v2.3.4 (29-07-2019)
- Added support for Debian Buster
- Fix initial apt installation failure as the repo is added, but not refreshed.
v2.3.3
- Added basic support for SDStatsD plugin
- Added Changelog
Dependencies
- puppetlabs/apt (>= 2.0.0)
- puppetlabs/stdlib (>= 3.0.0)
Simplified BSD License Copyright (c) 2014, Server Density <hello@serverdensity.com> All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Boxed Ice nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.