Skip to content

Single node installation

Following steps describe single-node installation of TeskaLabs LogMan.io.

Prerequisites

To set up hardware, please follow these instructions. You should start with fresh Linux installation and Docker service running.

If you install LogMan.io together with other services into one machine, be aware that LogMan.io controls these directories by default:

  • /opt/site/
  • /data/hdd/
  • /data/ssd/

Make sure you empty these directories before the installation.

sudo rm -rf /opt/site/* /data/hdd/* /data/ssd/*

If possible, stop all Docker containers and prune all Docker data

docker system prune -af

To run the installation in Podman instead of Docker, please follow these instructions.

Make sure you've configured required Linux kernel parameters.

Bootstrap

Run this command to start LogMan.io bootstrap.

docker run -it --rm --pull always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /opt/site:/opt/site \
  -v /opt/site/docker/conf:/root/.docker/ \
  -v /data:/data \
  -e NODE_ID=`hostname -s` \
  --network=host \
  pcr.teskalabs.com/asab/asab-governator:stable \
  python3 -m governator.bootstrap

A simple GUI starts in the terminal.

  • Choose to install first cluster node.
  • You'll be asked for credentials into TeskaLabs Docker registry. Authorization to download the software is a critical step.
  • Check the node_id. It is the hostname of the server and it is resolvable to the IP address listed.

In the end of the Bootstrap process you should get 6 services running in 6 Docker containers:

  • ZooKeeper
  • ASAB Remote Control
  • ASAB Governator
  • ASAB Library
  • ASAB Config
  • Zoonavigator

Note

To see all running Docker containers, simply use:

docker ps

To see all installed Docker images, use:

docker images

Meet the model

In your browser, visit http://<node_id>:9001/zoonavigator. (Replace <node_id> with the actual node ID, the hostname of the server or the IP address.)

Go to /library/Site/model.yaml

The model will look similar to this one:

/library/Site/model.yaml
define:
  type: rc/model

services:
  zoonavigator:
    instances: {1: {node: "<node_id>"} }

params:
  PUBLIC_URL: "https://localhost"  # change this default to custom domain

applications:
  - name: "ASAB Maestro"
    version: v24.13

Adding new service to the deployment is as easy as adding two lines into the yaml file. Try to add one instance of Mongo service.

/library/Site/model.yaml
define:
  type: rc/model

services:
  zoonavigator:
    instances: {1: {node: "<node_id>"} }
  mongo:
    - <node_id>

params:
  PUBLIC_URL: "https://localhost"  # change this default to custom domain

applications:
  - name: "ASAB Maestro"
    version: v24.13

When you are happy with the model. You need to apply the model to the deployment. Like that you'll "synchronize the model with the reality".

ASAB Remote Control service is responsible for applying the model. You can use the ASAB Remote Control API to apply changes.

curl -X 'POST' 'http://<node_id>:8891/node/<node_id>' -H 'Content-Type: application/json' -d '{"command": "up"}'

You will see asab-governator-up container started. This container will install mongo for you and will be removed when finished.

Install WebUI

The dependecies for LogMan.io WebUI are:

  • nginx
  • seacat-auth

Extend the model:

/library/Site/model.yaml
define:
  type: rc/model

services:
  zoonavigator:
    instances: {1: {node: "<node_id>"} }
  mongo: 
    - <node_id>
  seacat-auth:
    - <node_id>
  nginx: 
    - <node_id>

params:
  PUBLIC_URL: "https://<node_id>"

applications:
  - name: "ASAB Maestro"
    version: v24.13

webapps:
  /: LogMan.io WebUI
  /auth: SeaCat Auth WebUI

In section webapps, specify web applications and locations where they should be accessible. You'll need both LogMan.io and SeaCat Auth web applications.

webapps:
  /: LogMan.io WebUI
  /auth: SeaCat Auth WebUI

Remember to specify public URL. You can use hostname (node ID) in case you don't have any domain prepared.

params:
  PUBLIC_URL: "https://<node_id>"

Finally, apply the model:

curl -X 'POST' 'http://<node_id>:8891/node/<node_id>' -H 'Content-Type: application/json' -d '{"command": "up"}'

Access WebUI

The LogMan.io WebUI is now accessible from the Public URL set in the model. Ask for the default login credentials.

Set LMIO Common Library and SMTP

In the UI, go to Maintenance > Configuration. To proceed with installation of LogMan.io services, enter distribution point of the LogMan.io Common Library and set it as the second layer of the Library.

libsreg+https://libsreg.z6.web.core.windows.net,libsreg-secondary.z6.web.core.windows.net/lmio-common-library

Configure SMTP server. It is crucial when creating new credentials and allowing people to access LogMan.io WebUI.

To propagate both of these configurations to all the services, apply the changes again.

curl -X 'POST' 'http://<node_id>:8891/node/<node_id>' -H 'Content-Type: application/json' -d '{"command": "up"}'

Now you can create user credentials and suspend the default admin.

Install 3rd party services

Extend the model to install all 3rd party services required in the LogMan.io applications.

Elasticsearch can be very demanding in memory allocation. Set how much memory to allocate to Elasticsearch if needed. Default is 2GB for master node and 28GB for each data node.

/library/Site/model.yaml
define:
  type: rc/model

services:
  zoonavigator:
    instances: {1: {node: "<node_id>"} }
  mongo: 
    - <node_id>
  seacat-auth:
    - <node_id>
  nginx: 
    - <node_id>
  influxdb:
    - <node_id>
  grafana:
    - <node_id>
  telegraf:
    - <node_id>
  jupyter:
    - <node_id>
  kafka:
   - <node_id>
  kafdrop:
    - <node_id>
  kibana:
    - <node_id>
  elasticsearch:
    instances:
      master-1:
        node: <node_id>
      hot-1:
        node: <node_id>
        descriptor:
          environment:
            ES_JAVA_OPTS: "-Xms2g -Xmx2g"
      warm-1:
        node: <node_id>
        descriptor:
          environment:
            ES_JAVA_OPTS: "-Xms2g -Xmx2g"
      cold-1:
        node: <node_id>
        descriptor:
          environment:
            ES_JAVA_OPTS: "-Xms2g -Xmx2g"


params:
  PUBLIC_URL: "https://<node_id>"

applications:
  - name: "ASAB Maestro"
    version: v24.13
  - name: "LogMan.io"
    version: v24.13

webapps:
  /: LogMan.io WebUI
  /auth: SeaCat Auth WebUI

Apply the changes!

curl -X 'POST' 'http://<node_id>:8891/node/<node_id>' -H 'Content-Type: application/json' -d '{"command": "up"}'

Install ASAB and LogMan.io services

To enable descriptors from the LogMan.io application (stored in LogMan.io Common Library) you need to specify the application and its global version in the model. Also, add more services to the model.

/library/Site/model.yaml
define:
  type: rc/model

services:
  zoonavigator:
    instances: {1: {node: "<node_id>"} }
  mongo: 
    - <node_id>
  seacat-auth:
    - <node_id>
  nginx: 
    - <node_id>
  influxdb:
    - <node_id>
  grafana:
    - <node_id>
  telegraf:
    - <node_id>
  jupyter:
    - <node_id>
  kafka:
    - <node_id>
  kafdrop:
    - <node_id>
  kibana:
    - <node_id>
  elasticsearch:
    instances:
      master-1:
        node: <node_id>
      hot-1:
        node: <node_id>
        descriptor:
          environment:
            ES_JAVA_OPTS: "-Xms2g -Xmx2g"
      warm-1:
        node: <node_id>
        descriptor:
          environment:
            ES_JAVA_OPTS: "-Xms2g -Xmx2g"
      cold-1:
        node: <node_id>
        descriptor:
          environment:
            ES_JAVA_OPTS: "-Xms2g -Xmx2g"

  asab-pyppeteer:
    - <node_id>
  bs-query:
    - <node_id>
  asab-iris:
    - <node_id>
  lmio-installer:
    - <node_id>
  lmio-receiver:
    - <node_id>
  lmio-depositor:
    - <node_id>
  lmio-elman:
    - <node_id>
  lmio-alerts:
    - <node_id>

params:
  PUBLIC_URL: "https://<node_id>"

applications:
  - name: "ASAB Maestro"
    version: v24.13
  - name: "LogMan.io"
    version: v24.13

webapps:
  /: LogMan.io WebUI
  /auth: SeaCat Auth WebUI

Apply the changes!

curl -X 'POST' 'http://<node_id>:8891/node/<node_id>' -H 'Content-Type: application/json' -d '{"command": "up"}'

⭐ ⭐ Congratulations! TeskaLabs LogMan.io is installed! ⭐ ⭐

You can continue your installation by adding a new tenant and connecting log sources. See how to connect a log simulator.