Elasticsearch 7.3.0 翻译 - 《Set up Elasticsearch》 配置Elasticsearch--日志记录配置

日志记录配置

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

配置RollingFile附加器

  1. 配置RollingFile附加器

  2. 记录到/var/log/elasticsearch/production.json

  3. 使用JSON输出。

  4. type_name是一个填充esjsonlayout中类型字段的标志。它可以用来在解析日志时更容易地区分不同类型的日志。

  5. 滚动压缩到自增I的/var/log/elasticsearch/production-yyyy-MM-dd-i.json

  6. 使用time-based的滚动策略

  7. 每天滚动日志

  8. 在日边界上对齐辊(而不是每隔24小时滚动一次)

  9. 使用size-based的滚动策略

  10. 256 MB后的滚动日志

  11. 滚动日志时使用删除操作

  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配置,请确保修剪任何前导和尾随的空白。

注意,您可以在appender.rolling.filepattern中将.gz替换为.zip,以使用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. 配置默认Rolloverstrategy

  2. 配置用于处理滚动的Delete 操作

  3. ElasticSearch日志的基本路径

  4. 处理滚动时应用的条件

  5. 从与glob${sys:es.logs.cluster_name}-*匹配的基本路径中删除文件;这是要将日志文件滚动到的glob;这只需要删除滚动的ElasticSearch日志,而不必删除取消预测和慢速日志。

  6. 要应用于与glob匹配的文件的嵌套条件

  7. 保留日志7天

只要将多个配置文件命名为log4j2.properties并将elasticsearch config目录作为根目录,就可以加载多个配置文件(在这种情况下,它们将被合并);这对于公开其他记录器的插件很有用。记录器部分包含Java包及其对应的日志级别。appender部分包含日志的目标。有关如何自定义日志记录和所有支持的附件的详细信息,请参阅log4j文档

配置日志等级

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

  1. 通过命令行:-E <name of logging hierarchy>=<level> (e.g.,-E logger.org.elasticsearch.transport=trace)。当您在单个节点上临时调试一个问题(例如,启动或开发过程中的问题)时,这是最合适的方法。
  2. 通过elasticsearch.yml<name of logging hierarchy>: <level>(e.g.,logger.org.elasticsearch.transport: trace)当您临时调试一个问题,但没有通过命令行(例如,通过服务)启动ElasticSearch,或者您希望在更持久的基础上调整日志级别时,这是最合适的。
  3. 通过cluster settings:
PUT /_cluster/settings
{
  "transient": {
    "<name of logging hierarchy>": "<level>"
  }
}

例如:

PUT /_cluster/settings
{
  "transient": {
    "logger.org.elasticsearch.transport": "trace"
  }
}
--------------------------------------------------------
curl -X PUT "localhost:9200/_cluster/settings?pretty" -H 'Content-Type: application/json' -d'
{
  "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还允许您启用不推荐的操作的日志记录。例如,如果您将来需要迁移某些功能,您可以提前确定。默认情况下,禁用日志记录在警告级别启用,即所有禁用日志消息将发出的级别。

 

logger.deprecation.level = warn

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

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

您可以在config/log4j2.properties文件中通过将取消预测日志级别设置为error来禁用它。

JSON log format

为了使分析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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值