ElasticSearch 的配置
发布日期:2021-06-27 12:55:12 浏览次数:30 分类:技术文章

本文共 5510 字,大约阅读时间需要 18 分钟。

ElasticSearch 的配置

Elasticsearch 的配置同样遵循着“约定大于配置”的设计原则,用户可以选择使用群集更新设置API在正在运行的群集上更改大多数配置,也可以选择通过配置文件对Elasticsearch 进行配置。

一、配置文件位置信息

在ElasticSearch中有三个配置文件,分别为(默认位置 config目录下)elasticsearch.yml、jvm.options和log4j2.properties。如下图:

在这里插入图片描述
说明

  • elasticsearch.yml:配置ElasticSearch
  • jvm.options:配置ElasticSearch依赖的JVM信息
  • log4j2.properties:配置ElasticSearch日志记录中的各个属性

二、配置文件格式信息

ElasticSearch的配置文件为yaml。常见配置方式:

  • 层级方式

    path:	data:/var/lib/es	logs:/var/log/es
  • 单条方式

    path.data:/var/lib/es	path.logs:/var/log/es
  • 引用环境变量方式

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

三、配置JVM选项

一般情况下,Elasticsearch中很少修改JVM选项,最有可能更改配置堆的大小;

默认情况下,ElasticSearch配置JVM使用最小堆空间和最大堆空间大小均为1G

在ElasticSearch中,我们通过配置jvm.options文件中的xms(最小堆大小)和xmx(最大堆大小)两个参数来指定整个堆大小,一般情况下,两

者参数设置应为相等。

jvm.options配置文件说明

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

  • 以“-”开头的行被视为独立于本机JVM版本号的JVM选项

    -Xmx2g
  • 以“数字:”开头的行被视为一个JVM选项,该选项仅在本机JVM的版本号相互匹配时适用

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

    8-:-Xmx2g
  • 以“数字-数字”开头的行被视为一个JVM选项,该选项仅在本机JVM版本号在这两个数字版本号范围内时适用

    8-9:-Xmx2g
  • 空白行忽略即可,其他都被拒绝解析

四、安全配置

由于ElasticSearch中,部分设置信息是敏感而需要保密的,仅仅通过文件系统权限来保护这些信息是不够的,所以需要配置安全维度的信息。

  • ElasticSearch中提供了一个密钥库和相应的密钥库工具来管理密钥库中的配置。
  • 对密钥库所做的配置修改,皆在重启后有效
  • 安全配置需要在集群中的每个节点上指定,而且所有安全配置都是特定于节点的配置,所以每个节点上必须有相同的值。

安全配置常规操作

  • 创建密钥库

    创建密钥库(elasticsearch.keystore)命令(如下)。创建完后,可生成 elasticsearch.ymlelasticsearch.keystore两个文件

    bin/elasticsearch-keystore create
  • 查看密钥库中的设置列表

    查看密钥库中的设置列表命令(如下)

    bin/elasticsearch-keystore list
  • 添加字符串设置

    设置敏感的字符串命令(如下),执行完命令后,提示输入设置值。

    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
  • 添加文件设置

    用户可以使用添加文件命令添加敏感信息文件。配置时需确保将文件路径作为参数包含在设置名称之后。

    bin/elasticsearch-keystore add-file the.setting.name.to.set /path/example-file.json
  • 删除密钥设置

    从密钥库中删除设置命令(如下)

    bin/elasticsearch-keystore remove the.setting.name.to.remove
  • 可重新加载的安全配置

    由于配置elasticsearch.keystore文件,和配置elasticsearch.yml文件一样,对密钥库内容的更改不会自动应用于正在运行的elasticsearch节点上,所以需要重新启动节点才能重新读取设置;

    对于一些安全设置,我们可以标记位可重新加载,这样就可以在正在运行的节点上重新读取和应用;

    所有安全设置的值(无论是否可重新加载),在所有集群节点上必须相同更改所需的安全设置,才可使用命令(如下)进行重新加载、读取和应用。

    POST _nodes/reload_secure_settings

    该API接口将解密并重新读取每个集群节点上的整个密钥库,但只限于可重载的安全配置,其他设置更改需要在重启之后生效。

    当更改多个可重新加载的安全设置时,用户需要在每个集群节点上都修改所有配置,然后再调用重新加载安全配置API,不是在每次修改后就重新加载。

