配置Elasticsearch

配置Elasticsearch

Elasticsearch具有良好的默认设置,并且只需要很少的配置。可以使用群集更新设置 API 在正在运行的群集上更改大多数设置 。

配置文件应包含特定于节点的设置(例如node.name和paths),或包含节点才能加入集群所需的设置,例如cluster.namenetwork.host

本地配置文件

Elasticsearch具有三个配置文件:

  • elasticsearch.yml 用于配置Elasticsearch

  • jvm.options 用于配置Elasticsearch JVM设置

  • log4j2.properties 用于配置Elasticsearch日志记录

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

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

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

或者,您可以通过命令行或您的Shell配置文件来export使用ES_PATH_CONF环境变量。

对于软件包分发,config目录位置默认为 /etc/elasticsearch。config目录的位置也可以通过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.options文件或ES_JAVA_OPTS环境变量来设置选项。

设置或覆盖JVM选项的首选方法是通过JVM选项文件。从tar或zip发行版安装时,根jvm.options 配置文件为,config/jvm.options并且可以将自定义JVM选项文件添加到config/jvm.options.d/。从Debian或RPM软件包安装时,根jvm.options配置文件为, /etc/elasticsearch/jvm.options并且可以将自定义JVM选项文件添加到 /etc/elasticsearch/jvm.options.d/。使用ElasticsearchDocker发行版时,您可以将装入的自定义JVM选项文件绑定到中 /usr/share/elasticsearch/config/jvm.options.d/。您永远不需要修改根jvm.options文件,而宁愿使用自定义JVM选项文件。自定义JVM选项的处理顺序是按字典顺序。

JVM选项文件必须具有后缀.options,并包含遵循特殊语法的以行分隔的JVM参数列表:

  • 仅由空格组成的行将被忽略

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

      # this is a comment
  • -开头的行被视为独立于JVM版本而应用的JVM选项

      - Xmx2g
  • 以数字开头:后接-的行被视为仅在JVM版本与该数字匹配时才适用的JVM选项

      8:-Xmx2g
  • 以数字开头-后接:的行被视为JVM选项,仅在JVM版本大于或等于该数字时才适用

      8-:-Xmx2g
  • 以数字开头-后接数字,后跟:的行被视为JVM选项,仅当JVM版本在两个数字范围内时才适用

      8-9:-Xmx2g
  • 其他所有行均被拒绝

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

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

使用RPM或Debian软件包时,ES_JAVA_OPTS可以在系统配置文件中指定 。

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

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

日志配置

Elasticsearch使用Log4j 2进行日志记录。可以使用log4j2.properties文件配置Log4j 2。Elasticsearch公开三个属性${sys:es.logs.base_path}${sys:es.logs.cluster_name}以及${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 
appender.rolling.name = rolling
appender.rolling.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_server.json 
appender.rolling.layout.type = ESJsonLayout 
appender.rolling.layout.type_name = server 
appender.rolling.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}-%d{yyyy-MM-dd}-%i.json.gz 
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy 
appender.rolling.policies.time.interval = 1 
appender.rolling.policies.time.modulate = true 
appender.rolling.policies.size.type = SizeBasedTriggeringPolicy 
appender.rolling.policies.size.size = 256MB 
appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.fileIndex = nomax
appender.rolling.strategy.action.type = Delete 
appender.rolling.strategy.action.basepath = ${sys:es.logs.base_path}
appender.rolling.strategy.action.condition.type = IfFileName 
appender.rolling.strategy.action.condition.glob = ${sys:es.logs.cluster_name}-* 
appender.rolling.strategy.action.condition.nested_condition.type = IfAccumulatedFileSize 
appender.rolling.strategy.action.condition.nested_condition.exceeds = 2GB 
################################################

可以查看释义

######## 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 
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

old style模式追加器的配置。这些日志将保存在*.log文件中,如果存档则将保存在文件中* .log.gz。请注意,应将其视为已弃用,并将在将来删除。

Log4j的配置解析被任何多余的空白所迷惑;如果您在此页面上复制并粘贴任何Log4j设置,或通常输入任何Log4j配置,请确保修剪所有前导和尾随空格。

