- Notifications
You must be signed in to change notification settings - Fork 24
Deployment with Docker
This article describes how to build and run the logdata-anomaly-miner inside a docker-container. It will not explain how to configure the logdata-anomaly-miner. For further information about running the logdata-anomaly-miner, please read the Getting Started.
All docker-run commands in this article use the parameter "--rm". The container will be deleted after a run.
$ git clone -b development https://github.com/ait-aecid/logdata-anomaly-miner.git Please note that in this example the current version of logdata-anomaly-miner was 2.1.0. Use the version-number that you downloaded!
$ cd logdata-anomaly-miner $ docker build -t aecid/logdata-anomaly-miner:latest -t aecid/logdata-anomaly-miner:2.1.0 . For newer versions of logdata-anomaly-miner use the included build-script instead:
$ cd logdata-anomaly-miner $ scripts/build_docker.sh Next we will simply start the aminer and give out the version string.
First let's copy and prepare the configuration directory:
$ cp -r source/root/etc/aminer/ aminercfg $ cp aminercfg/template_config.yml aminercfg/config.yml $ mkdir logs $ mkdir persistency Run aminer:
$ docker run -v $PWD/aminercfg:/etc/aminer -v $PWD/persistency:/var/lib/aminer -v $PWD/logs:/logs --rm aecid/logdata-anomaly-miner aminer --version 
Please note that we did not configure the aminer properly. It won't parse any logs with this template configuration
In order to run the logdata-anomaly-miner in production, we need to configure some volumes:
| Mountpoint | Description | Access-Mode |
|---|---|---|
| /etc/aminer | The configuration directory | ro |
| /var/lib/aminer | The directory for the persistency | rw |
| /logs | The directory where the logdata-anomaly-miner finds the logresources | ro |
If you run logdata-anomaly-miner with supervisord then you might want to mount /var/lib/supervisor in order to access the supervisor-unix-socket:
docker run -v $PWD/aminercfg:/etc/aminer -v $PWD/persistency:/var/lib/aminer -v $PWD/logs:/logs -v $PWD/supervisor:/var/lib/supervisor --rm -it aecid/logdata-anomaly-miner supervisor It is also possible to run the supervisord using the http-interface. We need a configuration file for that.
#./http.conf [inet_http_server] port=:9001 This file needs to be mounted into the logdata-anomaly-miner-container:
docker run -v $PWD/aminercfg:/etc/aminer -v $PWD/persistency:/var/lib/aminer -v $PWD/logs:/logs -v $PWD/supi.conf:/etc/supervisor/conf.d/http.conf --rm -it aecid/logdata-anomaly-miner supervisor We can run the container without any command:
$ docker run -v $PWD/aminercfg:/etc/aminer -v $PWD/persistency:/var/lib/aminer -v $PWD/logs:/logs --rm aecid/logdata-anomaly-miner This will execute the following command inside the container:
$ aminer --Config /etc/aminer/config.yml We can run the aminer with custom parameters. In the following example we execute the logdata-anomaly-miner with the command line parameter "--version":
$ docker run -v $PWD/aminercfg:/etc/aminer -v $PWD/persistency:/var/lib/aminer -v $PWD/logs:/logs --rm aecid/logdata-anomaly-miner aminer --Help * ( ) ( ( ( ` )\ ) ( /( )\ ) )\ )\))( (()/( )\()) ( (()/( ((((_)( ((_)()\ /(_))((_)\ )\ /(_)) )\ _ )\ (_()((_)(_)) _((_)((_) (_)) (_)_\(_)| \/ ||_ _| | \| || __|| _ \ / _ \ | |\/| | | | | .` || _| | / /_/ \_\ |_| |_||___| |_|\_||___||_|_\ (Austrian Institute of Technology) (https://aecid.ait.ac.at) Version: 2.1.0 usage: aminer.py [options] options: -c, --Config <config-file> path to the config-file -d, --Daemon run as a daemon process -r, --RunAnalysis enable/disable analysis -R, --Remove <persistence-directory> removes a specific persistence directory -C, --Clear removes all persistence directories -f, --FromBegin removes RepositioningData before starting the AMiner -h, --Help print this print_help screen -v, --Version print version-string We can also run the aminerremotecontrol with custom parameters:
$ docker run -v $PWD/aminercfg:/etc/aminer -v $PWD/persistency:/var/lib/aminer -v $PWD/logs:/logs --rm aecid/logdata-anomaly-miner aminerremotecontrol --Help Usage: /usr/lib/logdata-anomaly-miner/aminerremotecontrol.py [arguments] --ControlSocket [socketpath]: when given, use nonstandard control socket. --Data [data]: provide this json serialized data within execution environment as 'remote_control_data' (see man page). --Exec [command]: add command to the execution list, can be used more than once. --ExecFile [file]: add commands from file to the execution list in same way as if content would have been used with "--Exec". --Help: this output --StringResponse: if set, print the response just as string instead of passing it to repr. For further information read the man pages running 'man AMinerRemoteControl'. The /etc/aminer-directory can be mounted via a volume into the container. The docker container supports all features of the logdata-anomaly-miner and can be configured almost the same as logdata-anomaly-miner. There is only one difference: symbolic links might not work inside the container therefore it might be necessary to copy the files from conf-available to conf-enabled. See Getting Started for further informations about the configuration.
It is possible to create a documentation of logdata-anomaly-miner using the docker-image:
$ mkdir _build $ docker run --rm -v _build:/docs/_build aecid/logdata-anomaly-miner mkdocs