Logstash 参考指南(日志记录)

日志记录

Logstash在其操做期间发出内部日志,这些日志位于LS_HOME/logs(或/var/log/logstash用于DEB/RPM)中,默认的日志级别是INFO。Logstash的日志框架基于Log4j 2框架,其大部分功能都直接向用户公开。html

在调试问题时,特别是插件问题时,增长日志级别到DEBUG以得到更详细的消息是颇有帮助的。之前,你只能设置应用于整个Logstash产品的日志级别,从5.0开始,你能够在Logstash中为特定的子系统配置日志记录。例如,若是你正在调试Elasticsearch输出的问题,你能够仅为该组件增长日志级别,经过这种方式,你能够减小因为过分日志记录而产生的噪音,并有效地关注问题区域。node

日志文件位置

你可使用--path.logs设置指定日志文件的位置。apache

Log4j 2配置

Logstash带有一个使用log4j2.properties文件的开箱即用的设置,你能够修改此文件以更改旋转策略、类型和其余log4j2配置,你必须从新启动Logstash以应用对此文件所作的任何更改。json

Slowlog

Logstash的慢日志功能能够在特定事件须要异常长的时间才能经过管道时进行日志记录,与普通的应用程序日志同样,你能够在--path.logs目录中找到慢日志,使用如下选项在logstash.yml设置文件中配置Slowlog:api

slowlog.threshold.warn (default: -1)
slowlog.threshold.info (default: -1)
slowlog.threshold.debug (default: -1)
slowlog.threshold.trace (default: -1)

默认状况下,这些值被设置为-1nanos,表示不会调用slowlog的无限阈值,这些slowlog.threshold字段是使用时间值格式配置的,该格式支持普遍的触发间隔。可使用如下时间单位指定正数值范围:nanos(纳秒)、micros(微秒)、ms(毫秒)、s(秒)、m(分钟)、h(小时)、d(天)。ruby

这里有一个例子:app

slowlog.threshold.warn: 2s
slowlog.threshold.info: 1s
slowlog.threshold.debug: 500ms
slowlog.threshold.trace: 100ms

在上面的配置中,将记录在过滤器中处理耗时超过两秒的事件,日志将包含致使缓慢的完整事件和过滤器配置。框架

日志记录API

你能够修改log4j2.properties文件并从新启动你的Logstash,但这既乏味又会致使没必要要的停机,相反,你能够经过日志记录API动态更新日志记录级别,这些设置当即生效,不须要从新启动。curl

默认状况下,日志API试图绑定到 tcp:9600,若是该端口已经被另外一个Logstash实例使用,你须要使用 --http.port标志启动Logstash指定绑定到另外一个端口,有关更多信息,请参阅命令行标志。

要更新日志级别,请使用你感兴趣的子系统/模块并预先设置logger.,例如:jvm

curl -XPUT 'localhost:9600/_node/logging?pretty' -H 'Content-Type: application/json' -d'
{
    "logger.logstash.outputs.elasticsearch" : "DEBUG"
}
'

当这个设置生效时,Logstash为配置中指定的全部Elasticsearch输出发出DEBUG级别日志,请注意,这个新设置是暂时的,不会在从新启动时存活。

应该向log4j2.properties添加持久性更改,例如:

logger.elasticsearchoutput.name = logstash.outputs.elasticsearch
logger.elasticsearchoutput.level = debug

要检索运行时可用的日志记录子系统列表,能够对_node/logging执行GET请求:

curl -XGET 'localhost:9600/_node/logging?pretty'

示例响应:

{
...
  "loggers" : {
    "logstash.agent" : "INFO",
    "logstash.api.service" : "INFO",
    "logstash.basepipeline" : "INFO",
    "logstash.codecs.plain" : "INFO",
    "logstash.codecs.rubydebug" : "INFO",
    "logstash.filters.grok" : "INFO",
    "logstash.inputs.beats" : "INFO",
    "logstash.instrument.periodicpoller.jvm" : "INFO",
    "logstash.instrument.periodicpoller.os" : "INFO",
    "logstash.instrument.periodicpoller.persistentqueue" : "INFO",
    "logstash.outputs.stdout" : "INFO",
    "logstash.pipeline" : "INFO",
    "logstash.plugins.registry" : "INFO",
    "logstash.runner" : "INFO",
    "logstash.shutdownwatcher" : "INFO",
    "org.logstash.Event" : "INFO",
    "slowlog.logstash.codecs.plain" : "TRACE",
    "slowlog.logstash.codecs.rubydebug" : "TRACE",
    "slowlog.logstash.filters.grok" : "TRACE",
    "slowlog.logstash.inputs.beats" : "TRACE",
    "slowlog.logstash.outputs.stdout" : "TRACE"
  }
}

要重置任何可能经过日志API动态更改的日志级别,请向_node/logging/reset发送PUT请求,全部日志级别都将恢复到log4j2.properties文件中指定的值。

curl -XPUT 'localhost:9600/_node/logging/reset?pretty'
相关文章
相关标签/搜索