### 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模塊