racoon63 / bandwidth-monitor Goto Github PK
View Code? Open in Web Editor NEWBandwidth-Monitor is a tool to measure your bandwidth and latency.
License: Apache License 2.0
Bandwidth-Monitor is a tool to measure your bandwidth and latency.
License: Apache License 2.0
Logging and data have not the same time value.
If influxDB or MongoDB not available using tinyDB as a fallback to cache the results and if DB is available to write the cache back into DB.
Would extend docker-compose with grafana and add InfluxDB as DataSource to draw some graphs.
While the service is proceeding a speedtest, you have to press CTRL+C twice to stop the service. This is propably because of the subroutine that is opened when running a speedtest measurement.
To improve the code quality I want to do a full code review and code refactoring where necessary.
I would extend the docker-compose to deploy a basic config of influxDB to put data inside.
if /bwm/log/bwm.log is not avaiable then the service exits
[General]
speedtest-server = [ id1,id2...]
It have to be checked if all necessary directories and files are available to prevent errors in further steps. If one or more items are not present, they have to be created.
It have to be checked if the following directories and files are present:
To increase code quality I want to have tests for the code to make sure the code works as expected.
The code coverage should be at first at least at 50%.
It would be easier to enable or disable some values that are not needed and to customize the data.
Grafana as a monitoring tool shall be able to process data values from the storage backend like influxDB so we have the following split:
Measurement = Bandwidth-Monitor
Storage = influxDB
Display = Grafana
This has the advantage that the data can be stored in raw format as they are measured by the bwm service and don't have to be preprocessed by Bandwidth-Monitor or influxDB.
Sometimes the measurement gives only certain values. An example value that is not always included is "url2". This leads into a measuremnt data loss and is not gonna be recorded. To work around this, an data checker/appender function should check which data is available and add it to the data object.
If server url2 is not filled the script throws an error and stop the script.
To solve the logging destination issue I want a logging helper.
To know how to use this project and its service, we need a documentation that describes what this project/service is, how to use and configure it.
I want to have a simple interface where I can adapt new storage backends very simple to extend the service as a whole and don't have to affect other parts of the service.
InfluxDB as TimeSeries DB for BWM would be awesome. Implementing a similiar module like mongo db one shouldn't be a big deal.
I would try to implement this module.
I want to implement parameters, options, and flags for the service when starting it e.g. specify the path to the config with -c path/to/config.ini
or the server list with -s server1 server1 ...
.
To achieve this I want to implement this through the python argparse lib.
Parameters and flags to implement:
-c
or --config
to specify the path to a config file-t
to validate the config file-s
or --server
list of servers-i
or --interval
to set the measure interval--type
type of the database been used--dbhost
DNS name or IP of the database--dbuser
db username--dbpassword
db password of the specified (--dbuser
and --dbhost
are required)-v
or --verbose
for debug outputI want to have a env/config var to exclude some speedtest-servers.
A readme helps users to understand how the app works and how they can use it.
The following sections are planned:
Acceptance criteria:
To get the possibility to change the config while service is running I want to implement a hashing mechanism that can check if the config file was changed and if yes reload the config file.
As we have a problem with the container image build, I want to switch to another container image builder via circle-ci.
This is because mongoDB is no timeseries database which is needed for this kind of service.
Acceptance criterias:
Hello Patrick,
it would be nice if you can add to json output a serverID or serverName flag.
That can help to sort it Grafana if you set auto as server.
Thanks
Alex Weber Lopes
{
"bwm": {
"1": {
"download": 24.99,
"ping": 38.49,
"timestamp": "2020-03-07-16-22-13",
"upload": 13.02,
"serverID": 1234,
"serverName: "Frankfurt"
}
}
}
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.