设置Elasticsearch之配置elasticsearch

裴英才
2023-12-01

设置Elasticsearch

本节包括如何设置Elasticsearch并使其运行的信息,包括:

下载

安装

开始

配置

支持的平台上

这里提供了官方支持的操作系统和jvm的矩阵:Support matrix。Elasticsearch在列出的平台上进行了测试,但也有可能在其他平台上运行。

Java (JVM)版本

Elasticsearch使用Java构建,并在每个发行版中包含JDK维护者(GPLv2+CE)提供的OpenJDK捆绑版本。绑定的JVM是推荐的JVM,位于Elasticsearch主目录的jdk目录中。

要使用您自己的Java版本,请设置JAVA_HOME环境变量。如果您必须使用不同于捆绑JVM的Java版本,我们建议使用受支持的Java LTS版本。如果使用未知不可用的Java版本,Elasticsearch将拒绝启动。使用你自己的JVM时,可能会删除绑定的JVM目录。

安装Elasticsearch

主持Elasticsearch

您可以在自己的硬件上运行Elasticsearch,或者在Elastic Cloud上使用我们托管的Elasticsearch服务。Elasticsearch服务可以在AWS和GCP上使用。免费试用Elasticsearch服务。

选择合适的安装Elasticsearch

Elasticsearch提供以下包格式:

Linux and MacOS tar.gz archives  -  可以在任何Linux发行版和MacOS上安装tar.gz存档。

Install Elasticsearch from archive on Linux or MacOS

Windows .zip archive  -  zip归档文件适合安装在Windows上。

Install Elasticsearch with .zip on Windows

deb  -  deb包适用于Debian、Ubuntu和其他基于Debian的系统。Debian包可以从Elasticsearch网站或我们的Debian存储库下载。

Install Elasticsearch with Debian Package

rpm  -  rpm包适合安装在Red Hat、Centos、SLES、OpenSuSE等基于rpm的系统上。RPM可以从Elasticsearch网站或RPM存储库下载。

Install Elasticsearch with RPM

msi  -  [beta版]此功能正在beta版中,可能会发生更改。设计和代码没有官方的GA功能成熟,并且是按原样提供的,没有保证。Beta版特性不受官方GA特性的SLA支持。msi包适合安装在至少安装了. net 4.5框架的Windows 64位系统上,是在Windows上开始使用Elasticsearch的最简单选择。MSIs可从Elasticsearch网站下载。

Install Elasticsearch with Windows MSI Installer

docker  - 镜像可以作为Docker容器运行Elasticsearch。它们可以从Elastic Docker注册表下载。

Install Elasticsearch with Docker

brew  -  Formulae可从Elastic Homebrew tap上获得,用于使用Homebrew包管理器在macOS上安装Elasticsearch。

Install Elasticsearch on macOS with Homebrew

配置管理工具

我们还提供以下配置管理工具,以帮助大型部署:

Puppet   puppet-elasticsearch

Chef     cookbook-elasticsearch

Ansible  ansible-elasticsearch

这里安装部分不再翻译,自行超链接查看

配置Elasticsearch

Elasticsearch提供良好的默认设置,并且只需要很少的配置。在运行中的集群上,可以使用Cluster Update Settings API更改大多数设置。

配置文件应该包含特定于节点的设置(比如node.name和路径),或者节点为了能够加入集群而需要的设置,比如cluster.name和network.host。

配置文件位置

Elasticsearch有三个配置文件:

elasticsearch.yml 配置Elasticsearch

jvm.options 配置Elasticsearch JVM设置

log4j2.properties 配置弹性搜索日志记录

这些文件位于config目录中,其默认位置取决于安装是否来自存档发行版(tar.gz或zip)或包发行版(Debian或RPM包)。

对于存档发行版,配置目录位置默认为$ES_HOME/config。配置目录的位置可以通过ES_PATH_CONF环境变量更改如下:

ES_PATH_CONF=/path/to/my/config ./bin/elasticsearch

或者,您可以通过命令行或shell概要文件导出ES_PATH_CONF环境变量。

