【Elasticsearch7.0】之日志配置()

 


前言

最近发现线上的es集群日志数量有点多,且过于冗余。于是今天对es的日志的配置重新配置一下。

我这边的配置就是参考了下文。参考链接:http://www.chaiguanxin.com/articles/2019/05/30/1559202725366.html

日志配置

es使用log4j2来处理日志。可以在log4j2.properties文件里面修改日志的一些配置。es提供了3个属性,分别是:${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 ############################ # 日志滚动类型为RollingFile appender.rolling.type = RollingFile # 名称 appender.rolling.name = rolling # 日志文件名为/var/log/elasticsearch/production.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 # 会在日志输出中有这个标识,如果有解析不同类型的日志时,可以用来区分。 appender.rolling.layout.type_name = server # 文件压缩之后的名称,%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 # 以天为标准,输出日志文件 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 # 压缩日志的大小条件是2 GB appender.rolling.strategy.action.condition.nested_condition.exceeds = 2GB ################################################

可以把appender.rolling.filePattern配置中的.gz修改为.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

如果有多个日志配置文件,他们会被合并。es日志目录下的优先级最高。你也可以自定义日志记录。

日志等级配置

一共有4种配置方式。

  1. 通过命令行来指定,语法是:-E = (例如: -E logger.org.elasticsearch.transport=trace),比较适用于在单个节点上临时调试问题的场景。
  2. 在elasticsearch.yml后面添加配置,语法为:elasticsearch.yml: <name of logging hierarchy>: <level>(例如:logger.org.elasticsearch.transport: trace),适用场景是没有通过命令行启动,但是又想临时调试一个问题。
  3. 通过cluster settings接口来设置。语法是:
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

适用场景是如果你需要更加细化你的日志配置,那么可以在这里配置。

弃用日志

es支持对弃用的一些方法打印日志,可以让开发者知道哪个方法已经弃用了,需要配置以下属性:

logger.deprecation.level = warn

它会生成一个弃用的日志文件。如果你需要升级你的版本时,需要关注这个日志文件。弃用日志默认是滚动策略,然后文件大约在1G的时候进行压缩,最多保留5个文件(4个滚动之后的文件和一个活动的文件)
如果你要关闭弃用日志,那么把日志级别改为error。

json格式化日志

json格式的日志,更加方便阅读。只要把appender.rolling.layout.type配置为ESJsonLayout,就可以了。还需要把appender.rolling.layout.type_name配置一个名称,这样在做分析的时候可以知道这个日志是来自哪里的。
配置示例:

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

本文转自:http://www.chaiguanxin.com/articles/2019/05/30/1559202725366.html


__EOF__

本文作者彬在俊
本文链接https://www.cnblogs.com/erlou96/p/16878254.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   彬在俊  阅读(228)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示