* Implement locks in the file cache
* Replace custom locks
* implement restore lock
Used when re-hydrating
* remove legacy use statements
* Add class descriptions
* Fix style
* Default to database cache driver
* missed cache_locks table
prevent chicken-egg issue
* style fixes
* Remove custom file lock implementation
* missed items from file cache
* Update schema definition
hmm, other schema noise must be from manual modification as this is generated from a freshly migrated db.
* require predis, it is pure python, so no harm in adding
* and set predis as the default client
* All os detection now uses Yaml
Move OS detection code into the Core module.
Defer all OS with snmp queries.
Add snmpwalk option.
Port ubnt and mobileiron to yaml.
* Silly ide refactor
* Handle more signals
* Flush buffers before exiting process
This ensures log messages aren't lost
* Restart process before jobs have finished
If there is a very log running job it can cause service restart to
take over 5 minutes.
We tweak the order of things to make sure that running processes
continue, but nothing more is scheduled.
The worst case impact is that a pollling/discovery job gets
scheduled twice, but this should not be a big issue - this should
only occur at most once per day.
* Remove python 3.8 feature
* Ensure that processes from the previous invocation are reaped
* Correct typo's
* Attach subprocess descriptors to /dev/null
Occasionally, PHP would throw a fit and crash when its stdout went
away. To avoid this, we attach stdout to devnull.
This means we lost output of daily.sh - but this is already recorded
in $LOGDIR/daily.log
* Don't immediately schedule long running jobs
To avoid the situation where the maintenance reload happens or a sighup,
then a second long running job is immediately started, we wait
(`last_[poll/discovery]_timetaken` * 1.25) seconds before scheduling
any jobs.
* Add `psutil` to requirements
* Add support for "systemctl reload" to the unit files
* Add a fallback for systems that don't have psutil
* Reduce CPU load when psutil is not installed
* Don't avoid double polling by extending the timeout
This shouldn't happen due to locks
* Remove fallback option
* Remove extra variable
* Fix issue introduced during rebase
* Fix issue introduced when fixing issue introduced during rebase
* Make psutil optional
* new index in alert_log table
* codefix1
* codefix2
* added second index
* codefix
* Apply suggestions from code review
Co-authored-by: Jellyfrog <Jellyfrog@users.noreply.github.com>
* Rewrite smokeping script to be an lnms command
* Add a default number of probes for smokeping
* Formatting fixes
* Refactor to simplify a couple of methods
* Fix a name collision when using more than 60 threads
* Simplify
* First pass at documentation
A few climate fixes too.
I'm a little dubious about the + LibreNMS fix - it could be included
in /etc/smokeping/config if it is really needed, but it sounds like
(looking at git blame) it's needed for if the script generates a broken
configuration file.
I'm thinking we should just not generate broken config.
* Improve testability and add some tests
* Load laravel to make translations available
* Second pass at documentation
* Fix brace
* Extend the device factory to include the type
Also adds a device group fake I created before I realised I didn't need it
* Mimic gen_smokeping.php a little more closely
* Update tests to properly verify old and new behaviour against each other
* Replace gen_smokeping with a wrapper
* Don't double whitespace
Render does this automatically.
Explicitly order by hostname too.
* Make faker less likely to generate duplicates
I tried adding a unique constraint here, but it didn't have the
intended effect.
Extending the hostname like this seems to work fine - I tried
generating 10 million hosts and got no duplicates, compared to
duplicates appearing with as few as 100 hosts without this
change.
A true fix would be to add an 'fqdn' fake upstream.
* Make the tests more robust
* Assorted bug fixes
* Style corrections
* Handle 'generic' devices
* Fix an issue that came up during rebase
Co-authored-by: Tony Murray <murraytony@gmail.com>
yaml os discovery now respects the os mib_dir definition
mib_dir now only allows strings, not arrays
changed schema validation to account for that
consolidated dell mibs, no reason for them to be spread out
* Add attach sysName to Prometheus option.
The value of put to prometheus can be added to sysName by setting the relevant parameter.
* Add attach sysName to Prometheus.
* Add attach sysName to Prometheus.
* Update resources/lang/en/settings.php
Co-authored-by: Jellyfrog <Jellyfrog@users.noreply.github.com>
* Update settings.php
* Update settings.php
* Update settings.php
* Update settings.php
* Update settings.php
* Update zh-TW.json
Co-authored-by: Jellyfrog <Jellyfrog@users.noreply.github.com>
* Disable rules from the default list
Too many rules in the default, disabling the customoid rules.
It is easy to add from the collection. Any other suggestions?
* remove bgp and default false
* removing $graphs global
* remove unused things
* fix some additional graphs
* Fix graphs persisting too soon
* correct name for poller module performance graph
* only one type of graph is used here
* Add a executable type to settings page
This allow us to validate the value is a valid executable
* Add a directory type to settings page
This allow us to validate the value is a valid directory
* fixes
* Change CORS implementation
allows for upstream integration of Laravel 7
* migrate config
* skip implementing patterns for now
* Expose settings to the webui
* Make db settings apply
* Device Availability Calculation
* Travis fix
* .
* schema corrections
* flexible duration
* travis
* .
* .
* .
* .
* remove not needed code
* line Text to RRD
* update humantime
* .
* only set up again if device was marked as down
* set RRD area transparency
* save uptime also, to keep last availability as good as possible
* file description correction
* look for outages even if uptime > duration
* Alert Rules use Carbon
Use carbon for time queries, need to be careful of timezone quirks. Timestamps won't have that issue
* Convert existing schedules to UTC
* we only need start end... we already have start/end
* Make AlertSchedule::isActive work
* Table display working (and using Eloquent)
* Schedule creation updated
* WIP
* use Eloquent mutators/accessors
* recurring_day mutator/accessor
* WIP UI
* Fix SQL to handle outside times
* fix up some ui issues
* Convert alert-schedule to new style
Improved sorting customization
* fix whitespace
* support sqlite
* Fix schedule creation missing id
* Fix Device::isUnderMaintenance() add location relation
* Poller settings WIP
* Poller settings WIP2
* working on SettingMultiple
* setting multiple working
* settings sent with all required info
* fix translation
* Fix keys
* fix groups setting
* Apply settings to service
fixes and validations for setting
* don't error when no poller_cluster entry exists
* hid tab when no poller cluster entries
* Authorization
* make prod
* daily maintenance toggle should be advanced
* Update schema def
* Remove width from db schema
* Update to address DEFAULT_GENERATED validation, and push new schema
* Only remove width from integer types
* Build from fresh db
Co-authored-by: Tony Murray <murraytony@gmail.com>
* WIP Sqlite
Down methods don't work either, avoid them with refresh for now.
WIP persistent support
WIP db_schema
WIP db_schema 2
Update new migrations...
revert dump_db_schema changes for now, too much difference.
fix migrations on mysql
fix up some more items, this should be our target schema
lots of index renames and a two misc changes
index rename WIP
index rename WIP
another round
fix up new schema changes
try case insensitive fix
Trying tests WIP
fix down methods
DBSetupTest working (uses mysql)
Test sqlite migrations work
* Properly validate sqlite output
* revert glue changes, should be separate PR
* remove dusk workaround
* remove unused variables
* import
* sqlite capitalization
* Revert some refresh tests
* testing_mysql back to testing