Mijn vraag
Graag wil ik de internetsnelheid monitoren en deze opslaan in een InfluxDB. Hiervoor gebruik ik speedtest-cli (https://github.com/sivel/speedtest-cli) op de EdgeRouter. Dit geeft mij de data die ik wil hebben.
Nu moet dit naar InfluxDB, hiervoor kun je gebruik maken van CURL. Voorbeeld o.a. op https://docs.influxdata.com/influxdb/v1.8/guides/write_data/
Echter, EdgeOS is uitgerust met een beperkte Python 2.7 omgeving en andere packages installeren is niet mogelijk. Als alternatief voor "Requests" wijk ik uit naar URLLIB2.
Gemakshalve heb ik de resultaten in CSV beschikbaar om het volgende te draaien:
Dit geeft echter fout 400 "Bad Request". Als ik de URL open krijg ik "Method not allowed"
Relevante software en hardware die ik gebruik
EdgeRouter met EdgeOS en Python 2.7 in een kale variant.
Wat zie ik over het hoofd waarom het niet werken wil?
Graag wil ik de internetsnelheid monitoren en deze opslaan in een InfluxDB. Hiervoor gebruik ik speedtest-cli (https://github.com/sivel/speedtest-cli) op de EdgeRouter. Dit geeft mij de data die ik wil hebben.
Nu moet dit naar InfluxDB, hiervoor kun je gebruik maken van CURL. Voorbeeld o.a. op https://docs.influxdata.com/influxdb/v1.8/guides/write_data/
Echter, EdgeOS is uitgerust met een beperkte Python 2.7 omgeving en andere packages installeren is niet mogelijk. Als alternatief voor "Requests" wijk ik uit naar URLLIB2.
Gemakshalve heb ik de resultaten in CSV beschikbaar om het volgende te draaien:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| #!/usr/bin/python import csv from urllib import urlencode import urllib2 import json def read_csv(filename): with open(filename) as f: file_data=csv.reader(f) headers=next(file_data) return [dict(zip(headers,i)) for i in file_data] url = "http://192.168.1.12:8086/write?db=ISPSpeed" reqdata = {"measurements":read_csv("output.txt")[0]} postData = json.dumps(reqdata ) cont_len = len(postData ) req = urllib2.Request(url, postData, {'Content-Type': 'application/json', 'Content-Length': cont_len}) f = urllib2.urlopen(req) response = f.read() f.close() |
Dit geeft echter fout 400 "Bad Request". Als ik de URL open krijg ik "Method not allowed"
Relevante software en hardware die ik gebruik
EdgeRouter met EdgeOS en Python 2.7 in een kale variant.
Wat zie ik over het hoofd waarom het niet werken wil?