企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
### Logging Logstash会在运行过程将自身内部的日志发出,存放在`LS_HOME/logs`(使用RPM/DEB安装的放在`/var/log/logstash`下)。默认的日志级别是`INFO`。Logstash的日志框架基于[Log4j 2](http://logging.apache.org/log4j/2.x/),其大部分的功能面向用户开放。 你可以为子系统,模块或插件配置特定的日志。 当你需要进行故障排查尤其是和插件相关的时候。将日志等级调整到`DEBUG`来获的更多信息。比如你要对Elasticsearch Output的问题进行Debug,你可以只为这个组件升级日志。这种方法可以帮你降低过多信息带来的干扰,帮助你更好的将精力集中在问题区域。 你可以通过`log4j2.properties`文件或Logstash API来配置日志。 + `log4j2.properties`文件。通过修改`log4j2.properties`文件配置,需要你重启Logstash来生效。更改之后在之后的运行中设置会一直生效。 + Logstash API。通过此种方法可以使修改立即生效,但在Logstash重启之后配置丢失。 ### Log4j2 configuration Logstash附带了一个可以直接使用的`log4j2.properties`文件。你可以通过修改此文件来配置轮转策略,类型和其他[log4j2 configuration](https://logging.apache.org/log4j/2.x/manual/configuration.html#Loggers)。 你必须重启Logstash来应用此文件中的更改。更改会在之后的运行中一直有效。 这儿有一个使用`outputs.elasticsearch`做的演示: ```conf logger.elasticsearchoutput.name = logstash.outputs.elasticsearch logger.elasticsearchoutput.level = debug ``` ### Logging APIs 对于临时修改配置,编辑`log4j2.properties`会带来不必要的停机时间。你可以通过logging API来动态修改配置。这些修改会立即生效,且不需要重新启动Logstash。 > <font color=#DC143C size=4>NOTE</font>:默认情况下,Logging API绑定在`tcp:9600`端口。如果端口被另一个Logstash实例占用,你需要使用 > > `--http.port`来绑定一个不同的端口。更多信息可以查看[命令行选项](https://www.elastic.co/guide/en/logstash/current/running-logstash-command-line.html#command-line-flags) ### Retrieve list of Logging configurations 要在运行的时候获取可用的日志配置列表,可以使用`GET`请求`_node/logging`。(原文:To retrieve a list of logging subsystems available at runtime, you can do a `GET` request to `_node/logging`) ```shell curl -XGET 'localhost:9600/_node/logging?pretty' ``` 返回示例: ```json { ... "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" } } ``` ### Update logging levels Prepend the name of the subsystem, module, or plugin with `logger.`. 这里是使用`outputs.elasticsearch`的一个示例: ```shell curl -XPUT 'localhost:9600/_node/logging?pretty' -H 'Content-Type: application/json' -d' { "logger.logstash.outputs.elasticsearch" : "DEBUG" }' ``` 当次设置生效的时候,Logstash配置中所有Elasticsearch outputs日志将调整为DEBUG级别。注意这个设置是暂时的,会在重启Logstash之后失效。 > <font color=#DC143C size=4>NOTE</font>:如果你想要在重启之后仍然有效,将此配置添加到`log4j2.properties`文件中。 ### Reset dynamic logging levels 要将通过logging API动态修改的配置恢复,发送一个`PUT`请求到`_node/logging/reset`。所有的日志级别会恢复到`log4j2.properties`文件中定义的级别。 ```shell curl -XPUT 'localhost:9600/_node/logging/reset?pretty' ``` ### Log file location 你可以通过`--path.logs`来指定日志文件的位置。 ### Slowlog 慢日志给Logstash增加了一种当某个特定事件花费了异常时间之后才能过管道时进行记录的能力。就像正常的应用日志,你可以在你`--path.log`指定的目录中找到慢日志。慢日志在`logstash.yml`文件中定义,使用下面的选项: ```conf slowlog.threshold.warn (default: -1) slowlog.threshold.info (default: -1) slowlog.threshold.debug (default: -1) slowlog.threshold.trace (default: -1) ``` 慢日志默认是关闭的。默认的阈值为`-1nanos`表示没有限制,即不会产生慢日志。(即无论多久都不算慢) ### Enable slowlog `slowlog.threshold`字段支持多种时间格式,且支持广泛的触发间隔。可以使用的单元有:`nanos`(飞秒),`micros`(微秒),`ms`(毫秒),`s`(秒),`m`(分钟),`h`(小时),`d`(天)。 慢日志会随着日志级别的提高变得更加敏感,从而生成更多事件。 ```yml slowlog.threshold.warn: 2s slowlog.threshold.info: 1s slowlog.threshold.debug: 500ms slowlog.threshold.trace: 100ms ``` 这个示例中: + 如果日志级别为`warn`,慢日志将会记录超过2s的事件 + 如果日志级别为`info`,慢日志将会记录超过1s的事件 + 如果日志级别为`trace`,慢日志将会记录超过100ms的事件 + 如果日志级别为`debug`,慢日志将会记录超过500ms的事件 The logs include the full event and filter configuration that are responsible for the slowness.(不知道怎么翻译,大概意思应该是,日志会包含慢日志相关的日志。)