Define some vars to manage master and slaves conf

This commit is contained in:
Jeremy Gardais 2018-08-03 14:00:51 +02:00
parent 2cbad0b42b
commit 9a35df05b4
Signed by: jegardai
GPG Key ID: E759BAA22501AF32
4 changed files with 253 additions and 1 deletions

View File

@ -8,3 +8,4 @@
* Ensure Netdata service is enabled and started.
* Manage IP address and port used.
* Manage memory mode.
* Define some vars to manage master and slaves configuration.

View File

@ -23,6 +23,15 @@ A role to manage Netdata installation and configuration.
* **netdata__conf_bind_ip**: IP address used by Netdata to listen [default: `127.0.0.1`].
* **netdata__conf_bind_port**: Port used by Netdata to listen [default: `19999`].
* **netdata__conf_memory_mode**: The memory mode of the database [default: `ram`].
* **netdata__slave_enable**: If node should send metrics to a master [default: `False`].
* **netdata__slave_destination**: The destination to send metrics to [default: `netdata.{{ ansible_domain }}`].
* **netdata__slave_api_key**: The API KEY to use to identify with the master [default: `''`].
* **netdata__slave_buffer_size**: The buffer to use for sending metrics [default: ``].
* **netdata__slave_reconnect**: If the connection fails, or it disconnects, retry after that many seconds [default: `5`].
* **netdata__master_enable**: If node should receive metrics from other nodes [default: `False`].
* **netdata__master_api_key**: The API key to authenticate slaves [default: `''`].
* **netdata__master_history**: The number of entries in the database per hosts [default: `3600`].
* **netdata__master_memory_mode**: The memory mode to be used for all hosts using this API key [default: `ram`].
## Example Playbook

View File

@ -57,7 +57,7 @@ netdata__service_manage: True
# ]]]
# ]]]
# Configuration [[[
# Common configuration [[[
# -----------------------------
# .. envvar:: netdata__etc_src [[[.
@ -95,4 +95,93 @@ netdata__conf_memory_mode: 'ram'
# ]]]
# ]]]
# Slave configuration [[[
# -----------------------------
# .. envvar:: netdata__slave_enable [[[.
#
# If node should send metrics to a master. Possible options:
#
#
# ``False``
# Default.
#
# ``True``
#
netdata__slave_enable: False
# ]]]
# .. envvar:: netdata__slave_destination [[[.
#
# The destination to send metrics to.
# https://github.com/firehol/netdata/wiki/Replication-Overview#options-for-the-sending-node
#
netdata__slave_destination: 'netdata.{{ ansible_domain }}'
# ]]]
# .. envvar:: netdata__slave_api_key [[[.
#
# The API KEY to use (as the sender).
# https://github.com/firehol/netdata/wiki/Replication-Overview#streaming-configuration
#
netdata__slave_api_key: ''
# ]]]
# .. envvar:: netdata__slave_buffer_size [[[.
#
# The buffer to use for sending metrics.
# 1MB by default is good for 2-3 seconds of data.
#
netdata__slave_buffer_size: '1048576'
# ]]]
# .. envvar:: netdata__slave_reconnect [[[.
#
# If the connection fails, or it disconnects, retry after that many seconds.
#
netdata__slave_reconnect: '5'
# ]]]
# ]]]
# Master configuration [[[
# -----------------------------
# .. envvar:: netdata__master_enable [[[.
#
# If node should receive metrics from other nodes. Possible options:
#
#
# ``False``
# Default.
#
# ``True``
#
netdata__master_enable: False
# ]]]
# .. envvar:: netdata__master_api_key [[[.
#
# The API key to authenticate slaves.
#
netdata__master_api_key: ''
# ]]]
# .. envvar:: netdata__master_history [[[.
#
# The number of entries in the database per hosts.
#
netdata__master_history: '3600'
# ]]]
# .. envvar:: netdata__master_memory_mode [[[.
#
# The memory mode to be used for all hosts using this API key.
# https://github.com/firehol/netdata/wiki/Memory-Requirements#memory-modes
#
netdata__master_memory_mode: 'ram'
# ]]]
# ]]]

View File

