[Hastic server](https://hastic.io) [![Travis CI](https://travis-ci.org/hastic/hastic-server.svg?branch=master)](https://travis-ci.org/hastic/hastic-server)
================
[Website](https://hastic.io) |
[Twitter](https://twitter.com/hasticio)
Implementation of basic pattern recognition for anomaly detection.
Implementation of analytics unit for Hastic.
**Please note that we are still in alpha, so features are subject to change**
See also:
* [Hooks](https://github.com/hastic/hastic-server/blob/master/HOOKS.md) - notifications about events
* [REST](REST.md) - for developing your plugins
* [HasticPanel](https://github.com/hastic/hastic-grafana-graph-panel) - Hastic visualisation plugin for Grafana
## Download & Install on Linux
You need only [nodejs >= 6.14](https://nodejs.org/en/download/) on your machine.
### Node 6
```
wget https://github.com/hastic/hastic-server/releases/download/0.2.2-alpha/hastic-server-0.2.2-alpha-node-6.tar.gz
tar -zxvf hastic-server-0.2.2-alpha-node-6.tar.gz
cd hastic-server-0.2.2-alpha/server/dist
node server
```
### Node 8
```
wget https://github.com/hastic/hastic-server/releases/download/0.2.2-alpha/hastic-server-0.2.2-alpha-node-8.tar.gz
tar -zxvf hastic-server-0.2.2-alpha-node-8.tar.gz
cd hastic-server-0.2.2-alpha/server/dist
node server
```
## Build & run from source
Hastic server requires Grafana's API key (http:///org/apikeys) to query data from Grafana datasources.
API key role requires only `Viewer` access.
Possible to install on:
* [Linux](#linux)
* [Docker](#docker)
### Linux
#### System prerequisites:
* [git](https://git-scm.com/download/linux)
* [nodejs >= 6.14](https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions)
* [python == 3.6.х](https://www.python.org/downloads/) with [pip3](https://packaging.python.org/guides/installing-using-linux-tools/#installing-pip-setuptools-wheel-with-linux-package-managers)
#### Installation
```bash
git clone https://github.com/hastic/hastic-server.git
cd hastic-server
pip3 install -r analytics/requirements.txt
cd server
npm install
npm run build
```
#### Configuration
You can configure hastic-server using either *environment variables* or *config file*.
> NOTE: environment variables have higher priority than config file.
##### Environment variables
You can export the following environment variables for hastic-server to use:
- HASTIC_API_KEY - (required) API-key of your Grafana instance
- HASTIC_PORT - (optional) port you want to run server on, default: 8000
e.g.
```bash
export HASTIC_API_KEY=eyJrIjoiVjZqMHY0dHk4UEE3eEN4MzgzRnd2aURlMWlIdXdHNW4iLCJuIjoiaGFzdGljIiwiaWQiOjF9
export HASTIC_PORT=8080
```
##### Config file
You can also rename `config.example.json` to `config.json` and set your values there.
#### Run
```bash
cd hastic-server/server
npm start
```
### Docker
#### Fetch image
```bash
docker pull hastic/server
```
#### Run
```bash
docker run -d \
--name hastic-server \
--ipc host \
-p 80:8000 \
-e HASTIC_API_KEY= \
-v /tmp:/tmp \
hastic/server
```
### Changelog
### [0.2.2-alpha] - 2018-09-12
> NOTE: hastic-panels of versions older than 0.2.0 are not supported
#### Changed
- Consider segment width in models [#136](https://github.com/hastic/hastic-server/issues/136)
- Increase learning dataset timerange
### [0.2.1-alpha] - 2018-09-04
> NOTE: hastic-panels of versions older than 0.2.0 are not supported
#### Changed
- Models improvements
### [0.2.0-alpha] - 2018-09-03
> NOTE: hastic-panels of versions older than 0.2.0 are not supported
#### Added
- Return version of server [#66](https://github.com/hastic/hastic-server/issues/66)
- Return analytic status [#71](https://github.com/hastic/hastic-server/issues/71)
#### Fixed
- Case-sensitive anomaly name [#41](https://github.com/hastic/hastic-server/issues/41)
- ImportError: cannot import name 'isna' [#59](https://github.com/hastic/hastic-server/issues/59)
- Handle analytics connection failure on server [#74](https://github.com/hastic/hastic-server/issues/74)
- Analytics wont start in production mode [#77](https://github.com/hastic/hastic-server/issues/77)
- Basic creation of analytic unit fails [#79](https://github.com/hastic/hastic-server/issues/79)
- Missing communication between analytics and server in production [#91](https://github.com/hastic/hastic-server/issues/91) - thx [@petrk94](https://github.com/petrk94) for [bugreport](https://github.com/hastic/hastic-server/issues/90)
- Server is stopping only after second Ctrl-C [#96](https://github.com/hastic/hastic-server/issues/96)
- Error: 'value' [#100](https://github.com/hastic/hastic-server/issues/100)
- Error: Unexpected response [#125](https://github.com/hastic/hastic-server/issues/125)
- Error: max of an empty sequence in peaks model [#126](https://github.com/hastic/hastic-server/issues/126)
### [0.1.4-alpha] - 2018-06-29
#### Changed
- Informative error messages instead of "Internal error" [#40](https://github.com/hastic/hastic-server/issues/33)
#### Fixed
- "No such file or directory" error on anomaly create [#33](https://github.com/hastic/hastic-server/issues/33)
- Case-sensitive anomaly name [#41](https://github.com/hastic/hastic-server/issues/41)
### [0.1.3-alpha] - 2018-06-28
#### Changed
- Drops algorithm improvement.
### [0.1.2-alpha] - 2018-06-25
#### Fixed
- Error: type object 'sklearn.tree...' [#28](https://github.com/hastic/hastic-server/issues/28)
### [0.1.1-alpha] - 2018-06-25
#### Added
- HASTIC_API_KEY to config file [#23](https://github.com/hastic/hastic-server/issues/23)