Graphite - config
* Readme * Graphite config for the ingestion chain
This commit is contained in:
parent
33f7f5f5ef
commit
76de7a31ef
|
@ -0,0 +1,22 @@
|
||||||
|
# Graphite config
|
||||||
|
Configuration for graphite/carbon
|
||||||
|
|
||||||
|
# Design
|
||||||
|
System is designed to receive data from collectd, pass it trough aggregation/relay and finally stuff it into cache
|
||||||
|
|
||||||
|
```
|
||||||
|
+----------+
|
||||||
|
| collectd |
|
||||||
|
+----------+
|
||||||
|
||
|
||||||
|
\/
|
||||||
|
+------------+
|
||||||
|
| aggregator |
|
||||||
|
+------------+
|
||||||
|
||
|
||||||
|
\/
|
||||||
|
+-------+
|
||||||
|
| cache |
|
||||||
|
+-------+
|
||||||
|
|
||||||
|
```
|
|
@ -0,0 +1,113 @@
|
||||||
|
[aggregator:top]
|
||||||
|
# filesystem organization
|
||||||
|
GRAPHITE_ROOT = /opt/graphite
|
||||||
|
GRAPHITE_CONF_DIR = /opt/graphite/conf
|
||||||
|
CONF_DIR = /opt/graphite/conf
|
||||||
|
GRAPHITE_STORAGE_DIR = /opt/graphite/storage
|
||||||
|
PID_DIR = /run/graphite
|
||||||
|
LOG_DIR = /var/log/graphite
|
||||||
|
LOCAL_DATA_DIR = /opt/graphite/storage
|
||||||
|
USER = graphite
|
||||||
|
|
||||||
|
# listeners
|
||||||
|
# echo ... | telnet
|
||||||
|
LINE_RECEIVER_INTERFACE = 0.0.0.0
|
||||||
|
LINE_RECEIVER_PORT = 10001
|
||||||
|
# programatic
|
||||||
|
PICKLE_RECEIVER_INTERFACE = 0.0.0.0
|
||||||
|
PICKLE_RECEIVER_PORT = 10101
|
||||||
|
|
||||||
|
#UDP Listener
|
||||||
|
ENABLE_UDP_LISTENER = True
|
||||||
|
UDP_RECEIVER_INTERFACE = 127.0.0.1
|
||||||
|
UDP_RECEIVER_PORT = 10001
|
||||||
|
|
||||||
|
# log connections?
|
||||||
|
LOG_LISTENER_CONNECTIONS = True
|
||||||
|
|
||||||
|
# how to relay: rules|consistent-hashing|aggregated-consistent-hashing
|
||||||
|
RELAY_METHOD = consistent-hashing
|
||||||
|
REPLICATION_FACTOR = 1
|
||||||
|
|
||||||
|
AGGREGATION_RULES = aggregation-rules.conf
|
||||||
|
REWRITE_RULES = rewrite-rules.conf
|
||||||
|
FORWARD_ALL = True
|
||||||
|
|
||||||
|
DESTINATIONS = 127.0.0.1:2004:a
|
||||||
|
|
||||||
|
# tuning/queue/capacity
|
||||||
|
# This defines the maximum "message size" between carbon daemons.
|
||||||
|
# You shouldn't need to tune this unless you really know what you're doing.
|
||||||
|
MAX_DATAPOINTS_PER_MESSAGE = 500
|
||||||
|
MAX_QUEUE_SIZE = 20000
|
||||||
|
# This is the percentage that the queue must be empty before it will accept
|
||||||
|
# more messages. For a larger site, if the queue is very large it makes sense
|
||||||
|
# to tune this to allow for incoming stats. So if you have an average
|
||||||
|
# flow of 100k stats/minute, and a MAX_QUEUE_SIZE of 3,000,000, it makes sense
|
||||||
|
# to allow stats to start flowing when you've cleared the queue to 95% since
|
||||||
|
# you should have space to accommodate the next minute's worth of stats
|
||||||
|
# even before the relay incrementally clears more of the queue
|
||||||
|
QUEUE_LOW_WATERMARK_PCT = 0.8
|
||||||
|
|
||||||
|
# Set this to False to drop datapoints when any send queue (sending datapoints
|
||||||
|
# to a downstream carbon daemon) hits MAX_QUEUE_SIZE. If this is True (the
|
||||||
|
# default) then sockets over which metrics are received will temporarily stop accepting
|
||||||
|
# data until the send queues fall below QUEUE_LOW_WATERMARK_PCT * MAX_QUEUE_SIZE.
|
||||||
|
USE_FLOW_CONTROL = True
|
||||||
|
|
||||||
|
# Set this to True to enable whitelisting and blacklisting of metrics in
|
||||||
|
# CONF_DIR/whitelist and CONF_DIR/blacklist. If the whitelist is missing or
|
||||||
|
# empty, all metrics will pass through
|
||||||
|
# USE_WHITELIST = False
|
||||||
|
|
||||||
|
# By default, carbon itself will log statistics (such as a count,
|
||||||
|
# metricsReceived) with the top level prefix of 'carbon' at an interval of 60
|
||||||
|
# seconds. Set CARBON_METRIC_INTERVAL to 0 to disable instrumentation
|
||||||
|
CARBON_METRIC_PREFIX = carbon
|
||||||
|
CARBON_METRIC_INTERVAL = 10
|
||||||
|
|
||||||
|
[cache:a]
|
||||||
|
# filesystem organization
|
||||||
|
GRAPHITE_ROOT = /opt/graphite
|
||||||
|
GRAPHITE_CONF_DIR = /opt/graphite/conf
|
||||||
|
CONF_DIR = /opt/graphite/conf
|
||||||
|
GRAPHITE_STORAGE_DIR = /opt/graphite/storage
|
||||||
|
PID_DIR = /run/graphite
|
||||||
|
LOG_DIR = /var/log/graphite
|
||||||
|
LOCAL_DATA_DIR = /opt/graphite/storage
|
||||||
|
USER = graphite
|
||||||
|
|
||||||
|
# cache / mem sizing
|
||||||
|
MAX_CACHE_SIZE = 500000
|
||||||
|
MAX_UPDATES_PER_SECOND = 500
|
||||||
|
MAX_UPDATES_PER_SECOND_ON_SHUTDOWN = 1500
|
||||||
|
MAX_CREATES_PER_MINUTE = 120
|
||||||
|
# WHISPER_SPARSE_CREATE = False
|
||||||
|
# delegate creation work to kernel (if available) falls back on posix calls
|
||||||
|
WHISPER_FALLOCATE_CREATE = True
|
||||||
|
# if running on shared disk and multiple caches write to same file
|
||||||
|
# WHISPER_LOCK_WRITES = False
|
||||||
|
|
||||||
|
# listeners
|
||||||
|
LINE_RECEIVER_INTERFACE = localhost
|
||||||
|
LINE_RECEIVER_PORT = 2003
|
||||||
|
ENABLE_UDP_LISTENER = False
|
||||||
|
UDP_RECEIVER_INTERFACE = localhost
|
||||||
|
UDP_RECEIVER_PORT = 2003
|
||||||
|
PICKLE_RECEIVER_INTERFACE = localhost
|
||||||
|
PICKLE_RECEIVER_PORT = 2004
|
||||||
|
# interface for bulk queries
|
||||||
|
CACHE_QUERY_INTERFACE = localhost
|
||||||
|
CACHE_QUERY_PORT = 2005
|
||||||
|
|
||||||
|
#some logging
|
||||||
|
LOG_LISTENER_CONNECTIONS = True
|
||||||
|
LOG_UPDATES = True
|
||||||
|
LOG_CACHE_HITS = False
|
||||||
|
LOG_CACHE_QUEUE_SORTS = False
|
||||||
|
|
||||||
|
CACHE_WRITE_STRATEGY = sorted
|
||||||
|
WHISPER_AUTOFLUSH = False
|
||||||
|
|
||||||
|
CARBON_METRIC_PREFIX = carbon
|
||||||
|
CARBON_METRIC_INTERVAL = 10
|
|
@ -0,0 +1,25 @@
|
||||||
|
import os, sys
|
||||||
|
sys.path.append('/mnt/graphite/webapp')
|
||||||
|
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'graphite.settings')
|
||||||
|
|
||||||
|
import django
|
||||||
|
|
||||||
|
if django.VERSION < (1, 4):
|
||||||
|
from django.core.handlers.wsgi import WSGIHandler
|
||||||
|
application = WSGIHandler()
|
||||||
|
else:
|
||||||
|
# From 1.4 wsgi support was improved and since 1.7 old style WSGI script
|
||||||
|
# causes AppRegistryNotReady exception
|
||||||
|
# https://docs.djangoproject.com/en/dev/releases/1.7/#wsgi-scripts
|
||||||
|
from django.core.wsgi import get_wsgi_application
|
||||||
|
application = get_wsgi_application()
|
||||||
|
|
||||||
|
|
||||||
|
# READ THIS
|
||||||
|
# Initializing the search index can be very expensive, please include
|
||||||
|
# the WSGIImportScript directive pointing to this script in your vhost
|
||||||
|
# config to ensure the index is preloaded before any requests are handed
|
||||||
|
# to the process.
|
||||||
|
from graphite.logger import log
|
||||||
|
log.info("graphite.wsgi - pid %d - reloading search index" % os.getpid())
|
||||||
|
import graphite.metrics.search
|
|
@ -0,0 +1,21 @@
|
||||||
|
# Relay destination rules for carbon-relay. Entries are scanned in order,
|
||||||
|
# and the first pattern a metric matches will cause processing to cease after sending
|
||||||
|
# unless `continue` is set to true
|
||||||
|
#
|
||||||
|
# [name]
|
||||||
|
# pattern = <regex>
|
||||||
|
# destinations = <list of destination addresses>
|
||||||
|
# continue = <boolean> # default: False
|
||||||
|
#
|
||||||
|
# name: Arbitrary unique name to identify the rule
|
||||||
|
# pattern: Regex pattern to match against the metric name
|
||||||
|
# destinations: Comma-separated list of destinations.
|
||||||
|
# ex: 127.0.0.1, 10.1.2.3:2004, 10.1.2.4:2004:a, myserver.mydomain.com
|
||||||
|
# continue: Continue processing rules if this rule matches (default: False)
|
||||||
|
|
||||||
|
# You must have exactly one section with 'default = true'
|
||||||
|
# Note that all destinations listed must also exist in carbon.conf
|
||||||
|
# in the DESTINATIONS setting in the [relay] section
|
||||||
|
[default]
|
||||||
|
default = true
|
||||||
|
destinations = 127.0.0.1:2004:a
|
|
@ -0,0 +1,26 @@
|
||||||
|
# This file defines regular expression patterns that can be used to
|
||||||
|
# rewrite metric names in a search & replace fashion. It consists of two
|
||||||
|
# sections, [pre] and [post]. The rules in the pre section are applied to
|
||||||
|
# metric names as soon as they are received. The post rules are applied
|
||||||
|
# after aggregation has taken place.
|
||||||
|
#
|
||||||
|
# The general form of each rule is as follows:
|
||||||
|
#
|
||||||
|
# regex-pattern = replacement-text
|
||||||
|
#
|
||||||
|
# For example:
|
||||||
|
#
|
||||||
|
# [post]
|
||||||
|
# _sum$ =
|
||||||
|
# _avg$ =
|
||||||
|
#
|
||||||
|
# These rules would strip off a suffix of _sum or _avg from any metric names
|
||||||
|
# after aggregation.
|
||||||
|
[pre]
|
||||||
|
# fix parens to underscore
|
||||||
|
\) = _
|
||||||
|
\( = _
|
||||||
|
|
||||||
|
# Rewrite temperature sensors to be less ugly
|
||||||
|
# temperature-Temp_1_system_internal_expansion_board_16_5_/value.wsp
|
||||||
|
temperature-Temp_([0-9]+)_([a-zA-Z0-9_]+)__(.*)\. = Temp-\1_\2.
|
|
@ -0,0 +1,32 @@
|
||||||
|
# Aggregation methods for whisper files. Entries are scanned in order,
|
||||||
|
# and first match wins. This file is scanned for changes every 60 seconds
|
||||||
|
#
|
||||||
|
# [name]
|
||||||
|
# pattern = <regex>
|
||||||
|
# xFilesFactor = <float between 0 and 1>
|
||||||
|
# aggregationMethod = <average|sum|last|max|min>
|
||||||
|
#
|
||||||
|
# name: Arbitrary unique name for the rule
|
||||||
|
# pattern: Regex pattern to match against the metric name
|
||||||
|
# xFilesFactor: Ratio of valid data points required for aggregation to the next retention to occur
|
||||||
|
# aggregationMethod: function to apply to data points for aggregation
|
||||||
|
#
|
||||||
|
[min]
|
||||||
|
pattern = \.min$
|
||||||
|
xFilesFactor = 0.1
|
||||||
|
aggregationMethod = min
|
||||||
|
|
||||||
|
[max]
|
||||||
|
pattern = \.max$
|
||||||
|
xFilesFactor = 0.1
|
||||||
|
aggregationMethod = max
|
||||||
|
|
||||||
|
[sum]
|
||||||
|
pattern = \.count$
|
||||||
|
xFilesFactor = 0
|
||||||
|
aggregationMethod = sum
|
||||||
|
|
||||||
|
[default_average]
|
||||||
|
pattern = .*
|
||||||
|
xFilesFactor = 0.5
|
||||||
|
aggregationMethod = average
|
|
@ -0,0 +1,17 @@
|
||||||
|
# Schema definitions for Whisper files. Entries are scanned in order,
|
||||||
|
# and first match wins. This file is scanned for changes every 60 seconds.
|
||||||
|
#
|
||||||
|
# [name]
|
||||||
|
# pattern = regex
|
||||||
|
# retentions = timePerPoint:timeToStore, timePerPoint:timeToStore, ...
|
||||||
|
|
||||||
|
# Carbon's internal metrics. This entry should match what is specified in
|
||||||
|
# CARBON_METRIC_PREFIX and CARBON_METRIC_INTERVAL settings
|
||||||
|
[carbon]
|
||||||
|
pattern = ^carbon\.
|
||||||
|
retentions = 10:30d
|
||||||
|
|
||||||
|
# final defaults
|
||||||
|
[default_10s_6months]
|
||||||
|
pattern = .*
|
||||||
|
retentions = 10s:30d
|
Loading…
Reference in New Issue