aboutsummaryrefslogtreecommitdiffstats
path: root/metrics
diff options
context:
space:
mode:
authorgjoranv <gjoranv@gmail.com>2023-08-18 10:54:23 +0200
committergjoranv <gjoranv@gmail.com>2023-08-18 13:50:28 +0200
commit0e1b7684688e3a867f30dc1c5ebe901e0ca7b5b6 (patch)
treee64ae99f9873819779ed59ef8c64df149d84443c /metrics
parent0b99d97907db8567dc8a4fde354b737452916794 (diff)
Use builder to create DefaultMetrics
Diffstat (limited to 'metrics')
-rw-r--r--metrics/src/main/java/ai/vespa/metrics/set/DefaultMetrics.java228
1 files changed, 115 insertions, 113 deletions
diff --git a/metrics/src/main/java/ai/vespa/metrics/set/DefaultMetrics.java b/metrics/src/main/java/ai/vespa/metrics/set/DefaultMetrics.java
index 515b06de2d8..0a19b69c852 100644
--- a/metrics/src/main/java/ai/vespa/metrics/set/DefaultMetrics.java
+++ b/metrics/src/main/java/ai/vespa/metrics/set/DefaultMetrics.java
@@ -2,20 +2,16 @@
package ai.vespa.metrics.set;
+import ai.vespa.metrics.ClusterControllerMetrics;
import ai.vespa.metrics.ContainerMetrics;
-import ai.vespa.metrics.SearchNodeMetrics;
-import ai.vespa.metrics.StorageMetrics;
import ai.vespa.metrics.DistributorMetrics;
-import ai.vespa.metrics.ClusterControllerMetrics;
-import ai.vespa.metrics.SentinelMetrics;
import ai.vespa.metrics.NodeAdminMetrics;
-import ai.vespa.metrics.Suffix;
-import ai.vespa.metrics.VespaMetrics;
+import ai.vespa.metrics.SearchNodeMetrics;
+import ai.vespa.metrics.SentinelMetrics;
+import ai.vespa.metrics.StorageMetrics;
-import java.util.Collections;
import java.util.EnumSet;
-import java.util.LinkedHashSet;
-import java.util.Set;
+import java.util.List;
import static ai.vespa.metrics.Suffix.average;
import static ai.vespa.metrics.Suffix.count;
@@ -41,135 +37,141 @@ public class DefaultMetrics {
private static MetricSet createMetricSet() {
return new MetricSet(defaultMetricSetId,
- getAllMetrics(),
- Set.of(defaultVespaMetricSet));
+ List.of(),
+ List.of(defaultVespaMetricSet,
+ getContainerMetrics(),
+ getSearchChainMetrics(),
+ getDocprocMetrics(),
+ getSearchNodeMetrics(),
+ getContentMetrics(),
+ getStorageMetrics(),
+ getDistributorMetrics(),
+ getClusterControllerMetrics(),
+ getSentinelMetrics(),
+ getOtherMetrics()));
}
- private static Set<Metric> getAllMetrics() {
- Set<Metric> metrics = new LinkedHashSet<>();
-
- addContainerMetrics(metrics);
- addSearchChainMetrics(metrics);
- addDocprocMetrics(metrics);
- addSearchNodeMetrics(metrics);
- addContentMetrics(metrics);
- addStorageMetrics(metrics);
- addDistributorMetrics(metrics);
- addClusterControllerMetrics(metrics);
- addSentinelMetrics(metrics);
- addOtherMetrics(metrics);
- return Collections.unmodifiableSet(metrics);
+ private static MetricSet getContainerMetrics() {
+ return new MetricSet.Builder("default-container")
+ .metric(ContainerMetrics.HTTP_STATUS_1XX.rate())
+ .metric(ContainerMetrics.HTTP_STATUS_2XX.rate())
+ .metric(ContainerMetrics.HTTP_STATUS_3XX.rate())
+ .metric(ContainerMetrics.HTTP_STATUS_4XX.rate())
+ .metric(ContainerMetrics.HTTP_STATUS_5XX.rate())
+ .metric(ContainerMetrics.JDISC_GC_MS, EnumSet.of(max, average))
+ .metric(ContainerMetrics.MEM_HEAP_FREE.average())
+ .metric(ContainerMetrics.FEED_LATENCY, EnumSet.of(sum, count))
+ // .metric(ContainerMetrics.CPU.baseName()) // TODO: Add to container metrics
+ .metric(ContainerMetrics.JDISC_THREAD_POOL_SIZE.max())
+ .metric(ContainerMetrics.JDISC_THREAD_POOL_ACTIVE_THREADS, EnumSet.of(sum, count, min, max))
+ .metric(ContainerMetrics.JDISC_THREAD_POOL_WORK_QUEUE_CAPACITY.max())
+ .metric(ContainerMetrics.JDISC_THREAD_POOL_WORK_QUEUE_SIZE, EnumSet.of(sum, count, min, max))
+ .metric(ContainerMetrics.SERVER_ACTIVE_THREADS.average())
+
+ // Metrics needed for alerting
+ .metric(ContainerMetrics.JDISC_SINGLETON_IS_ACTIVE, EnumSet.of(max, last)) // TODO: Vespa 9: Remove last
+ .metric(ContainerMetrics.JDISC_HTTP_SSL_HANDSHAKE_FAILURE_MISSING_CLIENT_CERT.rate())
+ .metric(ContainerMetrics.JDISC_HTTP_SSL_HANDSHAKE_FAILURE_INCOMPATIBLE_PROTOCOLS.rate())
+ .metric(ContainerMetrics.JDISC_HTTP_SSL_HANDSHAKE_FAILURE_INCOMPATIBLE_CHIFERS.rate())
+ .metric(ContainerMetrics.JDISC_HTTP_SSL_HANDSHAKE_FAILURE_UNKNOWN.rate())
+ .metric(ContainerMetrics.JDISC_APPLICATION_FAILED_COMPONENT_GRAPHS.rate())
+ .metric(ContainerMetrics.ATHENZ_TENANT_CERT_EXPIRY_SECONDS, EnumSet.of(max, last)) // TODO: Vespa 9: Remove last
+ .build();
}
- private static void addContainerMetrics(Set<Metric> metrics) {
- addMetric(metrics, ContainerMetrics.HTTP_STATUS_1XX.rate());
- addMetric(metrics, ContainerMetrics.HTTP_STATUS_2XX.rate());
- addMetric(metrics, ContainerMetrics.HTTP_STATUS_3XX.rate());
- addMetric(metrics, ContainerMetrics.HTTP_STATUS_4XX.rate());
- addMetric(metrics, ContainerMetrics.HTTP_STATUS_5XX.rate());
- addMetric(metrics, ContainerMetrics.JDISC_GC_MS, EnumSet.of(max, average));
- addMetric(metrics, ContainerMetrics.MEM_HEAP_FREE.average());
- addMetric(metrics, ContainerMetrics.FEED_LATENCY, EnumSet.of(sum, count));
- // addMetric(metrics, ContainerMetrics.CPU.baseName()); // TODO: Add to container metrics
- addMetric(metrics, ContainerMetrics.JDISC_THREAD_POOL_SIZE.max());
- addMetric(metrics, ContainerMetrics.JDISC_THREAD_POOL_ACTIVE_THREADS, EnumSet.of(sum, count, min, max));
- addMetric(metrics, ContainerMetrics.JDISC_THREAD_POOL_WORK_QUEUE_CAPACITY.max());
- addMetric(metrics, ContainerMetrics.JDISC_THREAD_POOL_WORK_QUEUE_SIZE, EnumSet.of(sum, count, min, max));
- addMetric(metrics, ContainerMetrics.SERVER_ACTIVE_THREADS.average());
-
- // Metrics needed for alerting
- addMetric(metrics, ContainerMetrics.JDISC_SINGLETON_IS_ACTIVE, EnumSet.of(max, last)); // TODO: Vespa 9: Remove last
- addMetric(metrics, ContainerMetrics.JDISC_HTTP_SSL_HANDSHAKE_FAILURE_MISSING_CLIENT_CERT.rate());
- addMetric(metrics, ContainerMetrics.JDISC_HTTP_SSL_HANDSHAKE_FAILURE_INCOMPATIBLE_PROTOCOLS.rate());
- addMetric(metrics, ContainerMetrics.JDISC_HTTP_SSL_HANDSHAKE_FAILURE_INCOMPATIBLE_CHIFERS.rate());
- addMetric(metrics, ContainerMetrics.JDISC_HTTP_SSL_HANDSHAKE_FAILURE_UNKNOWN.rate());
- addMetric(metrics, ContainerMetrics.JDISC_APPLICATION_FAILED_COMPONENT_GRAPHS.rate());
- addMetric(metrics, ContainerMetrics.ATHENZ_TENANT_CERT_EXPIRY_SECONDS, EnumSet.of(max, last)); // TODO: Vespa 9: Remove last
- }
-
- private static void addSearchChainMetrics(Set<Metric> metrics) {
- addMetric(metrics, ContainerMetrics.QUERIES.rate());
- addMetric(metrics, ContainerMetrics.QUERY_LATENCY, EnumSet.of(sum, count, max, ninety_five_percentile, ninety_nine_percentile, average)); // TODO: Remove average with Vespa 9
- addMetric(metrics, ContainerMetrics.HITS_PER_QUERY, EnumSet.of(sum, count, max, average)); // TODO: Remove average with Vespa 9
- addMetric(metrics, ContainerMetrics.TOTAL_HITS_PER_QUERY, EnumSet.of(sum, count, max, average)); // TODO: Remove average with Vespa 9
- addMetric(metrics, ContainerMetrics.DEGRADED_QUERIES.rate());
- addMetric(metrics, ContainerMetrics.FAILED_QUERIES.rate());
+ private static MetricSet getSearchChainMetrics() {
+ return new MetricSet.Builder("default-search-chain")
+ .metric(ContainerMetrics.QUERIES.rate())
+ .metric(ContainerMetrics.QUERY_LATENCY, EnumSet.of(sum, count, max, ninety_five_percentile, ninety_nine_percentile, average)) // TODO: Remove average with Vespa 9
+ .metric(ContainerMetrics.HITS_PER_QUERY, EnumSet.of(sum, count, max, average)) // TODO: Remove average with Vespa 9
+ .metric(ContainerMetrics.TOTAL_HITS_PER_QUERY, EnumSet.of(sum, count, max, average)) // TODO: Remove average with Vespa 9
+ .metric(ContainerMetrics.DEGRADED_QUERIES.rate())
+ .metric(ContainerMetrics.FAILED_QUERIES.rate())
+ .build();
}
- private static void addDocprocMetrics(Set<Metric> metrics) {
- addMetric(metrics, ContainerMetrics.DOCPROC_DOCUMENTS.sum());
+ private static MetricSet getDocprocMetrics() {
+ return new MetricSet.Builder("default-docproc")
+ .metric(ContainerMetrics.DOCPROC_DOCUMENTS.sum())
+ .build();
}
- private static void addSearchNodeMetrics(Set<Metric> metrics) {
+ private static MetricSet getSearchNodeMetrics() {
// Metrics needed for alerting
- addMetric(metrics, SearchNodeMetrics.CONTENT_PROTON_RESOURCE_USAGE_DISK.average());
- addMetric(metrics, SearchNodeMetrics.CONTENT_PROTON_RESOURCE_USAGE_MEMORY.average());
- addMetric(metrics, SearchNodeMetrics.CONTENT_PROTON_RESOURCE_USAGE_FEEDING_BLOCKED, EnumSet.of(max, last)); // TODO: Vespa 9: Remove last
+ return new MetricSet.Builder("default-search-node")
+ .metric(SearchNodeMetrics.CONTENT_PROTON_RESOURCE_USAGE_DISK.average())
+ .metric(SearchNodeMetrics.CONTENT_PROTON_RESOURCE_USAGE_MEMORY.average())
+ .metric(SearchNodeMetrics.CONTENT_PROTON_RESOURCE_USAGE_FEEDING_BLOCKED, EnumSet.of(max, last)) // TODO: Vespa 9: Remove last
+ .build();
}
- private static void addContentMetrics(Set<Metric> metrics) {
- addMetric(metrics, SearchNodeMetrics.CONTENT_PROTON_SEARCH_PROTOCOL_DOCSUM_REQUESTED_DOCUMENTS.rate());
- addMetric(metrics, SearchNodeMetrics.CONTENT_PROTON_SEARCH_PROTOCOL_DOCSUM_LATENCY, EnumSet.of(sum, count, max, average)); // TODO: Remove average with Vespa 9
- addMetric(metrics, SearchNodeMetrics.CONTENT_PROTON_SEARCH_PROTOCOL_QUERY_LATENCY, EnumSet.of(sum, count, max, average)); // TODO: Remove average with Vespa 9
-
- addMetric(metrics, SearchNodeMetrics.CONTENT_PROTON_DOCUMENTDB_DOCUMENTS_TOTAL, EnumSet.of(max,last)); // TODO: Vespa 9: Remove last
- addMetric(metrics, SearchNodeMetrics.CONTENT_PROTON_DOCUMENTDB_DOCUMENTS_READY, EnumSet.of(max,last)); // TODO: Vespa 9: Remove last
- addMetric(metrics, SearchNodeMetrics.CONTENT_PROTON_DOCUMENTDB_DOCUMENTS_ACTIVE, EnumSet.of(max,last)); // TODO: Vespa 9: Remove last
- addMetric(metrics, SearchNodeMetrics.CONTENT_PROTON_DOCUMENTDB_DISK_USAGE.last());
- addMetric(metrics, SearchNodeMetrics.CONTENT_PROTON_DOCUMENTDB_MEMORY_USAGE_ALLOCATED_BYTES.last());
-
- addMetric(metrics, SearchNodeMetrics.CONTENT_PROTON_RESOURCE_USAGE_DISK.average());
- addMetric(metrics, SearchNodeMetrics.CONTENT_PROTON_RESOURCE_USAGE_MEMORY.average());
-
- addMetric(metrics, SearchNodeMetrics.CONTENT_PROTON_DOCUMENTDB_MATCHING_DOCS_MATCHED.rate());
- addMetric(metrics, SearchNodeMetrics.CONTENT_PROTON_DOCUMENTDB_MATCHING_DOCS_RERANKED.rate());
- addMetric(metrics, SearchNodeMetrics.CONTENT_PROTON_DOCUMENTDB_MATCHING_RANK_PROFILE_QUERY_SETUP_TIME, EnumSet.of(sum, count, max, average)); // TODO: Remove average with Vespa 9
- addMetric(metrics, SearchNodeMetrics.CONTENT_PROTON_DOCUMENTDB_MATCHING_RANK_PROFILE_QUERY_LATENCY, EnumSet.of(sum, count, max, average)); // TODO: Remove average with Vespa 9
- addMetric(metrics, SearchNodeMetrics.CONTENT_PROTON_DOCUMENTDB_MATCHING_RANK_PROFILE_RERANK_TIME, EnumSet.of(sum, count, max, average)); // TODO: Remove average with Vespa 9
- addMetric(metrics, SearchNodeMetrics.CONTENT_PROTON_TRANSACTIONLOG_DISK_USAGE.last());
+ private static MetricSet getContentMetrics() {
+ return new MetricSet.Builder("default-content")
+ .metric(SearchNodeMetrics.CONTENT_PROTON_SEARCH_PROTOCOL_DOCSUM_REQUESTED_DOCUMENTS.rate())
+ .metric(SearchNodeMetrics.CONTENT_PROTON_SEARCH_PROTOCOL_DOCSUM_LATENCY, EnumSet.of(sum, count, max, average)) // TODO: Remove average with Vespa 9
+ .metric(SearchNodeMetrics.CONTENT_PROTON_SEARCH_PROTOCOL_QUERY_LATENCY, EnumSet.of(sum, count, max, average)) // TODO: Remove average with Vespa 9
+
+ .metric(SearchNodeMetrics.CONTENT_PROTON_DOCUMENTDB_DOCUMENTS_TOTAL, EnumSet.of(max,last)) // TODO: Vespa 9: Remove last
+ .metric(SearchNodeMetrics.CONTENT_PROTON_DOCUMENTDB_DOCUMENTS_READY, EnumSet.of(max,last)) // TODO: Vespa 9: Remove last
+ .metric(SearchNodeMetrics.CONTENT_PROTON_DOCUMENTDB_DOCUMENTS_ACTIVE, EnumSet.of(max,last)) // TODO: Vespa 9: Remove last
+ .metric(SearchNodeMetrics.CONTENT_PROTON_DOCUMENTDB_DISK_USAGE.last())
+ .metric(SearchNodeMetrics.CONTENT_PROTON_DOCUMENTDB_MEMORY_USAGE_ALLOCATED_BYTES.last())
+
+ .metric(SearchNodeMetrics.CONTENT_PROTON_RESOURCE_USAGE_DISK.average())
+ .metric(SearchNodeMetrics.CONTENT_PROTON_RESOURCE_USAGE_MEMORY.average())
+
+ .metric(SearchNodeMetrics.CONTENT_PROTON_DOCUMENTDB_MATCHING_DOCS_MATCHED.rate())
+ .metric(SearchNodeMetrics.CONTENT_PROTON_DOCUMENTDB_MATCHING_DOCS_RERANKED.rate())
+ .metric(SearchNodeMetrics.CONTENT_PROTON_DOCUMENTDB_MATCHING_RANK_PROFILE_QUERY_SETUP_TIME, EnumSet.of(sum, count, max, average)) // TODO: Remove average with Vespa 9
+ .metric(SearchNodeMetrics.CONTENT_PROTON_DOCUMENTDB_MATCHING_RANK_PROFILE_QUERY_LATENCY, EnumSet.of(sum, count, max, average)) // TODO: Remove average with Vespa 9
+ .metric(SearchNodeMetrics.CONTENT_PROTON_DOCUMENTDB_MATCHING_RANK_PROFILE_RERANK_TIME, EnumSet.of(sum, count, max, average)) // TODO: Remove average with Vespa 9
+ .metric(SearchNodeMetrics.CONTENT_PROTON_TRANSACTIONLOG_DISK_USAGE.last())
+ .build();
}
- private static void addStorageMetrics(Set<Metric> metrics) {
- addMetric(metrics, StorageMetrics.VDS_FILESTOR_ALLTHREADS_PUT_COUNT.rate());
- addMetric(metrics, StorageMetrics.VDS_FILESTOR_ALLTHREADS_UPDATE_COUNT.rate());
- addMetric(metrics, StorageMetrics.VDS_FILESTOR_ALLTHREADS_REMOVE_COUNT.rate());
+ private static MetricSet getStorageMetrics() {
+ return new MetricSet.Builder("default-storage")
+ .metric(StorageMetrics.VDS_FILESTOR_ALLTHREADS_PUT_COUNT.rate())
+ .metric(StorageMetrics.VDS_FILESTOR_ALLTHREADS_UPDATE_COUNT.rate())
+ .metric(StorageMetrics.VDS_FILESTOR_ALLTHREADS_REMOVE_COUNT.rate())
+ .build();
}
- private static void addDistributorMetrics(Set<Metric> metrics) {
- addMetric(metrics, DistributorMetrics.VDS_DISTRIBUTOR_DOCSSTORED.average());
+ private static MetricSet getDistributorMetrics() {
+ return new MetricSet.Builder("default-distributor")
+ .metric(DistributorMetrics.VDS_DISTRIBUTOR_DOCSSTORED.average())
- // Metrics needed for alerting
- addMetric(metrics, DistributorMetrics.VDS_BOUNCER_CLOCK_SKEW_ABORTS.count());
+ // Metrics needed for alerting
+ .metric(DistributorMetrics.VDS_BOUNCER_CLOCK_SKEW_ABORTS.count())
+ .build();
}
- private static void addClusterControllerMetrics(Set<Metric> metrics) {
+ private static MetricSet getClusterControllerMetrics() {
// Metrics needed for alerting
- addMetric(metrics, ClusterControllerMetrics.DOWN_COUNT, EnumSet.of(max, last)); // TODO: Vespa 9: Remove last
- addMetric(metrics, ClusterControllerMetrics.MAINTENANCE_COUNT, EnumSet.of(max, last)); // TODO: Vespa 9: Remove last
- addMetric(metrics, ClusterControllerMetrics.UP_COUNT.last());
- addMetric(metrics, ClusterControllerMetrics.IS_MASTER, EnumSet.of(max, last)); // TODO: Vespa 9: Remove last
- addMetric(metrics, ClusterControllerMetrics.RESOURCE_USAGE_NODES_ABOVE_LIMIT, EnumSet.of(max, last)); // TODO: Vespa 9: Remove last
- addMetric(metrics, ClusterControllerMetrics.RESOURCE_USAGE_MAX_MEMORY_UTILIZATION, EnumSet.of(last, max)); // TODO: Vespa 9: Remove last
- addMetric(metrics, ClusterControllerMetrics.RESOURCE_USAGE_MAX_DISK_UTILIZATION, EnumSet.of(last, max)); // TODO: Vespa 9: Remove last
+ return new MetricSet.Builder("default-cluster-controller")
+ .metric(ClusterControllerMetrics.DOWN_COUNT, EnumSet.of(max, last)) // TODO: Vespa 9: Remove last
+ .metric(ClusterControllerMetrics.MAINTENANCE_COUNT, EnumSet.of(max, last)) // TODO: Vespa 9: Remove last
+ .metric(ClusterControllerMetrics.UP_COUNT.last())
+ .metric(ClusterControllerMetrics.IS_MASTER, EnumSet.of(max, last)) // TODO: Vespa 9: Remove last
+ .metric(ClusterControllerMetrics.RESOURCE_USAGE_NODES_ABOVE_LIMIT, EnumSet.of(max, last)) // TODO: Vespa 9: Remove last
+ .metric(ClusterControllerMetrics.RESOURCE_USAGE_MAX_MEMORY_UTILIZATION, EnumSet.of(last, max)) // TODO: Vespa 9: Remove last
+ .metric(ClusterControllerMetrics.RESOURCE_USAGE_MAX_DISK_UTILIZATION, EnumSet.of(last, max)) // TODO: Vespa 9: Remove last
+ .build();
}
- private static void addSentinelMetrics(Set<Metric> metrics) {
+ private static MetricSet getSentinelMetrics() {
// Metrics needed for alerting
- addMetric(metrics, SentinelMetrics.SENTINEL_TOTAL_RESTARTS, EnumSet.of(max, sum, last)); // TODO: Vespa 9: Remove last, sum?
+ return new MetricSet.Builder("default-sentinel")
+ .metric(SentinelMetrics.SENTINEL_TOTAL_RESTARTS, EnumSet.of(max, sum, last)) // TODO: Vespa 9: Remove last, sum?
+ .build();
}
- private static void addOtherMetrics(Set<Metric> metrics) {
+ private static MetricSet getOtherMetrics() {
// Metrics needed for alerting
- addMetric(metrics, NodeAdminMetrics.ENDPOINT_CERTIFICATE_EXPIRY_SECONDS.baseName());
- addMetric(metrics, NodeAdminMetrics.NODE_CERTIFICATE_EXPIRY_SECONDS.baseName());
- }
-
- private static void addMetric(Set<Metric> metrics, String nameWithSuffix) {
- metrics.add(new Metric(nameWithSuffix));
- }
-
- private static void addMetric(Set<Metric> metrics, VespaMetrics metric, EnumSet<Suffix> suffixes) {
- suffixes.forEach(suffix -> metrics.add(new Metric(metric.baseName() + "." + suffix.suffix())));
+ return new MetricSet.Builder("default-other")
+ .metric(NodeAdminMetrics.ENDPOINT_CERTIFICATE_EXPIRY_SECONDS.baseName())
+ .metric(NodeAdminMetrics.NODE_CERTIFICATE_EXPIRY_SECONDS.baseName())
+ .build();
}
private DefaultMetrics() { }