部署
1 | |
其中参考的logstash.yml
1 | |
具体的logstash的配置,表示从filebeat获取输入,将结果输出到elasticsearch
1 | |
参考的filebeat的配置,可从 https://raw.githubusercontent.com/elastic/beats/7.10/deploy/docker/filebeat.docker.yml下载
1 | |
以上,从源日志文件/var/log/nginx/*.log,经过filebeat、logstash到elasticsearch,然后登陆kibana,新建索引,就可以查看日志了
logstash
信息流,input -> decode -> filter -> encode -> output
基本配置
本质上是ruby书写的DSL,
1 | |
扩展方案
运行在应用服务器上,制作读取转发,这个叫shipper,运行在独立服务器上,完成数据解析,这个叫indexer。
redis
通过如下配置,就可以在redis中使用发送消息
1 | |
publish logstash-chan '{"hello":"world"}'
但是,如果多个logstash都这么订阅,就会造成消息重复,于是,修改
1 | |
rpush logstash-list "hello world"
同时,可以将logstash输出到redis
1 | |
在redis上发布订阅,subscribe logstash-chan-2021.01.06,然后再logstash输入字符,就可以在redis看到输出
那么实际使用中,就可以让一个logstash输入到redis,另一个从redis读取,只需要key是相匹配即可。由于logstash比较占用性能,于是,就使用filebeat,将日志输出到redis中去,修改filebeat中输出部分的配置如下,默认是list模式
1 | |
当然,也可以使用kafka做消息队列
1 | |
这样在logstash,就要订阅kafka了
1 | |
最终的信息流
log –> filebeat –> redis –> logstash –> elasticsearch
源码
pipeline
在logstash-core/lib/logstash/pipeline.rb文件中
elasticsearch
基本概念
ElasticSearch是用Lucene来实现索引的查询功能的,
介绍文档
https://doc.yonyoucloud.com/doc/mastering-elasticsearch/index.html
倒排索引
- ElasticSearch Servier (document 1)
- Mastering ElasticSearch (document 2)
- Apache Solr 4 Cookbook (document 3)
| Term | count | Docs |
| 4 | 1 | <3> |
| Apache | 1 | <3> |
| Cookbook | 1 | <3> |
| ElasticSearch | 2 | <1> <2> |
| Mastering | 1 | <1> |
| Server | 1 | <1> |
| Solr | 1 | <3> |