# confdroid_prometheus::params.pp # Module name: confdroid_prometheus # Author: Arne Teuke (arne_teuke@confdroid.com) # @summary Class holds all parameters for the confdroid_prometheus module. # @param [String] reqpackage_prom the prometheus package # @param [String] reqpackage_ne the node_exporter package # @param [String] pkg_ensure which version of the package to install # @param [boolean] manage_prometheus whether to manage prometheus # @param [boolean] manage_node_exporter whether to manage node exporter # @param [boolean] ps_manage_fw whether to manage the firewall # @param [String] ps_prom_host the fqdn of the prometheus server # @param [String] ps_fw_prefix the firewall rule prefix # @param [String] ps_main_port the firewall main port for prometheus # @param [String] ps_auth_user the username for authentication # @param [String] ps_auth_pass the password for authentication # @param [String] ps_web_pass the password for web authentication # @param [String] ps_retention_time tsdb retention time # @param [String] ps_retention_size tsdb retention size # @param [String] ps_wal_seg_size WAL segment size # @param [String] ps_min_block_dur tsdb minimum block duration # @param [String] ps_max_block_dur tsdb maximum block duration # @param [String] ps_max_mem hard memory ceiling # @param [String] ps_high_mem soft limit to make kernel reclaim earlier # @param [String] ps_swap_mem allow swap, but limit it # @param [String] ps_oom_score OOM killer choosing prometheus # @param [String] ps_max_procs reduce parallel WAL replay workers # @param [Boolean] ps_write_external whether to allow remote postgres # @param [String] ps_auth_ext_user user for writing to extern instance # @param [String] ps_auth_ext_pass password for writing to extern instance # @param [String] ps_external_url the full url for the remote write point # @param [Boolean] ps_enable_pruning whether to allow pruning local blocks # @param [String] ps_pruning_dir the directory for the pruning script # @param [String] ps_pruning_file the url and filename for the pruning script # @param [String] ps_env_file the url and filename for the env file # @param [String] ps_pg_host the host running the database for cold metrics # @param [String] ps_pg_port the port for the database for cold metrics # @param [String] ps_pg_db the database for cold metrics # @param [String] ps_pg_user the read-only user for the db for cold metrics # @param [String] ps_pg_pass the password for the db for cold metrics # @param [Boolean] ps_dry_run (true = just log, false = actually delete blocks) # @param [String] ps_min_age_hours Minimum block age in hours before pruning # @param [String] ps_grace_hours Grace period in hours to be extra safe # @param [String] ps_sql_template the SQL template to use for checks. ############################################################################## class confdroid_prometheus::params ( # installation String $reqpackage_prom = 'prometheus2', String $reqpackage_ne = 'node_exporter', String $pkg_ensure = 'present', # config logic Boolean $manage_prometheus = false, Boolean $manage_node_exporter = false, Boolean $ps_manage_fw = false, String $ps_prom_host = 'prometheus.example.net', # firewall String $ps_fw_prefix = '50', String $ps_main_port = '9090', # auth prometheus String $ps_auth_user = 'changeme', String $ps_auth_pass = 'changeme', String $ps_web_pass = 'changeme', # auth remote String $ps_auth_ext_user = 'changeme', String $ps_auth_ext_pass = 'changeme', # storage String $ps_retention_time = '15d', String $ps_retention_size = '20GB', String $ps_wal_seg_size = '50MB', String $ps_min_block_dur = '2h', String $ps_max_block_dur = '2h', # service String $ps_max_mem = '6G', String $ps_high_mem = '5G', String $ps_swap_mem = '4G', String $ps_oom_score = '500', String $ps_max_procs = '1', # remote write external Boolean $ps_write_external = false, String $ps_external_url = 'http://changeme.local', # pruning script Boolean $ps_enable_pruning = false, String $ps_pruning_dir = '/opt/prometheus-prune', String $ps_pruning_file = "${ps_pruning_dir}/prune_prometheus_pg.sh", String $ps_env_file = "${ps_pruning_dir}/prune.env", String $ps_pg_host = 'localhost', String $ps_pg_port = '5432', String $ps_pg_db = 'prometheus', String $ps_pg_user = 'readaccess', String $ps_pg_pass = 'Changeme', Boolean $ps_dry_run = true, String $ps_min_age_hours = '4', String $ps_grace_hours = '1', String $ps_sql_template = 'Changeme', ) { # defaults $fqdn = $facts['networking']['fqdn'] $domain = $facts['networking']['domain'] $os_name = $facts['os']['name'] $os_release = $facts['os']['release']['major'] # dirs $ps_main_dir = '/etc/prometheus' $ps_system_file_dir = '/etc/systemd/system/prometheus.service.d' $ps_system_dir = '/etc/systemd/system/' # files $ps_main_file = "${ps_main_dir}/prometheus.yml" $ps_web_config_file = "${ps_main_dir}/web.yml" $ps_system_service_file = "${ps_system_file_dir}/override.conf" $ps_pruning_svc_file = "${ps_system_dir}/prometheus-prune.service" $ps_pruning_timer_file = "${ps_system_dir}/prometheus-prune.timer" $ps_prune_log_file = '/var/log/prometheus-prune.log' # services $ps_prom_service = 'prometheus' $ps_ne_service = 'node_exporter' $ps_prune_service = 'prometheus-prune.service' $ps_prune_timer = 'prometheus-prune.timer' # includes must be last include confdroid_prometheus::main::config }