Skip to content
Toparvion edited this page Jan 17, 2019 · 4 revisions

v0.11 - Java 11 & Container logs support

Description

This AnaLog release focuses on the following goals:

  • Support fetching of logs from Docker containers and Kubernetes resources (#15).
  • Refine configuration model to eliminate inconsistency.
  • Fix certain bugs with log watching (tracking) logic.
  • Upgrade underlying tool stack.

This document briefly describes the external changes brought by achievement of these goals.

Base changes

  • From this version on AnaLog bases on Java 11 and thus requires appropriate runtime to work.

Configuration changes

General notes

Log choices have been separated from the rest configuration and now reside in a separate file. This is the first (preparation) step to support choices hot reload scheduled for future releases. By default the new file must be called choices.yaml and must reside in the same directory as primary config file application.yaml, but this can be changed in the startup script.

Nodes configuration changes

clusterNodes config section has been renamed to nodes and divided into two subsections: for this and others nodes. As a result, you don't need to specify myself flag anymore as it became clear which node is current one. Neither serverPort nor agentPort values are required for others nodes - if either is omitted, then corresponding value of this node will be used. Also note that this node section must not contain neither host nor serverPort properties as they are already defined in Spring Boot's built-in server.* section.

For example, instead of:

clusterNodes:
  - name: primary
    host: mycompany.com
    agentPort: 7801
    myself: true
  - name: backup-node
    host: backup.mycompany.com
    agentPort: 7801

you should now write:

clusterNodes:               # clusterNodes -> nodes
  - name: primary
    agentPort: 7801
  - name: backup-node
    host: backup.mycompany.com
    agentPort: 7801

Choices configuration changes

  • pathBase field has been renamed to localPlainLogsBase and applies to current group's local plain logs only, i.e. logs whose paths point to files on current node's file system.
  • Path for any log can now contain custom prefix such as docker://, k8s://, node://, composite://. As a result, there is no need to explicitly specify node for a log as it can be extracted from the path. As an additional result, plain logs can now point to any remote log target, including Docker and Kubernetes. At the same time ordinary absolute paths (like /home/me/logs/app.log) are still supported.
  • Composite logs section must not contain path, node and timestamp fields for "main" log anymore. Instead, all the logs comprising the composite log must be declared in includes section of the composite log. As a result, there is no "main log" notion for composite logs since all its participants are on the same level.
  • URI reference to composite logs doesn't consist of its main log's path but either by manually specified uriName field or by automatically computed hashcode. For example, instead of http://analog:8080/#/path/to/main.log you can now write http://analog:8080/#/composite://my-composite or http://analog:8080/#/composite://4F8ADC2F901.
  • scanDir section has been removed. Now you can specify multiple directories to scan within the same group by means of new scanLocations/directories section. More location types to come soon.
  • Plain logs format has been changed. Instead of one string they must be described on separate lines, e.g. instead of
plainLogs:
  - /home/me/app.log as "Main log of group $g" (selected)

it must be declared as:

plainLogs:
  - path: /home/me/app.log
    title: Main log of group $g
    selected: true

Only path field is required. By default title is $f - $g (i.e. file name, dash, group name) and selected flag is false.