介绍
ELK是Elasticsearch+Logstash+Kibana简称
- Elasticsearch 是一个分布式的搜索和分析引擎,可以用于全文检索、结构化检索和分析,并能将这三者结合起来。Elasticsearch 基于 Lucene 开发,现在是使用最广的开源搜索引擎之一。
- Logstash 简单来说就是一根具备实时数据传输能力的管道,负责将数据信息从管道的输入端传输到管道的输出端,与此同时这根管道还可以让你根据自己的需求在中间加上滤网,Logstash提供了很多功能强大的滤网以满足你的各种应用场景。
- Kibana 是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看、交互存放在Elasticsearch索引里的数据,使用各种不同的图标、表格、地图等,kibana能够很轻易的展示高级数据分析与可视化。
目录
- 安装docker-ce工具,docker-compose工具。
- 配置docker-compose.yml。
- 配置logstash.conf。
- 运行docker-compose,启动elk。
- logstash安装json_lines插件并重启。
- 在项目中pom.xml添加logstash-logback-encoder依赖
- 配置logback-spring.xml,并启动项目
- 使用kibana查看日志
具体步骤
安装docker-ce工具,docker-compose工具。
具体参考:https://docs.docker.com/engine/install/centos/
配置docker-compose.yml
具体参考:https://www.elastic.co/guide/index.html
version: '2'
services:
elasticsearch:
image: elasticsearch:7.13.3
container_name: elk_elasticsearch
environment:
- "discovery.type=single-node"
- "ES_JAVA_OPTS=-Xms512m -Xmx1024m"
volumes:
- /elk/elasticsearch/plugins:/usr/share/elasticsearch/plugins
- /elk/elasticsearch/data:/usr/share/elasticsearch/data
ports:
- 9200:9200
- 9300:9300
networks:
- elk
kibana:
image: kibana:7.13.3
container_name: elk_kibana
depends_on:
- elasticsearch
environment:
- ELASTICSEARCH_HOSTS=http://192.168.60.108:9200 #设置访问elasticsearch的地址(不同宿主机需要做调整)
ports:
- 5601:5601
networks:
- elk
logstash:
image: logstash:7.13.3
container_name: elk_logstash
volumes:
- /elk/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf
depends_on:
- elasticsearch
links:
- elasticsearch:es
ports:
- 4560:4560
networks:
- elk
networks:
elk:
配置logstash.conf
input {
tcp {
mode => "server"
host => "0.0.0.0"
port => 4561
codec => json_lines
type => "error"
}
tcp {
mode => "server"
host => "0.0.0.0"
port => 4562
codec => json_lines
type => "business"
}
}
output {
elasticsearch {
hosts => "es:9200"
index => "fincourt-logs-%{type}-%{+YYYY.MM.dd}"
}
}
运行docker-compose,启动elk。
#授权es目录
cd /elk
chmod 777 elasticsearch/data
#安装 elk
docker-compose up -d
#完成后查看容器
docker ps
logstash安装json_lines插件并重启。
docker exec -it elk_logstash /bin/bash -c "cd /bin && logstash-plugin install logstash-codec-json_lines"
docker restart elk_logstash
在项目中pom.xml添加logstash-logback-encoder依赖
<!--集成logstash-->
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>4.11</version>
</dependency>
配置logback-spring.xml,并启动项目
<!--输出到logstash的appender,{ip:端口}可在nacos中配置再在此读取,具体Ip和端口根据宿主机安装的logstash决定-->
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>192.168.60.108:4560</destination>
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>
<!--系统操作日志-->
<root level="info">
<appender-ref ref="file_info" />
<appender-ref ref="file_error" />
<appender-ref ref="LOGSTASH"/> <!--输出到logstash-->
</root>
使用kibana查看日志
访问 http://192.168.60.108:5601 按如下步骤操作
至此,简版的ELK搭建完成。