Puppet Class: graphite

Inherits:
graphite::params
Defined in:
manifests/init.pp

Overview

Class: graphite

This class installs and configures graphite/carbon/whisper.

Parameters

gr_group

The group of the user (see gr_user) who runs graphite. Default is empty.

gr_user

The user who runs graphite. If this is empty carbon runs as the user that invokes it. Default is empty.

gr_service_provider

Service provider used to start, stop, restart etc. services managed by this module. Default is debian / redhat / systemd (autodected. see params.pp)

gr_enable_carbon_cache

Enable carbon cache. Default is true.

gr_max_cache_size

Limit the size of the cache to avoid swapping or becoming CPU bound. Use the value “inf” (infinity) for an unlimited cache size. Default is inf.

gr_max_updates_per_second

Limits the number of whisper update_many() calls per second, which effectively means the number of write requests sent to the disk. Default is 500.

gr_max_updates_per_second_on_shutdown

Changes the limits of ‘gr_max_updates_per_second’ when a stop/shutdown is initiated to another value to speed up/slow down flushing if carbon is going to shutdown but cached a lot. Default is ‘undef’ which means ‘do not change gr_max_updates_per_second on shutdown’.

gr_max_creates_per_minute

Softly limits the number of whisper files that get created each minute. Default is 50.

gr_carbon_metric_prefix

The prefix to be applied to internal performance metrics. Defaults to ‘carbon’.

gr_carbon_metric_interval

The interval (in seconds) between sending internal performance metrics. Default is 60; 0 to disable instrumentation

gr_carbon_relay_ulimit

The maximum number of file descriptors available to carbon-relay process Default is undef

gr_line_receiver_interface

Interface the line receiver listens. Default is 0.0.0.0

gr_line_receiver_port

Port of line receiver. Default is 2003

gr_enable_udp_listener

Set this to ‘True’ to enable the UDP listener. Default is ‘False’ (String).

gr_udp_receiver_interface

Its clear, isnt it? Default is 0.0.0.0

gr_udp_receiver_port

Self explaining. Default is 2003

gr_pickle_receiver_interface

Pickle is a special receiver who handle tuples of data. Default is 0.0.0.0

gr_pickle_receiver_port

Self explaining. Default is 2004

gr_log_listener_connections

Logs successful connections Default is ‘True’ (String)

gr_use_insecure_unpickler

Set this to ‘True’ to revert to the old-fashioned insecure unpickler. Default is ‘False’ (String).

gr_use_whitelist

Set this to ‘True’ to allow for using whitelists and blacklists. Default is ‘False’ (String).

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

Interface to send cache queries to. Default is 0.0.0.0

gr_cache_query_port

Self explaining. Default is 7002.

gr_cache_write_strategy

The thread that writes metrics to disk can use on of the following strategies: sorted, max and naive. Default is ‘sorted’.

gr_timezone

Timezone for graphite to be used. Default is GMT.

gr_storage_schemas

The storage schemas. Default is

=> “default”, pattern => “.*”, retentions => “1s:30m,1m:1d,5m:2y”
gr_storage_aggregation_rules

rule set for storage aggregation … items get sorted, first match wins pattern = <regex> factor = <float between 0 and 1> method = <average|sum|last|max|min> Default is : {

'00_min' => {
  pattern => '\.min$',
  factor => '0.1',
  method => 'min'
},
'01_max' => {
  pattern => '\.max$',
  factor => '0.1',
  method => 'max' },
'01_sum' => {
  pattern => '\.count$',
  factor => '0.1',
  method => 'sum'
},
'99_default_avg' => {
  pattern => '.*',
  factor => '0.5',
  method => 'average'
}

} (matches the exammple configuration from graphite 0.9.12)

gr_web_server

The web server to use. Valid values are ‘apache’, ‘nginx’, ‘wsgionly’ and ‘none’. ‘wsgionly’ will omit apache and nginx, allowing you to run your own webserver and communicate via wsgi to the unix socket. Handy for servers with multiple vhosts/purposes etc. ‘none’ will do the same as wsgionly but skips gunicorn also, omitting apache and gunicorn/nginx. All other webserver settings below are irrelevant if this is ‘wsgionly’ or ‘none’. Default is ‘apache’.

gr_web_server_port

The port which the web server will bind to for the graphite web server. Only applicable for $gr_web_server => ‘apache’ or ‘nginx’. Default is 80.

gr_web_server_port_https

The port to run SSL web server on if you have an existing web server on the default port 443. Only applicable for $gr_web_server => ‘apache’. Default is 443.

gr_web_servername

Virtualhostname of Graphite webgui. Default is FQDN.

gr_web_group

Group name to chgrp the files that will served by webserver. Use only with gr_web_server => ‘wsgionly’ or ‘none’.

gr_web_user

Username to chown the files that will served by webserver. Use only with gr_web_server => ‘wsgionly’ or ‘none’.

gr_web_cors_allow_from_all

Include CORS Headers for all hosts (*) in web server config Default is false.

gr_web_server_remove_default

Remove the default configuration for apache or nginx. Default is undef, which removes the default configuration only if the server is running on port 80.

gr_use_ssl

If true, alter web server config to enable SSL. Default is false.

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_apache_conf_template

Template to use for Apache vhost config. Default is graphite/etc/apache2/sites-available/graphite.conf.erb

