ELK 中 logstash 一般都是以日期为单位保存日志,格式如下:
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "logstash-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
}
ELK 中 logstash 一般都是以日期为单位保存日志,格式如下:
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "logstash-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
}
可以在 Elasticsearch 下载中心 下载对应版本的 Elasticsearch、Logstash 和 Kibana 。
这里使用的都是 6.8.3 版本。
直接发送日志到 logstash 地址
今天突然发现 ELK 中的部分日志无法保存了,只有异常(error)日志可以保存(我们是根据日志 Level 分别创建的索引,每月创建一个索引)。
查了好久终于在比对索引字段类型的时候发现有一个 serverTime 的字段在两个索引中的类型不同,一个是 long 型,一个是 date 型。
"serverTime": {
"type": "long"
}
Logstash 的配置文件由三部分组成 input、filter 和 output,每个部分都可以包含一个或多个插件设置。
input {
...
}
filter {
...
}
output {
...
}
在官方 Release 文档 Stashing Your First Event 看到可以通过 -e
参数在命令行中指定配置。
logstash.bat -e 'input { stdin { } } output { stdout {} }'
在 SpringBoot 中通过 logback 输出日志到 RabbitMQ,之后通过 Logstash 收集解析日志输出到 Elasticsearch,最后在 Kibana 中查看收集到的日志。
以下是在 windows 环境下执行的。Linux 上基本上只是启动时执行的文件不同。
也可以通过在 logstash 中配置好了 Exchange 之后启动会自动创建 Exchange、Queue 和 Binding。
这里是手动在 RabbitMQ 界面创建。
创建 Exchange
Name: log_logstash
Type: topic
Durability: Durable
Auto delete: No
Internal: No
创建队列
Name: OCT_MID_Log
Durability: Durable
Auto delete: No
创建 log_logstash Exchange 的 Binding
To queue: OCT_MID_Log
Routing key: service.#