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?