请注意,您可以替换.gz.zipin appender.rolling.filePattern以使用zip格式压缩滚动日志。如果删除.gz 扩展名,则日志在滚动时将不会被压缩。

如果要在指定时间段内保留日志文件,则可以将过渡策略与删除操作一起使用。

appender.rolling.strategy.type = DefaultRolloverStrategy 
appender.rolling.strategy.action.type = Delete 
appender.rolling.strategy.action.basepath = ${sys:es.logs.base_path} 
appender.rolling.strategy.action.condition.type = IfFileName 
appender.rolling.strategy.action.condition.glob = ${sys:es.logs.cluster_name}-* 
appender.rolling.strategy.action.condition.nested_condition.type = IfLastModified 
appender.rolling.strategy.action.condition.nested_condition.age = 7D

点击查看释义

可以加载多个配置文件(在这种情况下,它们将被合并),只要它们被命名log4j2.properties并将Elasticsearch config目录作为祖先即可。这对于公开其他记录器的插件很有用。记录器部分包含Java软件包及其相应的日志级别。附加程序部分包含日志的目标。在Log4j文档中可以找到有关如何自定义日志记录和所有受支持的附加程序的广泛信息 。

配置日志记录级别

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

  1. 通过命令行:-E <name of logging hierarchy>=<level>(例如, -E logger.org.elasticsearch.transport=trace)。当您临时调试单个节点上的问题(例如,启动问题或开发过程中)时,这是最合适的。

  2. 通过elasticsearch.yml:( 例如, logger.org.elasticsearch.transport: trace)。当您临时调试问题但未通过命令行(例如,通过服务)启动Elasticsearch或希望更永久地调整日志记录级别时,这是最合适的。

  3. 通过集群设置

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

    例如:

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

    当您需要动态地调整正在运行的群集上的日志记录级别时,这是最合适的。

  4. 通过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

这将在您的日志目录中创建每日滚动弃用日志文件。定期检查此文件,尤其是在您打算升级到新的主要版本时。

默认的日志记录配置已将弃用日志的滚动策略设置为在1 GB之后滚动和压缩,并最多保留五个日志文件(四个滚动日志和活动日志)。

您可以config/log4j2.properties通过将弃用日志级别设置为以下方式在文件中禁用它error

logger.deprecation.name = org.elasticsearch.deprecation
logger.deprecation.level = error

如果X-Opaque-Id用作HTTP标头,则可以确定触发过时功能的原因。用户ID包含X-Opaque-ID在弃用JSON日志的字段中。

{
  "type": "deprecation",
  "timestamp": "2019-08-30T12:07:07,126+02:00",
  "level": "WARN",
  "component": "o.e.d.r.a.a.i.RestCreateIndexAction",
  "cluster.name": "distribution_run",
  "node.name": "node-0",
  "message": "[types removal] Using include_type_name in create index requests is deprecated. The parameter will be removed in the next major version.",
  "x-opaque-id": "MY_USER_ID",
  "cluster.uuid": "Aq-c-PAeQiK3tfBYtig9Bw",
  "node.id": "D7fUYfnfTLa2D7y-xw6tZg"
}

JSON日志格式

为了简化对Elasticsearch日志的解析,现在以JSON格式打印日志。这由Log4J布局属性配置appender.rolling.layout.type = ESJsonLayout。此布局需要type_name设置一个属性,该属性用于在解析时区分日志流。

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

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

您仍然可以使用自己的自定义布局。为此,请appender.rolling.layout.type使用其他布局替换该行 。请参阅以下示例:

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.ilm.enabled

    无论是启用还是禁用ILM,将其设置为false禁用任何ILM REST API端点和功能。默认为true

  • indices.lifecycle.poll_interval

    时间单位)索引生命周期管理检查符合策略标准的索引的频率。默认为10m

  • indices.lifecycle.history_index_enabled

    是否启用ILM的历史记录索引。如果启用,ILM会将作为ILM策略一部分而采取的操作的历史记录到ilm-history-* 索引中。默认为true

索引级别设置