对于包发行版,配置目录位置默认为/etc/elasticsearch。配置目录的位置也可以通过ES_PATH_CONF环境变量进行更改,但是请注意,在shell中设置此设置是不够的。相反,这个变量来自/etc/default/elasticsearch(用于Debian包)和/etc/sysconfig/elasticsearch(用于RPM包)。您需要在其中一个文件中编辑ES_PATH_CONF=/etc/elasticsearch条目,从而更改配置目录位置。

配置文件格式

配置格式是YAML。下面是一个改变数据和日志目录路径的例子:

path:
    data: /var/lib/elasticsearch
    logs: /var/log/elasticsearch

设置也可以以平面格式如下:

path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch

环境变量替换

使用${…配置文件中的}符号将被环境变量的值替换,例如:

node.name:    ${HOSTNAME}
network.host: ${ES_NETWORK_HOST}

设置JVM选项

你应该很少需要更改Java虚拟机(JVM)选项。如果这样做,最有可能的更改是设置堆大小。本文档的其余部分将详细说明如何设置JVM选项。

设置JVM选项(包括系统属性和JVM标志)的首选方法是通过jvm.options 配置文件。这个文件的默认位置是config/jvm.options。选项(从tar或zip发行版安装时)和/etc/elasticsearch/jvm.options。选项(从Debian或RPM包安装时)。

这个文件包含一个行分隔的JVM参数列表,它遵循一个特殊的语法:

---只包含空格的行将被忽略

---以#开头的行被视为注释,并被忽略

# this is a comment

---以-开头的行被视为一个JVM选项,它独立于JVM的版本应用

-Xmx2g

以数字开头,后跟 a: 后跟 a - 的行被视为JVM选项,只有当JVM版本与该数字匹配时才会应用该选项

8:-Xmx2g

以数字开头,后跟a -后跟a:的行被视为JVM选项,仅当JVM版本大于或等于该数字时才适用

8-:-Xmx2g

以数字后跟a -后跟数字后跟a:开头的行被视为JVM选项,仅当JVM版本位于这两个数字的范围内时才适用

8-9:-Xmx2g

所有其他行都被拒绝

您可以将自定义JVM标志添加到此文件中,并将此配置签入版本控制系统。

设置Java虚拟机选项的另一种机制是通过ES_JAVA_OPTS环境变量。例如:

export ES_JAVA_OPTS="$ES_JAVA_OPTS -Djava.io.tmpdir=/path/to/temp/dir"
./bin/elasticsearch

当使用RPM或Debian包时,可以在 system configuration file中指定ES_JAVA_OPTS。

JVM有一个用于观察JAVA_TOOL_OPTIONS环境变量的内置机制。我们故意在打包脚本中忽略这个环境变量。这样做的主要原因是,在某些操作系统(例如Ubuntu)上,通过这个环境变量默认安装了一些代理,我们不希望它们干扰Elasticsearch。

此外,一些其他Java程序支持JAVA_OPTS环境变量。这不是JVM内置的机制,而是生态系统中的约定。但是,我们不支持这个环境变量,而是支持通过JVM设置jvm.options。选项文件或环境变量ES_JAVA_OPTS。

安全设置

有些设置是敏感的,仅依靠文件系统权限来保护它们的值是不够的。对于这个用例,Elasticsearch提供了一个keystore和Elasticsearch -keystore工具来管理keystore中的设置。

请注意

这里的所有命令都应该作为将运行Elasticsearch的用户运行。

重要的

只有一些设置被设计为可以从密钥库读取。但是,密钥存储库没有验证来阻止不支持的设置。向密钥存储库添加不支持的设置将导致Elasticsearch启动失败。请参阅每个设置的文档,以查看它是否作为密钥存储库的一部分受到支持。

请注意

只有在重新启动Elasticsearch之后,对密钥库的所有修改才会生效。

请注意

elasticsearch密钥库目前只提供混淆。未来将增加密码保护。

这些设置与elasticsearch中的常规设置一样。配置文件,需要在集群中的每个节点上指定。目前,所有安全设置都是特定于节点的设置,必须在每个节点上具有相同的值。

创建密钥存储库

创建elasticsearch。密钥库,使用create命令:

