The role installs Netdata and setups it configuration.
Ubuntu versions currently supported:
- xenial
- focal
Installation on bionic is possible with netdata_version
override but highly not recommended: many python.d modules were removed in v1.35.0 and the role still has no proper replacement for them.
roles:
- role: netdata
netdata_python_web_lob_plugin_enabled: false
Make sure that you call this role before the monit role, if used together. Otherwise netdata presence will not be automatically detected and Monit cfg generation for it will be skipped.
Changing configuration without installation. For v2+ base images or based on those images only.
roles:
- role: netdata
netdata_setup: configure
When using legacy images -- make sure to set apikey
variable manually:
roles:
- role: netdata
apikey: 11111111-2222-3333-4444-555555555555
netdata_setup: configure
See detailed explanation about API key setting below.
Param | Default | Description |
---|---|---|
netdata_setup |
full |
Setup mode. See OSSHelp KB article |
force_install |
false |
Used for reinstall or update (for official) |
physical |
false |
Used for physical servers (for official) |
netdata_enable_app_plugin_in_lxc |
false |
Used for enable app plugin in lxc |
netdata_force_create_db_user |
false |
Used for enable creating users in MySQL, PostreSQL, RabbitMQ, MongoDB |
netdata_force_all_plugins_installation |
false |
For role builds only! Using this parameter in production builds could cause unforeseen consequences. Forces role to configure all plugins, even if their services are missing |
netdata_force_host_system |
false |
For role builds only! Using this parameter in production builds could cause unforeseen consequences. Forces role to act like if being deployed to host system (even in lxc-containers) |
netdata_go_d_plugin_enabled |
true |
Whether to enable go.d plugin. Use with caution, make sure to override default jobs for prometheus endpoints collector. Can overuse CPU and RAM on versions older than v1.29.1, details |
netdata_bind9_plugin_version |
go.d |
Plugin version for bind9 (go.d or python.d) |
netdata_custom_plugin_params |
[] |
For describing custom plugins params (see below) |
netdata_custom_apps_groups |
[] |
List for describing custom process groups for /etc/netdata/apps_groups.conf (see below) |
netdata_plugins |
[] |
List for enabling and disabling plugins. |
Param | Default | Description |
---|---|---|
netdata_timeout_stop_sec |
10 |
Default timeout in seconds |
netdata_dynamic_stop_timeout |
true |
Whether to calculate timeout from netdata_dbengine_multihost_disk_space value |
When deploying to host system with netdata_memory_mode
param set to dbengine
, the calculation of TimeoutStopSec
parameter in systemd unit override is performed automatically, depending on the value of netdata_dbengine_multihost_disk_space
. The formula is:
netdata_timeout_stop_sec + netdata_dbengine_multihost_disk_space / 100
The automatic generation can be disabled entirely by switching netdata_dynamic_stop_timeout
to false
and overriding netdata_timeout_stop_sec
with a value you need.
roles:
- role: netdata:
force_monit_plugin_installation: true
netdata_python_web_log_plugin_enabled: true
netdata_plugins:
ebpf: 'no'
plugin_retries: 300
plugin_autodetection_retry: 300
mysql_socket_path: '/var/run/mysqld/mysqld.sock'
nginx_stat_url: 'http://localhost/nginx_status'
apache_stat_url: 'http://localhost:8080/server-status?auto'
fpm_stat_url: "http://localhost/fpm-status-{{pool_name}}?full&json"
monit_url: 'http://localhost:2812'
memcached_port: 11211
haproxy_user: user
haproxy_pass: PaSSw0rd
haproxy_url: 'http://127.0.0.1:9000/haproxy;csv;norefresh'
haproxy_config_path: '/etc/haproxy/haproxy.cfg'
fping_hosts: '8.8.8.8 8.8.4.4'
smartd_exclude_drives: some_drive
tomcat_service_name: tomcat
tomcat_stat_url: 'http://localhost:8285/manager/status?XML=true'
tomcat_user: monitor
tomcat_pass: paSSw0rd
tomcat_connector: http-bio-8285
elastic_nodes:
- { name: local, url: http://127.0.0.1:9200 }
redis_stat_url: 'redis://@127.0.0.1:6379'
phpfpm_pools:
- prod
- dev
general_fpm_url_part: 'http://localhost/fpm-status'
netdata_python_web_log_params:
name: 'example.com'
path: '/var/log/nginx/access.log'
histogram: '50,100,200,500,1000,2000,5000'
pattern: '(?P<address>[\da-f.:]+).*(?P<date>\[.+\])\s(?P<code>[1-9]\d{2})\s\".*\"\s\"(?P<method>[A-Z]+)\s(?P<url>.*?)\s.+\"\s(?P< bytes_sent>\d+)\s(?P<resp_time>\d+\.\d+)'
netdata_python_web_log_categories:
- { key: main, value: '^/$' }
- { key: admin, value: '^/(\w{2}\/)?admin/' }
- role: netdata
netdata_python_web_log_params:
- name: logfile1
path: '/var/log/nginx/logfile1.log'
histogram: '50,100,200,500,1000,2000,5000'
pattern: '(?P<address>[\da-f.:]+).*(?P<date>\[.+\])\s(?P<code>[1-9]\d{2})\s\".*\"\s\"(?P<method>[A-Z]+)\s(?P<url>.*?)\s.+\"\s(?P<bytes_sent>\d+)\s(?P<resp_time>\d+\.\d+)'
categories:
- { key: main, value: '^/$' }
- { key: cat1, value: '^/cat1/' }
- { key: cat2, value: '^/cat2/' }
- name: logfile2
path: '/var/log/nginx/logfile2.log'
categories:
- { key: main, value: '^/$' }
- { key: cat1, value: '^/cat1/' }
- { key: cat2, value: '^/cat2/' }
Defaults:
- histogram.
50,100,200,500,1000,2000,5000
- pattern.
(?P<address>[\da-f.:]+).*(?P<date>\[.+\])\s(?P<code>[1-9]\d{2})\s\".*\"\s\"(?P<method>[A-Z]+)\s(?P<url>.*?)\s.+\"\s(?P<bytes_sent>\d+)\s(?P<resp_time>\d+\.\d+)
Is performed via netdata_custom_plugin_params
option. For example, this params for role:
netdata_custom_plugin_params:
- name: proc:diskspace
params:
- param: exclude space metrics on paths
value: /proc/* /sys/* /var/run/user/* /run/user/* /snap/* /var/lib/docker/* /mnt* /var/lib*
- param: check for new mount points every
value: 20
- name: proc:/proc/diskstats:sda
params:
- param: bandwidth
value: auto
- param: i/o time
value: auto
will result in such lines in netdata.conf
:
[plugin:proc:diskspace]
exclude space metrics on paths = /proc/* /sys/* /var/run/user/* /run/user/* /snap/* /var/lib/docker/* /mnt* /var/lib*
check for new mount points every = 20
[plugin:proc:/proc/diskstats:sda]
bandwidth = auto
i/o time = auto
Is performed via netdata_custom_apps_groups
list. For example, this params for role:
netdata_custom_apps_groups:
- { regex: "^somegroup:", line: "somegroup: someprocess*" }
- { regex: "^anothergroup:", line: "anothergroup: anotherprocess*" }
will result in such lines in apps_groups.conf
:
somegroup: someprocess*
anothergroup: anotherprocess*
- role: netdata
netdata_go_d_web_log_plugin_enabled: true
netdata_go_d_web_log_params:
- name: 'example.com'
path: '/var/log/nginx/access.log'
group_response_codes: 'no'
log_type: csv
histogram: '.05, .1, .20, .5, 1, 2, 5'
log_config_params:
format: '$remote_addr $geoip2_data_country_code $remote_user $host [$time_local] "$request" $status $upstream_status $upstream_cache_status $request_time $upstream_response_time $request_length $body_bytes_sent $ssl_protocol $ssl_cipher "$http_referer" "$http_user_agent" $connection/$connection_requests'
url_patterns:
- { name: main, match: '~ ^/$' }
- { name: custom, match: '~ ^/custom' }
- { name: other, match: '* *' }
- name: 'example2.com'
path: '/var/log/nginx/access2.log'
Example for json log format:
- role: netdata
netdata_go_d_web_log_plugin_enabled: true
netdata_go_d_web_log_params:
- name: example_com
path: /var/log/nginx/example_com.access.log
log_type: json
url_patterns:
- { name: main, match: '~ ^/$' }
- { name: api, match: '~ ^/api/' }
- role: netdata
netdata_memory_mode: dbengine
netdata_page_cache_size: 32
netdata_dbengine_multihost_disk_space: 4096
You can calculate the required system resources using the official calculator.
- role: netdata
netdata_version: '1.23.0'
Netdata can gather metrics from Prometheus endpoints and generate new charts with the same high-granularity, per-second frequency as you expect from other collectors. (Only xenial and bionic support in role) See docs for more information.
Configuration for some exporters will be generated automatically if their service was detected:
- dnsmasq-exporter
- mongodb-exporter
- mongodb-query-exporter
- nginx-vts-exporter
- node-exporter
- proxysql-exporter
- sql-exporter
- sphinx-exporter
- rabbitmq-exporter
- redis-exporter
- script-exporter (just metrics of exporter itself, you still need a custom job for your script execution)
More acurate list see here. If you are using unsupported exporter - use netdata_prometheus_jobs
to describe needed configuration manually. See example below.
- role: netdata
netdata_prometheus_params:
autodetection_retry: 150
max_time_series: 2048
update_every: 15
netdata_prometheus_jobs:
- name: blackbox_exporter_local
url: 'http://127.0.0.1:9110/metrics'
For now only exporter's metrics will be collected with default configuration, so no scripts will be executed at all. You need to prepare a suitable job with netdata_prometheus_jobs
, make sure to set the appropriate update_every
value or provide your script with metric-caching mechanisms.
If apikey
variable is empty (it is by default) the role will search for environment variable NETDATA_API_KEY
and try to use it's value. NETDATA_API_KEY
must be set in you test/build plugins' environment in your drone.yml from orgsecret netdata_api_key
to be available for role. If by any means this is not possible - you can always override this behaviour by pinning apikey
in role params, so NETDATA_API_KEY
will be never checked.
To use multiple API keys in stream.conf on host system you must provide your keys separated by comma.
NETDATA_API_KEY
is being passed to environment in provisioner section of molecule.yml where needed (non-configure scenarios). Without it builds with molecule will fail when executed on workspace.
- add ansible check mode support
- deal with actual versions support (go.d plugins)
GPL3
OSSHelp Team, see https://oss.help