这些索引级别的ILM设置通常是通过索引模板配置的。有关更多信息,请参阅创建生命周期策略

  • index.lifecycle.name

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

  • index.lifecycle.rollover_alias

    索引翻转时要更新的索引别名。在使用包含过渡操作的策略时指定。当索引翻转时,别名将更新以反映该索引不再是写索引。有关过渡的更多信息,请参见自动滚动

  • index.lifecycle.parse_origination_date

    当配置为true原始日期时,将从索引名称中解析。索引格式必须匹配pattern ^.*-{date_format}-\\d+,其中date_formatis yyyy.MM.dd和结尾的数字是可选的(滚动的索引通常会匹配完整格式,例如 logs-2016.10.31-000002)。如果索引名称与模式不匹配,则索引创建将失败。

  • index.lifecycle.origination_date

    将用于计算其相变的索引寿命的时间戳。这样,用户可以创建包含旧数据的索引,并使用旧数据的原始创建日期来计算索引使用期限。必须为长(Unix纪元)值。

在Elasticsearch监控设置

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

您可以在elasticsearch.yml文件中配置这些监视设置。您还可以使用群集更新设置API动态设置其中一些 设置

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

要调整如何监控数据显示在监控界面,配置 xpack.monitoring设置kibana.yml。要控制如何从Logstash收集监视数据,请在中配置监视设置logstash.yml

有关更多信息,请参阅监视集群

常规监视设置

  • xpack.monitoring.enabled

    设置为true(默认值)以对节点上的Elasticsearch启用Elasticsearch X-Pack监视。

    要启用数据收集,还必须将设置xpack.monitoring.collection.enabledtrue。默认值为false

监视收集设置

这些xpack.monitoring.collection设置控制如何从Elasticsearch节点收集数据。您可以使用群集更新设置API动态更改所有监视收集设置。

  • xpack.monitoring.collection.enabledDynamic

    在6.3.0中添加。设置为true启用监视数据收集。当此设置为false默认值时,将不会收集Elasticsearch监视数据,并且会忽略来自其他来源(如Kibana,Beats和Logstash)的所有监视数据。

  • xpack.monitoring.collection.intervalDynamic

    设置为-1禁用数据收集,从7.0.0开始不再支持 。 在6.3.0中弃用。使用xpack.monitoring.collection.enabled设置为false来替代。控制收集数据样本的频率。默认为10s。如果您修改收集间隔,则将xpack.monitoring.min_interval_seconds 选项设置kibana.yml为相同的值。

  • xpack.monitoring.elasticsearch.collection.enabled动态

    控制是否应收集有关Elasticsearch集群的统计信息。默认为true。这与xpack.monitoring.collection.enabled不同,后者允许您启用或禁用所有监视收集。但是,此设置只是禁用了Elasticsearch数据的收集,同时仍然允许其他数据(例如,Kibana,Logstash,Beats或APM Server监视数据)通过此群集。

  • xpack.monitoring.collection.cluster.stats.timeout动态

    时间值)用于收集集群统计信息的超时。默认为10s

  • xpack.monitoring.collection.node.stats.timeout动态

    时间值)收集节点统计信息的超时时间。默认为10s

  • xpack.monitoring.collection.indices动态

    控制监控从哪个索引收集数据。默认为所有索引。将索引名称指定为以逗号分隔的列表,例如test1,test2,test3。名称可以包括通配符,例如test*。您可以在前缀前明确排除索引-。例如,test*,-test3将监视test除以外的所有所有索引test3。系统索引(如.security 或.kibana )始终以开头.,通常应对其进行监视。考虑添加.*到索引列表中,以确保监视系统索引。例如.*,test*,-test3

  • xpack.monitoring.collection.index.stats.timeout动态

    时间值)用于收集索引统计信息的超时。默认为10s

  • xpack.monitoring.collection.index.recovery.active_only动态

    控制是否收集所有回收率。设置为true仅收集活动的恢复。默认为false

  • xpack.monitoring.collection.index.recovery.timeout动态

    时间值)用于收集恢复信息的超时。默认为10s

  • xpack.monitoring.history.duration动态

    时间值)保留期限,超过该期限后,将自动删除监视导出器创建的索引。默认为7d(7天)。此设置的最小值1d(1天)以确保正在监视某些内容,并且不能将其禁用。

    此设置当前仅影响local类型出口商。使用http导出器创建的索引不会自动删除。

  • xpack.monitoring.exporters

    配置代理在何处存储监视数据。默认情况下,代理使用本地导出程序,该导出程序对安装了群集的监视数据进行索引。使用HTTP导出器将数据发送到单独的监视群集。有关更多信息,请参阅本地导出器设置HTTP导出器设置及其 工作方式

