# 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,文档位置如下图
# 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,如下图
查看结果:
← 日志 Easy-Trans数据翻译 →