### 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.(不知道怎么翻译,大概意思应该是,日志会包含慢日志相关的日志。)
- Emmm
- Logstash简介
- 开始使用Logstash
- 安装Logstash
- 储存你的第一个事件
- 通过Logstash解析日志
- 多个输入和输出插件的混合使用
- Logstash是如何工作的
- 执行模型Execution Model
- 设置并运行Logstash
- Logstash目录布局
- Logstash配置文件
- logstash.yml
- Secrets keystore for secure settings
- 从命令行运行Logstash
- 以服务的方式运行Logstash
- 在Docker中运行Logstash
- 配置容器版Logstash
- Logging
- 关闭Logstash
- 安装X-Pack
- 设置X-Pack
- 升级Logstash
- 使用包管理升级
- 直接下载进行升级
- 升级至6.0
- Upgrading with the Persistent Queue Enabled
- 配置Logstash
- 管道配置文件的结构
- 访问配置中的事件数据和字段
- 在配置中使用环境变量
- Logstash配置示例
- 多管道
- 管道间通信(beta)
- 重载配置文件
- 管理多行事件
- Glob Pattern Support
- Converting Ingest Node Pipelines
- Logstash间通信
- 配置集中式管道管理
- X-Pack Monitoring
- X-Pack Security
- X-Pack Settings
- Field References Deep Dive(深入字段引用)
- 管理Logstash
- 集中式管道管理
- 使用Logstash模块
- 使用Elastic Cloud
- Logstash ArcSight模块