本地出口商设置

local出口是通过监测使用的默认出口国。顾名思义,它会将数据导出到本地群集,这意味着不需要太多配置。

如果您不提供任何出口商,Monitoring会自动为您创建一个。如果提供了任何导出器,则不添加默认值。

xpack.monitoring.exporters.my_local:
  type: local
  • type

    本地出口商的值必须始终为local并且是必需的。

  • use_ingest

    是否在每个批量请求中向集群和管道处理器提供占位符管道。默认值为true。如果被禁用,则意味着它将不使用管道,这意味着将来的发行版无法将批量请求自动升级为可用于将来的请求。

  • cluster_alerts.management.enabled

    是否为此集群创建集群警报。默认值为true。要使用此功能,必须启用Watcher。如果您具有基本许可证,则不会显示群集警报。

HTTP导出器设置

以下列出了http导出器可以提供的设置。所有设置均显示在您为导出器选择的名称后面:

xpack.monitoring.exporters.my_remote:
  type: http
  host: ["host:port", ...]
  • type

    HTTP导出程序的值必须始终为http并且是必需的。

  • host

    主机支持多种格式,既可以是数组,也可以是单个值。支持的格式包括 hostnamehostname:porthttp://hostname, http://hostname:porthttps://hostname,和 https://hostname:port。不能假定主机。如果未作为字符串的一部分提供,则默认方案始终为http,默认端口始终9200host

      xpack.monitoring.exporters:
        example1:
          type: http
          host: "10.1.2.3"
        example2:
          type: http
          host: ["http://10.1.2.4"]
        example3:
          type: http
          host: ["10.1.2.5", "10.1.2.6"]
        example4:
          type: http
          host: ["https://10.1.2.3:9200"]
  • auth.username

    如果提供auth.secure_password或,auth.password则用户名是必需的。

  • auth.secure_password安全可重新加载

    的密码auth.usernameauth.password如果也指定了优先级。

  • auth.password

    的密码auth.username。如果auth.secure_password还指定,则将忽略此设置。

在7.7.0中弃用。

使用auth.secure_password代替。

  • connection.timeout

    时间值)HTTP连接应该等待套接字打开以请求的时间。默认值为6s

  • connection.read_timeout

    时间值)HTTP连接应该等待套接字发送回响应的时间。默认值为10 * connection.timeout60s如果未设置)。

  • ssl

    每个HTTP导出器都可以定义自己的TLS / SSL设置或继承它们。请参阅下面的“ TLS / SSL”部分

  • proxy.base_path

    前缀任何传出请求的基本路径,例如/base/path(然后,批量请求将作为发送/base/path/_bulk)。没有默认值。

  • headers

    添加到每个请求的可选标头,可以帮助通过代理路由请求。

      xpack.monitoring.exporters.my_remote:
        headers:
          X-My-Array: [abc, def, xyz]
          X-My-Header: abc123

    发送基于数组的标头的n时间n为数组的大小。Content-Type 并且Content-Length无法设置。监视代理程序创建的任何标题都将覆盖此处定义的任何内容。

  • index.name.time_format

    一种用于更改默认情况下每日监控索引的默认日期后缀的机制。默认值为YYYY.MM.DD,这就是为什么每天创建索引的原因。

  • use_ingest

    是否在每个批量请求时向监视集群和管道处理器提供占位符管道。默认值为true。如果被禁用,则意味着它将不使用管道,这意味着将来的发行版无法将批量请求自动升级为可用于将来的请求。

  • cluster_alerts.management.enabled

    是否为此集群创建集群警报。默认值为true。要使用此功能,必须启用Watcher。如果您具有基本许可证,则不会显示群集警报。

  • cluster_alerts.management.blacklist

    阻止创建特定的群集警报。它还会删除当前群集中已经存在的所有适用监视。 您可以将以下任意手表标识符添加到黑名单中:

    • elasticsearch_cluster_status

    • elasticsearch_version_mismatch

    • elasticsearch_nodes

    • kibana_version_mismatch

    • logstash_version_mismatch

    • xpack_license_expiration

      例如:["elasticsearch_version_mismatch","xpack_license_expiration"]