五、日志记录配置

在ElasticSearch中,使用log4j2来记录日志。所以我们可以通过log4j2.properties文件配置log4j2;

ElasticSearch中相关的三个公开属性信息:

  • $sys:es.logs.base_path:日志文件目录地址
  • $sys:es.logs.cluster_name:集群名称(默认配置中,用作日志文件名的前缀)
  • $sys:es.logs.node_name:节点名称(如果显式地设置了节点名称)

log4j2.properties文件的配置信息:

# 配置RollingFile的appender属性appender.rolling.type = RollingFile appender.rolling.name = rolling # 日志信息将输出到 ${
sys:es.logs.base_path}${
sys:file.separator}${
sys:es.logs.cluster_name}_server.json中appender.rolling.fileName = ${
sys:es.logs.base_path}${
sys:file.separator}${
sys:es.logs.cluster_name}_server.json# 使用json文件格式输出appender.rolling.layout.type = ESJsonLayout# type_name是填充ESJsonLayout的类型字段的标志,该字段可以让我们在解析不同类型的日志时更加简单appender.rolling.layout.type_name = server# 日志将会滚动输出到${
sys:es.logs.base_path}${
sys:file.separator}${
sys:es.logs.cluster_name}-%d{
yyyy-MM-dd}-%i.json.gz中,日志文件会被压缩,且呈i递增状态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# 在日期时间上对齐标准,而不是按每24小时来新增一次滚动日志文件 appender.rolling.policies.time.modulate = true# 按日志文件大小的策略来滚动新增日志文件 appender.rolling.policies.size.type = SizeBasedTriggeringPolicy# 每生成128MB的日志文件,就滚动新增一次日志 appender.rolling.policies.size.size = 128MB appender.rolling.strategy.type = DefaultRolloverStrategyappender.rolling.strategy.fileIndex = nomax# 每次新增滚动日志时执行删除日志文件动作 appender.rolling.strategy.action.type = Deleteappender.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# 压缩日志的条件是日志文件大小达到2G appender.rolling.strategy.action.condition.nested_condition.exceeds = 2GB

配置日志记录级别方式:

  • 通过命令行配置

    适用于:当在单个节点临时调用一个问题(如在后启动时或在开发过程中)时

    命令如下:

    -e
    =
    如 -e logger.org.elasticsearch.transport=trace
  • 通过elasticsearch.yml文件配置

    适用:当临时调用一个问题,但没有通过命令行启动ElasticSearch;或者希望在更持久的基础上调整日志级别时

    配置属性如下:

    :
  • 通过集群配置

    适用:当需要动态调整活动运行的集群上的日志级别时

    方法如下:

    PUT /_cluster/settings{    "transient":{		"
    ":"
    " }}如:PUT /_cluster/settings{ "transient":{ "logger.org.elasticsearch.transport":"trace" }}
  • 通过log4j2.properties配置

    适用:当需要对日志程序进行细粒度的控制时(如将日志程序发送到另一个文件,或者以不同的方式管理日志程序)

    配置属性如下:

    logger.
    .name =
    logger.
    .level =
    如:logger.
    .name = logger.org.elasticsearch.transportlogger.
    .level = trace

六、JSON日志格式

# 使用json文件格式输出appender.rolling.layout.type = ESJsonLayout# type_name是填充ESJsonLayout的类型字段的标志,该字段可以让我们在解析不同类型的日志时更加简单appender.rolling.layout.type_name = server日志默认为JSON格式打印,可通过如上两个属性进行配置,如需使用自定义布局,则配置appender.rolling.layout.type即可。例如:appender.rolling.layout.type = PatternLayoutappender.rolling.layout.pattern = [%d{
ISO8601}][%-5p][%-25c{
1.}][%node_name]%marker %.-10000m%n

转载地址:https://blog.csdn.net/weixin_43452424/article/details/110939517 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Elasticsearch 核心概念
下一篇:ElasticSearch 安装指南

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年03月29日 14时56分08秒