{"id":15103549,"url":"https://github.com/echocat/puppet-graphite","last_synced_at":"2025-09-27T02:31:36.535Z","repository":{"id":4238708,"uuid":"5362897","full_name":"echocat/puppet-graphite","owner":"echocat","description":"Puppet module for graphite monitoring tools","archived":true,"fork":false,"pushed_at":"2023-08-08T18:07:08.000Z","size":916,"stargazers_count":67,"open_issues_count":6,"forks_count":198,"subscribers_count":11,"default_branch":"master","last_synced_at":"2024-09-21T09:31:37.962Z","etag":null,"topics":["carbon","echocat","graphite","puppet","whisper"],"latest_commit_sha":null,"homepage":null,"language":"Puppet","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/echocat.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2012-08-10T00:04:41.000Z","updated_at":"2023-12-19T17:36:10.000Z","dependencies_parsed_at":"2024-06-18T13:31:34.582Z","dependency_job_id":"67d651c8-4094-41d9-9687-0a97ce1f4d1e","html_url":"https://github.com/echocat/puppet-graphite","commit_stats":null,"previous_names":[],"tags_count":40,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/echocat%2Fpuppet-graphite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/echocat%2Fpuppet-graphite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/echocat%2Fpuppet-graphite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/echocat%2Fpuppet-graphite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/echocat","download_url":"https://codeload.github.com/echocat/puppet-graphite/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219871850,"owners_count":16554459,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["carbon","echocat","graphite","puppet","whisper"],"created_at":"2024-09-25T19:40:24.937Z","updated_at":"2025-09-27T02:31:31.123Z","avatar_url":"https://github.com/echocat.png","language":"Puppet","funding_links":[],"categories":[],"sub_categories":[],"readme":"# graphite\n\n#### Table of Contents\n\n1. [Overview - What is the graphite module?](#overview)\n2. [Module Description - What does this module do?](#module-description)\n3. [Setup - The basics of getting started with graphite](#setup)\n    * [Beginning with graphite - Installation](#beginning-with-graphite)\n    * [Configure MySQL and Memcached](#configure-mysql-and-memcached)\n    * [Configure Graphite with Grafana](#configure-graphite-with-grafana)\n    * [Configuration with Apache 2.4 and CORS](#configuration-with-apache-24-and-cors)\n    * [Configuration with Additional LDAP Options](#configuration-with-additional-ldap-options)\n    * [Configuration with multiple cache, relay and/or aggregator instances](#configuration-with-multiple-cache-relay-andor-aggregator-instances)\n\n4. [Usage - The class and available configurations](#usage)\n5. [Requirements](#requirements)\n6. [Limitations - OS compatibility, etc.](#limitations)\n7. [Contributing to the graphite module](#contributing)\n\n## Overview\n\nThis module installs and makes basic configs for graphite, with carbon and whisper.\n\n[![Puppet Forge](http://img.shields.io/puppetforge/v/dwerder/graphite.svg)](https://forge.puppetlabs.com/dwerder/graphite)\n[![Build Status](https://secure.travis-ci.org/echocat/puppet-graphite.png?branch=master)](https://travis-ci.org/echocat/puppet-graphite)\n[![Puppet Forge Downloads](http://img.shields.io/puppetforge/dt/dwerder/graphite.svg)](https://forge.puppetlabs.com/dwerder/graphite)\n\n## Module Description\n\n[Graphite](http://graphite.readthedocs.org/en/latest/overview.html), 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.\n\n## Setup\n\n**What graphite affects:**\n\n* packages/services/configuration files for Graphite\n* on default sets up webserver (can be disabled if manage by other module)\n\n### Beginning with Graphite\n\nTo install Graphite with default parameters\n\n```puppet\n    class { 'graphite': }\n```\n\nThe 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`.\n\n### Configure MySQL and Memcached\n\n```puppet\n  class { 'graphite':\n    gr_max_updates_per_second =\u003e 100,\n    gr_timezone               =\u003e 'Europe/Berlin',\n    secret_key                =\u003e 'CHANGE_IT!',\n    gr_storage_schemas        =\u003e [\n      {\n        name       =\u003e 'carbon',\n        pattern    =\u003e '^carbon\\.',\n        retentions =\u003e '1m:90d'\n      },\n      {\n        name       =\u003e 'special_server',\n        pattern    =\u003e '^longtermserver_',\n        retentions =\u003e '10s:7d,1m:365d,10m:5y'\n      },\n      {\n        name       =\u003e 'default',\n        pattern    =\u003e '.*',\n        retentions =\u003e '60:43200,900:350400'\n      }\n    ],\n    gr_django_db_engine       =\u003e 'django.db.backends.mysql',\n    gr_django_db_name         =\u003e 'graphite',\n    gr_django_db_user         =\u003e 'graphite',\n    gr_django_db_password     =\u003e 'MYsEcReT!',\n    gr_django_db_host         =\u003e 'mysql.my.domain',\n    gr_django_db_port         =\u003e '3306',\n    gr_memcache_hosts         =\u003e ['127.0.0.1:11211']\n  }\n```\n\n### Configure Graphite with Grafana\n\nThis setup will use the [puppetlabs-apache](https://forge.puppetlabs.com/puppetlabs/apache) and [bfraser-grafana](https://forge.puppet.com/bfraser/grafana) modules to setup a graphite system with grafana frontend. You will also need an elasticsearch as it is required for grafana.\n\n```puppet\ninclude '::apache'\n\napache::vhost { 'graphite.my.domain':\n  port    =\u003e '80',\n  docroot =\u003e '/opt/graphite/webapp',\n  wsgi_application_group      =\u003e '%{GLOBAL}',\n  wsgi_daemon_process         =\u003e 'graphite',\n  wsgi_daemon_process_options =\u003e {\n    processes          =\u003e '5',\n    threads            =\u003e '5',\n    display-name       =\u003e '%{GROUP}',\n    inactivity-timeout =\u003e '120',\n  },\n  wsgi_import_script          =\u003e '/opt/graphite/conf/graphite_wsgi.py',\n  wsgi_import_script_options  =\u003e {\n    process-group     =\u003e 'graphite',\n    application-group =\u003e '%{GLOBAL}'\n  },\n  wsgi_process_group          =\u003e 'graphite',\n  wsgi_script_aliases         =\u003e {\n    '/' =\u003e '/opt/graphite/conf/graphite_wsgi.py'\n  },\n  headers =\u003e [\n    'set Access-Control-Allow-Origin \"*\"',\n    'set Access-Control-Allow-Methods \"GET, OPTIONS, POST\"',\n    'set Access-Control-Allow-Headers \"origin, authorization, accept\"',\n  ],\n  directories =\u003e [{\n    path =\u003e '/media/',\n    order =\u003e 'deny,allow',\n    allow =\u003e 'from all'}\n  ]\n}-\u003e\nclass { 'graphite':\n  gr_web_server           =\u003e 'none',\n  gr_disable_webapp_cache =\u003e true,\n}\n\nclass {'grafana':\n # see manual of this module\n}\n```\n\n### Configuration with Apache 2.4 and CORS\n\nIf you use a system which ships Apache 2.4, then you will need a slightly different vhost config.\nHere is an example with Apache 2.4 and [CORS](http://en.wikipedia.org/wiki/Cross-origin_resource_sharing) enabled.\nIf you do not know what CORS, then do not use it. Its disabled by default. You will need CORS for Webguis like Grafana.\n\n```puppet\n  class { 'graphite':\n    gr_apache_24               =\u003e true,\n    gr_web_cors_allow_from_all =\u003e true,\n    secret_key                 =\u003e 'CHANGE_IT!'\n  }\n```\n\n### Configuration with Additional LDAP Options\n\nIf additional LDAP parameters are needed for your Graphite installation, you can specify them using the `gr_ldap_options`\nparameter. For example, this is useful if you're using SSL and need to configure LDAP to use your SSL cert and key files.\n\nThis Puppet configuration...\n\n```puppet\n  class { 'graphite':\n    gr_ldap_options =\u003e {\n      'ldap.OPT_X_TLS_REQUIRE_CERT' =\u003e 'ldap.OPT_X_TLS_ALLOW',\n      'ldap.OPT_X_TLS_CACERTDIR'    =\u003e '\"/etc/ssl/ca\"',\n      'ldap.OPT_X_TLS_CERTFILE'     =\u003e '\"/etc/ssl/mycert.crt\"',\n      'ldap.OPT_X_TLS_KEYFILE'      =\u003e '\"/etc/ssl/mykey.pem\"',\n    },\n  }\n```\n\n... adds these lines to the local_settings.py configuration file for Graphite web.\n\n```python\nimport ldap\nldap.set_option(ldap.OPT_X_TLS_CACERTDIR, \"/etc/ssl/ca\")\nldap.set_option(ldap.OPT_X_TLS_CERTFILE, \"/etc/ssl/mycert.crt\")\nldap.set_option(ldap.OPT_X_TLS_KEYFILE, \"/etc/ssl/mykey.pem\")\nldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_ALLOW)\n```\n\nSee http://www.python-ldap.org/ for more details about these options.\n\n### Configuration with multiple cache, relay and/or aggregator instances\n\nYou could create more than one instance for cache, relay or aggregator using the `gr_cache_instances`,\n`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\nones set for the principal instance.\n\n```puppet\n   class {'graphite':\n      gr_line_receiver_port =\u003e 2003,\n      gr_pickle_receiver_port =\u003e 2004,\n      gr_cache_query_port =\u003e 7002,\n\n      gr_cache_instances =\u003e {\n         'cache:b' =\u003e {\n            'LINE_RECEIVER_PORT' =\u003e 2103,\n            'PICKLE_RECEIVER_PORT' =\u003e 2104,\n            'CACHE_QUERY_PORT' =\u003e 7102,\n         },\n         'cache:c' =\u003e {\n            'LINE_RECEIVER_PORT' =\u003e 2203,\n            'PICKLE_RECEIVER_PORT' =\u003e 2204,\n            'CACHE_QUERY_PORT' =\u003e 7202,\n         }\n      }\n   }\n```\n\nSo 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.\n\n### Install Graphite 1.1 and enable tag-support\n\nTaged 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.\n\nTo 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. \n\n```\nclass { 'graphite': \n    gr_tags_enable            =\u003e true,\n    #\n    # Needed to install / upgrade to Graphite 1.1\n    #\n    gr_graphite_ver           =\u003e '1.1.7',\n    gr_carbon_ver             =\u003e '1.1.7',\n    gr_whisper_ver            =\u003e '1.1.7',\n    gr_django_ver             =\u003e '1.11',\n    gr_django_tagging_ver     =\u003e '0.4.6',\n    gr_twisted_ver            =\u003e '20.3.0',\n    gr_django_init_command    =\u003e 'PYTHONPATH=/opt/graphite/webapp /usr/local/bin/django-admin.py migrate --setting=graphite.settings --fake-initial',\n    gr_django_init_provider   =\u003e 'shell',\n}\n```\n \n\n### Installing with something other than pip and specifying package names and versions\nIf 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.\nIf you're doing this you'll most likely have to override the default package names and versions as well.\n```puppet\n  class { '::graphite':\n    gr_pip_install        =\u003e false,\n    gr_django_tagging_pkg =\u003e 'python-django-tagging',\n    gr_django_tagging_ver =\u003e 'present',\n    gr_twisted_pkg        =\u003e 'python-twisted',\n    gr_twisted_ver        =\u003e 'present',\n    gr_txamqp_pkg         =\u003e 'python-txamqp',\n    gr_txamqp_ver         =\u003e 'present',\n    gr_graphite_pkg       =\u003e 'python-graphite-web',\n    gr_graphite_ver       =\u003e 'present',\n    gr_carbon_pkg         =\u003e 'python-carbon',\n    gr_carbon_ver         =\u003e 'present',\n    gr_whisper_pkg        =\u003e 'python-whisper',\n    gr_whisper_ver        =\u003e 'present',\n  }\n```\n\nAdditionally, the Django package is normally installed from a system package, but can be changed to install from pip instead.\n```puppet\n  class { '::graphite':\n    gr_django_pkg      =\u003e 'django',\n    gr_django_ver      =\u003e '1.5',\n    gr_django_provider =\u003e 'pip',\n  }\n```\n\n#### Managing system pip and Python development packages\n\nIf 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.\n\n  class { '::graphite':\n    gr_pip_install            =\u003e true,\n    gr_manage_python_packages =\u003e false,\n  }\n\n### Installing with pip from a non-PyPI source\n\nYou 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:\n```puppet\n  class { '::graphite':\n    gr_django_tagging_ver    =\u003e 'present',\n    gr_django_tagging_source =\u003e 'http://example.com/django-tagging-0.3.1.tar.gz',\n    gr_twisted_ver           =\u003e 'present',\n    gr_twisted_source        =\u003e 'http://example.com/Twisted-11.1.0.tar.bz2',\n    gr_txamqp_ver            =\u003e 'present',\n    gr_txamqp_source         =\u003e 'http://example.com/txAMQP-0.4.tar.gz',\n    gr_graphite_ver          =\u003e 'present',\n    gr_graphite_source       =\u003e 'http://example.com/graphite-web-0.9.15.tar.gz',\n    gr_carbon_ver            =\u003e 'present',\n    gr_carbon_source         =\u003e 'http://example.com/carbon-0.9.15.tar.gz',\n    gr_whisper_ver           =\u003e 'present',\n    gr_whisper_source        =\u003e 'http://example.com/whisper-0.9.15.tar.gz',\n  }\n```\n\nYou can also specify an alternate source for all packages (and their dependencies) by passing options to `pip install` using `gr_pip_install_options`:\n```puppet\n  class { '::graphite':\n    gr_pip_install_options =\u003e [\n      '--no-index',\n      '--find-links', 'https://example.com/pip_packages/',\n    ],\n  }\n```\n\nFor more details on how these options work, see the [documentation for `pip install`](https://pip.pypa.io/en/stable/reference/pip_install/).\n\n## Usage\n\n#### Class: `graphite`\n\nThis is the primary class. And the only one which should be used.\n\n**Parameters within `graphite`:**\n\n##### `gr_group`\n\nDefault is empty. The group of the user (see gr_user) who runs graphite.\n\n##### `gr_user`\n\nDefault is empty. The user who runs graphite. If this is empty carbon runs as the user that invokes it.\n\n##### `gr_enable_carbon_cache`\n\nDefault is true. Enable carbon cache.\n\n##### `gr_max_cache_size`\n\nDefault 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.\n\n##### `gr_max_updates_per_second`\n\nDefault is 500. Limits the number of whisper update_many() calls per second, which effectively means the number of write requests sent to the disk.\n\n##### `gr_max_updates_per_second_on_shutdown`\n\nDefault 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.\n\n##### `gr_max_creates_per_minute`\n\nDefault is 50. Softly limits the number of whisper files that get created each minute.\n\n##### `gr_carbon_metric_prefix`\n\nThe prefix to be applied to internal performance metrics. Defaults to 'carbon'.\n\n##### `gr_carbon_metric_interval`\n\nDefault is 60. Set the interval between sending internal performance metrics; affects all carbon daemons.\n\n##### `gr_carbon_relay_ulimit`\n\nDefault is undef. Set the maximum number of file descriptors for\ncarbon-relay process.\n\n##### `gr_line_receiver_interface`\n\nDefault is '0.0.0.0' (string). Interface the line receiver listens.\n\n##### `gr_line_receiver_port`\n\nDefault is 2003. Port of line receiver.\n\n##### `gr_enable_udp_listener`\n\nDefault is 'False' (string). Set this to True to enable the UDP listener.\n\n##### `gr_udp_receiver_interface`\n\nDefault is '0.0.0.0' (string). Its clear, isnt it?\n\n##### `gr_udp_receiver_port`\n\nDefault is 2003. Self explaining.\n\n##### `gr_pickle_receiver_interface`\n\nDefault is '0.0.0.0' (string). Pickle is a special receiver who handle tuples of data.\n\n##### `gr_pickle_receiver_port`\n\nDefault is 2004. Self explaining\n\n##### `gr_log_listener_connections`\n\nDefault is 'True' (string). Logs successful connections\n\n##### `gr_use_insecure_unpickler`\n\nDefault is 'False' (string). Set this to 'True' to revert to the old-fashioned insecure unpickler.\n\n##### `gr_use_whitelist`\n\nDefault is 'False' (string). Set this to 'True' to enable whitelists and blacklists.\n\n##### `gr_whitelist`\n\nList of patterns to be included in whitelist.conf. Default is [ '.*' ].\n\n##### `gr_blacklist`\n\nList of patterns to be included in blacklist.conf. Default is [ ].\n\n##### `gr_cache_query_interface`\n\nDefault is '0.0.0.0'. Interface to send cache queries to.\n\n##### `gr_cache_query_port`\n\nDefault is 7002. Self explaining.\n\n##### `gr_timezone`\n\nDefault is 'GMT' (string). Timezone for graphite to be used.\n\n##### `gr_base_dir`\n\nDefault 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'.\n\n#### `gr_base_dir_managed_externally`\n\nBoolean, default to false . Useful if the base install location of Graphite is managed by other Puppet resource (like a mountpoint for example)\n\n##### `gr_storage_dir`\n\nDefault 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.\n\n##### `gr_local_data_dir`\n\nDefault is '${gr_storage_dir}/whisper'. Set location of whisper files.\n\n##### `gr_rrd_dir`\n\nDefault is '${gr_storage_dir}/rrd'. Set location of rrd data files.\n\n##### `gr_whitelists_dir`\n\nDefault is '${gr_storage_dir}/rrd'. Set location of whitelist configuration files.\n\n##### `gr_carbon_conf_dir`\n\nDefault 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'.\n\n##### `gr_carbon_log_dir`\n\nDefault is '${gr_storage_dir}/log/carbon-cache'. Set location of carbon cache log files.\n\n##### `gr_carbon_log_rotate`\n\nDefault is 'True'. Enable daily log rotation.\n\n##### `gr_graphiteweb_log_dir`\n\nDefault is '${gr_storage_dir}/log'. Set location of graphite web log files.\n\n##### `gr_graphiteweb_conf_dir`\n\nDefault is '${gr_base_dir}/conf'. Set location of graphite web configuration.\n\n##### `gr_graphiteweb_webapp_dir`\n\nDefault is '${gr_base_dir}/webapp'. Set location of graphite web's webapp files.\n\n##### `gr_graphiteweb_storage_dir`\n\nDefault is '/var/lib/graphite-web'. Set location of graphite web's storage, used for graphite.db file.\n\n##### `gr_graphiteweb_install_lib_dir`\n\nDefault is '${gr_graphiteweb_webapp_dir}/graphite'. Set location of libraries directory for graphite web.\n\n##### `gr_storage_schemas`\n\nDefault is\n```\n[\n  {\n    name       =\u003e 'carbon',\n    pattern    =\u003e '^carbon\\.',\n    retentions =\u003e '1m:90d'\n  },\n  {\n    name       =\u003e 'default',\n    pattern    =\u003e '.*',\n    retentions =\u003e '1s:30m,1m:1d,5m:2y'\n  }\n]\n```\nThe storage schemas, which describes how long matching graphs are to be stored in detail.\n\n##### `gr_storage_aggregation_rules`\n\nDefault is the Hashmap:\n```\n{\n  '00_min'         =\u003e { pattern =\u003e '\\.min$',   factor =\u003e '0.1', method =\u003e 'min' },\n  '01_max'         =\u003e { pattern =\u003e '\\.max$',   factor =\u003e '0.1', method =\u003e 'max' },\n  '02_sum'         =\u003e { pattern =\u003e '\\.count$', factor =\u003e '0.1', method =\u003e 'sum' },\n  '99_default_avg' =\u003e { pattern =\u003e '.*',       factor =\u003e '0.5', method =\u003e 'average'}\n}\n```\nThe storage aggregation rules.\n\n##### `gr_web_server`\n\nDefault is 'apache'. The web server to configure. Valid values are 'apache', 'nginx', 'wsgionly' or 'none'.\n\nApache is configured with mod_wsgi, nginx is configured with gunicorn. 'wsgionly' configures only gunicorn.\n\nThe value 'none' means that you will manage the webserver yourself.\n\n##### `gr_web_server_port`\n\nDefault is 80. The HTTP port which the web server will use. Only used for $gr_web_server =\u003e 'apache' or 'nginx'.\n\n##### `gr_web_server_port_https`\n\nDefault is 443. The HTTPS port which the web server will use. Only used for $gr_web_server =\u003e 'apache'.\n\n##### `gr_web_servername`\n\nDefault is `$::fqdn` (string). Virtualhostname of Graphite webgui.\n\n##### `gr_web_cors_allow_from_all`\n\nDefault is false (boolean). Include CORS Headers for all hosts (*) in web server config.\nThis is needed for tools like Grafana.\n\n##### `gr_use_ssl`\n\nIf true, alter web server config to enable SSL. Default is false (boolean).\nOnly used for apache at the moment.\n\n##### `gr_ssl_cert`\n\nPath to SSL cert file. Default is undef.\n\n##### `gr_ssl_key`\n\nPath to SSL key file. Default is undef.\n\n##### `gr_ssl_dir`\n\nPath to SSL dir containing keys and certs. Default is undef.\n\n##### `gr_web_group`\n\nGroup name to chgrp the files that will served by webserver. Only necessary for gr_web_server =\u003e 'wsgionly' or 'none'.\n\n##### `gr_web_user`\n\nUsername to chown the files that will served by webserver. Only necessary for gr_web_server =\u003e 'wsgionly' or 'none'.\n\n##### `gr_apache_conf_template`\n\nTemplate to use for Apache vhost config. Default is 'graphite/etc/apache2/sites-available/graphite.conf.erb'.\n\n##### `gr_apache_conf_prefix`\n\nDefault is '' (String). Prefix of the Apache config file. Useful if you want to change the order of the virtual hosts to be loaded.\nFor example: '000-'\n\n##### `gr_apache_24`\n\nBoolean to enable configuration parts for Apache 2.4 instead of 2.2\nDefault is false/true (autodected. see params.pp)\n\n##### `gr_apache_noproxy`\n\nOptional setting to disable proxying of requests. When set, will supply a value to 'NoProxy'.\n```\n{\n  gr_apache_noproxy   =\u003e \"0.0.0.0/0\"\n}\n```\nWill insert:\n```\n  NoProxy 0.0.0.0/0\n```\nIn the /etc/apache2/conf.d/graphite.conf file.\n\n##### `gr_django_1_4_or_less`\n\nDefault is false (boolean). Django settings style.\n\n##### `gr_django_db_engine`\n\nDefault is 'django.db.backends.sqlite3' (string). Can be set to\n\n- django.db.backends.postgresql  \u003c- Removed in Django 1.4\n- django.db.backends.postgresql_psycopg2\n- django.db.backends.mysql\n- django.db.backends.sqlite3\n- django.db.backends.oracle\n\n##### `gr_django_db_name`\n\nDefault is '/opt/graphite/storage/graphite.db' (string). Name of database to be used by django.\n\n##### `gr_django_db_user`\n\nDefault is '' (string). Name of database user.\n\n##### `gr_django_db_password`\n\nDefault is '' (string). Password of database user.\n\n##### `gr_django_db_host`\n\nDefault is '' (string). Hostname/IP of database server.\n\n##### `gr_django_db_port`\n\nDefault is '' (string). Port of database.\n\n##### `gr_enable_carbon_relay`\n\nDefault is false. Enable carbon relay.\n\n##### `gr_relay_line_interface`\n\nDefault is '0.0.0.0' (string)\n\n##### `gr_relay_line_port`\n\nDefault is 2013 (integer)\n\n##### `gr_relay_enable_udp_listener`\n\nDefault is 'False'. Enables the UDP listener for carbon-relay.\n\n##### `gr_relay_udp_receiver_interface`\n\nDefault is '0.0.0.0' (string)\n\n##### `gr_relay_udp_receiver_port`\n\nDefault is 2013 (integer)\n\n##### `gr_relay_pickle_interface`\n\nDefault is '0.0.0.0' (string)\n\n##### `gr_relay_pickle_port`\n\nDefault is 2014 (integer)\n\n##### `gr_relay_log_listener_connections`\n\nDefault is 'True' (string). Logs successful connections\n\n##### `gr_relay_method`\n\nDefault is 'rules'\n\n##### `gr_relay_replication_factor`\n\nDefault is 1 (integer). Add redundancy by replicating every datapoint to more than one machine.\n\n##### `gr_relay_diverse_replicas`\n\nDefault is 'True' (string). Add to guarantee replicas across distributed hosts.\n\n##### `gr_relay_destinations`\n\nDefault  is [ '127.0.0.1:2004' ] (array). Array of backend carbons for relay.\n\n##### `gr_relay_max_queue_size`\n\nDefault is 10000 (integer)\n\n##### `gr_relay_use_flow_control`\n\nDefault is 'True' (string).\n\n##### `gr_relay_rules`\n\nRelay rule set.\nDefault is\n```\n{\n   all       =\u003e { pattern      =\u003e '.*',\n                  destinations =\u003e [ '127.0.0.1:2004' ] },\n   'default' =\u003e { 'default'    =\u003e true,\n                  destinations =\u003e [ '127.0.0.1:2004:a' ] },\n}\n```\n\n##### `gr_enable_carbon_aggregator`\n\nDefault is false (boolean) Enable the carbon aggregator daemon.\n\n##### `gr_aggregator_line_interface`\n\nDefault is '0.0.0.0' (string). Address for line interface to listen on.\n\n##### `gr_aggregator_line_port`\n\nDefault is 2023. TCP port for line interface to listen on.\n\n##### `gr_aggregator_enable_udp_listener`\n\nDefault is 'False' (string). Set this to True to enable the UDP listener.\n\n##### `gr_aggregator_udp_receiver_interface`\n\nDefault is '0.0.0.0' (string). Its clear, isnt it?\n\n##### `gr_aggregator_udp_receiver_port`\n\nDefault is 2023. Self explaining.\n\n##### `gr_aggregator_pickle_interface`\n\nDefault is '0.0.0.0' (string). IP address for pickle interface.\n\n##### `gr_aggregator_pickle_port`\n\nDefault is 2024. Pickle port.\n\n##### `gr_aggregator_log_listener_connections`\n\nDefault is 'True' (string). Logs successful connections\n\n##### `gr_aggregator_forward_all`\n\nDefault is 'True' (string). Forward all metrics to the destination(s) defined in  `gr_aggregator_destinations`.\n\n##### `gr_aggregator_destinations`\n\nDefault is [ '127.0.0.1:2004' ] (array). Array of backend carbons.\n\n##### `gr_aggregator_max_queue_size`\n\nDefault is 10000. Maximum queue size.\n\n##### `gr_aggregator_use_flow_control`\n\nDefault is 'True' (string). Enable flow control Can be True or False.\n\n##### `gr_aggregator_max_intervals`\n\nDefault is 5. Maximum number intervals to keep around.\n\n##### `gr_aggregator_rules`\n\nDefault is\n```\n{\n  'carbon-class-mem'  =\u003e 'carbon.all.\u003cclass\u003e.memUsage (60) = sum carbon.\u003cclass\u003e.*.memUsage',\n  'carbon-all-mem'    =\u003e 'carbon.all.memUsage (60) = sum carbon.*.*.memUsage',\n}\n```\nHashmap of carbon aggregation rules.\n\n##### `gr_memcache_hosts`\n\nDefault is undef (array). List of memcache hosts to use. eg ['127.0.0.1:11211','10.10.10.1:11211']\n\n##### `secret_key`\n\nDefault 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.\n\n##### `gr_cluster_servers`\n\nDefault is undef (array). Array of webbapp hosts. eg.: ['10.0.2.2:80', '10.0.2.3:80']\n\n##### `gr_carbonlink_hosts`\n\nDefault is undef (array). Array of carbonlink hosts. eg.: ['10.0.2.2:80', '10.0.2.3:80']\n\n##### `gr_carbonlink_hashing_type`\n\nDefault is undef (string). Defines consistent-hashing type for 0.9.16+, e.g.: 'carbon_ch'\n\n##### `gr_cluster_fetch_timeout`\n\nDefault is 6. Timeout to fetch series data.\n\n##### `gr_cluster_find_timeout`\n\nDefault is 2.5 . Timeout for metric find requests.   \n\n##### `gr_cluster_retry_delay`\n\nDefault is 10.  Time before retrying a failed remote webapp.\n\n##### `gr_cluster_cache_duration`\n\nDefault is 300. Time to cache remote metric find results.\n\n##### `gr_cluster_store_merge_results`\n\nDefault is 'True'. During a rebalance of a consistent hash cluster, after a partition event on a replication \u003e 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).  \n\n##### `nginx_htpasswd`\n\nDefault 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 \u0026 password. e.g.: 'testuser:$jsfak3.c3Fd0i1k2kel/3sdf3'\n\n##### `nginx_proxy_read_timeout`\n\nDefault is 10. Value to use for nginx's proxy_read_timeout setting\n\n##### `manage_ca_certificate`\n\nDefault is true (boolean). Used to determine if the module should install ca-certificate on Debian machines during the initial installation.\n\n##### `gr_use_ldap`\n\nDefault is false (boolean). Turn ldap authentication on/off.\n\n##### `gr_ldap_uri`\n\nDefault is '' (string). Set ldap uri.\n\n##### `gr_ldap_search_base`\n\nDefault is '' (string). Set the ldap search base.\n\n##### `gr_ldap_base_user`\n\nDefault is '' (string).Set ldap base user.\n\n##### `gr_ldap_base_pass`\n\nDefault is '' (string). Set ldap password.\n\n##### `gr_ldap_user_query`\n\nDefault is '(username=%s)' (string). Set ldap user query.\n\n##### `gr_ldap_options`\n\nHash of additional LDAP options to be enabled. For example, `{ 'ldap.OPT_X_TLS_REQUIRE_CERT' =\u003e 'ldap.OPT_X_TLS_ALLOW' }`. Default is `{ }`.\n\n##### `gr_use_remote_user_auth`\n\nDefault is 'False' (string). Allow use of REMOTE_USER env variable within Django/Graphite.\n\n##### `gr_remote_user_header_name`\n\nDefault 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.\nExample value - HTTP_X_REMOTE_USER\nThe specific use case for this is OpenID right now, but could be expanded to anything.\nOne example is something like http://antoineroygobeil.com/blog/2014/2/6/nginx-ruby-auth/\ncombined with the option `gr_web_server` = 'wsgionly' and http://forge.puppetlabs.com/jfryman/nginx\nwith some custom vhosts.\nThe sample external auth app is available from [here](https://github.com/antoinerg/nginx_auth_backend)\n\n##### `gunicorn_arg_timeout`\n\nDefault is 30.  value to pass to gunicorns --timeout arg.\n\n##### `gunicorn_bind`\n\nDefault is 'unix:/var/run/graphite.sock'.  value to pass to gunicorns --bind arg.\n\n##### `gunicorn_workers`\n\nDefault is 2. value to pass to gunicorn's --worker arg.\n\n##### `gr_cache_instances`    \n\nDefault is empty array. Allow multiple additional cache instances. (beside the default one)\nExample value:\n```\n{\n    'cache:b' =\u003e {\n        'LINE_RECEIVER_PORT' =\u003e 2103,\n        'PICKLE_RECEIVER_PORT' =\u003e 2104,\n        'CACHE_QUERY_PORT' =\u003e 7102,\n    },\n    'cache:c' =\u003e {\n        'LINE_RECEIVER_PORT' =\u003e 2203,\n        'PICKLE_RECEIVER_PORT' =\u003e 2204,\n        'CACHE_QUERY_PORT' =\u003e 7202,\n    }\n}\n```\n##### `gr_relay_instances`\n\nDefault is empty array. Allow multiple additional relay instances. (beside the default one)\n\nExample: see gr_cache_instances\n\n##### `gr_aggregator_instances`\n\nDefault is empty array. Allow multiple additional aggregator instances. (beside the default one)\n\nExample: see gr_cache_instances\n\n##### `gr_whisper_autoflush`\n\nDefault is 'False'. Set autoflush for whisper\n\n##### `gr_whisper_lock_writes`\n\nDefault is false. Set lock writes for whisper\n\n##### `gr_whisper_fallocate_create`\n\nDefault is false. Set fallocate_create for whisper\n\n##### `gr_log_cache_performance`\n\nDefault is 'False' (string). Logs timings for remote calls to carbon-cache\n\n##### `gr_log_cache_queue_sorts`\n\nDefault is 'True' (String). Logs time required for the queue sorts\n\n##### `gr_log_rendering_performance`\n\nDefault is 'False' (string). Triggers the creation of rendering.log which logs timings for calls to the The Render URL API\n\n##### `gr_log_metric_access`\n\nDefault is 'False' (string). Trigges the creation of metricaccess.log which logs access to Whisper and RRD data files\n\n##### `gr_django_tagging_pkg`\n\nDefault is 'django-tagging' (string) The name of the django-tagging package that should be installed\n\n##### `gr_django_tagging_ver`\n\nDefault is '0.3.1' (string) The version of the django-tagging package that should be installed\n\n##### `gr_django_tagging_source`\n\nDefault is `undef` (string). The source of the django-tagging package that should be installed.\n\n##### `gr_twisted_pkg`\n\nDefault is 'Twisted' (string) The name of the twisted package that should be installed\n\n##### `gr_twisted_ver`\n\nDefault is '11.1.0' (string) The version of the twisted package that should be installed\n\n##### `gr_twisted_source`\n\nDefault is `undef` (string). The source of the twisted package that should be installed.\n\n##### `gr_txamqp_pkg`\n\nDefault is 'txAMQP' (string) The name of the txamqp package that should be installed\n\n##### `gr_txamqp_ver`\n\nDefault is '0.4' (string) The version of the txamqp package that should be installed\n\n##### `gr_txamqp_source`\n\nDefault is `undef` (string). The source of the txamqp package that should be installed.\n\n##### `gr_graphite_pkg`\n\nDefault is 'graphite-web' (string) The name of the graphite package that should be installed\n\n##### `gr_graphite_ver`\n\nDefault is '0.9.12' (string) The version of the graphite package that should be installed\n\n##### `gr_graphite_source`\n\nDefault is `undef` (string). The source of the graphite package that should be installed.\n\n##### `gr_carbon_pkg`\n\nDefault is 'carbon' (string) The name of the carbon package that should be installed\n\n##### `gr_carbon_ver`\n\nDefault is '0.9.12' (string) The version of the carbon package that should be installed\n\n##### `gr_carbon_source`\n\nDefault is `undef` (string). The source of the carbon package that should be installed.\n\n##### `gr_whisper_pkg`\n\nDefault is 'whisper' (string) The name of the whisper package that should be installed\n\n##### `gr_whisper_ver`\n\nDefault is '0.9.12' (string) The version of the whisper package that should be installed\n\n##### `gr_whisper_source`\n\nDefault is `undef` (string). The source of the whisper package that should be installed.\n\n##### `gr_django_pkg`\n\nDefault is a platform-specific name of the django package that should be installed (string).\n\n##### `gr_django_ver`\n\nDefault is 'installed' (string) The version of the django package that should be installed.\n\n##### `gr_django_source`\n\nDefault is `undef` (string). The source of the django package that should be installed.\n\n##### `gr_django_provider`\n\nDefault is `undef` (string) The provider of the django package that should be installed.\n\n##### `gr_pip_install_options`\n\nDefault is `undef` (array). An array of options to pass to `pip install` when installing graphite.\n\nFor example, to install packages from a repository other than PyPI, you could pass `--index-url` like this:\n\n```puppet\n  class { 'graphite':\n    gr_pip_install_options =\u003e ['--index-url', 'https://custom-packge-server/simple/'],\n  }\n```\n\nFor details on available options, see the [documentation for `pip install`](https://pip.pypa.io/en/stable/reference/pip_install/).\n\n##### `gr_pip_install`\n\nDefault is true (Bool). Should packages be installed via pip\n\n##### `gr_python_binary`\n\nDefault is 'python' (string). Can be set to a fully-qualify path or an alternative binary name.\n\n##### `gr_disable_webapp_cache`\n\nDefault is false (Bool). Should the caching of the webapp be disabled. This helps with some\ndisplay issues in grafana.\n\n## Requirements\n\n### Modules needed:\n\nstdlib by puppetlabs\n\n### Software versions needed:\n\nOn Redhat distributions you need the EPEL or RPMforge repository, because Graphite needs packages, which are not part of the default repos.\n\n## Limitations\n\nThis module is tested on CentOS 6.5 and Debian 7 (Wheezy) and should also run on\n\n* RHEL/CentOS/Scientific 6+\n* Debian 6+\n* Ubunutu 10.04 and newer\n\nMost settings of Graphite can be set by parameters. So their can be special configurations for you. In this case you should edit\nthe file `templates/opt/graphite/webapp/graphite/local_settings.py.erb`.\n\n### Compatibility Notes\n* There is currently an [open ticket](https://tickets.puppetlabs.com/browse/PUP-3829) with Puppet about broken pip support in CentOS 6/7. The\nworkaround for this bug is to create a symlink from `/usr/bin/pip-python` (which doesn't exist) to `/usr/bin/pip` (which does).\n* CentOS 7's default `nginx.conf` includes a `server` section listening on port 80. Thus, it is not possible to set up graphite without modifying\nthe package-provided configuration file. You will have to either manually remove the `server` section, or provide a `gr_web_server_port` other\nthan port 80.\n* nginx/gunicorn requires a `systemctl restart gunicorn` after installing on Ubuntu 15.10\n* SELinux must be disabled\n* Installing on Ubuntu 16.04 Xenial requires Puppet 4.1+ (see commit [71251c9](https://github.com/echocat/puppet-graphite/commit/71251c92c8a1b85b7eb1515a009b7808756c7bee))\n\n## Contributing\n\nEchocat modules are open projects. So if you want to make this module even better, you can contribute to this module on [Github](https://github.com/echocat/puppet-graphite).\n\nMake sure to read the repository's `DEVELOP.md` file first.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fechocat%2Fpuppet-graphite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fechocat%2Fpuppet-graphite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fechocat%2Fpuppet-graphite/lists"}