bin/elasticsearch-keystore create

这文件elasticsearch.keystore将会与elasticsearch.yml被并肩创建

列出密钥库中的设置

密钥库中的设置列表可用list命令:

bin/elasticsearch-keystore list

添加字符串设置

可以使用add命令添加敏感的字符串设置,比如云插件的身份验证凭据:

bin/elasticsearch-keystore add the.setting.name.to.set

该工具将提示设置的值。要通过stdin传递值,使用--stdin标志:

cat /file/containing/setting/value | bin/elasticsearch-keystore add --stdin the.setting.name.to.set

添加文件设置

您可以使用add-file命令添加敏感文件,比如云插件的身份验证密钥文件。请确保在设置名称后面包含文件路径作为参数。

bin/elasticsearch-keystore add-file the.setting.name.to.set /path/example-file.json

删除设置

要从密钥库中删除设置,请使用remove命令:

bin/elasticsearch-keystore remove the.setting.name.to.remove

可写安全设置

就像elasticsearch中的设置值一样。密钥存储库内容的更改不会自动应用于正在运行的elasticsearch节点。重新读取设置需要重新启动节点。但是,某些安全设置被标记为可重新加载。这些设置可以重新读取并应用于正在运行的节点。

所有安全设置的值(可重新加载与否)必须在所有集群节点上相同。修改了所需的安全设置后,使用bin/elasticsearch-keystore add命令,调用:

POST _nodes/reload_secure_settings

这个API将在每个集群节点上解密并重新读取整个密钥存储库,但只应用可重新加载的安全设置。对其他设置的更改将在下一次重新启动时生效。一旦调用返回,重载就完成了,这意味着依赖于这些设置的所有内部数据结构都已更改。一切都应该看起来好像设置从一开始就有了新值。

当更改多个可重新加载的安全设置时,请在每个集群节点上修改所有这些设置,然后发出reload_secure_settings调用,而不是在每次修改后重新加载。

日志配置

Elasticsearch使用log4j2进行日志记录。可以使用log4j2配置log4j2。属性文件。Elasticsearch公开了三个属性${sys: .logs.base_path}, ${sys:es.logs.cluster_name}和$ {sys: es.logs。${sys:es.logs.node_name} 来确定日志文件的位置。属性${sys:es.logs.base_path}将解析为日志目录,${sys:es.logs.cluster_name}将解析为集群名称(在默认配置中用作日志文件名的前缀)和${sys:es.logs.node_name}将解析为节点名(如果显式设置了节点名)。

例如,如果日志目录(path.logs)是/var/log/elasticsearch,集群名为production,那么${sys:es.logs.base_path}将解析为/var/log/elasticsearch

${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}.log将解析为/var/log/elasticsearch/production.log.

######## Server JSON ############################
appender.rolling.type = RollingFile  ----1
appender.rolling.name = rolling
appender.rolling.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_server.json ----2
appender.rolling.layout.type = ESJsonLayout   ----3
appender.rolling.layout.type_name = server ----4
appender.rolling.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}-%d{yyyy-MM-dd}-%i.json.gz ----5
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy  ----6
appender.rolling.policies.time.interval = 1  ----7
appender.rolling.policies.time.modulate = true  ----8
appender.rolling.policies.size.type = SizeBasedTriggeringPolicy ----9
appender.rolling.policies.size.size = 256MB  ----10
appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.fileIndex = nomax
appender.rolling.strategy.action.type = Delete  ----11
appender.rolling.strategy.action.basepath = ${sys:es.logs.base_path}
appender.rolling.strategy.action.condition.type = IfFileName  ----12
appender.rolling.strategy.action.condition.glob = ${sys:es.logs.cluster_name}-*  ----13
appender.rolling.strategy.action.condition.nested_condition.type = IfAccumulatedFileSize  ----14
appender.rolling.strategy.action.condition.nested_condition.exceeds = 2GB  ----15
################################################
  1. 配置RollingFile追加器
  2. Log to /var/log/elasticsearch / production.json
  3. 使用JSON的布局。
  4. type_name是在ESJsonLayout中填充type字段的标志。在解析不同类型的日志时,可以使用它更容易地区分它们。
  5. 将日志滚到/var/log/elasticsearch/production-yyyy-MM-dd-i.json;日志将在每个卷上被压缩,i将增加
  6. 使用基于时间的滚动策略
  7. 每天滚动日志
  8. 在一天的边界上对齐滚动(而不是每24小时滚动一次)
  9. 使用基于大小的滚动策略
  10. 在256 MB之后滚动日志
  11. 在滚动日志时使用delete操作
  12. 只删除与文件模式匹配的日志
  13. 模式是只删除主日志
  14. 只有当我们积累了太多的压缩日志时才删除
  15. 压缩日志的大小条件是2 GB