@ -0,0 +1,153 @@
## {{ ansible_managed }}
# netdata configuration for aggregating data from remote hosts
#
# API keys authorize a pair of sending-receiving netdata servers.
# Once their communication is authorized, they can exchange metrics for any
# number of hosts.
#
# You can generate API keys, with the linux command: uuidgen
#
# -----------------------------------------------------------------------------
# 1. ON SLAVE NETDATA - THE ONE THAT WILL BE SENDING METRICS
[stream]
# Enable this on slaves, to have them send metrics.
{% if netdata__slave_enable -%}
enabled = yes
{% else %}
enabled = no
{%- endif %}
# The destination to send metrics to.
# A space separated list of:
# [PROTOCOL:]HOST[%INTERFACE][:PORT]
# The first available will get the metrics.
# PROTOCOL = tcp or udp (only tcp is supported by masters)
# HOST = an IPv4, IPv6 IP, or a hostname.
# IPv6 IPs should be given with brackets [ip:address]
# INTERFACE = the network interface to use
# PORT = the port number or service name (/etc/services)
# This communication is not HTTP (cannot be proxied by web proxies).
destination = {{ netdata__slave_destination }}
# The API_KEY to use (as the sender)
api key = {{ netdata__slave_api_key }}
# The timeout to connect and send metrics
timeout seconds = 60
# If the destination line above does specify a port, use this
default port = 19999
# The buffer to use for sending metrics.
# 1MB by default is good for 2-3 seconds of data, so increase this
# if you expect latencies.
buffer size bytes = {{ netdata__slave_buffer_size }}
# If the connection fails, or it disconnects,
# retry after that many seconds.
reconnect delay seconds = {{ netdata__slave_reconnect }}
# Attempt to sync the clock the of the master with the clock of the
# slave for that many iterations, when starting.
initial clock resync iterations = 60
# -----------------------------------------------------------------------------
# 2. ON MASTER NETDATA - THE ONE THAT WILL BE RECEIVING METRICS
#
# You can have one API key per slave, or the same API key for all slaves.
#
# All options below are used in this order:
#
# a) MACHINE_GUID (settings for each machine)
# b) API_KEY (settings for the API key)
# c) this netdata defaults (as in netdata.conf)
#
# You can combine the above (the more specific setting will be used).
# API key authentication
# If the key is not listed here, it will not be able to connect.
[{{ netdata__master_api_key }}]
# Default settings for the API key
# You can disable the API key, by setting this to: no
# The default (for unknown API keys) is also: no
{% if netdata__master_enable -%}
enabled = yes
{% else %}
enabled = no
{%- endif %}
# The default history in entries, for all hosts using this API key.
# You can also set it per host below.
# If you don't set it here, the history size of the central netdata
# will be used
default history = {{ netdata__master_history }}
# The default memory mode to be used for all hosts using this API key.
# You can also set it per host below.
# If you don't set it here, the memory mode of netdata.conf will be used.
# Valid modes:
# save save on exit, load on start
# map like swap (continuously syncing to disks)
# ram keep it in RAM, don't touch the disk
# none no database (passing through this netdata)
default memory mode = {{ netdata__master_memory_mode }}
# Shall we enable health monitoring for the hosts using this API key?
# 3 values:
# yes enable alarms
# no do not enable alarms
# auto enable alarms, only when the sending netdata is connected
# You can also set it per host, below.
# The default is the same as to netdata.conf
health enabled by default = auto
# postpone alarms for a short period after the sender is connected
default postpone alarms on connect seconds = 60
# need to route metrics differently? set these.
# the defaults are the ones at the [stream] section
#default proxy enabled = yes | no
#default proxy destination = IP:PORT IP:PORT ...
#default proxy api key = API_KEY
# -----------------------------------------------------------------------------
# 3. ON MASTER NETDATA - THE ONE THAT WILL BE RECEIVING METRICS
#
# THIS IS OPTIONAL - YOU DON'T NEED IT BY DEFAULT
# It only exists to give you finer control of the master settings for each
# slave host, when the same API key is used by many netdata slaves / proxies.
#
# Each netdata has a unique GUID - generated the first time netdata starts.
# You can find it at /var/lib/netdata/registry/netdata.public.unique.id
# The host sending data will have one. If the host is not ephemeral,
# you can give settings for each specific host here.
[MACHINE_GUID]
# enable this host: yes | no
# When disabled, the master will not receive metrics for this host.
# THIS IS NOT A SECURITY MECHANISM - AN ATTACKER CAN SET ANY OTHER GUID.
# Use only the API key for security.
enabled = no
# The number of entries in the database
history = 3600
# The memory mode of the database: save | map | ram | none
memory mode = save
# Health / alarms control: yes | no | auto
health enabled = yes
# postpone alarms when the sender connects
postpone alarms on connect seconds = 60
# need to route metrics differently?
#proxy enabled = yes | no
#proxy destination = IP:PORT IP:PORT ...
#proxy api key = API_KEY