ELK简介
ELK是Elasticsearch+Logstash+Kibana简称
Elasticsearch 是一个分布式的搜索和分析引擎,可以用于全文检索、结构化检索和分析,并能将这三者结合起来。Elasticsearch 基于 Lucene 开发,现在是使用最广的开源搜索引擎之一。
Logstash 简单来说就是一根具备实时数据传输能力的管道,负责将数据信息从管道的输入端传输到管道的输出端,与此同时这根管道还可以让你根据自己的需求在中间加上滤网,Logstash提供了很多功能强大的滤网以满足你的各种应用场景。
Kibana 是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看、交互存放在Elasticsearch索引里的数据,使用各种不同的图标、表格、地图等,kibana能够很轻易的展示高级数据分析与可视化。
流程
基于spring boot搭建ELK
可以去官网分别下载安装:https://www.elastic.co/cn/downloads/past-releases#(我这里下载的7.12.0)
Elasticsearch
1.下载Elasticsearch,解压,点击bin下的elasticsearch.bat
3.返回一串json代码,则证明安装成功
{
"name" : "LAPTOP-Q7TNQUU9",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "RMJvT6LHRFaE-05T2NegzA",
"version" : {
"number" : "7.12.0",
"build_flavor" : "default",
"build_type" : "zip",
"build_hash" : "78722783c38caa25a70982b5b042074cde5d3b3a",
"build_date" : "2021-03-18T06:17:15.410153305Z",
"build_snapshot" : false,
"lucene_version" : "8.8.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
Logstash
1.下载解压logstash-7.12.0,在D:\ELK\logstash-7.12.0\config新增log4j_to_es.conf文件,input是输入配置,output是输出配置
input:使用tcp去做日志数据的传输,
host:从哪个端口进来的数据
port:端口号
mode:server只监听本地,如果做集群是另一种配置,这里先不解释,可以百度
codec:数据格式json
output:输出到那,我们这输出到es中
hosts:是es的地址
index:输出的名称,在kibana中查看这个名字
input{
tcp {
host=>"127.0.0.1"
port => 9601
mode=>"server"
codec => json_lines
}
}
output{
elasticsearch{
hosts=>["http://127.0.0.1:9200"]
index => "user-%{+YYYY.MM.dd}"
}
stdout{codec => rubydebug}
}
2.在D:\ELK\logstash-7.12.0\bin下新建run.bat,用来启动。
logstash -f ../config/log4j_to_es.conf
3.访问http://localhost:9600/,出现以下内容,在代表配置成功
{
"host":"LAPTOP-Q7TNQUU9",
"version":"7.12.0",
"http_address":"127.0.0.1:9600",
"id":"dad8f5b9-4d08-4114-a25a-27fb5d7177ed",
"name":"LAPTOP-Q7TNQUU9",
"ephemeral_id":"f0d4a37b-09ca-4467-b427-df12be8d641c",
"status":"green",
"snapshot":false,
"pipeline":{
"workers":8,
"batch_size":125,
"batch_delay":50
},
"build_date":"2021-03-18T05:13:33Z",
"build_sha":"4399d72a9afe6f06db8adbaad8030e5b111e86b6",
"build_snapshot":false
}
Kibana
1.下载Kibana,解压
2.点击bin下的kibana.bat
3.出现以下代码证明启动成功
log [20:28:10.143] [info][kibana-monitoring][monitoring][monitoring][plugins] Starting monitoring stats collection
4.点击访问http://localhost:5601/
那么我们ELK就搭建完了,我们只需要再项目中集成就可以了
我们以spring boot为例,新建spring boot项目,在配置文件新增依赖
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>5.1</version>
</dependency>
新建logback-spring.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml" />
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>127.0.0.1:9601</destination> //logstash ip和暴露的端口,logback就是通过这个地址把日志发送给logstash
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>
<root level="INFO">
<appender-ref ref="LOGSTASH" />
<appender-ref ref="CONSOLE" />
</root>
</configuration>
在application.yml中引入logback-spring.xml
logging:
config: classpath:logback-spring.xml
新建controller入口
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class LoginController {
private Logger logger = LoggerFactory.getLogger(LoginController.class);
@RequestMapping("/login1")
public void showLogin1(){
logger.warn("This is a warn message!");
logger.error("This is error message!");
try {
int a = 1/0;
} catch (Exception e){
e.printStackTrace();
}
}
}
新建home.html页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>ELK</h1>
<a href="/login1">报错日志</a>
</body>
</html>
启动项目,访问home.html,点击链接,控制台输出
在logstash的命令窗口看到有json数据,说明我们项目的日志已经推到logstash了
再去查看Kibana可视化界面,注意,首次登陆需要设置Index patterns
我们会看到所有的索引名称,复制我们今天的名称,点击下一步
选择@timestamp,点击创建
创建完成,点击左侧的菜单栏,点击Discover
就可以看到我们输出的日志信息了,左侧栏是配置列表显示的项
到此spring boot ELK搭建以及测试完毕
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/10890.html