######## Server -  old style pattern ###########
appender.rolling_old.type = RollingFile
appender.rolling_old.name = rolling_old
appender.rolling_old.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_server.log -----1
appender.rolling_old.layout.type = PatternLayout
appender.rolling_old.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] [%node_name]%marker %m%n
appender.rolling_old.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}-%d{yyyy-MM-dd}-%i.old_log.gz

1.旧样式模式的配置。这些日志将保存在*.log文件中,存档保存在*.log .gz文件中。请注意,这些应该被认为是不赞成的,并将在未来删除。

请注意

Log4j的配置解析会被任何无关的空格搞混;如果在这个页面上复制和粘贴任何Log4j设置,或者通常输入任何Log4j配置,请确保删除任何前导和后置空格。

注意,在appendix .rolling中可以用.zip替换.gz。filePattern使用zip格式压缩已滚过的日志。如果删除.gz扩展名,则日志在滚动时不会被压缩。

如果希望将日志文件保留一段指定的时间,可以使用带有删除操作的滚动策略。

appender.rolling.strategy.type = DefaultRolloverStrategy -----1
appender.rolling.strategy.action.type = Delete -----2
appender.rolling.strategy.action.basepath = ${sys:es.logs.base_path} -----3
appender.rolling.strategy.action.condition.type = IfFileName  -----4
appender.rolling.strategy.action.condition.glob = ${sys:es.logs.cluster_name}-*  -----5
appender.rolling.strategy.action.condition.nested_condition.type = IfLastModified  -----6
appender.rolling.strategy.action.condition.nested_condition.age = 7D  -----7
  1. 配置DefaultRolloverStrategy
  2. 配置Delete操作来处理滚动
  3. Elasticsearch日志的基本路径
  4. 处理滚动时应用的条件
  5. 从匹配glob ${sys:es.logs.cluster_name}-*的基本路径中删除文件;这是日志文件被滚动到的glob;这只需要删除滚动的Elasticsearch日志,但不需要删除弃用和慢速日志
  6. 用于匹配glob的文件的嵌套条件

只要命名为log4j2.properties就可以加载多个配置文件(在这种情况下,它们将被合并),并将Elasticsearch配置目录作为顶目录;这对于公开其他日志记录程序的插件非常有用。logger部分包含java包及其相应的日志级别。附录部分包含日志的目标。有关如何自定义日志记录和所有受支持的附加程序的详细信息可以在Log4j documentation中找到。日志保存7天

配置日志级别

配置日志级别有四种方法,每种方法都有适合使用的情况。

通过命令行:

-E <name of logging hierarchy>=<level> (例如,-E log .org.elasticsearch.transport=trace)。当您临时调试单个节点上的问题(例如,启动或开发期间的问题)时,这是最合适的。

通过elasticsearch.yml:

<name of logging hierarchy>: <level>:(例如,log .org.elasticsearch.transport: trace)。当您暂时调试一个问题,但没有通过命令行(例如,通过服务)启动Elasticsearch,或者您希望在更持久的基础上调整日志级别时,这是最合适的。

通过集群设置:

         通过cluster settings:

PUT /_cluster/settings
{
  "transient": {
    "<name of logging hierarchy>": "<level>"
  }
}

举例:

PUT /_cluster/settings
{
  "transient": {
    "logger.org.elasticsearch.transport": "trace"
  }
}

当你需要动态地调整活动运行的集群上的日志级别时,这是最合适的。

