Skip to content

Cluster Configuration

It stores custom configuration options specific to the deployment and very often common for multiple services in the cluster.

ASAB Config

The ASAB Config microservice is probably the smallest microservice in the LogMan.io ecosystem, although this does not lessen its importance. It provides REST API to the content of the cluster configuration, mainly used by the Web UI.

The configuration is accessible and editable from the Web UI.

Cluster Configuration UI

Oragnization of cluster configuration

Cluster configuration is organized by configuration types. Each type (e.g. Discover, Tenants) provides JSON schema describing the nature of the configuration files.

Each configuration file has to match with JSON schema of its type.

/asab/config ZooKeeper node structure:

- /asab/config/
  - Discover/
    - lmio-system-events.json
    - lmio-system-others.json
  - Tenants/
    - system.json

Example of asab/config/Tenants JSON schema:

{
    "$id": "Tenants schema",
    "type": "object",
    "title": "Tenants",
    "description": "Configure tenant data",
    "default": {},
    "examples": [
        {
            "General": {
                "schema": "/Schemas/ECS.yaml",
                "timezone": "Europe/Prague"
            }
        }
    ],
    "required": [],
    "properties": {
        "General": {
            "type": "object",
            "title": "General tenant configuration",
            "description": "Tenant-specific data",
            "default": {},
            "required": [
                "schema",
                "timezone"
            ],
            "properties": {
                "schema": {
                    "type": "string",
                    "title": "Schema",
                    "description": "Absolute path to schema in the Library",
                    "default": [
                        "/Schemas/ECS.yaml",
                        "/Schemas/CEF.yaml"
                    ],
                    "$defs": {
                        "select": {
                            "type": "select"
                        }
                    },
                    "examples": [
                        "/Schemas/ECS.yaml"
                    ]
                },
                "timezone": {
                    "type": "string",
                    "title": "Timezone",
                    "description": "Timezone identifier, e.g. Europe/Prague",
                    "default": "",
                    "examples": [
                        "Europe/Prague"
                    ]
                }
            }
        }
    },
    "additionalProperties": false
}

Example of /asab/config/Tenants/system.json:

{
    "General": {
        "schema": "/Schemas/ECS.yaml",
        "timezone": "Europe/Prague"
    }
}