diff --git a/CHANGES.md b/CHANGES.md index ea93875372a943348a01e8329dc795749c3d2450..6aa69e0766b413f7ff727842f859fac37bf2eb67 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -55,6 +55,7 @@ Release Notes. * Support `native-json` format log in kafka-fetcher-plugin. * Fix counter misuse in the alarm core. Alarm can't be triggered in time. * Events can be configured as alarm source. +* Make the number of core worker in meter converter thread pool configurable. #### UI * Add logo for kong plugin. diff --git a/docs/en/setup/backend/configuration-vocabulary.md b/docs/en/setup/backend/configuration-vocabulary.md index e960405b2065dcab6f01055f78c7333e1657919d..f5f25664d8360b58f2ae3081a116528757433e3e 100644 --- a/docs/en/setup/backend/configuration-vocabulary.md +++ b/docs/en/setup/backend/configuration-vocabulary.md @@ -210,6 +210,8 @@ core|default|role|Option values, `Mixed/Receiver/Aggregator`. **Receiver** mode | - | - | maxMessageSize | Sets the maximum message size allowed to be received on the server. Empty means 4 MiB | - | 4M(based on Netty) | | prometheus-fetcher | default | Read [fetcher doc](backend-fetcher.md) for more details | - | - | | - | - | active | Activate the Prometheus fetcher. | SW_PROMETHEUS_FETCHER_ACTIVE | false | +| - | - | enabledRules | Enable rules. | SW_PROMETHEUS_FETCHER_ENABLED_RULES | self | +| - | - | maxConvertWorker | The maximize meter convert worker. | SW_PROMETHEUS_FETCHER_NUM_CONVERT_WORKER | -1(by default, half the number of CPU core(s)) | | kafka-fetcher | default | Read [fetcher doc](backend-fetcher.md) for more details | - | - | | - | - | bootstrapServers | A list of host/port pairs to use for establishing the initial connection to the Kafka cluster. | SW_KAFKA_FETCHER_SERVERS | localhost:9092 | | - | - | namespace | namespace aims to isolate multi OAP cluster when using the same Kafka cluster.if you set a namespace for Kafka fetcher, OAP will add a prefix to topic name. you should also set namespace in `agent.config`, the property named| SW_NAMESPACE | - | diff --git a/oap-server/server-bootstrap/src/main/resources/application.yml b/oap-server/server-bootstrap/src/main/resources/application.yml index 4692a2d1981242f585a4337a90e0acdb1d259796..4ac82ea4d408ff9862ce7dc2a561f19ffed841b2 100755 --- a/oap-server/server-bootstrap/src/main/resources/application.yml +++ b/oap-server/server-bootstrap/src/main/resources/application.yml @@ -337,7 +337,9 @@ envoy-metric: prometheus-fetcher: selector: ${SW_PROMETHEUS_FETCHER:-} default: + active: ${SW_PROMETHEUS_FETCHER_ACTIVE:false} enabledRules: ${SW_PROMETHEUS_FETCHER_ENABLED_RULES:"self"} + maxConvertWorker: ${SW_PROMETHEUS_FETCHER_NUM_CONVERT_WORKER:-1} kafka-fetcher: selector: ${SW_KAFKA_FETCHER:-} diff --git a/oap-server/server-fetcher-plugin/prometheus-fetcher-plugin/src/main/java/org/apache/skywalking/oap/server/fetcher/prometheus/provider/PrometheusFetcherConfig.java b/oap-server/server-fetcher-plugin/prometheus-fetcher-plugin/src/main/java/org/apache/skywalking/oap/server/fetcher/prometheus/provider/PrometheusFetcherConfig.java index 399b81fbfe7f0c64ba959be8aca92b62ef875472..136ac5ee32f07f2f3bceea6e8a9f9d30d850fd0a 100644 --- a/oap-server/server-fetcher-plugin/prometheus-fetcher-plugin/src/main/java/org/apache/skywalking/oap/server/fetcher/prometheus/provider/PrometheusFetcherConfig.java +++ b/oap-server/server-fetcher-plugin/prometheus-fetcher-plugin/src/main/java/org/apache/skywalking/oap/server/fetcher/prometheus/provider/PrometheusFetcherConfig.java @@ -28,15 +28,21 @@ import org.apache.skywalking.oap.server.library.module.ModuleConfig; @Getter public class PrometheusFetcherConfig extends ModuleConfig { + + private int maxConvertWorker; + private String enabledRules; private final String rulePath = "fetcher-prom-rules"; List getEnabledRules() { - return Arrays.stream(Optional.ofNullable(enabledRules).orElse("").toString() - .split(",")) + return Arrays.stream(Optional.ofNullable(enabledRules).orElse("").split(",")) .map(String::trim) .filter(StringUtil::isNotEmpty) .collect(Collectors.toList()); } + + public int getMaxConvertWorker() { + return maxConvertWorker <= 0 ? Math.max(1, Runtime.getRuntime().availableProcessors() / 2) : maxConvertWorker; + } } diff --git a/oap-server/server-fetcher-plugin/prometheus-fetcher-plugin/src/main/java/org/apache/skywalking/oap/server/fetcher/prometheus/provider/PrometheusFetcherProvider.java b/oap-server/server-fetcher-plugin/prometheus-fetcher-plugin/src/main/java/org/apache/skywalking/oap/server/fetcher/prometheus/provider/PrometheusFetcherProvider.java index 81181225578f2b7627d58c2ea2a4cf2ebc08568e..2549f139098db2917a27168973f63598f65a3c0b 100644 --- a/oap-server/server-fetcher-plugin/prometheus-fetcher-plugin/src/main/java/org/apache/skywalking/oap/server/fetcher/prometheus/provider/PrometheusFetcherProvider.java +++ b/oap-server/server-fetcher-plugin/prometheus-fetcher-plugin/src/main/java/org/apache/skywalking/oap/server/fetcher/prometheus/provider/PrometheusFetcherProvider.java @@ -48,6 +48,7 @@ import org.apache.skywalking.oap.server.library.module.ModuleDefine; import org.apache.skywalking.oap.server.library.module.ModuleProvider; import org.apache.skywalking.oap.server.library.module.ModuleStartException; import org.apache.skywalking.oap.server.library.module.ServiceNotProvidedException; +import org.apache.skywalking.oap.server.library.server.pool.CustomThreadFactory; import org.apache.skywalking.oap.server.library.util.prometheus.Parser; import org.apache.skywalking.oap.server.library.util.prometheus.Parsers; import org.apache.skywalking.oap.server.library.util.prometheus.metrics.Metric; @@ -93,7 +94,10 @@ public class PrometheusFetcherProvider extends ModuleProvider { @Override public void prepare() throws ServiceNotProvidedException, ModuleStartException { rules = Rules.loadRules(config.getRulePath(), config.getEnabledRules()); - ses = Executors.newScheduledThreadPool(rules.size(), Executors.defaultThreadFactory()); + ses = Executors.newScheduledThreadPool( + Math.min(rules.size(), config.getMaxConvertWorker()), + new CustomThreadFactory("meter-converter") + ); } @Override