天天看点

【ES】Elastricsearch + LogStash + Kibana收集日志

为什么要用ELK?

        ELK实际上是三个工具,Elastricsearch + LogStash + Kibana。一般情况下我们可以把日志保存在日志文件当中,也可以把日志存入数据库当中。但随着业务量的增加,日志数据量也会不断增加。我们通过ELK可以更好的收集、管理、分析日志。

        收集过程架构图

【ES】Elastricsearch + LogStash + Kibana收集日志

1、ElasticSearch

        Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。它能很方便的使大量数据具有搜索、分析和探索的能力。

本文使用ES版本为elasticsearch-7.6.2。官网下载,安装配置十分简单,可自行百度。

2、Logstash

        Logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的 “存储库” 中。这边我们的存储库是 Elasticsearch。

本文使用Logstash版本为logstash-7.6.2。

        官网下载地址:https://www.elastic.co/cn/downloads/logstash

【ES】Elastricsearch + LogStash + Kibana收集日志

        新建一个配置文件logstash-simple.conf,内容为:

input { stdin { } }
output {
  elasticsearch { hosts => ["localhost:9200"] }
  stdout { codec => rubydebug }
}
           

        执行启动脚本:

【ES】Elastricsearch + LogStash + Kibana收集日志

        访问测试:http://localhost:9600

        注意:在执行启动脚本时可能会报错,我把我遇到的问题列出来

1,找不到或无法加载主类Files 
解决方法:去除logstash.bat中"%CLASSPATH%"的引号。是的是去除引号。 
2,报编码问题,参数发生错误。 (ArgumentError) invalid byte sequence in US-ASCII 
解决方法:logstash安装路径不能有中文。
3,不到或无法加载主类 7.7.0\logstash-core\lib\jars\animal-sniffer-annotations-1.14.jar 
解决方法:logstash安装路径不能有空格。
           

3、Kibana

        Kibana 让您能够可视化 Elasticsearch 中的数据并操作 Elastic Stack,因此您可以在这里解开任何疑问:例如,为何会在凌晨 2:00 被传呼,雨水会对季度数据造成怎样的影响。

本文使用kibana-7.6.2-windows-x86_64版本

        官网下载:https://www.elastic.co/downloads/kibana

        修改Kebana配置文件,让其指向ElasticSearch

【ES】Elastricsearch + LogStash + Kibana收集日志

         双击脚本启动,访问测试:http://localhost:5601

【ES】Elastricsearch + LogStash + Kibana收集日志

4、整合SpringBoot + Logstash

        首先修改logstash的配置并重启。作用是开启logstash服务,接收logback日志。

input { 
  # stdin { }
  tcp { 
    # host:port就是上面appender中的 destination,
 # 这里其实把logstash作为服务,开启9250端口接收logback发出的消息 
    host => "127.0.0.1" port => 9250 mode => "server" tags => ["tags"] codec => json_lines 
  }
}
output {
  elasticsearch { hosts => ["localhost:9200"] }
  stdout { codec => rubydebug }
}
           

        在maven配置文件中添加依赖

<dependency>
    <groupId>net.logstash.logback</groupId>
	<artifactId>logstash-logback-encoder</artifactId>
	<version>5.2</version>
</dependency>
           

         添加日志框架logback的配置,配置日志输出

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="true" scanPeriod="1 seconds">

    <contextName>logback</contextName>
    <!--日志导出的到 Logstash-->
    <appender name="stash"
              class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>localhost:9250</destination>
        <!-- encoder必须配置,有多种可选 -->
        <encoder charset="UTF-8"
                 class="net.logstash.logback.encoder.LogstashEncoder" >
            <!-- "appname":"ye_test" 的作用是指定创建索引的名字时用,并且在生成的文档中会多了这个字段  -->
            <customFields>{"appname":"ye_test"}</customFields>
        </encoder>
    </appender>

    <!--日志输出到控制台规则 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>
                %d[%level]%c{100}.%M:%L%m%n
            </pattern>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="console"/>
        <appender-ref ref="stash"/>
    </root>

</configuration>
           

        启动springboot项目,并在Kibana中查看日志

【ES】Elastricsearch + LogStash + Kibana收集日志
【ES】Elastricsearch + LogStash + Kibana收集日志

        参考文章 :https://mp.weixin.qq.com/s/QC7AtZ8xW1z9MrbCtiUEvw

继续阅读