通过log4j2.properties:

logger.<unique_identifier>.name = <name of logging hierarchy>
logger.<unique_identifier>.level = <level>

举例:

logger.transport.name = org.elasticsearch.transport
logger.transport.level = trace

当你需要对日志程序进行细粒度控制时(例如,你希望将日志程序发送到另一个文件,或者以不同的方式管理日志程序;这是一个罕见的用例)。

弃用日志记录

除了常规日志记录之外,Elasticsearch还允许您启用已弃用操作的日志记录。 例如,这允许您早期确定,如果您需要在将来迁移某些功能。默认情况下,在WARN级别启用了弃用日志记录,所有弃用日志消息都将在此级别发出。

logger.deprecation.level = warn

这将在日志目录中创建每日滚动deprecation日志文件。 定期检查此文件,特别是当您打算升级到新的主版本。

默认的日志配置设置了滚转策略,以便将弃用日志滚转和压缩到1gb之后,并保留最多五个日志文件(四个滚过的日志和活动日志)。

JSON日志格式

为了简化对Elasticsearch日志的解析,现在以JSON格式打印日志。你可以通过将deprecation日志级别设置为error,在config / log4j2.properties文件中禁用它。

appender.rolling.layout.type = ESJsonLayout
appender.rolling.layout.type_name = server

每一行包含一个JSON文档,其中包含在ESJsonLayout中配置的属性。有关更多细节,请参见该类javadoc。但是,如果JSON文档包含异常,它将被打印在多行上。第一行将包含常规属性,后续的行将包含格式化为JSON数组的stacktrace。

注意: 你仍然可以使用自己的自定义布局。要做到这一点,请替换appendix .rolling.layout行。使用不同的布局输入。请参阅下面的示例:

appender.rolling.type = RollingFile
appender.rolling.name = rolling
appender.rolling.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_server.log
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] [%node_name]%marker %.-10000m%n
appender.rolling.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}-%d{yyyy-MM-dd}-%i.log.gz

一般审计设置

xpack.security.audit.enabled

设置为true以启用对节点的审计。默认值为false。这将审计事件放在一个名为_audit的专用文件中。每个节点上的json。有关更多信息,请参见配置日志级别。

审计事件设置

可以通过以下设置控制事件和其他一些关于记录内容的信息:

xpack.security.audit.logfile.events.include

指定审计输出中包含哪些事件。默认值是:access_denied、access_granted、anonymous_access_denied、authentication_failed、connection_denied、tampered_request、run_as_denied、run_as_granted。

xpack.security.audit.logfile.events.exclude

从输出中排除指定的事件。默认情况下,不排除任何事件。

xpack.security.audit.logfile.events.emit_request_body

指定是否在某些事件类型(如authentication_failed)上包含来自REST请求的请求体。默认值为false。

重要的

审计时不执行过滤,因此在审计事件中包含请求体时,可以以纯文本的形式审计敏感数据。

审核日志文件事件忽略策略

这些设置影响忽略策略,这些策略支持对哪些审计事件打印到日志文件进行细粒度控制。具有相同策略名称的所有设置组合起来形成一个策略。如果事件匹配特定策略的所有条件,则忽略该事件并不打印它。

xpack.security.audit.logfile.events.ignore_filters.<policy_name>.users

用户名或通配符的列表。指定的策略不会为匹配这些值的用户打印审计事件。

xpack.security.audit.logfile.events.ignore_filters.<policy_name>.realms

身份验证域名称或通配符的列表。指定的策略不会为这些域中的用户打印审计事件。

xpack.security.audit.logfile.events.ignore_filters.<policy_name>.roles

角色名或通配符的列表。指定的策略不会为具有这些角色的用户打印审计事件。如果用户有多个角色,其中一些角色不包含在策略中,则策略将不包含此事件。

xpack.security.audit.logfile.events.ignore_filters.<policy_name>.indices

索引名或通配符的列表。当事件中的所有索引都匹配这些值时,指定的策略将不会打印审计事件。如果事件涉及多个索引,其中一些索引不包含在策略中,则策略将不包含此事件。

