1、什么是LogStash

image.png
官方文字说明:Logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的“存储库”中。
通俗说明:Logstash是一款强大的数据处理工具,常用作日志处理。

到目前为止,Logstash已经有超过200个可用的插件,以及创建和贡献自己的灵活性。社区生态非常完善,对于我们可以放心的使用。
image.png

2、为什么使用LogStash

通常当系统发生故障时,工程师需要登录到各个服务器上,使用grep / sed / awk 等 Linux 脚本工具去日志里查找故障原因。在没有日志系统的情况下,首先需要定位处理请求的服务器,如果这台服务器部署了多个实例,则需要去每个应用实例的日志目录下去找日志文件。每个应用实例还会设置日志滚动策略(如:每天生成一个文件),还有日志压缩归档策略等。
这样一系列流程下来,对于我们排查故障以及及时找到故障原因,造成了比较大的麻烦。因此,如果我们能把这些日志集中管理,并提供集中检索功能,不仅可以提高诊断的效率,同时对系统情况有个全面的理解,避免事后救火的被动。
所以日志集中管理功能就可以使用ELK技术栈进行实现。Elasticsearch只有数据存储和分析的能力,Kibana就是可视化管理平台。还缺少数据收集和整理的角色,这个功能就是Logstash负责的。

3、LogStash工作原理

3-1 Data Source

Logstash支持的数据源有很多。例如对于日志功能来说只要能有日志记录和日志传递功能的日志都支持,SpringBoot中默认推荐logback支持日志输出功能(输出到数据库、文件)。
我们就使用logback进行日志输出给LogStash。

3-2 LogStash Pipeline

整个中体就是LogStash的功能
在LogStash中包含非常重要的三个功能:

3-2-1 Input

输入源,一般配置为自己监听主机以及端口。DataSource向指定的ip以及端口输出日志,Input输入源坚挺到数据信息就可以进行收集。

3-2-2 Filter

过滤功能,对收集到的信息进行过滤(额外处理),也可以省略这个配置。

3-2-3 Output

把收集到的信息发送给谁,在ELK技术栈中都是输出给ElasticSearch,后面数据检索和数据分析的过程就交给ElasticSearch了。

最终效果:通过整体步骤就可以把原来的一行日志信息转换为ElasticSearch支持的Document进行存储。
image.png

4、Linux安装配置LogStash

4-1 解压然后剪切到/usr/local中并命名为logstash

上传压缩包到/usr/local/tmp中后,解压压缩包。
# tar zxf logstash-7.6.2.tar.gz
剪切到/usr/local中并命名为logstash
# mv logstash-7.6.2 ../logstash

4-2 修改配置

进入到logstash配置文件夹中
# cd /usr/local/logstash/config/
创建配置文件,名称自定义。
# vim mylogstash.conf

  1. input {
  2. tcp {
  3. mode => "server"
  4. host => "192.168.163.12"
  5. port => 4560
  6. }
  7. }
  8. filter {
  9. }
  10. output {
  11. elasticsearch {
  12. action => "index"
  13. hosts => "192.168.163.12:9200"
  14. index => "test_log"
  15. }
  16. }
  1. 配置解释说明:
  2. input:接收日志输入配置
  3. tcp: 协议
  4. mode: logstash服务
  5. host:logstash主机ip
  6. port:端口,自己指定。默认4560
  7. output:日志处理输出
  8. elasticsearch: 交给es处理
  9. actionesindex命令。也就是新增命令。
  10. hostses的主机
  11. index:存储日志的索引。如果不存在可以自动创建。默认的type名称为doc

4-3 启动LogStash

进入到bin目录
# cd /usr/local/logstash/bin
需要先启动Elasticsearch否则会频繁提示无法连接到Elasticsearch
启动logstash(记得指定配置文件)
# ./logstash -f /usr/local/logstash/config/mylogstash.conf

如果启动完成没有出异常,提示Successfully说明安装成功
image.png

5、基于Docker安装LogStash

5-1 安装

docker pull logstash:7.6.2

5-2 启动容器

docker run -it -p 4560:4560 —name logstash -d logstash:7.6.2

5-3 修改配置

进入容器
docker exec -it logstash /bin/bash
修改配置文件
vi /usr/share/logstash/config/logstash.yml
把ip修改成elasticsearch访问地址IP
image.png

5-4 修改输入输出配置

继续在容器命令行输入
vi /usr/share/logstash/pipeline/logstash.conf

  1. input {
  2. tcp {
  3. mode => "server"
  4. port => 4560
  5. }
  6. }
  7. filter {
  8. }
  9. output {
  10. elasticsearch {
  11. action => "index"
  12. hosts => "192.168.163.12:9200"
  13. index => "test_log"
  14. }
  15. }

5-5 重启容器

退出容器命令行,进入到Linux终端,重启logstash容器。
image.png
docker restart logstash

5-6 查看日志

docker logs -f logstash
image.png

6、使用Logback向LogStash中输出日志

看:https://www.yuque.com/asalan570/ggl4yu/mc3bmn

7、在Kibana中查看日志信息

7-1 使用命令查看

可以直接在Dev Tools中输入命令查看日志信息。
输入:GET test_log/_search 查看全部。
image.png

7-2 在Kibana界面查看

进入到Kibana后按图所示点击。创建索引表达式
image.png
选择没有时间过滤后,点击“Create index pattern”按钮
image.png
点击菜单中Discover,选择右侧test_log
image.png
每条日志在Elasticsearch中存储形式
image.png
IDEA中控制台打印的原日志内容是下面内容。Logstash作用就是把下面内容转换为上面Elasticsearch存储的内容。在中间做了数据格式转换,收集数据放入Elasticsearch中的工作。