aboutsummaryrefslogtreecommitdiffstats
path: root/metrics/src/main/java/ai/vespa/metrics/docs/DocumentationGenerator.java
blob: 9d63d4af15912cb7ce2598c4a850e84ade3f7ffa (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package ai.vespa.metrics.docs;

import ai.vespa.metrics.ClusterControllerMetrics;
import ai.vespa.metrics.ConfigServerMetrics;
import ai.vespa.metrics.ContainerMetrics;
import ai.vespa.metrics.DistributorMetrics;
import ai.vespa.metrics.LogdMetrics;
import ai.vespa.metrics.NodeAdminMetrics;
import ai.vespa.metrics.SearchNodeMetrics;
import ai.vespa.metrics.SentinelMetrics;
import ai.vespa.metrics.SlobrokMetrics;
import ai.vespa.metrics.StorageMetrics;
import ai.vespa.metrics.Unit;
import ai.vespa.metrics.VespaMetrics;
import ai.vespa.metrics.set.DefaultMetrics;
import ai.vespa.metrics.set.MetricSet;
import ai.vespa.metrics.set.VespaMetricSet;

import java.util.Map;
import static ai.vespa.metrics.docs.MetricDocumentation.writeMetricDocumentation;
import static ai.vespa.metrics.docs.MetricSetDocumentation.writeMetricSetDocumentation;

/**
 * @author olaa
 *
 * Helper class to generate metric reference documentation for docs.vespa.ai
 */
public class DocumentationGenerator {

    public static void main(String[] args) {

        if (args.length != 1) {
            throw new IllegalArgumentException("Expected exactly one argument: directory to write to");
        }
        var path = args[0];

        var metrics = getMetrics();
        metrics.forEach((metricType, metricArray) -> writeMetricDocumentation(path, metricArray, metricType));

        var metricSets = getMetricSets();
        metricSets.forEach((name, metricSet) -> writeMetricSetDocumentation(path, name, metricSet, metrics));

        UnitDocumentation.writeUnitDocumentation(path, Unit.values());
    }

    private static Map<String, VespaMetrics[]> getMetrics() {
        return Map.of(
                "Container", ContainerMetrics.values(),
                "SearchNode", SearchNodeMetrics.values(),
                "Storage", StorageMetrics.values(),
                "Distributor", DistributorMetrics.values(),
                "ConfigServer", ConfigServerMetrics.values(),
                "Logd", LogdMetrics.values(),
                "NodeAdmin", NodeAdminMetrics.values(),
                "Slobrok", SlobrokMetrics.values(),
                "Sentinel", SentinelMetrics.values(),
                "ClusterController", ClusterControllerMetrics.values()
        );
    }

    private static Map<String, MetricSet> getMetricSets() {
        return Map.of("Vespa", VespaMetricSet.vespaMetricSet,
                "Default", DefaultMetrics.defaultMetricSet);
    }
}