gr_apache_conf_prefix

Prefix of the Apache config file. Useful if you want to change the order of the virtual hosts to be loaded. For example: ‘000-’ Default is ”.

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_django_1_4_or_less

Set to true to use old Django settings style. Default is false.

gr_django_db_xxx

Django database settings. (engine|name|user|password|host|port) Default is a local sqlite3 db.

gr_enable_carbon_relay

Enable carbon relay. Default is false.

gr_relay_line_interface

Default is ‘0.0.0.0’

gr_relay_line_port

Default is 2013.

gr_relay_enable_udp_listener

Set this to True to enable the UDP listener. Default is False.

gr_relay_udp_receiver_interface

Its clear, isnt it? Default is 0.0.0.0

gr_relay_udp_receiver_port

Self explaining. Default is 2013

gr_relay_pickle_interface

Default is ‘0.0.0.0’

gr_relay_pickle_port

Default is 2014.

gr_relay_log_listener_connections

Logs successful connections Default is ‘True’ (String)

gr_relay_method

Default is ‘rules’

gr_relay_replication_factor

add redundancy by replicating every datapoint to more than one machine. Default is 1.

gr_relay_diverse_replicas

add to guarantee replicas across distributed hosts. Default is True.

gr_relay_destinations

Array of backend carbons for relay. Default is [ ‘127.0.0.1:2004’ ]

gr_relay_max_queue_size

Default is 10000.

gr_relay_use_flow_control

Default is ‘True’

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

Enable the carbon aggregator daemon Default is false.

gr_aggregator_line_interface

Default is ‘0.0.0.0’

gr_aggregator_line_port

Default is 2023.

gr_aggregator_enable_udp_listener

Set this to True to enable the UDP listener. Default is False.

gr_aggregator_udp_receiver_interface

Its clear, isnt it? Default is 0.0.0.0

gr_aggregator_udp_receiver_port

Self explaining. Default is 2023

gr_aggregator_pickle_interface

Default is ‘0.0.0.0’

gr_aggregator_pickle_port

Default is 2024.

gr_aggregator_log_listener_connections

Logs successful connections Default is ‘True’ (String)

gr_aggregator_forward_all

Default is ‘True’ (String).

gr_aggregator_destinations

Array of backend carbons Default is [ ‘127.0.0.1:2004’ ]

gr_aggregator_replication_factor

add redundancy by replicating every datapoint to more than one machine. Default is 1.

gr_aggregator_max_queue_size

Default is 10000

gr_aggregator_use_flow_control

Default is ‘True’ (String).

gr_aggregator_max_intervals

Default is 5

gr_aggregator_rules

Array of aggregation rules, as configuration file lines Default is {

'carbon-class-mem' =>
   carbon.all.<class>.memUsage (60) = sum carbon.<class>.*.memUsage',
'carbon-all-mem' =>
   'carbon.all.memUsage (60) = sum carbon.*.*.memUsage',
}
gr_amqp_enable

Set this to ‘True’ to enable the AMQP. Default is ‘False’ (String).

gr_amqp_verbose

Set this to ‘True’ to enable. Verbose means a line will be logged for every metric received useful for testing. Default is ‘False’ (String).

gr_amqp_host

Self explaining. Default is localhost.

gr_amqp_port

Self explaining. Default is 5672.

gr_amqp_vhost

Virtual host of AMQP. Set the name without the slash, eg. ‘graphite’. Default is ‘/’.

gr_amqp_user

Self explaining. Default is guest.

gr_amqp_password

Self explaining. Default is guest.

gr_amqp_exchange

Self explaining. Default is graphite.

gr_amqp_metric_name_in_body

Self explaining. Default is ‘False’ (String).

gr_memcache_hosts

Array of memcache hosts. e.g.: [‘127.0.0.1:11211’, ‘10.10.10.1:11211’] Defalut is undef.

secret_key

Secret used as salt for things like hashes, cookies, sessions etc. Has to be the same on all nodes of a graphite cluster. Default is UNSAFE_DEFAULT (CHANGE IT!)

gr_cluster_servers

Array of webbapp hosts. eg.: [‘10.0.2.2:80’, ‘10.0.2.3:80’] Default is undef.

gr_carbonlink_hosts

Array of carbonlink hosts. eg.: [‘10.0.2.2:80’, ‘10.0.2.3:80’] Default is undef.

gr_carbonlink_hosts_timeout

Timeout to fetch query from local carbonlink hosts Default is 1.0

gr_carbonlink_query_bulk

Boolean. 0.9.13 function. Using ‘query-bulk’ queries for carbon. Default: false

gr_cluster_fetch_timeout

Timeout to fetch series data. Default = 6

gr_cluster_find_timeout

Timeout for metric find requests. Default = 2.5

gr_cluster_retry_delay

Time before retrying a failed remote webapp. Default = 60

gr_cluster_cache_duration

Time to cache remote metric find results. Default = 300

gr_rendering_hosts

Array of remote rendering hosts. eg.: [‘10.0.2.2:80’, ‘10.0.2.3:80’] Default is undef, setting this also enabled REMOTE_RENDER=True

gr_rendering_hosts_timeout

Timeout for remote render connection attempts. Default is 1.0

gr_prefetch_cache

Set to True to fetch all metrics using a single http request per remote server instead of one http request per target, per remote server. Default is undef

