# Monitoring and alerting |  InfluxDB

## Install InfluxDB instance

- local database on Raspberry Pi

A remote database, which is used also, allows to monitor Trikarus network status. The installation of this second database is not described in this documentation.

[<span>https://www.influxdata.com/blog/getting-started-python-influxdb</span>](https://www.influxdata.com/blog/getting-started-python-influxdb)

```bash
sudo su
 
curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add -
echo "deb https://repos.influxdata.com/debian buster stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
apt update
 
apt-get install influxdb
 
systemctl enable influxdb
systemctl start influxdb
 
#the service file can be found in
/lib/systemd/system/influxdb.service
 
chown -R influxdb:influxdb /etc/influxdb
chown -R influxdb:influxdb /var/lib/influxdb
 
service influxdb start
```

## Create trikarus database

<p class="callout info">A collectd database gets created automatically by collectd service. You only need to add database "trikarus", which is used by Python monitoring scripts for things like [Filament sensing with KY-040 Rotary Encoder](https://old.stadtfabrikanten.org/display/TH/Filament+sensing+with+KY-040+Rotary+Encoder) and much more.</p>

```bash
#open InfluxDB shell
influx
```

```sql
CREATE USER trikaflux WITH PASSWORD 'password'
SHOW USERS
CREATE DATABASE trikarus
GRANT ALL ON "trikarus" TO "trikaflux"
```

## Retention policies for databases collectd and trikarus

This is used to automatically cleanup old data from database.

```sql
CREATE USER "admin" WITH PASSWORD 'password' WITH ALL PRIVILEGES
 
CREATE RETENTION POLICY "collectd_policy_14d" ON "collectd" DURATION 14d REPLICATION 1 DEFAULT
SHOW RETENTION POLICIES ON "collectd"
 
CREATE USER trikaflux WITH PASSWORD 'password'
SHOW USERS
CREATE DATABASE trikarus
GRANT ALL ON "trikarus" TO "trikaflux"
 
CREATE RETENTION POLICY "trikarus_policy_14d" ON "trikarus" DURATION 14d REPLICATION 1 DEFAULT
SHOW RETENTION POLICIES ON "trikarus"
```

## Purge old data

If you want to reset data you can send some API call for example.

```sql

use collectd
DROP SERIES FROM mpu6050_value
```

Or by API call:

```bash
curl -cacert /etc/ssl/certs/site.de.ca.crt --cert /etc/ssl/certs/site.de.crt --key /etc/ssl/private/site.de.key https://site.de:8086/query --data-urlencode "db=collectd" --data-urlencode "q=DROP SERIES FROM mpu6050_value" --user admin:password| jq . | grep mpu6050
```