Cross-cluster复制设置

可以使用cluster update settings API在活动集群上动态更新这些跨集群复制设置。

远程恢复设置

以下设置可用于对远程恢复期间传输的数据进行速率限制:

ccr.indices.recovery.max_bytes_per_sec (动态)

限制每个节点上总的入站和出站远程恢复流量。由于此限制适用于每个节点,但是可能有许多节点同时执行远程恢复,因此远程恢复字节的总数可能远远高于此限制。如果将此限制设置得过高,则存在这样的风险,即正在进行的远程恢复将消耗过多的带宽(或其他资源),从而破坏集群的稳定。这个设置被leader和follower集群使用。例如,如果将leader上的值设置为20mb,即使follower请求并可以接受60mb/s, leader也只会向follower发送20mb/s。默认为40 mb。

高级远程恢复设置

可以设置以下专家设置来管理远程恢复所消耗的资源:

ccr.indices.recovery.max_concurrent_file_chunks (动态)

控制每次恢复可以并行发送的文件块请求的数量。由于多个远程恢复可能已经并行运行,因此增加专家级别的设置可能只在单个碎片的远程恢复没有达到ccr.indices.recovery.max_bytes_per_sec配置的入站和出站远程恢复流量总量的情况下有用。默认为5。允许的最大值是10。

ccr.indices.recovery.chunk_size(动态)

控制从动件在文件传输期间请求的块大小。默认为1 mb。

ccr.indices.recovery.recovery_activity_timeout(动态)

控制恢复活动的超时。这个超时主要应用于引导集群。引导集群必须打开内存中的资源,以便在恢复过程中向follower提供数据。如果引导者在这段时间内没有收到来自追随者的恢复请求,它将关闭资源。默认为60秒。

ccr.indices.recovery.internal_action_timeout(动态)

控制远程恢复过程中单个网络请求的超时。个别行动超时可能会导致复苏失败。默认为60秒。

索引生命周期管理配置

这些索引级ILM设置通常通过索引模板配置。有关更多信息,请参见设置策略。

index.lifecycle.name

用于管理索引的策略的名称。

index.lifecycle.rollover_alias

当索引滚动时要更新的索引别名。指定何时使用包含滚动操作的策略。当索引滚动时,别名将被更新,以反映索引不再是写索引。有关滚动的更多信息,请参见 Using policies to manage index rollover

许可设置

您可以在elasticsearch中配置此授权设置。yml文件。有关更多信息,请参见License management.

xpack.license.self_generated.type

设置为basic(默认)以启用基本的X-Pack特性。

如果设置为试用版,自生成许可只允许在30天内访问x-pack的所有功能。如果需要,稍后可以将集群降级为基本许可证。

在elasticsearch设置机器学习

您不需要配置任何设置来使用机器学习。它是默认启用的。

重要的

机器学习使用SSE4.2指令,因此只能在cpu支持SSE4.2的机器上运行。如果在旧的硬件上运行Elasticsearch,则必须禁用机器学习(通过设置xpack.ml)。启用为false)。

所有这些设置都可以添加到elasticsearch.yml配置文件中。还可以使用cluster update settings API跨集群更新动态设置。

提示

在elasticsearch中,动态设置优先于设置elasticsearch.yml文件。

一般机器学习设置

node.ml

将该节点设置为true(默认值),以将其标识为机器学习节点。

如果在elasticsearch.yml中设置为false,节点不能运行作业。如果设置为true,则xpack.ml。已启用的节点被设置为false。忽略node.ml设置,节点无法运行作业。如果要运行作业,集群中必须至少有一个机器学习节点。

重要的

在专用协调节点或专用主节点上禁用该node.ml的角色。

xpack.ml.enabled

设置为true(默认值),以便在节点上启用机器学习。

如果在elasticsearch中设置为false。在节点上禁用机器学习api。因此,节点无法打开作业、启动datafeed或接收与机器学习api相关的传输(内部)通信请求。它还影响到连接到Elasticsearch实例的所有Kibana实例;你不需要禁用机器学习在那些kibana.yml文件。有关在特定Kibana实例中禁用机器学习的更多信息,请参见Kibana Machine Learning Settings