nginx_htpasswd

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. Default is undefined

nginx_proxy_read_timeout

Value to use for nginx’s proxy_read_timeout setting Default is 10s

manage_ca_certificate

Used to determine to install ca-certificate or not. default = true

gr_use_ldap

Turn ldap authentication on/off. Default = false

gr_ldap_uri

Set ldap uri. Default = ”

gr_ldap_search_base

Set the ldap search base. Default = ”

gr_ldap_base_user

Set ldap base user. Default = ”

gr_ldap_base_pass

Set ldap password. Default = ”

gr_ldap_user_query

Set ldap user query. Default = ‘(username=%s)’

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 = { }

gr_use_remote_user_auth

Allow use of REMOTE_USER env variable within Django/Graphite. Default is ‘False’ (String)

gr_remote_user_header_name

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

gunicorn_arg_timeout

value to pass to gunicorn’s –timeout arg. Default is 30

gunicorn_bind

value to pass to gunicorn’s –bind arg. Default is unix:/var/run/graphite.sock

gunicorn_workers

value to pass to gunicorn’s –worker arg. Default is 2

gr_cache_instances

Allow multiple additional cache instances. (beside the default one) Default = [] 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

Allow multiple additional relay instances. (beside the default one) Default = [] Example: see gr_cache_instances

gr_aggregator_instances

Allow multiple additional aggregator instances. (beside the default one) Default = [] Example: see gr_cache_instances

gr_whisper_autoflush

Set autoflush for whisper Default is false

gr_whisper_lock_writes

Set lock writes for whisper Default is false

gr_whisper_fallocate_create

Set fallocate_create for whisper Default is false

gr_log_cache_performance

logs timings for remote calls to carbon-cache Default is ‘False’ (String)

gr_log_rendering_performance

Triggers the creation of rendering.log which logs timings for calls to the The Render URL API Default is ‘False’ (String)

gr_log_metric_access

Trigges the creation of metricaccess.log which logs access to Whisper and RRD data files Default is ‘False’ (String)

wsgi_processes

WSGI process count. Default is 5

wsgi_threads

WSGI process threads. Default is 5

wsgi_inactivity-timeout

WSGI inactivity-timeout in seconds. Default is 120

gr_django_tagging_pkg

String. The name of the django tagging package to install Default: django-tagging

gr_django_tagging_ver

String. The version of the django tagging package to install Default: 0.3.1

gr_django_tagging_source

String. The source of the django tagging package to install Default: undef

gr_twisted_pkg

String. The name of the twisted package to install Default: Twisted

gr_twisted_ver

String. The version of the twisted package to install Default: 11.1.0

gr_twisted_source

String. The source of the twisted package to install Default: undef

gr_txamqp_pkg

String. The name of the txamqp package to install Default: txAMQP

gr_txamqp_ver

String. The version of the txamqp package to install Default: 0.4

gr_txamqp_source

String. The source of the txamqp package to install Default: undef

gr_graphite_pkg

String. The name of the graphite package to install Default: graphite-web

gr_graphite_ver

String. The version of the graphite package to install Default: 0.9.15

gr_graphite_source

String. The source of the graphite package to install Default: undef

gr_carbon_pkg

String. The name of the carbon package to install Default: carbon

gr_carbon_ver

String. The version of the carbon package to install Default: 0.9.15

gr_carbon_source

String. The source of the carbon package to install Default: undef

gr_whisper_pkg

String. The name of the whisper package to install Default: whisper

gr_whisper_ver

String. The version of the whisper package to install Default: 0.9.15

gr_whisper_source

String. The source of the whisper package to install Default: undef

gr_django_pkg

String. The name of the django package to install Default: whisper

gr_django_ver

String. The version of the django package to install Default: 0.9.15

gr_django_source

String. The source of the django package to install Default: undef

gr_django_provider

String. The provider to use for installing django. Default: pip

gr_pip_install

Boolean. Should the package be installed via pip Default: true

gr_manage_python_packages

Boolean. Should the pip and python dev packages be managed by this module. Default: true

gr_disable_webapp_cache

Boolean. Should the caching of the webapp be disabled. This helps with some display issues in grafana. Default: false

gr_enable_logrotation

Boolean. Sets up a cronjob to rotate carbon and webapp logs.

gr_apache_port

DEPRECATED. Use ‘gr_web_server_port` now. Trying to set this variable will cause puppet to fail.

gr_apache_port_https

DEPRECATED. Use ‘gr_web_server_port_https` now. Trying to set this variable will cause puppet to fail.

Examples

class

gr_max_cache_size      => 256,
gr_enable_udp_listener => True,
gr_timezone            => 'Europe/Berlin'

