# ELK 日志检索

# 概述

  • ELK 是 Elasticsearch、Logstash 和 Kibana 的缩写,它们代表的是一套成熟的日志管理系统, ELK Stack 已经成为目前最流行的集中式日志解决管理方案。
  • Elasticsearch:分布式搜索和分析引擎,具有高可伸缩、高可靠和易管理等特点。基于 Apache Lucene 构建,能对大容量的数据进行接近实时的存储、搜索和分析操作。通常被用作某些应用的 基础搜索引擎,使其具有复杂的搜索功能;
  • Logstash:数据收集引擎。它支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰 富、统一格式等操作,然后存储到用户指定的位置。
  • Kibana:数据分析和可视化平台。通常与 Elasticsearch 配合使用,对其中数据进行搜索、分析和 以统计图表的方式展示。

# 配置

# 1、引入依赖

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

# 2、找到logback-spring.xml,文档位置如下图

ELK_0.png

# 3、在configuration标签中添加如下配置

<!-- 为logstash输出的JSON格式的Appender -->
<appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
    <!--tcp的地址以及端口,对应logstash中input组件tcp地址-->
    <destination>127.0.0.1:9250</destination>
    <!--日志输出编码-->
    <encoder charset ="UTF-8" class ="net.logstash.logback.encoder.LogstashEncoder" >
        <!-- 自定义字段 -->
        <customFields>{"appname":"myapp","pid": "${PID:-}"} </customFields>
        <providers>
            <timestamp>
                <timeZone>UTC</timeZone>
            </timestamp>
            <pattern>
                {
                "stack_trace": "%exception{5}"
                }
            </pattern>
        </providers>
    </encoder>
</appender>

<root level="INFO">
  <appender-ref ref="console"/>
  <appender-ref ref="info_log"/>
  <appender-ref ref="error_log"/>
  <!--logstash日志输出-->
  <appender-ref ref="logstash"/>
</root>


pattern标签内JSON各属性描述:

字段 含义
"stack_trace": "%exception{5}" 错误详细信息

# 使用示例

完成以上操作之后,打印日志时便可直接将日志信息经logstash传送到elasticsearch中,例如

测试调用使用的Java代码如下

@RestController
public class TestController {

    private Logger thisLog= LoggerFactory.getLogger(TestController.class);

    /**
     * 方法功能:打印传入的信息
     * 
     * @param logStr
     */
    @GetMapping("/getIp001")
    public void testCache5(
            @RequestParam("log") String logStr
    )  {
        thisLog.info(logStr);
        thisLog.error("error :::::::::: "+logStr);
    }
}

# kibana查看数据

打开查看器(discover),并将索引切换到logstash配置文件中设置的索引,这里使用的是myapp,如下图

ELK_3.png

查看结果:

ELK_5.png