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:
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.
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:
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.
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.
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.