博客
关于我
Elasticsearch 日志配置详解
阅读量:440 次
发布时间:2019-03-06

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

Elasticsearch日志配置与优化指南

Elasticsearch日志输出方式

Elasticsearch作为一个强大的搜索引擎,其日志输出方式对日常运维至关重要。默认情况下,Elasticsearch会将日志输出到控制台或指定文件中。对于通过Docker运行的Elasticsearch实例,默认会将日志输出到终端。对于手动或通过yum安装的Elasticsearch,日志会保存在$ES_HOME/logs目录下。为了更灵活地管理日志路径,可以通过修改elasticsearch.yml文件中的path.logs参数指定日志存储路径。


Elasticsearch日志配置方法

随着Elasticsearch集群规模的扩大,合理配置日志设置至关重要。以下是日志配置的关键知识点:

如何配置日志输出到文件

要实现日志输出到文件,请按照以下步骤操作:

  • 修改elasticsearch.yml文件:在elasticsearch.yml中设置path.logs参数,指定日志存储路径,默认为/usr/share/elasticsearch/logs。
  • 配置log4j2.properties文件:通过在log4j2.properties中定义日志文件名生成规则。以下是常用参数:
    • ${sys:es.logs.base_path}:日志目录路径。
    • ${sys:es.logs.cluster_name}:集群名称。
    • ${sys:es.logs.node_name}:节点名称。
    • ${sys:file.separator}:路径分隔符。
  • 示例配置:

    appender.transport.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_transport.jsonappender.transport.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}-%d{yyyy-MM-dd}-transport-%i.json.gz

    如何配置日志的滚动策略

    日志滚动是优化日志管理的重要手段。Elasticsearch支持基于时间或文件大小的滚动策略。以下是基于文件大小的滚动配置示例:

    appender.transport.policies.type = Policiesappender.transport.policies.time.type = TimeBasedTriggeringPolicyappender.transport.policies.time.interval = 1appender.transport.policies.size.type = SizeBasedTriggeringPolicyappender.transport.policies.size.size = 10KB

    滚动策略配置完成后,旧文件会自动删除。以下是文件保留策略的配置示例:

    appender.transport.strategy.type = DefaultRolloverStrategyappender.transport.strategy.fileIndex = nomaxappender.transport.strategy.action.type = Deleteappender.transport.strategy.action.basepath = ${sys:es.logs.base_path}appender.transport.strategy.action.condition.type = IfAccumulatedFileCountappender.transport.strategy.action.condition.glob = *-transport-*appender.transport.strategy.action.condition.exceeds = 10

    按类型输出到不同的文件中

    Elasticsearch模块众多,通过日志配置,可以将不同模块的日志输出到独立文件中。以下是transport和discovery模块的日志配置示例:

    appender.transport.type = RollingFileappender.transport.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_transport.jsonappender.transport.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}-%d{yyyy-MM-dd}-transport-%i.json.gz
    appender.discovery.type = RollingFileappender.discovery.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_discovery.jsonappender.discovery.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}-%d{yyyy-MM-dd}-%i-discovery.json.gz

    调整日志级别

    Elasticsearch支持多种日志级别,包括TRACE、DEBUG、INFO、WARN等。以下是调整日志级别的方法:

  • 命令行配置:使用-E参数指定日志级别,例如:
    -E logger.org.elasticsearch.transport=trace
  • elasticsearch.yml文件:在elasticsearch.yml中设置日志级别,例如:
    logger.org.elasticsearch.transport: trace
  • log4j2.properties文件:通过rootLogger.level设置全局日志级别,通过logger.transport.level设置模块日志级别。
  • API动态调整:通过API修改日志级别,例如:
    PUT /_cluster/settings{"transient":{"logger._root":"DEBUG"}}

  • 常见错误处理

    在实际操作中,可能会遇到“无法加载插件”错误。这种错误通常是由于配置文件中存在空格或格式问题引起的。解决方法是确保配置文件内容无空格,并遵循官方建议:Log4j的配置解析会受到任何额外空格的影响,因此在复制配置时务必清理行尾空格。


    写在最后

    通过以上配置方法,Elasticsearch的日志管理变得更加灵活和高效。对于日常运维工作,建议结合具体场景选择合适的日志滚动策略和保留策略,以平衡日志存储和分析的效率。

    转载地址:http://imrkz.baihongyu.com/

    你可能感兴趣的文章
    Python函数只返回第一个值而不是数据框
    查看>>
    Python+SQL实战:京东用户行为数据分析案例解析(上)
    查看>>
    Python+SQL实战:京东用户行为数据分析案例解析(下)
    查看>>
    PYTHON+Twisted+sqlanydb=ABORT()
    查看>>
    Python函数之返回值、作用域和局部变量
    查看>>
    Python+统计学 | 探索常用的数据分析统计分布
    查看>>
    python, selenium中用于切换帧的函数
    查看>>
    python函数
    查看>>
    python----线程、进程、协程的区别及多线程详解
    查看>>
    python---5
    查看>>
    python---使用celery分布式系统异步发送短信(云通讯)来验证登录
    查看>>
    python--003--百分号字符串拼接、format
    查看>>
    Python--10、线程
    查看>>
    Python--Redis实战:第四章:数据安全与性能保障:第4节:复制
    查看>>
    python--基本代码规范
    查看>>
    Python--抽象类接口类
    查看>>
    PYTHON--欧拉习题二
    查看>>
    python--高级应用总结
    查看>>
    python-520表白代码,我看谁说程序员不懂浪漫,送你几套表白代码,一步到位
    查看>>
    Python-Asyncio TypeError:无法在‘;等待‘;表达式中使用对象DICT
    查看>>