Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature Request] - Enhancements to data logging and structure #13

Open
n1nj4888 opened this issue Oct 9, 2020 · 2 comments
Open

[Feature Request] - Enhancements to data logging and structure #13

n1nj4888 opened this issue Oct 9, 2020 · 2 comments
Labels
enhancement New feature or request help wanted Extra attention is needed

Comments

@n1nj4888
Copy link

n1nj4888 commented Oct 9, 2020

Hi There,
Thanks for the great docker container for this! I have a couple of feature suggestions if I may?

(1) Currently the container writes 3 seperate measurements to Influx (upload, download and ping), when it would be better to write this as a single "speedtest" measurement with upload, download and ping results in a single row within InfluxDB. This way, you can get the download/upload/ping results obtained from a single speedtest measurement from one row in grafana (rather than 3 seperate queries across 3 seperate measurements)
(2) The JSON result from the speedtest command actually contains a lot more data that would also be great to log in the InfluxDB and could lead to much more analysis options such as data sent/received, logging the server that performed the speedtest, plotting results on a map using city/country etc .

The JSON returned by the speedtest command is as per below so I've also suggested how you may write these fields to Influx, again all as a single row in a "speedtest" or "results" measurement as per suggestion (1):

{
	"type":"result",
	"timestamp":<timestamp>,
	"ping":
	{
		"jitter":<ping.jitter>
		"latency":<ping.latency>
	},
	"download":
	{
		"bandwidth":<download.bandwith>
		"bytes":<download.bytes>
		"elapsed":<download.elapsed>
	},
	"upload":
	{
		"bandwidth":<upload.bandwith>
		"bytes":<upload.bytes>
		"elapsed":<upload.elapsed>
	},
	"packetLoss":<packetLoss>
	"isp":<isp>
	"interface":
	{
		"internalIp":<interface.internalIp>,
		"name":<interface.name>,
		"macAddr":<interface.macAddr>,
		"isVpn":<interface.isVpn>,
		"externalIp":<interface.externalIp>
	},
	"server":
	{
		"id":<server.id>,
		"name":<server.name>,
		"location":<server.location>,
		"country":<server.country>,
		"host":<server.host>,
		"port":<server.port>,
		"ip":<server.ip>
	},
	"result":
	{
		"id":<result.id>,
		"url":<result.url>
	}
}

Obviously the above would be "breaking changes" for any existing databases / grafana dashboards so perhaps the more extensive results above could be controlled with a "Verbose" environment variable? This would also enable users to select whether they want all the additional data or just the simple upload/download/ping results?

(3) A minor niggle but the current name of the image frdmn/docker-speedtest-grafana implies grafana is included/required but actually it isn't and the container can be run with an external grafana or indeed without grafana at all?

Thanks for your consideration!

@frdmn
Copy link
Owner

frdmn commented Oct 12, 2020

Thanks for the feature request!

  1. Haven't thought about using a single measurement for this, to be honest. I have not that much experience with InfluxDB. I assume this would be a breaking change as well?

  2. I saw that there is much more information in the JSON output but, as stated above - not sure how to properly store it in the database. Are you maybe able to contribute to the two points here? I don't mind breaking changes, as long as they are clearly listed a in the release notes.

  3. Good point! I also do not really like that people are currently encouraged to use the included compose file (with its .env requirement). Maybe we could use the rename to also tidy up a bit the repo structure. Do you have an idea for a better name?

@frdmn frdmn added enhancement New feature or request help wanted Extra attention is needed labels Oct 12, 2020
@n1nj4888
Copy link
Author

n1nj4888 commented Oct 22, 2020

  1. Good point! I also do not really like that people are currently encouraged to use the included compose file (with its .env requirement). Maybe we could use the rename to also tidy up a bit the repo structure. Do you have an idea for a better name?

I'd call it "docker-speedtest-influxdb-logger" or something like that as InfluxDB is required (although can be provided externally), but grafana itself is not a mandatory requirement (other external, or no visualisation tools at all could be used)?

Alternatively you could call it "docker-speedtest-cli" and make the logging to InfluxDB as optional via an environment variable i.e. the docker container could be run without influx and simply log to the console/file?

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

2 participants