From f6c42040bb6a237ac74746149473c8158e16cb96 Mon Sep 17 00:00:00 2001 From: Johannes Findeisen Date: Tue, 22 Aug 2023 01:26:01 +0200 Subject: [PATCH] Added developer configuration file. It contains a lot of ideas of future features. (0.25.1) --- etc/linspector.conf.dev | 129 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 etc/linspector.conf.dev diff --git a/etc/linspector.conf.dev b/etc/linspector.conf.dev new file mode 100644 index 0000000..0cd0117 --- /dev/null +++ b/etc/linspector.conf.dev @@ -0,0 +1,129 @@ +; +; THIS FILE IS NOT USABLE BUT IT CONTAINS A LOT IDEAS FOR FUTURE FEATURES! +; +; all you need to know: https://docs.python.org/3/library/configparser.html ... ;) +[linspector] +; report core errors to the following users +error_receivers = admin@example.com +; available log levels are: "critical", "error", "warning", "info" and "debug". if no log_level is set, it will be set +; to "critical". +log_level = debug +;log_file = ~/code/linspector/linspector/log/linspector.log +; number of log files to be kept. i recommend to use the lowest sensible value for keeping performance high. so set +; the size of the log file higher to increase the log history. +log_file_count = 20 +; log file size in megabytes as int. the default is 10000000 bytes (10MiB) set in the code if not configured here. +log_file_size = 1 +; log file size in bytes as int. you can set to bytes if you want to set a value lower then 1 megabyte. but it will +; only be used when log_file_size is not set. if this value is not set too the default in the code will be used. +log_file_size_bytes = 100000 +pid_file = /var/run/user/1000/linspector.pid +; plugins separated by ','. no whitespaces allowed! not case sensitive. +plugins = api,httpd,lish +; globally configured tasks will always run on all monitors when no task is configured there. if tasks are configured in +; a monitor then maybe only run tasks from the dedicated monitor. maybe it is a good idea to run global tasks in every +; monitor and the monitor can add tasks to the global settings... need to think about it. +; tasks separated by ','. no whitespaces allowed! not case sensitive. +tasks = sqlite +notifications = sms +; maybe the run_mode is obsolete because this will be a daemon but maybe it is useful for one time execution? +; in uplink the available run_modes were cron, daemon and foreground +run_mode = cron +; members to send notifications to if something internally in Linspector went wrong. +members = superadmin@example.com,developers@example.com +; scheduler configuration +start_scheduler = true +; the mode the scheduler should run. options are, process or thread. default is the thread mode. process mode will run +; multiple processes, thread mode will run only one process with multiple threads. maybe this can be combined to run +; multiple processes with multiple threads... dont know this actually but reading the APScheduler documentation will +; explain this.... :) default is "thread" but Linspector will only run on one CPU core then. default threads are 1024 +; but this can be set much higher here. this should be minimal set to the number of monitors you are running. in process +; mode log rotating is not working as expected so i need to investigate some time to figure out what happens. +scheduler_mode = process +; the default job interval can be set here. in the code 300 seconds are set when this option does not exist here nor in +; the monitor configuration. +default_interval = 5 +; the minimum interval for monitors +minimum_interval = 1 +max_threads = 2048 +; i recommend to set this to your number of CPU cores available when running on a dedicated Linspector host. but if the +; system is running other services you should lower this value when you have too high CPU load. if you have enough +; resources this value really can be higher then your available CPU cores. +max_processes = 8 +; timezone can be set to a remote timezone to make monitors run at the remote time. this can be overridden in each +; monitor configuration. +timezone = UTC +; this is for scheduling jobs to not run all at the same time. this should not be set lower then the lowest interval +; you use in monitors. it can be set to a lower value if you only have a small amount of services you are monitoring. +; i recommend the lowest interval you use in any monitor but higher values will reduce cpu load when using monitors +; with a higher value then the delta_range. it is always starting with 0. default is 60. the current setting is for +; development only. +delta_range = 60 + +; hostgroup parents; if the hostgroup "group1" is down, don't alert for the hosts in group2. see TODO for more +; information. +[hostgroupparents] +; hostgroup group1 is parent of group2 +group1 = group2 + +; a flexible way to define groups of hosts which can be used by monitors as target for monitoring for easily monitor +; groups without adding a monitor for each host. for some more information see the "hosts" section in gateway.conf. +; hostgroups can be defined in separate files in etc/hostgroups to be more flexible. +[hostgroups] +; add single hosts +group1 = host1,host2,host3 +; add a range of ip addresses. +; for ip ranges see: https://stackoverflow.com/questions/19157307/generate-range-of-ips-in-python +group2 = 192.168.1.1/28 +; add a combination of hosts and ranges +group3 = host1,host2,host3,192.168.1.1/28 +; using groups inside groups. but need to take care about recursive dependencies. +group4 = host10,host11,host12,@group3 + +; member groups to define recipients for notifications. see hostgroups for more details. +[membergroups] +admins = admin1@example.com,admin2@example.com,admin3@example.com +developers = hanez@example.com + +; just an idea taken from the old Linspector design. not tried but seems a good idea to add global options to monitor +; groups. no idea of an implementation yet. +[monitorgroups] +; members of monitors to automatically send notifications to all without need to set them in each monitor. members can +; be added to monitors in the configuration of each monitor though. +network1_members = admin@example.com,@admins + +; every notification can be configured in it's own configuration file in etc/notifications; there no notification +; name as prefix is needed. see email example. +[notifications] +; values can be overridden in each defined monitor +sms_receivers = +number1,+number2 +sms_configuration_file = ~/linspector/etc/gammurc +; retry to send interval and number of retries if something failed +sms_resend = 10 +sms_resend_count = 5 +email_resend = 10 + +; every plugin can be configured in it's own ini file in etc/plugins; there no plugin name as prefix is needed. see +; httpd example. +[plugins] +api_host = 0.0.0.0 +httpd_host = 192.168.23.42 +httpd_port = 8089 + +; if types can or must be configured before use; for now no use case seen. +; every type can be configured in it's own ini file in etc/types; there no type name as prefix is not needed. +[services] +; run the speedtest not very often. it is not for alerting about problems bur maybe will be at some day. +speedtest_interval = 3600 +; the file to get for calculation of the downlink speed. microsoft has very fast servers so it will become a meaningful +; result. +speedtest_url = https://go.microsoft.com/fwlink/?Linkid=850641 + +; tasks executed at the end of each monitor execution. this is for storing data for longtime analysis. not every task +; is storing results and this feature is fully optional. Linspector must run even without activated tasks! +[tasks] +mariadb_database = linspector +mariadb_host = 10.0.0.254 +mariadb_password = PASSWORD +mariadb_port = 3306 +mariadb_user = USER