博客
关于我
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/

    你可能感兴趣的文章
    PHP:第一章——PHP中常量和预定义常量
    查看>>
    PHP:第一章——PHP中的位运算
    查看>>
    phpcms
    查看>>
    phpcms 2008 product.php pagesize参数代码注射漏洞
    查看>>
    phpcms V9 自定义添加 全局变量{DIY_PATH}方法
    查看>>
    Redis五种核心数据结构的基本使用与应用场景
    查看>>
    PHPCMS多文件上传和上传数量限制
    查看>>
    phpEnv的PHP集成环境
    查看>>
    PHPExcel一些基本设置总结
    查看>>
    PHPExcel导入导出 若在thinkPHP3.2中使用(无论实例还是静态调用(如new classname或classname::function)都必须加反斜杠,因3.2就命名空间,如/c...
    查看>>
    PHPMailer发送邮件
    查看>>
    phpmailer发送邮件,可以带附件
    查看>>
    phpmyadmin 安装
    查看>>
    phpmyadmin数据库建表及插入
    查看>>
    phprpc简单使用
    查看>>
    phpstorm中Xdebug的使用
    查看>>
    phpstorm中使用svn版本控制器
    查看>>
    phpstorm配置php脚本执行
    查看>>
    PhpStorm配置远程xdebug
    查看>>
    phpStudy安装教程
    查看>>