graphite
Version information
This version is compatible with:
- Puppet Enterprise 2018.1.x, 2017.3.x, 2017.2.x, 2017.1.x, 2016.5.x, 2016.4.x
- Puppet >= 3.0.0 < 6.0.0
- , , , , , ,
Start using this module
Add this module to your Puppetfile:
mod 'dwerder-graphite', '8.0.0'
Learn more about managing modules with a PuppetfileDocumentation
graphite
Table of Contents
Overview
This module installs and makes basic configs for graphite, with carbon and whisper.
Module Description
Graphite, and its components Carbon and Whisper, is an enterprise-scale monitoring tool. This module sets up a simple graphite server with all its components. Furthermore it can be used to set up more complex graphite environments with metric aggregation, clustering and so on.
Setup
What graphite affects:
- packages/services/configuration files for Graphite
- on default sets up webserver (can be disabled if manage by other module)
Beginning with Graphite
To install Graphite with default parameters
class { 'graphite': }
The defaults are determined by your operating system e.g. Debian systems have one set of defaults, and RedHat systems have another). This defaults should work well on testing environments with graphite as a standalone service on the machine. For production use it is recommend to use a database like MySQL and cache data in memcached (not installed with this module) and configure it here. Furthermore you should check things like gr_storage_schemas
.
Configure MySQL and Memcached
class { 'graphite':
gr_max_updates_per_second => 100,
gr_timezone => 'Europe/Berlin',
secret_key => 'CHANGE_IT!',
gr_storage_schemas => [
{
name => 'carbon',
pattern => '^carbon\.',
retentions => '1m:90d'
},
{
name => 'special_server',
pattern => '^longtermserver_',
retentions => '10s:7d,1m:365d,10m:5y'
},
{
name => 'default',
pattern => '.*',
retentions => '60:43200,900:350400'
}
],
gr_django_db_engine => 'django.db.backends.mysql',
gr_django_db_name => 'graphite',
gr_django_db_user => 'graphite',
gr_django_db_password => 'MYsEcReT!',
gr_django_db_host => 'mysql.my.domain',
gr_django_db_port => '3306',
gr_memcache_hosts => ['127.0.0.1:11211']
}
Configure Graphite with Grafana
This setup will use the puppetlabs-apache and bfraser-grafana modules to setup a graphite system with grafana frontend. You will also need an elasticsearch as it is required for grafana.
include '::apache'
apache::vhost { 'graphite.my.domain':
port => '80',
docroot => '/opt/graphite/webapp',
wsgi_application_group => '%{GLOBAL}',
wsgi_daemon_process => 'graphite',
wsgi_daemon_process_options => {
processes => '5',
threads => '5',
display-name => '%{GROUP}',
inactivity-timeout => '120',
},
wsgi_import_script => '/opt/graphite/conf/graphite_wsgi.py',
wsgi_import_script_options => {
process-group => 'graphite',
application-group => '%{GLOBAL}'
},
wsgi_process_group => 'graphite',
wsgi_script_aliases => {
'/' => '/opt/graphite/conf/graphite_wsgi.py'
},
headers => [
'set Access-Control-Allow-Origin "*"',
'set Access-Control-Allow-Methods "GET, OPTIONS, POST"',
'set Access-Control-Allow-Headers "origin, authorization, accept"',
],
directories => [{
path => '/media/',
order => 'deny,allow',
allow => 'from all'}
]
}->
class { 'graphite':
gr_web_server => 'none',
gr_disable_webapp_cache => true,
}
class {'grafana':
# see manual of this module
}
Configuration with Apache 2.4 and CORS
If you use a system which ships Apache 2.4, then you will need a slightly different vhost config. Here is an example with Apache 2.4 and CORS enabled. If you do not know what CORS, then do not use it. Its disabled by default. You will need CORS for Webguis like Grafana.
class { 'graphite':
gr_apache_24 => true,
gr_web_cors_allow_from_all => true,
secret_key => 'CHANGE_IT!'
}
Configuration with Additional LDAP Options
If additional LDAP parameters are needed for your Graphite installation, you can specify them using the gr_ldap_options
parameter. For example, this is useful if you're using SSL and need to configure LDAP to use your SSL cert and key files.
This Puppet configuration...
class { 'graphite':
gr_ldap_options => {
'ldap.OPT_X_TLS_REQUIRE_CERT' => 'ldap.OPT_X_TLS_ALLOW',
'ldap.OPT_X_TLS_CACERTDIR' => '"/etc/ssl/ca"',
'ldap.OPT_X_TLS_CERTFILE' => '"/etc/ssl/mycert.crt"',
'ldap.OPT_X_TLS_KEYFILE' => '"/etc/ssl/mykey.pem"',
},
}
... adds these lines to the local_settings.py configuration file for Graphite web.
import ldap
ldap.set_option(ldap.OPT_X_TLS_CACERTDIR, "/etc/ssl/ca")
ldap.set_option(ldap.OPT_X_TLS_CERTFILE, "/etc/ssl/mycert.crt")
ldap.set_option(ldap.OPT_X_TLS_KEYFILE, "/etc/ssl/mykey.pem")
ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_ALLOW)
See http://www.python-ldap.org/ for more details about these options.
Configuration with multiple cache, relay and/or aggregator instances
You could create more than one instance for cache, relay or aggregator using the gr_cache_instances
,
gr_relay_instances
and gr_aggregator_instances
parameters. These paremeters must be hashes, and the keys are the name of the instances (cache:b, cache:c, relay:b, relay:c, etc.). Every hash must have an array of parameters which will be written as is in the config file. The defaults settings for the additional instances will be the
ones set for the principal instance.
class {'graphite':
gr_line_receiver_port => 2003,
gr_pickle_receiver_port => 2004,
gr_cache_query_port => 7002,
gr_cache_instances => {
'cache:b' => {
'LINE_RECEIVER_PORT' => 2103,
'PICKLE_RECEIVER_PORT' => 2104,
'CACHE_QUERY_PORT' => 7102,
},
'cache:c' => {
'LINE_RECEIVER_PORT' => 2203,
'PICKLE_RECEIVER_PORT' => 2204,
'CACHE_QUERY_PORT' => 7202,
}
}
}
So in this case you would have 3 cache instances, the first one is cache
(you can refer to it as cache:a
too), cache:b
and cache:c
. cache:a will listen on ports 2003, 2004 and 7002 for line, pickle and query respectively. But, cache:b will do it on ports 2103, 2104, and 7102, and cache:c on 2203, 2204 and 7202. All other parameters from cache:a will be inherited by cache:b and c.
Install Graphite 1.1 and enable tag-support
Taged metrics are available in Graphite/Carbon 1.1.1 and later. To use tags Carbon has to add tags to a TagDB (see https://graphite.readthedocs.io/en/latest/tags.html) for details. To enable this feature in Carbon set the parameter gr_tags_enable
to true
. This will configure Carbon to pass tags to Graphite-web listening on 127.0.0.1
and port gr_web_server_port
. Redis and HTTP(S) Tag DBs are not yet supported.
To use tags at least version 1.1.1 of Graphite-Web/Carbopn/Whisper as well as compatible versions of Django, Django Tagging and Twisted have to be installed.
class { 'graphite':
gr_tags_enable => true,
#
# Needed to install / upgrade to Graphite 1.1
#
gr_graphite_ver => '1.1.7',
gr_carbon_ver => '1.1.7',
gr_whisper_ver => '1.1.7',
gr_django_ver => '1.11',
gr_django_tagging_ver => '0.4.6',
gr_twisted_ver => '20.3.0',
gr_django_init_command => 'PYTHONPATH=/opt/graphite/webapp /usr/local/bin/django-admin.py migrate --setting=graphite.settings --fake-initial',
gr_django_init_provider => 'shell',
}
Installing with something other than pip and specifying package names and versions
If you need to install via something other than pip, an internal apt repo with fpm converted packages for instance, you can set gr_pip_install
to false.
If you're doing this you'll most likely have to override the default package names and versions as well.
class { '::graphite':
gr_pip_install => false,
gr_django_tagging_pkg => 'python-django-tagging',
gr_django_tagging_ver => 'present',
gr_twisted_pkg => 'python-twisted',
gr_twisted_ver => 'present',
gr_txamqp_pkg => 'python-txamqp',
gr_txamqp_ver => 'present',
gr_graphite_pkg => 'python-graphite-web',
gr_graphite_ver => 'present',
gr_carbon_pkg => 'python-carbon',
gr_carbon_ver => 'present',
gr_whisper_pkg => 'python-whisper',
gr_whisper_ver => 'present',
}
Additionally, the Django package is normally installed from a system package, but can be changed to install from pip instead.
class { '::graphite':
gr_django_pkg => 'django',
gr_django_ver => '1.5',
gr_django_provider => 'pip',
}
Managing system pip and Python development packages
If gr_pip_install is set to true, both python-pip and Python development packages will need to be installed. If you want to manage those packages separately, set gr_manage_python_packages to false.
class { '::graphite': gr_pip_install => true, gr_manage_python_packages => false, }
Installing with pip from a non-PyPI source
You can also chose to install the pip packages from a source other than PyPI, such as a file on disk or an HTTP server. If you do this you will also have to set the package versions to 'present'
to avoid errors from Puppet:
class { '::graphite':
gr_django_tagging_ver => 'present',
gr_django_tagging_source => 'http://example.com/django-tagging-0.3.1.tar.gz',
gr_twisted_ver => 'present',
gr_twisted_source => 'http://example.com/Twisted-11.1.0.tar.bz2',
gr_txamqp_ver => 'present',
gr_txamqp_source => 'http://example.com/txAMQP-0.4.tar.gz',
gr_graphite_ver => 'present',
gr_graphite_source => 'http://example.com/graphite-web-0.9.15.tar.gz',
gr_carbon_ver => 'present',
gr_carbon_source => 'http://example.com/carbon-0.9.15.tar.gz',
gr_whisper_ver => 'present',
gr_whisper_source => 'http://example.com/whisper-0.9.15.tar.gz',
}
You can also specify an alternate source for all packages (and their dependencies) by passing options to pip install
using gr_pip_install_options
:
class { '::graphite':
gr_pip_install_options => [
'--no-index',
'--find-links', 'https://example.com/pip_packages/',
],
}
For more details on how these options work, see the documentation for pip install
.
Usage
Class: graphite
This is the primary class. And the only one which should be used.
Parameters within graphite
:
gr_group
Default is empty. The group of the user (see gr_user) who runs graphite.
gr_user
Default is empty. The user who runs graphite. If this is empty carbon runs as the user that invokes it.
gr_enable_carbon_cache
Default is true. Enable carbon cache.
gr_max_cache_size
Default is 'inf'. Limits the size of the cache to avoid swapping or becoming CPU bound. Use the value "inf" (infinity) for an unlimited cache size.
gr_max_updates_per_second
Default is 500. Limits the number of whisper update_many() calls per second, which effectively means the number of write requests sent to the disk.
gr_max_updates_per_second_on_shutdown
Default is 'undef' (no limit change on shutdown). Change the limits of gr_max_updates_per_second in case of an stop/shutdown event to speed up/slow down the shutdown process.
gr_max_creates_per_minute
Default is 50. Softly limits the number of whisper files that get created each minute.
gr_carbon_metric_prefix
The prefix to be applied to internal performance metrics. Defaults to 'carbon'.
gr_carbon_metric_interval
Default is 60. Set the interval between sending internal performance metrics; affects all carbon daemons.
gr_carbon_relay_ulimit
Default is undef. Set the maximum number of file descriptors for carbon-relay process.
gr_line_receiver_interface
Default is '0.0.0.0' (string). Interface the line receiver listens.
gr_line_receiver_port
Default is 2003. Port of line receiver.
gr_enable_udp_listener
Default is 'False' (string). Set this to True to enable the UDP listener.
gr_udp_receiver_interface
Default is '0.0.0.0' (string). Its clear, isnt it?
gr_udp_receiver_port
Default is 2003. Self explaining.
gr_pickle_receiver_interface
Default is '0.0.0.0' (string). Pickle is a special receiver who handle tuples of data.
gr_pickle_receiver_port
Default is 2004. Self explaining
gr_log_listener_connections
Default is 'True' (string). Logs successful connections
gr_use_insecure_unpickler
Default is 'False' (string). Set this to 'True' to revert to the old-fashioned insecure unpickler.
gr_use_whitelist
Default is 'False' (string). Set this to 'True' to enable whitelists and blacklists.
gr_whitelist
List of patterns to be included in whitelist.conf. Default is [ '.*' ].
gr_blacklist
List of patterns to be included in blacklist.conf. Default is [ ].
gr_cache_query_interface
Default is '0.0.0.0'. Interface to send cache queries to.
gr_cache_query_port
Default is 7002. Self explaining.
gr_timezone
Default is 'GMT' (string). Timezone for graphite to be used.
gr_base_dir
Default is '/opt/graphite'. Set base install location of Graphite. This forms the base location for installs, predominantly appropriate for pip installations. When not installing using pip a typical location for this may be '/opt/carbon'.
gr_base_dir_managed_externally
Boolean, default to false . Useful if the base install location of Graphite is managed by other Puppet resource (like a mountpoint for example)
gr_storage_dir
Default is '${gr_base_dir}/storage'. Set location of base storage files. When not installing using pip a typical location for this may be '/opt/carbon'. This dir is also used as pid dir on RedHat.
gr_local_data_dir
Default is '${gr_storage_dir}/whisper'. Set location of whisper files.
gr_rrd_dir
Default is '${gr_storage_dir}/rrd'. Set location of rrd data files.
gr_whitelists_dir
Default is '${gr_storage_dir}/rrd'. Set location of whitelist configuration files.
gr_carbon_conf_dir
Default is '${gr_base_dir}/conf'. Set location of Carbon's configuration files. Most relevant when not using pip for installation. A typical location for this may be '/etc/carbon'.
gr_carbon_log_dir
Default is '${gr_storage_dir}/log/carbon-cache'. Set location of carbon cache log files.
gr_carbon_log_rotate
Default is 'True'. Enable daily log rotation.
gr_graphiteweb_log_dir
Default is '${gr_storage_dir}/log'. Set location of graphite web log files.
gr_graphiteweb_conf_dir
Default is '${gr_base_dir}/conf'. Set location of graphite web configuration.
gr_graphiteweb_webapp_dir
Default is '${gr_base_dir}/webapp'. Set location of graphite web's webapp files.
gr_graphiteweb_storage_dir
Default is '/var/lib/graphite-web'. Set location of graphite web's storage, used for graphite.db file.
gr_graphiteweb_install_lib_dir
Default is '${gr_graphiteweb_webapp_dir}/graphite'. Set location of libraries directory for graphite web.
gr_storage_schemas
Default is
[
{
name => 'carbon',
pattern => '^carbon\.',
retentions => '1m:90d'
},
{
name => 'default',
pattern => '.*',
retentions => '1s:30m,1m:1d,5m:2y'
}
]
The storage schemas, which describes how long matching graphs are to be stored in detail.
gr_storage_aggregation_rules
Default is the Hashmap:
{
'00_min' => { pattern => '\.min$', factor => '0.1', method => 'min' },
'01_max' => { pattern => '\.max$', factor => '0.1', method => 'max' },
'02_sum' => { pattern => '\.count$', factor => '0.1', method => 'sum' },
'99_default_avg' => { pattern => '.*', factor => '0.5', method => 'average'}
}
The storage aggregation rules.
gr_web_server
Default is 'apache'. The web server to configure. Valid values are 'apache', 'nginx', 'wsgionly' or 'none'.
Apache is configured with mod_wsgi, nginx is configured with gunicorn. 'wsgionly' configures only gunicorn.
The value 'none' means that you will manage the webserver yourself.
gr_web_server_port
Default is 80. The HTTP port which the web server will use. Only used for $gr_web_server => 'apache' or 'nginx'.
gr_web_server_port_https
Default is 443. The HTTPS port which the web server will use. Only used for $gr_web_server => 'apache'.
gr_web_servername
Default is $::fqdn
(string). Virtualhostname of Graphite webgui.
gr_web_cors_allow_from_all
Default is false (boolean). Include CORS Headers for all hosts (*) in web server config. This is needed for tools like Grafana.
gr_use_ssl
If true, alter web server config to enable SSL. Default is false (boolean). Only used for apache at the moment.
gr_ssl_cert
Path to SSL cert file. Default is undef.
gr_ssl_key
Path to SSL key file. Default is undef.
gr_ssl_dir
Path to SSL dir containing keys and certs. Default is undef.
gr_web_group
Group name to chgrp the files that will served by webserver. Only necessary for gr_web_server => 'wsgionly' or 'none'.
gr_web_user
Username to chown the files that will served by webserver. Only necessary for gr_web_server => 'wsgionly' or 'none'.
gr_apache_conf_template
Template to use for Apache vhost config. Default is 'graphite/etc/apache2/sites-available/graphite.conf.erb'.
gr_apache_conf_prefix
Default is '' (String). Prefix of the Apache config file. Useful if you want to change the order of the virtual hosts to be loaded. For example: '000-'
gr_apache_24
Boolean to enable configuration parts for Apache 2.4 instead of 2.2 Default is false/true (autodected. see params.pp)
gr_apache_noproxy
Optional setting to disable proxying of requests. When set, will supply a value to 'NoProxy'.
{
gr_apache_noproxy => "0.0.0.0/0"
}
Will insert:
NoProxy 0.0.0.0/0
In the /etc/apache2/conf.d/graphite.conf file.
gr_django_1_4_or_less
Default is false (boolean). Django settings style.
gr_django_db_engine
Default is 'django.db.backends.sqlite3' (string). Can be set to
- django.db.backends.postgresql <- Removed in Django 1.4
- django.db.backends.postgresql_psycopg2
- django.db.backends.mysql
- django.db.backends.sqlite3
- django.db.backends.oracle
gr_django_db_name
Default is '/opt/graphite/storage/graphite.db' (string). Name of database to be used by django.
gr_django_db_user
Default is '' (string). Name of database user.
gr_django_db_password
Default is '' (string). Password of database user.
gr_django_db_host
Default is '' (string). Hostname/IP of database server.
gr_django_db_port
Default is '' (string). Port of database.
gr_enable_carbon_relay
Default is false. Enable carbon relay.
gr_relay_line_interface
Default is '0.0.0.0' (string)
gr_relay_line_port
Default is 2013 (integer)
gr_relay_enable_udp_listener
Default is 'False'. Enables the UDP listener for carbon-relay.
gr_relay_udp_receiver_interface
Default is '0.0.0.0' (string)
gr_relay_udp_receiver_port
Default is 2013 (integer)
gr_relay_pickle_interface
Default is '0.0.0.0' (string)
gr_relay_pickle_port
Default is 2014 (integer)
gr_relay_log_listener_connections
Default is 'True' (string). Logs successful connections
gr_relay_method
Default is 'rules'
gr_relay_replication_factor
Default is 1 (integer). Add redundancy by replicating every datapoint to more than one machine.
gr_relay_diverse_replicas
Default is 'True' (string). Add to guarantee replicas across distributed hosts.
gr_relay_destinations
Default is [ '127.0.0.1:2004' ] (array). Array of backend carbons for relay.
gr_relay_max_queue_size
Default is 10000 (integer)
gr_relay_use_flow_control
Default is 'True' (string).
gr_relay_rules
Relay rule set. Default is
{
all => { pattern => '.*',
destinations => [ '127.0.0.1:2004' ] },
'default' => { 'default' => true,
destinations => [ '127.0.0.1:2004:a' ] },
}
gr_enable_carbon_aggregator
Default is false (boolean) Enable the carbon aggregator daemon.
gr_aggregator_line_interface
Default is '0.0.0.0' (string). Address for line interface to listen on.
gr_aggregator_line_port
Default is 2023. TCP port for line interface to listen on.
gr_aggregator_enable_udp_listener
Default is 'False' (string). Set this to True to enable the UDP listener.
gr_aggregator_udp_receiver_interface
Default is '0.0.0.0' (string). Its clear, isnt it?
gr_aggregator_udp_receiver_port
Default is 2023. Self explaining.
gr_aggregator_pickle_interface
Default is '0.0.0.0' (string). IP address for pickle interface.
gr_aggregator_pickle_port
Default is 2024. Pickle port.
gr_aggregator_log_listener_connections
Default is 'True' (string). Logs successful connections
gr_aggregator_forward_all
Default is 'True' (string). Forward all metrics to the destination(s) defined in gr_aggregator_destinations
.
gr_aggregator_destinations
Default is [ '127.0.0.1:2004' ] (array). Array of backend carbons.
gr_aggregator_max_queue_size
Default is 10000. Maximum queue size.
gr_aggregator_use_flow_control
Default is 'True' (string). Enable flow control Can be True or False.
gr_aggregator_max_intervals
Default is 5. Maximum number intervals to keep around.
gr_aggregator_rules
Default is
{
'carbon-class-mem' => 'carbon.all.<class>.memUsage (60) = sum carbon.<class>.*.memUsage',
'carbon-all-mem' => 'carbon.all.memUsage (60) = sum carbon.*.*.memUsage',
}
Hashmap of carbon aggregation rules.
gr_memcache_hosts
Default is undef (array). List of memcache hosts to use. eg ['127.0.0.1:11211','10.10.10.1:11211']
secret_key
Default is 'UNSAFE_DEFAULT' (string). CHANGE IT! Secret used as salt for things like hashes, cookies, sessions etc. Has to be the same on all nodes of a graphite cluster.
gr_cluster_servers
Default is undef (array). Array of webbapp hosts. eg.: ['10.0.2.2:80', '10.0.2.3:80']
gr_carbonlink_hosts
Default is undef (array). Array of carbonlink hosts. eg.: ['10.0.2.2:80', '10.0.2.3:80']
gr_carbonlink_hashing_type
Default is undef (string). Defines consistent-hashing type for 0.9.16+, e.g.: 'carbon_ch'
gr_cluster_fetch_timeout
Default is 6. Timeout to fetch series data.
gr_cluster_find_timeout
Default is 2.5 . Timeout for metric find requests.
gr_cluster_retry_delay
Default is 10. Time before retrying a failed remote webapp.
gr_cluster_cache_duration
Default is 300. Time to cache remote metric find results.
gr_cluster_store_merge_results
Default is 'True'. During a rebalance of a consistent hash cluster, after a partition event on a replication > 1 cluster or in other cases we might receive multiple TimeSeries data for a metric key. Merge them together rather than choosing the "most complete" one (pre-0.9.14 behaviour).
nginx_htpasswd
Default is undef (string). The user and salted SHA-1 (SSHA) password for Nginx authentication. If set, Nginx will be configured to use HTTP Basic authentication with the given user & password. e.g.: 'testuser:$jsfak3.c3Fd0i1k2kel/3sdf3'
nginx_proxy_read_timeout
Default is 10. Value to use for nginx's proxy_read_timeout setting
manage_ca_certificate
Default is true (boolean). Used to determine if the module should install ca-certificate on Debian machines during the initial installation.
gr_use_ldap
Default is false (boolean). Turn ldap authentication on/off.
gr_ldap_uri
Default is '' (string). Set ldap uri.
gr_ldap_search_base
Default is '' (string). Set the ldap search base.
gr_ldap_base_user
Default is '' (string).Set ldap base user.
gr_ldap_base_pass
Default is '' (string). Set ldap password.
gr_ldap_user_query
Default is '(username=%s)' (string). Set ldap user query.
gr_ldap_options
Hash of additional LDAP options to be enabled. For example, { 'ldap.OPT_X_TLS_REQUIRE_CERT' => 'ldap.OPT_X_TLS_ALLOW' }
. Default is { }
.
gr_use_remote_user_auth
Default is 'False' (string). Allow use of REMOTE_USER env variable within Django/Graphite.
gr_remote_user_header_name
Default is undef. Allows the use of a custom HTTP header, instead of the REMOTE_USER env variable (mainly for nginx use) to tell Graphite a user is authenticated. Useful when using an external auth handler with X-Accel-Redirect etc.
Example value - HTTP_X_REMOTE_USER
The specific use case for this is OpenID right now, but could be expanded to anything.
One example is something like http://antoineroygobeil.com/blog/2014/2/6/nginx-ruby-auth/
combined with the option gr_web_server
= 'wsgionly' and http://forge.puppetlabs.com/jfryman/nginx
with some custom vhosts.
The sample external auth app is available from here
gunicorn_arg_timeout
Default is 30. value to pass to gunicorns --timeout arg.
gunicorn_bind
Default is 'unix:/var/run/graphite.sock'. value to pass to gunicorns --bind arg.
gunicorn_workers
Default is 2. value to pass to gunicorn's --worker arg.
gr_cache_instances
Default is empty array. Allow multiple additional cache instances. (beside the default one) Example value:
{
'cache:b' => {
'LINE_RECEIVER_PORT' => 2103,
'PICKLE_RECEIVER_PORT' => 2104,
'CACHE_QUERY_PORT' => 7102,
},
'cache:c' => {
'LINE_RECEIVER_PORT' => 2203,
'PICKLE_RECEIVER_PORT' => 2204,
'CACHE_QUERY_PORT' => 7202,
}
}
gr_relay_instances
Default is empty array. Allow multiple additional relay instances. (beside the default one)
Example: see gr_cache_instances
gr_aggregator_instances
Default is empty array. Allow multiple additional aggregator instances. (beside the default one)
Example: see gr_cache_instances
gr_whisper_autoflush
Default is 'False'. Set autoflush for whisper
gr_whisper_lock_writes
Default is false. Set lock writes for whisper
gr_whisper_fallocate_create
Default is false. Set fallocate_create for whisper
gr_log_cache_performance
Default is 'False' (string). Logs timings for remote calls to carbon-cache
gr_log_cache_queue_sorts
Default is 'True' (String). Logs time required for the queue sorts
gr_log_rendering_performance
Default is 'False' (string). Triggers the creation of rendering.log which logs timings for calls to the The Render URL API
gr_log_metric_access
Default is 'False' (string). Trigges the creation of metricaccess.log which logs access to Whisper and RRD data files
gr_django_tagging_pkg
Default is 'django-tagging' (string) The name of the django-tagging package that should be installed
gr_django_tagging_ver
Default is '0.3.1' (string) The version of the django-tagging package that should be installed
gr_django_tagging_source
Default is undef
(string). The source of the django-tagging package that should be installed.
gr_twisted_pkg
Default is 'Twisted' (string) The name of the twisted package that should be installed
gr_twisted_ver
Default is '11.1.0' (string) The version of the twisted package that should be installed
gr_twisted_source
Default is undef
(string). The source of the twisted package that should be installed.
gr_txamqp_pkg
Default is 'txAMQP' (string) The name of the txamqp package that should be installed
gr_txamqp_ver
Default is '0.4' (string) The version of the txamqp package that should be installed
gr_txamqp_source
Default is undef
(string). The source of the txamqp package that should be installed.
gr_graphite_pkg
Default is 'graphite-web' (string) The name of the graphite package that should be installed
gr_graphite_ver
Default is '0.9.12' (string) The version of the graphite package that should be installed
gr_graphite_source
Default is undef
(string). The source of the graphite package that should be installed.
gr_carbon_pkg
Default is 'carbon' (string) The name of the carbon package that should be installed
gr_carbon_ver
Default is '0.9.12' (string) The version of the carbon package that should be installed
gr_carbon_source
Default is undef
(string). The source of the carbon package that should be installed.
gr_whisper_pkg
Default is 'whisper' (string) The name of the whisper package that should be installed
gr_whisper_ver
Default is '0.9.12' (string) The version of the whisper package that should be installed
gr_whisper_source
Default is undef
(string). The source of the whisper package that should be installed.
gr_django_pkg
Default is a platform-specific name of the django package that should be installed (string).
gr_django_ver
Default is 'installed' (string) The version of the django package that should be installed.
gr_django_source
Default is undef
(string). The source of the django package that should be installed.
gr_django_provider
Default is undef
(string) The provider of the django package that should be installed.
gr_pip_install_options
Default is undef
(array). An array of options to pass to pip install
when installing graphite.
For example, to install packages from a repository other than PyPI, you could pass --index-url
like this:
class { 'graphite':
gr_pip_install_options => ['--index-url', 'https://custom-packge-server/simple/'],
}
For details on available options, see the documentation for pip install
.
gr_pip_install
Default is true (Bool). Should packages be installed via pip
gr_python_binary
Default is 'python' (string). Can be set to a fully-qualify path or an alternative binary name.
gr_disable_webapp_cache
Default is false (Bool). Should the caching of the webapp be disabled. This helps with some display issues in grafana.
Requirements
Modules needed:
stdlib by puppetlabs
Software versions needed:
On Redhat distributions you need the EPEL or RPMforge repository, because Graphite needs packages, which are not part of the default repos.
Limitations
This module is tested on CentOS 6.5 and Debian 7 (Wheezy) and should also run on
- RHEL/CentOS/Scientific 6+
- Debian 6+
- Ubunutu 10.04 and newer
Most settings of Graphite can be set by parameters. So their can be special configurations for you. In this case you should edit
the file templates/opt/graphite/webapp/graphite/local_settings.py.erb
.
Compatibility Notes
- There is currently an open ticket with Puppet about broken pip support in CentOS 6/7. The
workaround for this bug is to create a symlink from
/usr/bin/pip-python
(which doesn't exist) to/usr/bin/pip
(which does). - CentOS 7's default
nginx.conf
includes aserver
section listening on port 80. Thus, it is not possible to set up graphite without modifying the package-provided configuration file. You will have to either manually remove theserver
section, or provide agr_web_server_port
other than port 80. - nginx/gunicorn requires a
systemctl restart gunicorn
after installing on Ubuntu 15.10 - SELinux must be disabled
- Installing on Ubuntu 16.04 Xenial requires Puppet 4.1+ (see commit 71251c9)
Contributing
Echocat modules are open projects. So if you want to make this module even better, you can contribute to this module on Github.
Make sure to read the repository's DEVELOP.md
file first.
2020-06-24 - 8.0.0 (Major release)
!!! Lots of defaults are changed to match graphite 1.1.7 and support Debian Buster and CentOS 7/8 !!!
Features:
- Add parameter
gr_tags_enable
to activate tag support in Carbon (#387) - Add support graphite version 1.1.x
- Add support and tests for puppet 5
- Add support and test for Ubuntu binoic and CentOS 7/8
- Add option REMOTE_STORE_MERGE_RESULTS to local_settings.py.erb template
- Add parameter
gr_url_prefix
to allow deployment on non-root URLs - effectively configure specified carbon logs directory
Bugfixes:
- fixes #365 remove sort from storage aggregation rules
- Update carbon-logrotate - ignore unrotated files
- fix carbon-cache init script on debian
2019-02-15 - 7.5.0 (Feature release)
Features:
- Add support for Ubuntu Xenial (16.04)
- configure systemd unit for gunicorn also on Debian (Ubuntu)
Bugfixes:
- effectively configure specified carbon logs directory
- fix spec tests
2018-02-01 - 7.3.0 (Feature release)
Features:
- Add support for Debian 9 (stretch)
- Add support for graphite 1.x
- Add
gr_carbonlink_hashing_type
(since graphite 0.9.16+) - Add
gr_django_init_provider
- Add
gr_django_init_command
Bugfixes:
- Support renamed parameters in local_settings.py for graphite 1.x+
2017-08-01 - 7.2.0 (Feature release)
Features:
- Add a new parameter :
gr_base_dir_managed_externally
Bugfixes:
- Updated python-pip to python2-pip for RedHat 7 variants
- If there are multiple cache instances, and any but the last crash, this returns 0 and puppet will not try to restart the service(s)
2017-03-22 - 7.1.0 (Feature release)
Features:
- Add
gr_pip_install_options
param for setting install_options for pip
2017-03-17 - 7.0.0 (Major release)
Features:
- Add support for Ubuntu Xenial (see compatibility part of README)
- Add the ability to specify an alternative python binary
- Allow setting service provider by parameter
- Make logrotation optional
- Autodetect additional whisper dirs
- Optimizations for Amazon Linux
- Add parameter gr_carbon_log_rotate
Bugfixes:
- Some smaller fixes
2016-05-31 - 6.0.4 (Bugfix release)
Bugfixes:
- (2b3364c) better detection of service provider systemd
- (2b3364c) The
wsgi.py
link is no longer needed - (2b3364c) Removing subscription to
$local_settings_py_file
. It is not defined whenconfig_gunicorn.pp
is evaluated - (2b3364c) run race condition fix after initial db creation
- (2b3364c) Add service provider definition for Debian-based OSs
- (2b3364c) Set RedHat service provider based on OS version
- (2b3364c) Fix for float vs string problem
2016-04-17 - 6.0.3 (Bugfix release)
Bugfixes:
- (1deb7f9) point Apache to the right WSGI file
- (e01e6bc) ensure that graphiteweb_storage_dir is created
- (5e7ce00) properly parameterize gunicorn --chdir option on redhat
- (6f7fb67) notify web service for local_settings.py and graphite_wsgi.py
- (1f49faf) add unit tests
- (7042ddf) Update fail message when gr_web_server = none
Features:
- (1aa40af) patch graphite module to support UDP listener in [relay] section
2016-04-11 - 6.0.2 (Bugfix release)
Bugfixes:
- (debfe5d) remove parameter
gr_pid_dir
and usegr_storage_dir
instead. - RedHat init scripts use correct
gr_base_dir
for graphite.
2016-04-01 - 6.0.1 (Bugfix release)
Features:
- Add alot more unit tests
- Add code coverage analysis
Bugfixes:
- Fix/remove parameter interpolation for
gr_base_dir
. It set correct now. - Fix some hardcoded paths in templates, like logrotate or init scripts
- Fix location of local_settings.py in some cases
2016-03-30 - 6.0.0 (Major release)
Features:
- Nginx/Gunicorn is now fully supported on both Debian and RedHat-like systems
- The correct username/group is now used across apache/nginx for both Debian and RedHat
- Pip is now the default provider for Django to ensure mutually-working package versions are installed.
- Added systemd scripts for when
$service_provider == 'systemd'
- Added workaround for race condition bug in graphite
- Added configuration variable
gr_web_server_remove_default
-- default config is only wiped when the variable is true, or when it isundef
andgr_web_server_port
== 80 - Renamed
gr_apache_port
andgr_apache_port_https
togr_web_server_port
andgr_web_server_port
respectively. If the old configuration values are used, puppet fails telling you to use the new ones. - Add param for carbon-relay init.d ulimit
gr_carbon_relay_ulimit
- Add support for custom directory locations , see
gr_base_dir
andgr_*_dir
- Add
gr_relay_diverse_replicas
option, default to true
Bugfixes:
- python-crypto is obsoleted on RHEL7, replaced by python2-crypto
- Redhat: avoid raise condition on initd restart
2016-01-29 - 5.16.1 (Bugfix release)
Bugfixes:
(9636c9c) (e0807a1) add documented but missing parameter gr_rrd_dir
2016-01-12 - 5.16.0 (Feature/Bugfix release)
- !!! set default graphite version from 0.9.12 to 0.9.15 !!!
Features:
- (3c3f29d) #231 add new
gr_manage_python_packages
option
Bugfixes:
- (5f05fc5) #232 RedHat 6: reorder package installtion to avoid error messages
- (bdd7e2c) #233 Redhat: add package python-tzlocal, so timezone can be set
- (a70b484) #228 short fix for future parser in nginx template
2015-11-26 - 5.15.0 (Feature/Bugfix release)
- !!! stdlib required version is raised from 3.2.0 to 4.6.0 !!!
Features:
- (350a522) #216 add
gr_rrd_dir
to set location of rrd files
Bugfixes:
- (91f9d15) #220 fix font packages isntalled on RedHat/CentOS
- (beba7ac) #219 #218
gr_apache_port
andgr_apache_port_https
are validated to integer
2015-07-08 - 5.14.0 (Feature/Bugfix release)
Features:
- Issue #201 Support configuring WHISPER_AUTOFLUSH in carbon.conf
- Issue #202 Allow Django package name, version, and source to be overridden. Useful for Trusty clashing with Django 1.6
- Issue #203 More usage of ensure_packages() and create_resources() to better predict installs
- Issue #204 gcc and devlibs are only installed if needed
- add validation of boolean parameters
Bugfixes:
- Fixed #205 Fix false negative RHEL7 not supported error, because of minor version number
2015-06-05 - 5.13.0 (Feature/Bugfix release)
Features:
- Issue #186 Add parameter
gr_apache_noproxy
to establish exception for mod_clustering for the graphites virtual host - Issue #189 Add parameter
gr_apache_conf_prefix
to set apache conf file prefix for graphite - Issue #191 Add parameter
gr_carbonlink_hosts_timeout
,gr_carbonlink_query_bulk
- Issue #191 Add parameter
gr_rendering_hosts
,gr_rendering_hosts_timeout
,gr_prefetch_cache
Bugfixes:
- Fixed #185 RedHat add small sleep at restart of carbon
- Fixed #194 logrotate script also looks for relay and aggregator logs now
- Fixed #196 Debian correctly remove apache 2.2 000-default
2015-05-20 - 5.12.0 (Feature release)
Features:
- Issue #181 Add parameter
gr_enable_carbon_cache
(defaults to true) - Issue #182 Add parameter
gr_disable_webapp_cache
to disable django cache for use with Grafana - Issue #183 Add parameter
gr_log_listener_connections
2015-04-24 - 5.11.2 (Bugfix release)
Bugfixes:
- Fixed #178 fix POSIX test syntax on init script
2015-04-22 - 5.11.1 (Bugfix release)
Bugfixes:
- Fixed #177 ensure graphite.db permissions are same as web user
- Fixed #177 puppet 2.7 does not support unless
- Fixed #177 pip symlink hack uses correct graphite version
2015-04-22 - 5.11.0 (Feature/Bugfix release)
Features:
- Issue #175 Adding gunicorn_bind option to gunicorn
Bugfixes:
- Fixed #174 RedHat: delay checking the process has started to aviod race-conition failures on start
- Fixed #165 Debian: fix first carbon instance name in init scripts
2015-04-21 - 5.10.3 (Bugfix release)
Bugfixes
- Fixed #170 Faster directory permission handling
- Fixed #164 RedHat/Debian: Fix init script error for Redhat and fix some bash style
- Fixed #169 Use gr_web_user / gr_web_group variables in gunicorn template
2015-03-09 - 5.10.2 (Bugfix release)
Bugfixes:
- Fixed #162 sort hashes to avoid pseudo changes in relay-rules.conf
2015-02-26 - 5.10.1 (Bugfix release)
Bugfixes:
- Fixed #156 Non-deterministic web user and group
- Fixed #155 wrond name of package django-tagging
2015-02-23 - 5.10.0 (Feature/Bugfix release)
Features:
- add UDP listener support to Carbon Aggregator
- added kill command after stop_counter finished for carbon shutdown
- Configureable WSGI params
- Support installing via other methods than pip (like RPM)
Bugfixes:
- Logrotate filtering out .gz files
2015-01-09 - 5.9.0 (Feature/Bugfix release)
Features:
- enhance relay template to set all options
Bugfixes:
- fix usage and autodetect of apache 2.2 vs 2.4
- Debian: fix carbon restart script for multiple instances
- fix metadata dependency to work with librarian puppet
2014-12-10 - 5.8.0 (Feature/Bugfix release)
Features:
- first rspec tests
- usage of apache 2.2 vs 2.4 configs is autodetected now
This removes parameter
gr_apache_24
- change license from MPL 2.0 to Apache 2.0
Bugfixes:
- update metadata.json to meet puppetlabs requierements
- remove deprcated Modulefile
2014-12-01 - 5.7.0 (Feature/Bugfix release)
Features:
- allow creation of multiple cache, relay and aggregator instances
- adapt init script for multiple instances
- add several settings for
- WHISPER_LOCK_WRITES
- WHISPER_FALLOCATE_CREATE
- LOG_CACHE_PERFORMANCE
- LOG_RENDERING_PERFORMANCE
- LOG_METRIC_ACCESS
- MAX_UPDATES_PER_SECOND_ON_SHUTDOWN
- new seperate init scripts for RedHat and Debian
Bugfixes:
- improvements for puppet future parser
- update package names for RedHat 7
2014-11-14 - 5.6.0 (Feature/Bugfix release)
Features:
- add parameters
gunicorn_workers
- README examples for ldap
Bugfixes:
- init script restart waits until carbon-cache stop and start correctly
2014-09-17 - 5.5.0 (Feature/Bugfix release)
Features:
- add possibility to set web server user and group:
gr_web_user
andgr_web_group
- add basic spec files for testing
- add blacklist and whitelist settings
- add parameters to set nginx read timeout
proxy_read_timeout
- allows default metric prefix ('carbon') to be changed.
gr_carbon_metric_prefix
- add parameters for cluster servers
- add parameters for ldap
Bugfixes:
- Debian: Disabling apache default vhost
- remove trailing comma in memcached hostlist
- Redhat: fix regex to recognize version 7
2014-06-26 - 5.4.0 (Feature/Bugfix release)
Features:
- you can set location for whisper files
gr_local_data_dir
Bugfixes:
- missing package pip is installed
- Debian: apache mod_headers is not reconfigure every run
- Debian: apache sets absolute path to wsgi_module
- Debian: package python-django-tagging is installed via pip
2014-06-17 - 5.3.4 (Bugfix release)
Bugfixes:
- pip allways reinstalled twisted and txamqp, which triggered service restarts
- remove duplicate function
2014-06-05 - 5.3.3 (Bugfix release)
Bugfixes:
- add libs for PostgreSQL support
- fix dependency problem with missing gcc on first puppet run
- remove package dependeny problem with python-zope on RedHat
2014-04-08 - 5.3.2 (Bugfix release)
Bugfixes:
- fix variablename for redhat releases in params.pp
2014-04-08 - 5.3.0 (Feature release)
Features:
- add support for Apache 2.4. See parameter
gr_apache_24
- add
gr_use_whitelist
to set flag in carbon.conf. Default is False. - add support for custom authentication using HTTP header
See
gr_use_remote_user_auth
andgr_remote_user_header_name
Behavior changes:
- complete refactoring of install process, to solve dependency hell on redhat. Update process tested on CentOS 6.5 and Debian 7 Wheezy
- package
git
is not required anymore - whisper, graphite-web, carbon are installed via pip now
2014-03-20 - 5.2.0 (Feature release)
Features:
- add support for LDAP config with
gr_use_ldap
andgr_ldap_*
parameters gr_web_server
can be set to 'apache', 'nginx', 'wsgionly' or 'none'
Behavior changes:
- remove
gr_memcache_enable
. Usage of memcached is configured/enabled ifgr_memcache_hosts
is set. gr_memcache_hosts
changed from String to Array
Bugfixes:
- install txamqp correct on Debian
2014-03-17 - 5.1.1 (Bugfix release)
- allow Redhat based systems to use a different apache port correctly
- parameterize the install of ca-certificate on Debian distributions
- enable mod_headers on Debian apache if CORS is enabled
- fix install of txamqp for Debian 7.4
- some whitespace reformating
2014-01-27 - 5.1.0 (Feature release)
- add replication factor support
- added controls for handling cluster configuration in the web application
2014-01-10 - 5.0.0 (Major release)
!!! Be aware that this module overwrites !!! carbon-aggregator and memcached configs now.
- allow to configure carbon aggregator
- allow to set vhost name web gui
- allow to configure memcached
2013-12-11 - 4.0.0 (Major release)
- implementation of carbon-relay configuration
2013-08-28 - 3.0.1 (Bugfix release)
- complet refactoring to support graphit 0.9.12
- add support for dynamic storage schemas
- add support for django version > 1.4
- use mod_wsgi instead of mod_python
- fix some dependency issues
2013-03-30 - 2.4.1
- new parameters to set listen port for webui
- download sources with curl instead of wget on redhat
- refactoring, so variables are used in class scope
- add Rdoc documentation for puppet doc
- refactoring to match http://docs.puppetlabs.com/guides/style_guide.html
- some minor fixes
2012-12-13 - 2.3.0
- add cron to logrotate carbons logs
2012-12-08 - 2.2.0
- add parameter to set timezone of dashboard
2012-11-02 - 2.1.0
- optimize LSB configs in init script
- fix on djangodb creation
2012-10-24 - 2.0.0
- add parameter to graphite class to allow tweaking of carbon.conf
- rewrite README
2012-09-14 - 1.1.0
- minor fixes for debian
2012-09-06 - 1.0.0
- set path for exec statements
2012-08-16 - 0.1.1
- update README
- add package MySQL-python on rhel or MySQL support
2012-08-09 - 0.1.0
- first commit
Dependencies
- puppetlabs/stdlib (>= 4.13.1 < 7.0.0)
Copyright 2011 echocat 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.