重要

如果希望在集群中使用机器学习特性,必须使用xpack.ml。在所有符合主节点上启用true。这是默认行为。

xpack.ml.max_machine_memory_percent (Dynamic)

机器学习可能用于运行分析进程的机器内存的最大百分比。(这些进程独立于Elasticsearch JVM。)默认为30%。限制是基于机器的总内存,而不是当前空闲内存。如果这样做会导致机器学习作业的估计内存使用超过限制,则不会将作业分配给节点。

xpack.ml.max_model_memory_limit (Dynamic)

可以为该节点上的任何作业设置的最大model_memory_limit属性值。如果您试图创建一个model_memory_limit属性值大于该设置值的作业,则会发生错误。更新此设置时,现有作业不受影响。有关model_memory_limit属性的更多信息,请参见Analysis Limits

xpack.ml.max_open_jobs (Dynamic)

节点上可以同时运行的作业的最大数量。默认为20。在此上下文中,作业包括异常检测作业和数据帧分析作业。作业的最大数量也受到内存使用的限制。因此,如果作业的估计内存使用量高于允许的值,那么节点上运行的作业就会减少。在7.1版本之前,该设置是每个节点的非动态设置。在7.1版本中,它变成了一个集群范围的动态设置。因此,只有在集群中的每个节点运行版本7.1或更高版本之后,才会使用节点启动后对其值的更改。最大允许值为512。

xpack.ml.node_concurrent_job_allocations (Dynamic)

每个节点上可以同时处于打开状态的作业的最大数量。通常情况下,工作在进入开放状态之前会在这个状态中花费一小段时间。当大型模型打开时,必须恢复它们的作业会在打开状态中花费更多的时间。默认为2。

高级机器学习设置

这些设置用于高级用例;默认值通常是足够的:

xpack.ml.enable_config_migration (Dynamic)

保留。

xpack.ml.max_anomaly_records (Dynamic)

每个桶输出的最大记录数。默认值是500。

xpack.ml.max_lazy_ml_nodes (Dynamic)

机器学习节点的数目。在第一个机器学习作业打开之前不需要ML节点的情况下非常有用。它默认为0,最大可接受值为3。如果当前ML节点的数量是>=这个设置,那么假定没有更多的空闲节点可用,因为所需的节点数量已经准备好了。当作业打开时,设置为>0,并且没有节点可以接受该作业,那么该作业将一直处于打开状态,直到集群中添加了一个新的ML节点,并分配该作业在该节点上运行。

重要的

此设置假定某些外部进程能够向集群添加ML节点。此设置仅在与此类外部进程一起使用时才有用。

xpack.ml.process_connect_timeout (Dynamic)

独立于Elasticsearch JVM运行的机器学习进程的连接超时。默认为10。一些机器学习处理是由分别运行到Elasticsearch JVM的进程完成的。启动此类进程时,它们必须连接到Elasticsearch JVM。如果这样的进程没有在此设置指定的时间段内连接,则假定该进程已失败。默认为10。此设置的最小值为5s。

在Elasticsearch中监视设置

默认情况下,启用监视,但禁用数据收集。要启用数据收集,请使用xpack.monitor .collection。设置启用。

你可以在elasticsearch.yml文件中配置这些监视设置。还可以使用cluster update settings API动态设置其中一些设置。

提示

在elasticsearch中,集群设置优先于设置elasticsearch.yml文件。

要调整监视数据在监视UI中的显示方式,请在kibana.yml配置xpack.monitoring Settings。要控制如何从Logstash收集监视数据,请在logstash.yml配置xpack.monitoring Settings

有关更多信息,请参见监视弹性堆栈。

通用监控设置

自行查看官网Monitoring settings

安全设置

自行查看官网Security settings

elasticsearch中的SQL访问设置

默认情况下启用SQL访问。您可以在elasticsearch.yml文件中配置这些SQL访问设置。

一般SQL访问设置

xpack.sql.enabled设置为false以禁用节点上的SQL访问。

在Elasticsearch中设置监视程序

自行查看官网Watcher settings

 类似资料: