Az alkalmazás egy egyszerű microservice-t valósít meg Flask framework használatával.
Klónozás után:
$ git clone git@github.com:kissgyorgy/Log-collector.git
egyszerűen telepíthető a
$ python3.4 setup.py install
paranccsal. Ez telepít egy logcollector nevű parancssori alkalmazást, amivel a következő műveletek hajthatóak végre:
-
SQLite adatbázist létrehozása a projekt főkönyvtárában.
$ logcollector createdb 2014-10-24 00:24:40,309 INFO sqlalchemy.engine.base.Engine SELECT CAST('test plain returns' AS VARCHAR(60)) AS anon_1 2014-10-24 00:24:40,309 INFO sqlalchemy.engine.base.Engine () 2014-10-24 00:24:40,310 INFO sqlalchemy.engine.base.Engine SELECT CAST('test unicode returns' AS VARCHAR(60)) AS anon_1 2014-10-24 00:24:40,310 INFO sqlalchemy.engine.base.Engine () 2014-10-24 00:24:40,311 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("datapoint") 2014-10-24 00:24:40,311 INFO sqlalchemy.engine.base.Engine () 2014-10-24 00:24:40,312 INFO sqlalchemy.engine.base.Engine CREATE TABLE datapoint ( id INTEGER NOT NULL, timestamp DATETIME, dim1 INTEGER, dim2 INTEGER, value FLOAT, PRIMARY KEY (id) ) 2014-10-24 00:24:40,312 INFO sqlalchemy.engine.base.Engine () 2014-10-24 00:24:40,314 INFO sqlalchemy.engine.base.Engine COMMIT
-
Adatbázis adatokkal való feltöltése:
$ logcollector initdata 10 Database filled, has 10 datapoints now.
-
A logcollector microservice elindítása:
$ logcollector run * Running on http://127.0.0.1:5000/ * Restarting with reloader
-
A futó logcollector szervernek adatok küldése létrehozásra:
$ logcollector senddata 1400000000 1 1 1500.42 Created: { "dim1": 1, "dim2": 1, "id": 107, "timestamp": "1400000000", "value": 1500.42 }
/new
POST requestben az alábbi paramétereket várja:
- timestamp (UNIX timestamp)
- dim1 (integer)
- dim2 (integer)
- value (float)
Az alábbi endpointok mindegyike legalább két UNIX timestamp paramétert vár GET requestben, illetve a kiválaszott adathalmaz opciónálisan szűrhető dim1
és dim2
paraméterek megadásával.
/mean/<first_timestamp>/<last_timestamp>
/max/<first_timestamp>/<last_timestamp>
/min/<first_timestamp>/<last_timestamp>
/stddev/<first_timestamp>/<last_timestamp>
/movavg/<first_timestamp>/<last_timestamp>/<int:points>
Itt van egy kötelező harmadik paraméter, hogy mekkora intervallumokra (mennyi adatpontra) számoljuk az egyes szakaszok átlagait.
Példák:
GET 127.0.0.0:5000/min/1000000000/1000000050?dim1=2
GET 127.0.0.0:5000/max/1000000000/1000000060?dim1=5&dim2=3
GET 127.0.0.0:5000/mean/1000000000/1000000050
GET 127.0.0.0:5000/movavg/1000000000/1000000070/3