X-Pack监视TLS / SSL设置

您可以配置以下TLS / SSL设置。

  • xpack.monitoring.exporters.$NAME.ssl.supported_protocols

    支持的协议版本。有效协议:SSLv2HelloSSLv3TLSv1TLSv1.1TLSv1.2TLSv1.3。如果JVM的SSL提供程序支持TLSv1.3,则默认值为TLSv1.3,TLSv1.2,TLSv1.1。否则,默认值为 TLSv1.2,TLSv1.1。如果xpack.security.fips_mode.enabledtrue,则不能使用SSLv2HelloSSLv3。请参阅FIPS 140-2

  • xpack.monitoring.exporters.$NAME.ssl.verification_mode

    控制证书的验证。有效值为:full,它验证所提供的证书是否由受信任的机构(CA)签名,还验证服务器的主机名(或IP地址)是否与证书中标识的名称匹配。certificate,它验证提供的证书是否由受信任的权威(CA)签名,但不执行任何主机名验证。none不对服务器证书进行任何验证。此模式禁用了SSL / TLS的许多安全性优点,只有在仔细考虑后才能使用。它主要是在尝试解决TLS错误时作为一种临时诊断机制。强烈建议不要将其用于生产集群。默认值为full

  • xpack.monitoring.exporters.$NAME.ssl.cipher_suites

    支持的密码套件取决于您使用的Java版本。例如,对于11版的默认值是TLS_AES_256_GCM_SHA384TLS_AES_128_GCM_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHATLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHATLS_ECDHE_RSA_WITH_AES_256_CBC_SHATLS_ECDHE_RSA_WITH_AES_128_CBC_SHATLS_RSA_WITH_AES_256_GCM_SHA384TLS_RSA_WITH_AES_128_GCM_SHA256TLS_RSA_WITH_AES_256_CBC_SHA256TLS_RSA_WITH_AES_128_CBC_SHA256TLS_RSA_WITH_AES_256_CBC_SHATLS_RSA_WITH_AES_128_CBC_SHA。上面的默认密码套件列表包括TLSv1.3密码,以及需要256位AES加密的Java密码学扩展(JCE)无限强度管辖权策略文件的密码。如果TLSv1.3是不可用,TLSv1.3密码TLS_AES_256_GCM_SHA384TLS_AES_128_GCM_SHA256不包括在默认列表。如果256位AES不可用,则AES_256其名称中带有密码的密码将不包括在默认列表中。最后,AES GCM在11之前的Java版本中存在性能问题,并且仅在使用Java 11或更高版本时才包含在默认列表中。有关更多信息,请参见Oracle的 Java密码体系结构文档

X-Pack监视TLS / SSL密钥和受信任的证书设置

以下设置用于指定通过SSL / TLS连接进行通信时应使用的私钥,证书和受信任证书。私钥和证书是可选的,如果服务器要求客户端认证进行PKI认证,则将使用私钥和证书。

PEM编码的文件

使用PEM编码的文件时,请使用以下设置:

  • xpack.monitoring.exporters.$NAME.ssl.key

    包含私钥的PEM编码文件的路径。

  • xpack.monitoring.exporters.$NAME.ssl.key_passphrase

    用于解密私钥的密码。由于密钥可能未加密,因此此值是可选的。

  • xpack.monitoring.exporters.$NAME.ssl.secure_key_passphrase安全

    用于解密私钥的密码。由于密钥可能未加密,因此此值是可选的。

  • xpack.monitoring.exporters.$NAME.ssl.certificate

    指定与密钥关联的PEM编码证书(或证书链)的路径。

  • xpack.monitoring.exporters.$NAME.ssl.certificate_authorities

    应当信任的PEM编码证书文件的路径列表。

