ELK,ElasticSearch+Logstash+Kibana三个组件的缩写,应用场景比较广泛:
1, 用于微服务架构中日志收集、分析、展示功能的基础组件。
2, 用于网站操作动作捕获监控、分析、展示功能的基础组件。
ElasticSearch:承担存储和分析功能,原理和具体操作前面已经花了大量篇幅来介绍。
Logstash:ELK架构的内容来源,负责收集和简单数据处理。
Kibana:提供友好展示、报表统计功能
常用部署模式:(一般用法,变种比较多)
需要强调的是:
1, 这3个本质上是完全独立的3个组件,只是这里搭配起来出奇效而已,并不是缺一不可的。
例如我可以直接通过java客户端将日志插入到ElasticSearch中,不要logstash;或者我运维人员直接去ElasticSearch上执行索引命令,不要Kibana;又或者我压根不用分析我的日志,我只是将分布式的日志收集在一起,只使用Logstash。
2, 这3个组件只是基础,搭配其它组件会产生更大的效益。
例如我日志量巨大Logstash收集时出现瓶颈,我可以在logstash前后搭建一块共享缓存Redis或者消息队列Kafka、RabbitMQ
Logstash:
下载地址https://www.elastic.co/downloads/logstash
与ElasticSearch一样属于下载即安装。
wget https://artifacts.elastic.co/downloads/logstash/logstash-5.6.3.zip
unzip logstash-5.6.3.zip
运行文件在:/bin/logstash(or logstash.bat)
配置文件在:/config
Logstash 集成的配置文件需要自己定制,准备一个 logstash.conf 为名的配置文件,里面配置好 input 、 filter 、 output 的集成信息,然后运行 bin/logstash -f logstash.conf 命令启动 logstash 。启动信息中可以看到我们配置的信息,out到ES的地址,input监听日志输入地址。
原理图:
Logstash分为3部分:输入、转换、输出3部分,这也是Logstash.conf配置的3部分。
例如:
# For detail structure of this file
# Set: https://www.elastic.co/guide/en/logstash/current/configuration-file-structure.html
input {
# For detail config for log4j as input,
# See: https://www.elastic.co/guide/en/logstash/current/plugins-inputs-log4j.html
file {
type => "server"
path => "C:\spring\workspace\demo-elk-trace1\build\elk-trace1.json"
}
}
filter {
#Only matched data are send to output.
}
output {
# For detail config for elasticsearch as output,
# See: https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html
elasticsearch {
action => "index" #The operation on ES
hosts => "192.168.226.133:9200" #ElasticSearch host, can be array.
index => "applog" #The index to write data to.
}
}
输入是一个文件,监听文件增量的变化;filter这里什么都没做,可以做一些格式转换、内容添加和删减等工作;输出这里是输出到了一个ElasticSearch,配置了ES的地址信息和索引位置。
输入输出比较灵活,可以对接文件、IP端口服务、Redis、MQ等等。
ElasticSearch:前面博文有详细介绍
Kibana:前面博文有安装使用介绍
Kibana这里可以通过ElasticSearch命令直接搜索日志内容:例如搜索Spring Cloud Sleuth中一次调用链经过的结点和日志信息:
该场景使用在ELK作为分布式系统日志收集分析功能使用。
还可以预先配置好索引信息检测数据的增长量:
(该场景使用在ELK作为网站操作动作监控收集分析功能)