Parameters:

  • gr_group (Any) (defaults to: '')
  • gr_user (Any) (defaults to: '')
  • gr_service_provider (Any) (defaults to: $::graphite::params::service_provider)
  • gr_enable_carbon_cache (Any) (defaults to: true)
  • gr_max_cache_size (Any) (defaults to: inf)
  • gr_max_updates_per_second (Any) (defaults to: 500)
  • gr_max_updates_per_second_on_shutdown (Any) (defaults to: undef)
  • gr_max_creates_per_minute (Any) (defaults to: 50)
  • gr_carbon_metric_prefix (Any) (defaults to: 'carbon')
  • gr_carbon_metric_interval (Any) (defaults to: 60)
  • gr_carbon_relay_ulimit (Any) (defaults to: undef)
  • gr_line_receiver_interface (Any) (defaults to: '0.0.0.0')
  • gr_line_receiver_port (Any) (defaults to: 2003)
  • gr_enable_udp_listener (Any) (defaults to: 'False')
  • gr_udp_receiver_interface (Any) (defaults to: '0.0.0.0')
  • gr_udp_receiver_port (Any) (defaults to: 2003)
  • gr_pickle_receiver_interface (Any) (defaults to: '0.0.0.0')
  • gr_pickle_receiver_port (Any) (defaults to: 2004)
  • gr_log_listener_connections (Any) (defaults to: 'True')
  • gr_use_insecure_unpickler (Any) (defaults to: 'False')
  • gr_use_whitelist (Any) (defaults to: 'False')
  • gr_whitelist (Any) (defaults to: ['.*'])
  • gr_blacklist (Any) (defaults to: [])
  • gr_cache_query_interface (Any) (defaults to: '0.0.0.0')
  • gr_cache_query_port (Any) (defaults to: 7002)
  • gr_cache_write_strategy (Any) (defaults to: 'sorted')
  • gr_timezone (Any) (defaults to: 'GMT')
  • gr_storage_schemas (Any) (defaults to: [ { name => 'carbon', pattern => '^carbon\.', retentions => '1m:90d' } , { name => 'default', pattern => '.*', retentions => '1s:30m,1m:1d,5m:2y' } ])
  • gr_storage_aggregation_rules (Any) (defaults to: { '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' } })
  • gr_web_server (Any) (defaults to: 'apache')
  • gr_web_server_port (Any) (defaults to: 80)
  • gr_web_server_port_https (Any) (defaults to: 443)
  • gr_web_servername (Any) (defaults to: $::fqdn)
  • gr_web_group (Any) (defaults to: undef)
  • gr_web_user (Any) (defaults to: undef)
  • gr_web_cors_allow_from_all (Any) (defaults to: false)
  • gr_web_server_remove_default (Any) (defaults to: undef)
  • gr_use_ssl (Any) (defaults to: false)
  • gr_ssl_cert (Any) (defaults to: undef)
  • gr_ssl_key (Any) (defaults to: undef)
  • gr_ssl_dir (Any) (defaults to: undef)
  • gr_apache_conf_template (Any) (defaults to: 'graphite/etc/apache2/sites-available/graphite.conf.erb')
  • gr_apache_conf_prefix (Any) (defaults to: '')
  • gr_apache_24 (Any) (defaults to: $::graphite::params::apache_24)
  • gr_apache_noproxy (Any) (defaults to: undef)
  • gr_django_1_4_or_less (Any) (defaults to: false)
  • gr_django_db_engine (Any) (defaults to: 'django.db.backends.sqlite3')
  • gr_django_db_name (Any) (defaults to: '/opt/graphite/storage/graphite.db')
  • gr_django_db_user (Any) (defaults to: '')
  • gr_django_db_password (Any) (defaults to: '')
  • gr_django_db_host (Any) (defaults to: '')
  • gr_django_db_port (Any) (defaults to: '')
  • gr_enable_carbon_relay (Any) (defaults to: false)
  • gr_relay_line_interface (Any) (defaults to: '0.0.0.0')
  • gr_relay_line_port (Any) (defaults to: 2013)
  • gr_relay_enable_udp_listener (Any) (defaults to: 'False')
  • gr_relay_udp_receiver_interface (Any) (defaults to: '0.0.0.0')
  • gr_relay_udp_receiver_port (Any) (defaults to: 2013)
  • gr_relay_pickle_interface (Any) (defaults to: '0.0.0.0')
  • gr_relay_pickle_port (Any) (defaults to: 2014)
  • gr_relay_log_listener_connections (Any) (defaults to: 'True')
  • gr_relay_method (Any) (defaults to: 'rules')
  • gr_relay_replication_factor (Any) (defaults to: 1)
  • gr_relay_diverse_replicas (Any) (defaults to: 'True')
  • gr_relay_destinations (Any) (defaults to: ['127.0.0.1:2004'])
  • gr_relay_max_queue_size (Any) (defaults to: 10000)
  • gr_relay_use_flow_control (Any) (defaults to: 'True')
  • gr_relay_rules (Any) (defaults to: { all => { pattern => '.*', destinations => ['127.0.0.1:2004'] } , 'default' => { 'default' => true, destinations => ['127.0.0.1:2004:a'] } , })
  • gr_enable_carbon_aggregator (Any) (defaults to: false)
  • gr_aggregator_line_interface (Any) (defaults to: '0.0.0.0')
  • gr_aggregator_line_port (Any) (defaults to: 2023)
  • gr_aggregator_enable_udp_listener (Any) (defaults to: 'False')
  • gr_aggregator_udp_receiver_interface (Any) (defaults to: '0.0.0.0')
  • gr_aggregator_udp_receiver_port (Any) (defaults to: 2023)
  • gr_aggregator_pickle_interface (Any) (defaults to: '0.0.0.0')
  • gr_aggregator_pickle_port (Any) (defaults to: 2024)
  • gr_aggregator_log_listener_connections (Any) (defaults to: 'True')
  • gr_aggregator_forward_all (Any) (defaults to: 'True')
  • gr_aggregator_destinations (Any) (defaults to: ['127.0.0.1:2004'])
  • gr_aggregator_replication_factor (Any) (defaults to: 1)
  • gr_aggregator_max_queue_size (Any) (defaults to: 10000)
  • gr_aggregator_use_flow_control (Any) (defaults to: 'True')
  • gr_aggregator_max_intervals (Any) (defaults to: 5)
  • gr_aggregator_rules (Any) (defaults to: { 'carbon-all-mem' => 'carbon.all.memUsage (60) = sum carbon.*.*.memUsage', 'carbon-class-mem' => 'carbon.all.<class>.memUsage (60) = sum carbon.<class>.*.memUsage', })
  • gr_amqp_enable (Any) (defaults to: 'False')
  • gr_amqp_verbose (Any) (defaults to: 'False')
  • gr_amqp_host (Any) (defaults to: 'localhost')
  • gr_amqp_port (Any) (defaults to: 5672)
  • gr_amqp_vhost (Any) (defaults to: '/')
  • gr_amqp_user (Any) (defaults to: 'guest')
  • gr_amqp_password (Any) (defaults to: 'guest')
  • gr_amqp_exchange (Any) (defaults to: 'graphite')
  • gr_amqp_metric_name_in_body (Any) (defaults to: 'False')
  • gr_memcache_hosts (Any) (defaults to: undef)
  • secret_key (Any) (defaults to: 'UNSAFE_DEFAULT')
  • gr_cluster_servers (Any) (defaults to: undef)
  • gr_carbonlink_hosts (Any) (defaults to: undef)
  • gr_cluster_fetch_timeout (Any) (defaults to: 6)
  • gr_cluster_find_timeout (Any) (defaults to: 2.5)
  • gr_cluster_retry_delay (Any) (defaults to: 60)
  • gr_cluster_cache_duration (Any) (defaults to: 300)
  • nginx_htpasswd (Any) (defaults to: undef)
  • nginx_proxy_read_timeout (Any) (defaults to: 10)
  • manage_ca_certificate (Any) (defaults to: true)
  • gr_use_ldap (Any) (defaults to: false)
  • gr_ldap_uri (Any) (defaults to: '')
  • gr_ldap_search_base (Any) (defaults to: '')
  • gr_ldap_base_user (Any) (defaults to: '')
  • gr_ldap_base_pass (Any) (defaults to: '')
  • gr_ldap_user_query (Any) (defaults to: '(username=%s)')
  • gr_ldap_options (Any) (defaults to: { })
  • gr_use_remote_user_auth (Any) (defaults to: 'False')
  • gr_remote_user_header_name (Any) (defaults to: undef)
  • gr_base_dir (Any) (defaults to: '/opt/graphite')
  • gr_storage_dir (Any) (defaults to: undef)
  • gr_local_data_dir (Any) (defaults to: undef)
  • gr_rrd_dir (Any) (defaults to: undef)
  • gr_whitelists_dir (Any) (defaults to: undef)
  • gr_carbon_conf_dir (Any) (defaults to: undef)
  • gr_carbon_log_dir (Any) (defaults to: undef)
  • gr_carbon_log_rotate (Any) (defaults to: 'True')
  • gr_graphiteweb_log_dir (Any) (defaults to: undef)
  • gr_graphiteweb_conf_dir (Any) (defaults to: undef)
  • gr_graphiteweb_webapp_dir (Any) (defaults to: undef)
  • gr_graphiteweb_storage_dir (Any) (defaults to: '/var/lib/graphite-web')
  • gr_graphiteweb_install_lib_dir (Any) (defaults to: undef)
  • gr_apache_logdir (Any) (defaults to: $::graphite::params::apache_logdir_graphite)
  • gunicorn_arg_timeout (Any) (defaults to: 30)
  • gunicorn_bind (Any) (defaults to: 'unix:/var/run/graphite.sock')
  • gunicorn_workers (Any) (defaults to: 2)
  • gr_cache_instances (Any) (defaults to: [])
  • gr_relay_instances (Any) (defaults to: [])
  • gr_aggregator_instances (Any) (defaults to: [])
  • gr_whisper_autoflush (Any) (defaults to: 'False')
  • gr_whisper_lock_writes (Any) (defaults to: 'False')
  • gr_whisper_fallocate_create (Any) (defaults to: 'False')
  • gr_log_cache_performance (Any) (defaults to: 'False')
  • gr_log_rendering_performance (Any) (defaults to: 'False')
  • gr_log_metric_access (Any) (defaults to: 'False')
  • wsgi_processes (Any) (defaults to: 5)
  • wsgi_threads (Any) (defaults to: 5)
  • wsgi_inactivity_timeout (Any) (defaults to: 120)
  • gr_django_tagging_pkg (Any) (defaults to: $::graphite::params::django_tagging_pkg)
  • gr_django_tagging_ver (Any) (defaults to: $::graphite::params::django_tagging_ver)
  • gr_django_tagging_source (Any) (defaults to: $::graphite::params::django_tagging_source)
  • gr_twisted_pkg (Any) (defaults to: $::graphite::params::twisted_pkg)
  • gr_twisted_ver (Any) (defaults to: $::graphite::params::twisted_ver)
  • gr_twisted_source (Any) (defaults to: $::graphite::params::twisted_source)
  • gr_txamqp_pkg (Any) (defaults to: $::graphite::params::txamqp_pkg)
  • gr_txamqp_ver (Any) (defaults to: $::graphite::params::txamqp_ver)
  • gr_txamqp_source (Any) (defaults to: $::graphite::params::txamqp_source)
  • gr_graphite_pkg (Any) (defaults to: $::graphite::params::graphite_pkg)
  • gr_graphite_ver (Any) (defaults to: $::graphite::params::graphite_ver)
  • gr_graphite_source (Any) (defaults to: $::graphite::params::graphite_source)
  • gr_carbon_pkg (Any) (defaults to: $::graphite::params::carbon_pkg)
  • gr_carbon_ver (Any) (defaults to: $::graphite::params::carbon_ver)
  • gr_carbon_source (Any) (defaults to: $::graphite::params::carbon_source)
  • gr_whisper_pkg (Any) (defaults to: $::graphite::params::whisper_pkg)
  • gr_whisper_ver (Any) (defaults to: $::graphite::params::whisper_ver)
  • gr_whisper_source (Any) (defaults to: $::graphite::params::whisper_source)
  • gr_django_pkg (Any) (defaults to: $::graphite::params::django_pkg)
  • gr_django_ver (Any) (defaults to: $::graphite::params::django_ver)
  • gr_django_source (Any) (defaults to: $::graphite::params::django_source)
  • gr_django_provider (Any) (defaults to: $::graphite::params::django_provider)
  • gr_pip_install (Any) (defaults to: true)
  • gr_manage_python_packages (Any) (defaults to: true)
  • gr_python_binary (Any) (defaults to: $::graphite::params::python_binary)
  • gr_disable_webapp_cache (Any) (defaults to: false)
  • gr_enable_logrotation (Any) (defaults to: true)
  • gr_carbonlink_query_bulk (Any) (defaults to: undef)
  • gr_carbonlink_hosts_timeout (Any) (defaults to: '1.0')
  • gr_rendering_hosts (Any) (defaults to: undef)
  • gr_rendering_hosts_timeout (Any) (defaults to: '1.0')
  • gr_prefetch_cache (Any) (defaults to: undef)
  • gr_apache_port (Any) (defaults to: undef)
  • gr_apache_port_https (Any) (defaults to: undef)


