diff --git a/etc/monitors/test/.gitkeep b/etc.dev/hostgroups/.gitkeep similarity index 100% rename from etc/monitors/test/.gitkeep rename to etc.dev/hostgroups/.gitkeep diff --git a/etc.dev/hostgroups/testgroup1.conf b/etc.dev/hostgroups/testgroup1.conf new file mode 100644 index 0000000..226f3ef --- /dev/null +++ b/etc.dev/hostgroups/testgroup1.conf @@ -0,0 +1,2 @@ +[hostgroups] +testgroup1 = host1,host2,host3,192.168.2.1>192.168.2.127 \ No newline at end of file diff --git a/etc.dev/linspector.conf b/etc.dev/linspector.conf new file mode 100644 index 0000000..6e43bb2 --- /dev/null +++ b/etc.dev/linspector.conf @@ -0,0 +1,125 @@ +; 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 +; if timezone is not set, UTC is used by default. +timezone = CET +; 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.txt 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 \ No newline at end of file diff --git a/etc.dev/monitors/network1/.gitkeep b/etc.dev/monitors/network1/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/etc.dev/monitors/network1/gateway.conf b/etc.dev/monitors/network1/gateway.conf new file mode 100644 index 0000000..0199c5f --- /dev/null +++ b/etc.dev/monitors/network1/gateway.conf @@ -0,0 +1,37 @@ +; required options: +[monitor] +; Currently not used but should replace current usage of description. The description should be optional... +title = The Monitor Title +; The description must not but should be a unique description of the monitor for better identifying it in the datastore +; if a task is being used. +description = Cable Provider Uplink Status +service = net.fritzboxuplink +hosts = 192.168.0.1,192.168.23.24,@group1,@testgroup1 + +; optional options when using notifications, plugins, services or tasks. btw. they still can be a required argument by +; a corresponding notification, plugin, service or task. they will need to check required args by themself and throw an +; exception if something fails. linspector never knows about required args: +[args] +; this only depends on the SLA you made with the product owner. this option is optional. the default is 300 seconds. +interval = 60 +; notifications separated by ','. no whitespaces allowed. the case is not important. +notifications = sms,emaiL +; values from main configuration can be overridden for each defined monitor +; email_receivers separated by ','. no whitespaces allowed +email_receivers = admin@example.com,fallback@example.com +; sms_receivers separated by ','. no whitespaces allowed +sms_receivers = +number1,+number2 +; setting to None fails. just do not set this option. currently i get an error when tasks is not set here. need to be +; fixed. setting it like below works but is no good design for optional options. same for notifications. +tasks = redis +; maybe this should be some kind of range too, for example for the ping service like: 10.0.0.1>10.0.0.42 or more +; sophisticated kind of ranges... i will find a solution for that... like host groups in the old version of Linspector +; so we don't need to add a monitor for each host... but it would be a good idea to expose these to hostgroups +; internally to single hosts to become a monitor for each host internally. some more ideas are in ;) +; hosts with added hostgroup defined in main configuration file +; monitors can add their self into a hostgroup +hostgroups = group1 +user = USERNAME +password = PASSWORD +; only alert when the error reaches the threshold +threshold = 3 diff --git a/etc.dev/monitors/network2/.gitkeep b/etc.dev/monitors/network2/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/etc.dev/monitors/network2/gateway.conf b/etc.dev/monitors/network2/gateway.conf new file mode 100644 index 0000000..436b75c --- /dev/null +++ b/etc.dev/monitors/network2/gateway.conf @@ -0,0 +1,14 @@ +[monitor] +description = Cable Provider +service = Net.FritzboxUplink +hosts = 192.168.1.1 + +[args] +interval = 60 +notifications = email +email_receivers = admin@example.com,fallback@example.com +sms_receivers = +number1,+number2 +tasks = mariadb,file +user = USERNAME +password = PASSWORD +hostgroups = group1 \ No newline at end of file diff --git a/etc.dev/monitors/test/.gitkeep b/etc.dev/monitors/test/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/etc/monitors/test/test1 b/etc.dev/monitors/test/test1 similarity index 100% rename from etc/monitors/test/test1 rename to etc.dev/monitors/test/test1 diff --git a/etc/monitors/test/test1.conf b/etc.dev/monitors/test/test1.conf similarity index 100% rename from etc/monitors/test/test1.conf rename to etc.dev/monitors/test/test1.conf diff --git a/etc/monitors/test/test10.conf b/etc.dev/monitors/test/test10.conf similarity index 100% rename from etc/monitors/test/test10.conf rename to etc.dev/monitors/test/test10.conf diff --git a/etc/monitors/test/test11.conf b/etc.dev/monitors/test/test11.conf similarity index 100% rename from etc/monitors/test/test11.conf rename to etc.dev/monitors/test/test11.conf diff --git a/etc/monitors/test/test12.conf b/etc.dev/monitors/test/test12.conf similarity index 100% rename from etc/monitors/test/test12.conf rename to etc.dev/monitors/test/test12.conf diff --git a/etc/monitors/test/test13.conf b/etc.dev/monitors/test/test13.conf similarity index 100% rename from etc/monitors/test/test13.conf rename to etc.dev/monitors/test/test13.conf diff --git a/etc/monitors/test/test14.conf b/etc.dev/monitors/test/test14.conf similarity index 100% rename from etc/monitors/test/test14.conf rename to etc.dev/monitors/test/test14.conf diff --git a/etc/monitors/test/test15.conf b/etc.dev/monitors/test/test15.conf similarity index 100% rename from etc/monitors/test/test15.conf rename to etc.dev/monitors/test/test15.conf diff --git a/etc/monitors/test/test16.conf b/etc.dev/monitors/test/test16.conf similarity index 100% rename from etc/monitors/test/test16.conf rename to etc.dev/monitors/test/test16.conf diff --git a/etc/monitors/test/test17.conf b/etc.dev/monitors/test/test17.conf similarity index 100% rename from etc/monitors/test/test17.conf rename to etc.dev/monitors/test/test17.conf diff --git a/etc/monitors/test/test18.conf b/etc.dev/monitors/test/test18.conf similarity index 100% rename from etc/monitors/test/test18.conf rename to etc.dev/monitors/test/test18.conf diff --git a/etc/monitors/test/test19.conf b/etc.dev/monitors/test/test19.conf similarity index 100% rename from etc/monitors/test/test19.conf rename to etc.dev/monitors/test/test19.conf diff --git a/etc/monitors/test/test2.conf b/etc.dev/monitors/test/test2.conf similarity index 100% rename from etc/monitors/test/test2.conf rename to etc.dev/monitors/test/test2.conf diff --git a/etc/monitors/test/test20.conf b/etc.dev/monitors/test/test20.conf similarity index 100% rename from etc/monitors/test/test20.conf rename to etc.dev/monitors/test/test20.conf diff --git a/etc/monitors/test/test21.conf b/etc.dev/monitors/test/test21.conf similarity index 100% rename from etc/monitors/test/test21.conf rename to etc.dev/monitors/test/test21.conf diff --git a/etc/monitors/test/test22.conf b/etc.dev/monitors/test/test22.conf similarity index 100% rename from etc/monitors/test/test22.conf rename to etc.dev/monitors/test/test22.conf diff --git a/etc/monitors/test/test23.conf b/etc.dev/monitors/test/test23.conf similarity index 100% rename from etc/monitors/test/test23.conf rename to etc.dev/monitors/test/test23.conf diff --git a/etc/monitors/test/test24.conf b/etc.dev/monitors/test/test24.conf similarity index 100% rename from etc/monitors/test/test24.conf rename to etc.dev/monitors/test/test24.conf diff --git a/etc/monitors/test/test25.conf b/etc.dev/monitors/test/test25.conf similarity index 100% rename from etc/monitors/test/test25.conf rename to etc.dev/monitors/test/test25.conf diff --git a/etc/monitors/test/test26.conf b/etc.dev/monitors/test/test26.conf similarity index 100% rename from etc/monitors/test/test26.conf rename to etc.dev/monitors/test/test26.conf diff --git a/etc/monitors/test/test27.conf b/etc.dev/monitors/test/test27.conf similarity index 100% rename from etc/monitors/test/test27.conf rename to etc.dev/monitors/test/test27.conf diff --git a/etc/monitors/test/test28.conf b/etc.dev/monitors/test/test28.conf similarity index 100% rename from etc/monitors/test/test28.conf rename to etc.dev/monitors/test/test28.conf diff --git a/etc/monitors/test/test29.conf b/etc.dev/monitors/test/test29.conf similarity index 100% rename from etc/monitors/test/test29.conf rename to etc.dev/monitors/test/test29.conf diff --git a/etc/monitors/test/test3.conf b/etc.dev/monitors/test/test3.conf similarity index 100% rename from etc/monitors/test/test3.conf rename to etc.dev/monitors/test/test3.conf diff --git a/etc/monitors/test/test30.conf b/etc.dev/monitors/test/test30.conf similarity index 100% rename from etc/monitors/test/test30.conf rename to etc.dev/monitors/test/test30.conf diff --git a/etc/monitors/test/test31.conf b/etc.dev/monitors/test/test31.conf similarity index 100% rename from etc/monitors/test/test31.conf rename to etc.dev/monitors/test/test31.conf diff --git a/etc/monitors/test/test32.conf b/etc.dev/monitors/test/test32.conf similarity index 100% rename from etc/monitors/test/test32.conf rename to etc.dev/monitors/test/test32.conf diff --git a/etc/monitors/test/test33.conf b/etc.dev/monitors/test/test33.conf similarity index 100% rename from etc/monitors/test/test33.conf rename to etc.dev/monitors/test/test33.conf diff --git a/etc/monitors/test/test34.conf b/etc.dev/monitors/test/test34.conf similarity index 100% rename from etc/monitors/test/test34.conf rename to etc.dev/monitors/test/test34.conf diff --git a/etc/monitors/test/test35.conf b/etc.dev/monitors/test/test35.conf similarity index 100% rename from etc/monitors/test/test35.conf rename to etc.dev/monitors/test/test35.conf diff --git a/etc/monitors/test/test36.conf b/etc.dev/monitors/test/test36.conf similarity index 100% rename from etc/monitors/test/test36.conf rename to etc.dev/monitors/test/test36.conf diff --git a/etc/monitors/test/test37.conf b/etc.dev/monitors/test/test37.conf similarity index 100% rename from etc/monitors/test/test37.conf rename to etc.dev/monitors/test/test37.conf diff --git a/etc/monitors/test/test38.conf b/etc.dev/monitors/test/test38.conf similarity index 100% rename from etc/monitors/test/test38.conf rename to etc.dev/monitors/test/test38.conf diff --git a/etc/monitors/test/test39.conf b/etc.dev/monitors/test/test39.conf similarity index 100% rename from etc/monitors/test/test39.conf rename to etc.dev/monitors/test/test39.conf diff --git a/etc/monitors/test/test4.conf b/etc.dev/monitors/test/test4.conf similarity index 100% rename from etc/monitors/test/test4.conf rename to etc.dev/monitors/test/test4.conf diff --git a/etc/monitors/test/test40.conf b/etc.dev/monitors/test/test40.conf similarity index 100% rename from etc/monitors/test/test40.conf rename to etc.dev/monitors/test/test40.conf diff --git a/etc/monitors/test/test5.conf b/etc.dev/monitors/test/test5.conf similarity index 100% rename from etc/monitors/test/test5.conf rename to etc.dev/monitors/test/test5.conf diff --git a/etc/monitors/test/test6.conf b/etc.dev/monitors/test/test6.conf similarity index 100% rename from etc/monitors/test/test6.conf rename to etc.dev/monitors/test/test6.conf diff --git a/etc/monitors/test/test7.conf b/etc.dev/monitors/test/test7.conf similarity index 100% rename from etc/monitors/test/test7.conf rename to etc.dev/monitors/test/test7.conf diff --git a/etc/monitors/test/test8.conf b/etc.dev/monitors/test/test8.conf similarity index 100% rename from etc/monitors/test/test8.conf rename to etc.dev/monitors/test/test8.conf diff --git a/etc/monitors/test/test9.conf b/etc.dev/monitors/test/test9.conf similarity index 100% rename from etc/monitors/test/test9.conf rename to etc.dev/monitors/test/test9.conf diff --git a/etc.dev/notifications/.gitkeep b/etc.dev/notifications/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/etc.dev/notifications/email.conf b/etc.dev/notifications/email.conf new file mode 100644 index 0000000..9d0bf9e --- /dev/null +++ b/etc.dev/notifications/email.conf @@ -0,0 +1,7 @@ +[email] +resend = 20 +smtp_host = mail.example.com +smtp_port = 25 +smtp_password = PASSWORD +smtp_user = alerts@example.com +receivers = admin@example.com \ No newline at end of file diff --git a/etc.dev/plugins/.gitkeep b/etc.dev/plugins/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/etc.dev/plugins/api.conf b/etc.dev/plugins/api.conf new file mode 100644 index 0000000..53a9488 --- /dev/null +++ b/etc.dev/plugins/api.conf @@ -0,0 +1,4 @@ +[api] +host = 127.0.0.1 +port = 4242 +type = thread \ No newline at end of file diff --git a/etc.dev/plugins/httpd.conf b/etc.dev/plugins/httpd.conf new file mode 100644 index 0000000..4e92011 --- /dev/null +++ b/etc.dev/plugins/httpd.conf @@ -0,0 +1,4 @@ +[httpserver] +host = 127.0.0.1 +port = 8080 +type = thread \ No newline at end of file diff --git a/etc.dev/plugins/lish.conf b/etc.dev/plugins/lish.conf new file mode 100644 index 0000000..4a8778c --- /dev/null +++ b/etc.dev/plugins/lish.conf @@ -0,0 +1,2 @@ +[lish] +type = none \ No newline at end of file diff --git a/etc.dev/services/.gitkeep b/etc.dev/services/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/etc.dev/tasks/.gitkeep b/etc.dev/tasks/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/etc.dev/tasks/splunk.conf b/etc.dev/tasks/splunk.conf new file mode 100644 index 0000000..80d2769 --- /dev/null +++ b/etc.dev/tasks/splunk.conf @@ -0,0 +1,3 @@ +[splunk] +host = splunk.example.org +port = 3333 \ No newline at end of file diff --git a/etc.dev/tasks/syslog.conf b/etc.dev/tasks/syslog.conf new file mode 100644 index 0000000..343b479 --- /dev/null +++ b/etc.dev/tasks/syslog.conf @@ -0,0 +1,3 @@ +[syslog] +host = log.example.org +port = 514 \ No newline at end of file