ELK 是一个开源的实时日志分析平台,它主要由 Elasticsearch、Logstash 和 Kiabana 三部分组成。
Logstash 主要用于收集日志,它是一个开源数据收集引擎,具有实时管道功能。Logstash 可以动态地将来自不同数据源的数据统一起来,并将数据标准化到您所选择的目的地。
Logstash 收集数据的过程主要分为以下三个部分:
Elasticsearch (ES)是一个分布式的 Restful 风格的搜索和数据分析引擎,它具有以下特点:
Kibana 可以使海量数据通俗易懂。它很简单,基于浏览器的界面便于您快速创建和分享动态数据仪表板来追踪 Elasticsearch 的实时数据变化。其搭建过程也十分简单,您可以分分钟完成 Kibana 的安装并开始探索 Elasticsearch 的索引数据 — 没有代码、不需要额外的基础设施。
在 ELK 中,三大组件的大概工作流程如下图所示,由 Logstash 从各个服务中采集日志并存放至Elasticsearch 中,然后再由 Kiabana 从 Elasticsearch 中查询日志并展示给终端用户。
ELK的大致工作流程如下图所示:
ES安装
logstash安装
kibana安装
我们首先从简单的ELK日志框架开始搭建,简单的讲logstash中的数据输出到es中,然后再kibana进行展示。
首先我们需要再Logstash处进行相关的设置:
Logstash 基于插件开发和应用,包括输入、过滤器和输出三大类插件。输入插件指定了数据来源,过滤器插件则对数据做过滤清洗,而输出插件则指定了数据将被传输到哪里。在实际应用中,通常都是使用配置文件指定插件。
配置文件的语法形式与命令行相同,要使用的插件是通过插件名称来指定。 例如,想要向 Elasticsearch 中发送数据,则应该使用名称为 elasticsearch 的输出插件。在Logstash 安装路径下的config目录中,有一个名为logstash-sample.conf 的文件,提供了配置插件的参考。
这个文件配置的输入插件为 beats,输出插件为 elasticsearch。复制这个文件并重命名为 logstash-es. conf (通过cp命令, 也可以直接创建空文件),下面通过修改这个文件配置一个从命令行提取输入,并传输到 Elasticsearch 的 Logstash 实例。
按如下内容修改 logstash-es. conf 文件的输入输出插件:
input {stdin {}
}output {elasticsearch {hosts => ["http://192.168.42.111:9200"]index => "mylogstash1"#user => "elastic"#password => "changeme"}
}
./logstash -f ../config/logstash-es.conf
ELK 收集 Spring boot 项目中的日志信息其实很简单,我们只需要做如下几步即可:
首先我们要对 Logstash 进行相关配置,将 input 设置为 从服务上获取数据,然后将数据输出到ES中。(如果是在服务器上操作,记得开放端口号)
可以自行创建一个新配置文件,启动的时候指定就可以了。
./logstash -f ../config/logstash-es.conf
配置文件:
input {tcp {mode => "server"host => "0.0.0.0"port => 4560codec => json_lines}
}
output {elasticsearch {hosts => "localhost:9200"index => "springboot-logstash-%{+YYYY.MM.dd}"}
}
引入依赖
net.logstash.logback logstash-logback-encoder 5.3
添加日志文件
在资源文件夹下面创建日志文件:logback-spring.xml;配置的地址要和logstash配置的input相同。
INFO ${CONSOLE_LOG_PATTERN} utf8 127.0.0.1:4560 UTC {"logLevel": "%level","serviceName": "${springAppName:-}","pid": "${PID:-}","thread": "%thread","class": "%logger{40}","rest": "%message"}
@Slf4j
@RestController
public class TestController {@GetMapping("/test")public void test(){log.info("测试日志!");}
}
首先分别将 logstash ,es,kibana 启动,然后启动spring boot 项目调用接口。(es 中的数据可能会有延时,稍等会)
接口调用之后,我们就可以到 kibana 界面查看了,我们首先需要创建 index pattern 这样才能查询数据:
最后在 discover 界面选择对应索引就可以查看数据了。
下一篇:gin学习