ELK简介
ELK是Elasticsearch+Logstash+Kibana简称
Elasticsearch 是一个分布式的搜索和分析引擎,可以用于全文检索、结构化检索和分析,并能将这三者结合起来。Elasticsearch 基于 Lucene 开发,现在是使用最广的开源搜索引擎之一。
Logstash 简单来说就是一根具备实时数据传输能力的管道,负责将数据信息从管道的输入端传输到管道的输出端,与此同时这根管道还可以让你根据自己的需求在中间加上滤网,Logstash提供了很多功能强大的滤网以满足你的各种应用场景。
Kibana 是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看、交互存放在Elasticsearch索引里的数据,使用各种不同的图标、表格、地图等,kibana能够很轻易的展示高级数据分析与可视化。
ELK下载安装
可以去官网分别下载安装:Past Releases of Elastic Stack Software | Elastic(我这里下载的elasticsearch-6.8.14 ])
需要提前安装JDK1.8。
启动顺序为:Logstash >= Elasticsearch > Kibana
1. Elasticsearch
下载地址: Past Releases of Elastic Stack Software | Elastic
# 解压
tar -zxvf elasticsearch-6.8.14.tar.gz
# 切换目录
cd elasticsearch-6.8.14/
修改配置文件 config/elasticsearch.yml
network.host: 192.168.37.189
http.port: 9200
启动es
启动的时候会报root权限不够、内存大小不够。报错关键字搜百度很多解决文章
1、root不能启动,就新建其他账号
2、elasticsearch报错Exception BindTransportException[Failed to bind to [9300-9400]]
解决办法:进入 config目录下 修改
vim elasticsearch.yml
network.host设置为 0.0.0.0 即可外网访问。
3、ElasticSearch启动报错,bootstrap checks failed
切换到root用户
编辑 /etc/security/limits.conf,追加以下内容;
* soft nofile 65536
* hard nofile 65536
此文件修改后需要重新登录用户,才会生效
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
编辑 /etc/sysctl.conf,追加以下内容:
vm.max_map_count=655360
保存后,执行:
sysctl -p
重新启动,成功。也可以编写脚本,把命令放进去
bin/elasticsearch -d
4、如果新用户访问权限不足,记得使用root修改es文件的访问权限
./bin/elasticsearch -d 加-d后台运行
./bin/elasticsearch
启动成功,访问192.168.37.189:9200
{
"name" : "cTP-_7z",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "6tnImaw3RyKHlErGQrtuvw",
"version" : {
"number" : "6.3.1",
"build_flavor" : "default",
"build_type" : "zip",
"build_hash" : "eb782d0",
"build_date" : "2018-06-29T21:59:26.107521Z",
"build_snapshot" : false,
"lucene_version" : "7.3.1",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
2. Logstash
下载地址:Past Releases of Elastic Stack Software | Elastic
# 解压
tar -zxvf logstash-6.3.1.tar.gz
# 切换目录
cd logstash-6.3.1/
修改配置文件 config/logstash.yml
http.host: "192.168.37.189"
新建配置文件 vim logstash.conf
input {
tcp {
port => 9012
#格式json
codec => json_lines
}
}
filter {
#过滤器,根据需要填写
}
output {
stdout {
codec => rubydebug
}
elasticsearch {
action => "index"
#这里是es的地址,多个es要写成数组的形式
hosts => "192.168.1.100:9010"
#用于kibana过滤,可以填项目名称
index => "applog"
}
}
启动
./bin/logstash -f logstash.conf
后台启动 也可以编写脚本,把下面的命令放进去
nohup ./bin/logstash -f logstash.conf &
访问http://192.168.37.189:9600,成功的话会显示一个JSON串
{
host: "gitlab.example.com",
version: "6.3.1",
http_address: "192.168.37.189:9600",
id: "004101d4-96cd-49c9-81c5-931c7327016e",
name: "gitlab.example.com",
build_date: "2018-06-29T22:43:59Z",
build_sha: "b79493047db01afca1e11c856fe8538d7ecb5787",
build_snapshot: false
}
3. Kibana
下载地址:Past Releases of Elastic Stack Software | Elastic
# 解压
tar -zxvf kibana-6.3.1-linux-x86_64.tar.gz
# 切换目录
cd kibana-6.3.1-linux-x86_64/
修改配置文件 config/logstash.yml
http.host: "192.168.37.189"
#修改为es的地址
elasticsearch.url: http://192.168.37.189:9200
启动
./bin/kibana
后台启动,可以编写成脚本
nohup ./bin/kibana &
启动成功访问页面:http://192.168.37.189:5601
三、SpringBoot相关
1. pom.xml
<properties>
<ch.qos.logback.version>1.2.3</ch.qos.logback.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>${ch.qos.logback.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${ch.qos.logback.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-access</artifactId>
<version>${ch.qos.logback.version}</version>
</dependency>
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>5.1</version>
</dependency>
</dependencies>
2. logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="true" scanPeriod="1 seconds">
<include resource="org/springframework/boot/logging/logback/base.xml" />
<contextName>logback</contextName>
<appender name="stash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>192.168.37.189:4560</destination>
<!-- encoder必须配置,有多种可选 -->
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>
<root level="info">
<appender-ref ref="stash" />
</root>
</configuration>
3. Test.java
@RequestMapping("/test1")
public String test(){
logger.info("你好啊e");
logger.warn("This is a warn message!");
logger.error("This is error message!");
return "server被调用了!:" +port;
}
四、测试
运行测试用例后回到kibana界面,Management --> Index Patterns,填入Logstash配置中index的值,此处为applog
第二步 此处选择"@timestamp"
回到Discover,大功告成!
查询过滤 level:"ERROR" and module_name:"app-server"
本文档大部分是参考的下面的地址。有一部分是我做过了修改,本文只做参考,
参考链接:https://blog.csdn.net/papima/article/details/90670110