# README

## Installation

```bash
git clone --recurse-submodules https://github.com/iotbzh/agl-service-harvester.git
cd agl-service-harvester.git
mkdir build && cd build
cmake .. && make
```

### InfluxDB installation

```bash
# openSUSE installation instructions
# For other distro, see docs: https://portal.influxdata.com/downloads
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.5.1.x86_64.rpm
sudo zypper in ./influxdb-1.5.1.x86_64.rpm
# ignore warnings and force install

sudo systemctl daemon-reload
sudo systemctl start influxdb
sudo systemctl status influxdb
```

You may also install useful tool named chronograf (Time-Series Data Visualization)
```bash
wget https://dl.influxdata.com/chronograf/releases/chronograf-1.4.4.2.x86_64.rpm
sudo zypper in shadow
sudo zypper in ./chronograf-1.4.4.2.x86_64.rpm
# ignore warnings and force install
```

## Usage

Typical example to write in a TimeSeries DB from source project directory:

```bash
$ cd build/ && /opt/AGL/bin/afb-daemon --workdir=./package --name=afb-harvester --ldpaths=lib --roothttp=. --tracereq=common --token=1 -vvv
[...]
$ afb-client-demo ws://localhost:1234/api?token=1
harvester auth
ON-REPLY 1:harvester/auth: {"jtype":"afb-reply","request":{"status":"success", "uuid":"03dc89fb-88b4-4204-ba9b-13dded3c38ab"}}

harvester write {"metric": [{"name": "engine_speed","metadata": {"source": "my_source","identity": "claneys"},"values": {"value": 0},"timestamp": 1526048390725229811}, {"name": "engine_speed","metadata": {"source": "my_source","identity": "claneys"},"values": {"value": 1},"timestamp": 1526048590732571963}, {"name": "engine_speed","metadata": {"source": "my_source","identity": "claneys"},"values": {"value": 2},"timestamp": 1526048790741053301}, {"name": "engine_speed","metadata": {"source": "my_source","identity": "claneys"},"values": {"value": 3},"timestamp": 1526049390746492374}, {"name": "engine_speed","metadata": {"source": "my_source","identity": "claneys"},"values": {"value": 4},"timestamp": 1526049590753850373}, {"name": "engine_speed","metadata": {"source": "my_source","identity": "claneys"},"values": {"value": 5},"timestamp": 1526049790760449841}, {"name": "engine_speed","metadata": {"source": "my_source","identity": "claneys"},"values": {"value": 6},"timestamp": 1526049990768334799}, {"name": "engine_speed","metadata": {"source": "my_source","identity": "claneys"},"values": {"value": 7},"timestamp": 1526052290774058754}, {"name": "engine_speed","metadata": {"source": "my_source","identity": "claneys"},"values": {"value": 8},"timestamp": 1526055590781866679}]}

ON-REPLY 2:harvester/write: {"jtype":"afb-reply","request":{"status":"success","info":"Request has been successfully written"}}
```

```bash
afb-client-demo -H ws://localhost:1234/api?token=1 harvester write '{"metric": [{"name": "engine_speed", "metadata": {"source": "my_source","identity": "claneys"}, "values": {"value": 10}, "timestamp": 1526065590781866679}]}'
ON-REPLY 1:harvester/write: OK
{
  "jtype":"afb-reply",
  "request":{
    "status":"success",
    "info":"Request has been successfully written",
    "uuid":"24d61c19-469f-4fad-a85b-55f4bac59e8e"
  }
}
afb-client-demo -H ws://localhost:1234/api?token=1 harvester write '{"metric": [{"name": "engine_speed","metadata": {source": "my_source","identity": "claneys"},"values": {"value": 10},"timestamp": 1526065590781866679}]}'
```

## InfluxDB check

```bash
sudo systemctl start influxdb
```

Check a measurement:

```bash
$ influx
Connected to http://localhost:8086 version 1.5.1
InfluxDB shell version: 1.5.1
> use agl-garner
Using database agl-garner
> select value_f from engine_speed
name: engine_speed
time                value_f
----                -------
1526643129561864049 0
1526643129561873378 1
1526643129561877058 2
1526643129561879981 3
1526643129561882627 4
1526643129561885153 5
1526643129561888066 6
1526643129561891514 7
1526643129561893920 8
> exit
```

Drop measurement:

```bash
influx -database 'agl-garner' -execute 'drop measurement engine_speed'
```