在安装ELK之前,建议大家先了解一下elk。
ELK 是elastic公司提供的一套完整的日志收集以及展示的解决方案,是三个产品的首字母缩写,分别是ElasticSearch、Logstash 和 Kibana。
ElasticSearch简称ES,它是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析。它是一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引擎,使用 Java 语言编写。
Logstash是一个具有实时传输能力的数据收集引擎,用来进行数据收集(如:读取文本文件)、解析,并将数据发送给ES。
Kibana为 Elasticsearch 提供了分析和可视化的 Web 平台。它可以在 Elasticsearch 的索引中查找,交互数据,并生成各种维度表格、图形。
win11,idea,jdk1.8
elasticsearch-7.11.1-windows-x86_64,logstash-7.6.1,kibana-7.11.1-windows-x86_64
值得一提的是elasticsearch的版本一定要和kibana的版本对应(很重要)不然会出现因为版本不兼容而引发的各种错误。开发人员一般使用jdk8,这就要求elasticsearch的版本在7.13以下。
我这里的elasticsearch和kibana版本都选择了7.11.1。
我这里给出了下载路径,直接下载对应的版本即可
elasticsearch:https://www.elastic.co/cn/downloads/past-releases/
logstash:https://www.elastic.co/cn/downloads/past-releases/#logstash
kibana:https://www.elastic.co/cn/downloads/past-releases/#kibana
elasticsearch:直接解压即可
logstash:解压压缩包,进入bin目录新建logstash.conf文件,文件内容如下
input {
tcp {
#模式选择为server
mode => "server"
#ip和端口根据自己情况填写,端口默认4560,对应下文logback.xml里appender中的destination
host => "127.0.0.1"
port => 4560
#格式json
codec => json_lines
}
}
filter {
#过滤器,根据需要填写
}
output {
elasticsearch {
action => "index"
#这里是es的地址,多个es要写成数组的形式
hosts => "127.0.0.1:9200"
#用于kibana过滤,可以填项目名称
index => "logstash_test"
}
}
kibana:解压文件即可
在启动ELK之前我们要先了解一下ELK的工作流程,这样才能更好的理解ELK的启动顺序。
ELK工作流程:一般都是需要在收集日志的服务上部署logstash,作为logstash shipper用于监控,过滤日志,将过滤后的日志发送给broker,然后logstash indexer将存放在broker中的数据再写入elasticsearch,elasticsearch对这些数据创建索引,然后kibana对其进行各种分析并以图表的形式展示。
有些时候,如果日志的收集量比较大,为了保证日志收集的性能和数据的完整性,logstash shipper和logstash indexer之间的缓冲器(broker)也经常用kafka来实现。
通过ELK的工作流程我们不难得知,ELK的启动顺序为logstash>=elasticsearch>kibana,如果先启动logstash,logstash会轮询请求配置文件的elasticsearch,会报警告,所以我们更改启动顺序为elasticsearch>logstah>kibana。
双击bin文件夹中的elasticsearch.bat即可
浏览器输入URL:http://localhost:9200/ 会输出json字符串
{
"name" : "DESKTOP-4N5REV4",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "ashqHfBHTbCyWrS-xa05Tg",
"version" : {
"number" : "7.11.1",
"build_flavor" : "default",
"build_type" : "zip",
"build_hash" : "ff17057114c2199c9c1bbecc727003a907c0db7a",
"build_date" : "2021-02-15T13:44:09.394032Z",
"build_snapshot" : false,
"lucene_version" : "8.7.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
切换到logstash中的bin目录下,终端输入
logstash -f logstash.conf
浏览器输入URL:http://localhost:9600/ 会输出json字符串:
{"host":"DESKTOP-4N5REV4","version":"7.6.1","http_address":"127.0.0.1:9600","id":"85acfd96-129b-4a71-8e26-e5837e4ae228","name":"DESKTOP-4N5REV4","ephemeral_id":"19dcb65c-f4da-4dcf-8b53-13422cd1bc78","status":"green","snapshot":false,"pipeline":{"workers":8,"batch_size":125,"batch_delay":50},"build_date":"2020-02-29T01:53:17+00:00","build_sha":"0a75e90f49c005bffea8525d1b06728d17dbdf58","build_snapshot":false}
进入到kibana的bin目录,终端输入kibana.bat,启动成功如下图所示
浏览器输入URL:http://localhost:5601/ 截图
<!-- 集成logback -->
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>5.3</version>
</dependency>
</dependencies>
如果配置文件是application.properties形式,则在配置文件下写入
logging.config=classpath:logback.xml
如果配置文件是application.yml形式,则在配置文件加写入
logging:
config: classpath:logback.xml
我这里给出以下xml文件,直接复制到你的项目下即可,如果有修改需求,直接在logback.xml文件下修改即可。
<configuration>
<appender name="LOGSTASH"
class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>localhost:4560destination>
<encoder charset="UTF-8"
class="net.logstash.logback.encoder.LogstashEncoder">
<customFields>{"appname":"spring-boot-lee"}customFields>
encoder>
appender>
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ----> [%thread] ---> %-5level %logger{50} - %msg%npattern>
layout>
appender>
<logger name="com.example" level="debug"/>
<logger name="org.springframework" level="debug" additivity="false">logger>
<root level="INFO">
<appender-ref ref="stdout"/>
<appender-ref ref="LOGSTASH"/>
root>
configuration>
全部配置完成后浏览器访问http://localhost:5601/进入到kibana图形化界面
接下来就可以看到你配置的索引了
随后再次点击discover页面就可以看到自己的日志内容了。
修改kibana安装文件下的config的kibana.yml文件,在文件最后一行加入
i18n.locale: "zh-CN"