Java密钥库文件

使用包含私钥,证书和应受信任的证书的Java密钥库文件(JKS)时,请使用以下设置:

  • xpack.monitoring.exporters.$NAME.ssl.keystore.path

    包含私钥和证书的密钥库文件的路径。

  • xpack.monitoring.exporters.$NAME.ssl.keystore.password

    密钥库的密码。

  • xpack.monitoring.exporters.$NAME.ssl.keystore.secure_password安全

    密钥库的密码。

  • xpack.monitoring.exporters.$NAME.ssl.keystore.key_password

    密钥库中密钥的密码。缺省值为密钥库密码。

  • xpack.monitoring.exporters.$NAME.ssl.keystore.secure_key_password安全

    密钥库中密钥的密码。缺省值为密钥库密码。

  • xpack.monitoring.exporters.$NAME.ssl.truststore.path

    包含要信任的证书的密钥库的路径。它必须是Java密钥库(jks)或PKCS#12文件。

  • xpack.monitoring.exporters.$NAME.ssl.truststore.password

    信任库的密码。

  • xpack.monitoring.exporters.$NAME.ssl.truststore.secure_password安全

    信任库的密码。

PKCS#12文件

可以将Elasticsearch配置为使用包含私有密钥,证书和应受信任的证书的PKCS#12容器文件(.p12或多个.pfx文件)。

PKCS#12文件的配置方式与Java密钥库文件相同:

  • xpack.monitoring.exporters.$NAME.ssl.keystore.path

    包含私钥和证书的密钥库文件的路径。

  • xpack.monitoring.exporters.$NAME.ssl.keystore.type

    密钥库文件的格式。它必须是jksPKCS12。如果密钥库路径以“ .p12”,“。pfx”或“ .pkcs12”结尾,则此设置默认为PKCS12。否则,默认为jks

  • xpack.monitoring.exporters.$NAME.ssl.keystore.password

    密钥库的密码。

  • xpack.monitoring.exporters.$NAME.ssl.keystore.secure_password安全

    密钥库的密码。

  • xpack.monitoring.exporters.$NAME.ssl.keystore.key_password

    密钥库中密钥的密码。缺省值为密钥库密码。

  • xpack.monitoring.exporters.$NAME.ssl.keystore.secure_key_password安全

    密钥库中密钥的密码。缺省值为密钥库密码。

  • xpack.monitoring.exporters.$NAME.ssl.truststore.path

    包含要信任的证书的密钥库的路径。它必须是Java密钥库(jks)或PKCS#12文件。

  • xpack.monitoring.exporters.$NAME.ssl.truststore.type

    进行设置PKCS12以指示信任库是PKCS#12文件。

  • xpack.monitoring.exporters.$NAME.ssl.truststore.password

    信任库的密码。

  • xpack.monitoring.exporters.$NAME.ssl.truststore.secure_password安全

    信任库的密码。

PKCS#11令牌

可以将Elasticsearch配置为使用PKCS#11令牌,该令牌包含私钥,证书和应信任的证书。

PKCS#11令牌需要在JVM级别进行其他配置,并且可以通过以下设置启用:

  • xpack.monitoring.exporters.$NAME.keystore.type

    进行设置PKCS11以指示应将PKCS#11令牌用作密钥库。

  • xpack.monitoring.exporters.$NAME.truststore.type

    信任库文件的格式。对于Java密钥库格式,请使用jks。对于PKCS#12文件,使用PKCS12。对于PKCS#11令牌,请使用PKCS11。默认值为 jks

在配置将JVM配置为用作Elasticsearch的密钥库或信任库的PKCS#11令牌时,可以通过将适当的值设置为ssl.truststore.passwordssl.truststore.secure_password在您配置的上下文中配置令牌的PIN 。由于只能配置一个PKCS#11令牌,因此只有一个密钥库和信任库可用于在Elasticsearch中进行配置。反过来,这意味着在传输层和http层中,只能将一个证书用于TLS。

Last updated

Was this helpful?