533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
# File 'manifests/init.pp', line 533

class graphite (
  $gr_group                               = '',
  $gr_user                                = '',
  $gr_service_provider                    = $::graphite::params::service_provider,
  $gr_enable_carbon_cache                 = true,
  $gr_max_cache_size                      = inf,
  $gr_max_updates_per_second              = 500,
  $gr_max_updates_per_second_on_shutdown  = undef,
  $gr_max_creates_per_minute              = 50,
  $gr_carbon_metric_prefix                = 'carbon',
  $gr_carbon_metric_interval              = 60,
  $gr_carbon_relay_ulimit                 = undef,
  $gr_line_receiver_interface             = '0.0.0.0',
  $gr_line_receiver_port                  = 2003,
  $gr_enable_udp_listener                 = 'False',
  $gr_udp_receiver_interface              = '0.0.0.0',
  $gr_udp_receiver_port                   = 2003,
  $gr_pickle_receiver_interface           = '0.0.0.0',
  $gr_pickle_receiver_port                = 2004,
  $gr_log_listener_connections            = 'True',
  $gr_use_insecure_unpickler              = 'False',
  $gr_use_whitelist                       = 'False',
  $gr_whitelist                           = ['.*'],
  $gr_blacklist                           = [],
  $gr_cache_query_interface               = '0.0.0.0',
  $gr_cache_query_port                    = 7002,
  $gr_cache_write_strategy                = 'sorted',
  $gr_timezone                            = 'GMT',
  $gr_storage_schemas                     = [
    {
      name       => 'carbon',
      pattern    => '^carbon\.',
      retentions => '1m:90d'
    }
    ,
    {
      name       => 'default',
      pattern    => '.*',
      retentions => '1s:30m,1m:1d,5m:2y'
    }
    ],
  $gr_storage_aggregation_rules           = {
    '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'
    }
  }
  ,
  $gr_web_server                          = 'apache',
  $gr_web_server_port                     = 80,
  $gr_web_server_port_https               = 443,
  $gr_web_servername                      = $::fqdn,
  $gr_web_group                           = undef,
  $gr_web_user                            = undef,
  $gr_web_cors_allow_from_all             = false,
  $gr_web_server_remove_default           = undef,
  $gr_use_ssl                             = false,
  $gr_ssl_cert                            = undef,
  $gr_ssl_key                             = undef,
  $gr_ssl_dir                             = undef,
  $gr_apache_conf_template                = 'graphite/etc/apache2/sites-available/graphite.conf.erb',
  $gr_apache_conf_prefix                  = '',
  $gr_apache_24                           = $::graphite::params::apache_24,
  $gr_apache_noproxy                      = undef,
  $gr_django_1_4_or_less                  = false,
  $gr_django_db_engine                    = 'django.db.backends.sqlite3',
  $gr_django_db_name                      = '/opt/graphite/storage/graphite.db',
  $gr_django_db_user                      = '',
  $gr_django_db_password                  = '',
  $gr_django_db_host                      = '',
  $gr_django_db_port                      = '',
  $gr_enable_carbon_relay                 = false,
  $gr_relay_line_interface                = '0.0.0.0',
  $gr_relay_line_port                     = 2013,
  $gr_relay_enable_udp_listener           = 'False',
  $gr_relay_udp_receiver_interface        = '0.0.0.0',
  $gr_relay_udp_receiver_port             = 2013,
  $gr_relay_pickle_interface              = '0.0.0.0',
  $gr_relay_pickle_port                   = 2014,
  $gr_relay_log_listener_connections      = 'True',
  $gr_relay_method                        = 'rules',
  $gr_relay_replication_factor            = 1,
  $gr_relay_diverse_replicas              = 'True',
  $gr_relay_destinations                  = ['127.0.0.1:2004'],
  $gr_relay_max_queue_size                = 10000,
  $gr_relay_use_flow_control              = 'True',
  $gr_relay_rules                         = {
    all          => {
      pattern      => '.*',
      destinations => ['127.0.0.1:2004']
    }
    ,
    'default'    => {
      'default'    => true,
      destinations => ['127.0.0.1:2004:a']
    }
    ,
  }
  ,
  $gr_enable_carbon_aggregator            = false,
  $gr_aggregator_line_interface           = '0.0.0.0',
  $gr_aggregator_line_port                = 2023,
  $gr_aggregator_enable_udp_listener      = 'False',
  $gr_aggregator_udp_receiver_interface   = '0.0.0.0',
  $gr_aggregator_udp_receiver_port        = 2023,
  $gr_aggregator_pickle_interface         = '0.0.0.0',
  $gr_aggregator_pickle_port              = 2024,
  $gr_aggregator_log_listener_connections = 'True',
  $gr_aggregator_forward_all              = 'True',
  $gr_aggregator_destinations             = ['127.0.0.1:2004'],
  $gr_aggregator_replication_factor       = 1,
  $gr_aggregator_max_queue_size           = 10000,
  $gr_aggregator_use_flow_control         = 'True',
  $gr_aggregator_max_intervals            = 5,
  $gr_aggregator_rules                    = {
    'carbon-all-mem'   => 'carbon.all.memUsage (60) = sum carbon.*.*.memUsage',
    'carbon-class-mem' => 'carbon.all.<class>.memUsage (60) = sum carbon.<class>.*.memUsage',
  }
  ,
  $gr_amqp_enable                         = 'False',
  $gr_amqp_verbose                        = 'False',
  $gr_amqp_host                           = 'localhost',
  $gr_amqp_port                           = 5672,
  $gr_amqp_vhost                          = '/',
  $gr_amqp_user                           = 'guest',
  $gr_amqp_password                       = 'guest',
  $gr_amqp_exchange                       = 'graphite',
  $gr_amqp_metric_name_in_body            = 'False',
  $gr_memcache_hosts                      = undef,
  $secret_key                             = 'UNSAFE_DEFAULT',
  $gr_cluster_servers                     = undef,
  $gr_carbonlink_hosts                    = undef,
  $gr_cluster_fetch_timeout               = 6,
  $gr_cluster_find_timeout                = 2.5,
  $gr_cluster_retry_delay                 = 60,
  $gr_cluster_cache_duration              = 300,
  $nginx_htpasswd                         = undef,
  $nginx_proxy_read_timeout               = 10,
  $manage_ca_certificate                  = true,
  $gr_use_ldap                            = false,
  $gr_ldap_uri                            = '',
  $gr_ldap_search_base                    = '',
  $gr_ldap_base_user                      = '',
  $gr_ldap_base_pass                      = '',
  $gr_ldap_user_query                     = '(username=%s)',
  $gr_ldap_options                        = {
  }
  ,
  $gr_use_remote_user_auth                = 'False',
  $gr_remote_user_header_name             = undef,
  $gr_base_dir                            = '/opt/graphite',
  $gr_storage_dir                         = undef,
  $gr_local_data_dir                      = undef,
  $gr_rrd_dir                             = undef,
  $gr_whitelists_dir                      = undef,
  $gr_carbon_conf_dir                     = undef,
  $gr_carbon_log_dir                      = undef,
  $gr_carbon_log_rotate                   = 'True',
  $gr_graphiteweb_log_dir                 = undef,
  $gr_graphiteweb_conf_dir                = undef,
  $gr_graphiteweb_webapp_dir              = undef,
  $gr_graphiteweb_storage_dir             = '/var/lib/graphite-web',
  $gr_graphiteweb_install_lib_dir         = undef,
  $gr_apache_logdir                       = $::graphite::params::apache_logdir_graphite,
  $gunicorn_arg_timeout                   = 30,
  $gunicorn_bind                          = 'unix:/var/run/graphite.sock',
  $gunicorn_workers                       = 2,
  $gr_cache_instances                     = [],
  $gr_relay_instances                     = [],
  $gr_aggregator_instances                = [],
  $gr_whisper_autoflush                   = 'False',
  $gr_whisper_lock_writes                 = 'False',
  $gr_whisper_fallocate_create            = 'False',
  $gr_log_cache_performance               = 'False',
  $gr_log_rendering_performance           = 'False',
  $gr_log_metric_access                   = 'False',
  $wsgi_processes                         = 5,
  $wsgi_threads                           = 5,
  $wsgi_inactivity_timeout                = 120,
  $gr_django_tagging_pkg                  = $::graphite::params::django_tagging_pkg,
  $gr_django_tagging_ver                  = $::graphite::params::django_tagging_ver,
  $gr_django_tagging_source               = $::graphite::params::django_tagging_source,
  $gr_twisted_pkg                         = $::graphite::params::twisted_pkg,
  $gr_twisted_ver                         = $::graphite::params::twisted_ver,
  $gr_twisted_source                      = $::graphite::params::twisted_source,
  $gr_txamqp_pkg                          = $::graphite::params::txamqp_pkg,
  $gr_txamqp_ver                          = $::graphite::params::txamqp_ver,
  $gr_txamqp_source                       = $::graphite::params::txamqp_source,
  $gr_graphite_pkg                        = $::graphite::params::graphite_pkg,
  $gr_graphite_ver                        = $::graphite::params::graphite_ver,
  $gr_graphite_source                     = $::graphite::params::graphite_source,
  $gr_carbon_pkg                          = $::graphite::params::carbon_pkg,
  $gr_carbon_ver                          = $::graphite::params::carbon_ver,
  $gr_carbon_source                       = $::graphite::params::carbon_source,
  $gr_whisper_pkg                         = $::graphite::params::whisper_pkg,
  $gr_whisper_ver                         = $::graphite::params::whisper_ver,
  $gr_whisper_source                      = $::graphite::params::whisper_source,
  $gr_django_pkg                          = $::graphite::params::django_pkg,
  $gr_django_ver                          = $::graphite::params::django_ver,
  $gr_django_source                       = $::graphite::params::django_source,
  $gr_django_provider                     = $::graphite::params::django_provider,
  $gr_pip_install                         = true,
  $gr_manage_python_packages              = true,
  $gr_python_binary                       = $::graphite::params::python_binary,
  $gr_disable_webapp_cache                = false,
  $gr_enable_logrotation                  = true,
  $gr_carbonlink_query_bulk               = undef,
  $gr_carbonlink_hosts_timeout            = '1.0',
  $gr_rendering_hosts                     = undef,
  $gr_rendering_hosts_timeout             = '1.0',
  $gr_prefetch_cache                      = undef,
  $gr_apache_port                         = undef,
  $gr_apache_port_https                   = undef,) inherits graphite::params {
  # Validation of input variables.
  # TODO - validate all the things
  validate_string($gr_use_remote_user_auth)

  # validate bools
  validate_bool($gr_enable_carbon_cache)
  validate_bool($gr_web_cors_allow_from_all)
  validate_bool($gr_use_ssl)
  validate_bool($gr_django_1_4_or_less)
  validate_bool($gr_enable_carbon_relay)
  validate_bool($gr_enable_carbon_aggregator)
  validate_bool($manage_ca_certificate)
  validate_bool($gr_use_ldap)
  validate_bool($gr_pip_install)
  validate_bool($gr_manage_python_packages)
  validate_bool($gr_disable_webapp_cache)

  if $gr_apache_port or $gr_apache_port_https {
    fail('$gr_apache_port and $gr_apache_port_https are deprecated in favour of $gr_web_server_port and $gr_web_server_port_https')
  }

  # validate integers
  validate_integer($gr_web_server_port)
  validate_integer($gr_web_server_port_https)

  $base_dir_REAL                    = $gr_base_dir
  $storage_dir_REAL                 = pick($gr_storage_dir,            "${base_dir_REAL}/storage")
  $local_data_dir_REAL              = pick($gr_local_data_dir,         "${storage_dir_REAL}/whisper")
  $rrd_dir_REAL                     = pick($gr_rrd_dir,                "${storage_dir_REAL}/rrd")
  $whitelists_dir_REAL              = pick($gr_whitelists_dir,         "${storage_dir_REAL}/lists")
  $carbon_conf_dir_REAL             = pick($gr_carbon_conf_dir,        "${base_dir_REAL}/conf")
  $carbon_log_dir_REAL              = pick($gr_carbon_log_dir,         "${storage_dir_REAL}/log/carbon-cache")
  $graphiteweb_log_dir_REAL         = pick($gr_graphiteweb_log_dir,    "${storage_dir_REAL}/log")
  $graphiteweb_conf_dir_REAL        = pick($gr_graphiteweb_conf_dir,   "${base_dir_REAL}/conf")
  $graphiteweb_webapp_dir_REAL      = pick($gr_graphiteweb_webapp_dir, "${base_dir_REAL}/webapp")
  $graphiteweb_storage_dir_REAL     = $gr_graphiteweb_storage_dir
  $graphiteweb_install_lib_dir_REAL = pick($gr_graphiteweb_install_lib_dir, "${graphiteweb_webapp_dir_REAL}/graphite")

  # The anchor resources allow the end user to establish relationships
  # to the "main" class and preserve the relationship to the
  # implementation classes through a transitive relationship to
  # the composite class.
  # https://projects.puppetlabs.com/projects/puppet/wiki/Anchor_Pattern
  Anchor['graphite::begin'] ->
  Class['graphite::install'] ~>
  Class['graphite::config'] ->
  Anchor['graphite::end']

  anchor { 'graphite::begin': }
  include graphite::install
  include graphite::config

  anchor { 'graphite::end': }
}