blob: 1a8dccb9c8f6c6006bfdd1e294c91ad832996456 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package org.apache.skywalking.oap.server.storage.plugin.elasticsearch;
import lombok.Getter;
import lombok.Setter;
import org.apache.skywalking.oap.server.core.storage.annotation.ElasticSearch;
import org.apache.skywalking.oap.server.core.storage.annotation.SuperDataset;
import org.apache.skywalking.oap.server.library.module.ModuleConfig;
@Getter
@Setter
public class StorageModuleElasticsearchConfig extends ModuleConfig {
private String namespace;
private String clusterNodes;
String protocol = "http";
/**
* Connect timeout of ElasticSearch client.
*
* @since 8.7.0
*/
private int connectTimeout = 3000;
/**
* Socket timeout of ElasticSearch client.
*
* @since 8.7.0
*/
private int socketTimeout = 30000;
/**
* @since 9.0.0 the response timeout of ElasticSearch client (Armeria under the hood), set to 0 to disable response
* timeout.
*/
private int responseTimeout = 15000;
/**
* @since 6.4.0, the index of metrics and traces data in minute/hour/month precision are organized in days. ES
* storage creates new indexes in every day.
*
* @since 7.0.0 dayStep represents how many days a single one index represents. Default is 1, meaning no difference
* with previous versions. But if there isn't much traffic for single one day, user could set the step larger to
* reduce the number of indexes, and keep the TTL longer.
*/
private int dayStep = 1;
private int indexReplicasNumber = 0;
private int indexShardsNumber = 1;
/**
* @since 9.3.0, Specify the settings for each index individually.
* Use JSON format and the index name in the config should exclude the `${SW_NAMESPACE}` e.g.
* {"metrics-all":{"number_of_shards":"3","number_of_replicas":"2"},"segment":{"number_of_shards":"6","number_of_replicas":"1"}}
* If configured, this setting has the highest priority and overrides the generic settings.
*/
private String specificIndexSettings;
/**
* @since 8.2.0, the record day step is for super size dataset record index rolling when the value of it is greater
* than 0
*/
private int superDatasetDayStep = -1;
/**
* @see SuperDataset
* @since 8.2.0, the replicas number is for super size dataset record replicas number
*/
private int superDatasetIndexReplicasNumber = 0;
private int superDatasetIndexShardsFactor = 5;
private int indexRefreshInterval = 2;
/**
* @since 8.7.0 The order of index template.
*/
private int indexTemplateOrder = 0;
/**
* @since 8.7.0 This setting affects all traces/logs/metrics/metadata flush policy.
*/
private int bulkActions = 5000;
/**
* Period of flush, no matter `bulkActions` reached or not.
* Unit is second.
*/
private int flushInterval = 15;
private int concurrentRequests = 2;
/**
* @since 7.0.0 This could be managed inside {@link #secretsManagementFile}
*/
private String user;
/**
* @since 7.0.0 This could be managed inside {@link #secretsManagementFile}
*/
private String password;
/**
* Secrets management file includes the username, password, which are managed by 3rd party tool.
*/
private String secretsManagementFile;
private String trustStorePath;
/**
* @since 7.0.0 This could be managed inside {@link #secretsManagementFile}
*/
private String trustStorePass;
private int resultWindowMaxSize = 10000;
private int metadataQueryMaxSize = 5000;
/**
* @since 9.0.0 The batch size that is used to scroll on the large results,
* if {@link #metadataQueryMaxSize} is larger than the maximum result window in
* ElasticSearch server, this can be used to retrieve all results.
*/
private int scrollingBatchSize = 5000;
private int segmentQueryMaxSize = 200;
private int profileTaskQueryMaxSize = 200;
/**
* The batch size that is used to scroll on the large eBPF profiling data result.
* The profiling data contains full-stack symbol data, which could make ElasticSearch response large content.
* {@link #scrollingBatchSize} would not be used in profiling data query.
*/
private int profileDataQueryBatchSize = 100;
/**
* The default analyzer for match query field. {@link ElasticSearch.MatchQuery.AnalyzerType#OAP_ANALYZER}
*
* @since 8.4.0
*/
private String oapAnalyzer = "{\"analyzer\":{\"oap_analyzer\":{\"type\":\"stop\"}}}";
/**
* The log analyzer for match query field. {@link ElasticSearch.MatchQuery.AnalyzerType#OAP_LOG_ANALYZER}
*
* @since 8.4.0
*/
private String oapLogAnalyzer = "{\"analyzer\":{\"oap_log_analyzer\":{\"type\":\"standard\"}}}";
private String advanced;
/**
* The number of threads for the underlying HTTP client to perform socket I/O.
* If the value is <= 0, the number of available processors will be used.
*/
private int numHttpClientThread;
/**
* If disabled, all metrics would be persistent in one physical index template, to reduce the number of physical indices.
* If enabled, shard metrics indices into multi-physical indices, one index template per metric/meter aggregation function.
*
* @since 9.2.0
*/
private boolean logicSharding = false;
}