基于docker快速搭建ELK

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 基于docker快速搭建ELK

Linux服务端配置

创建文件夹,用来存放elk相关的数据

$ mkdir/data/elk

1

创建logstash配置文件:logstash-springboot.conf

$ touch/data/elk/logstash/logstash-springboot.conf

1

编辑logstash-springboot.conf文件,写入以下内容

input{

tcp{

mode=>"server"

host=>"0.0.0.0"

port=>4560

codec=>json_lines

}

}

output{

elasticsearch{

hosts=>"es:9200"

index=>"springboot-logstash-%{+YYYY.MM.dd}"

}

创建docker-compose.yml文件

$ touch/data/elk/docker-compose.yml

1

编写docker-compose.yml文件,写入以下内容

version:'3'

services:

elasticsearch:

image:elasticsearch:7.6.2

container_name:elasticsearch

privileged:true

user:root

environment:

-"cluster.name=elasticsearch"#设置集群名称为elasticsearch

-"discovery.type=single-node"#以单一节点模式启动

-"ES_JAVA_OPTS=-Xms512m -Xmx512m"#设置使用jvm内存大小

volumes:

-/data/elk/elasticsearch/plugins:/usr/share/elasticsearch/plugins #插件文件挂载

-/data/elk/elasticsearch/data:/usr/share/elasticsearch/data #数据文件挂载

ports:

-9200:9200

-9300:9300

logstash:

image:logstash:7.6.2

container_name:logstash

privileged:true

environment:

-TZ=Asia/Shanghai

volumes:

-/data/elk/logstash/logstash-springboot.conf:/usr/share/logstash/pipeline/logstash.conf #挂载logstash的配置文件

depends_on:

-elasticsearch #logstash在elasticsearch启动之后再启动

links:

-elasticsearch:es #可以用es这个域名访问elasticsearch服务

ports:

-4560:4560

kibana:

image:kibana:7.6.2

container_name:kibana

privileged:true

links:

-elasticsearch:es #可以用es这个域名访问elasticsearch服务

depends_on:

-elasticsearch #kibana在elasticsearch启动之后再启动

environment:

-"elasticsearch.hosts=http://es:9200"#设置访问elasticsearch的地址

ports:

-5601:5601

在docker-compose.yml所在目录执行启动命令

$ docker-compose up-d

1

如果Elasticsearch启动报错,/usr/share/elasticsearch/data下的文件无权限,请给宿主机挂载的/data/elk/elasticsearch/data赋予权限:

$ chmod777/data/elk/elasticsearch/data

1

遇到错误时先关闭并删除容器

$ docker-compose down

1

在logstash中安装json_lines插件

# 进入logstash容器

docker exec-it logstash/bin/bash

# 进入bin目录

cd/bin/

# 安装插件

logstash-plugin install logstash-codec-json_lines

# 退出容器

exit

# 重启logstash服务

docker restart logstash

客户端配置

注意:本例应用服务是基于springboot开发的项目。

在pom.xml中引入依赖

<!--集成logstash-->

<dependency>

<groupId>net.logstash.logback</groupId>

<artifactId>logstash-logback-encoder</artifactId>

<version>5.3</version>

</dependency>

在resources文件夹下增加 logback-spring.xml文件,并写入以下内容

<?xml version="1.0"encoding="UTF-8"?>

<!DOCTYPE configuration>

<configuration>

<include resource="org/springframework/boot/logging/logback/defaults.xml"/>

<include resource="org/springframework/boot/logging/logback/console-appender.xml"/>

<!--应用名称-->

<property name="APP_NAME"value="springboot-logback-elk-demo"/>

<!--日志文件保存路径-->

<property name="LOG_FILE_PATH"value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/logs}"/>

<contextName>${APP_NAME}</contextName>

<!--每天记录日志到文件appender-->

<appender name="FILE"class="ch.qos.logback.core.rolling.RollingFileAppender">

<rollingPolicyclass="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

<fileNamePattern>${LOG_FILE_PATH}/${APP_NAME}-%d{yyyy-MM-dd}.log</fileNamePattern>

<maxHistory>30</maxHistory>

</rollingPolicy>

<encoder>

<pattern>${FILE_LOG_PATTERN}</pattern>

</encoder>

</appender>

<!--输出到logstash的appender-->

<appender name="LOGSTASH"class="net.logstash.logback.appender.LogstashTcpSocketAppender">

<!--可以访问的logstash日志收集端口-->

<destination>192.168.0.150:4560</destination>

<encoder charset="UTF-8"class="net.logstash.logback.encoder.LogstashEncoder"/>

</appender>

<root level="INFO">

<appender-ref ref="CONSOLE"/>

<appender-ref ref="FILE"/>

<appender-ref ref="LOGSTASH"/>

</root>

</configuration>


192.168.0.150:4560为我本机logstash的ip和端口,请自行设置。

重新启动项目后,项目输出的日志都会被收集到elk中。

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
5月前
|
消息中间件 Kafka 网络安全
淘东电商项目(49) -ELK+Kafka分布式日志收集(docker下搭建kafka)
淘东电商项目(49) -ELK+Kafka分布式日志收集(docker下搭建kafka)
61 0
|
6月前
|
缓存 应用服务中间件 nginx
基于Docker搭建ELK(Elasticsearch、Logstash、Kibana)
ELK是一套强大的开源工具组合,可以帮助我们采集、存储、分析和可视化大量的日志数据,本文通过简明清晰的步骤指导,帮助读者快速搭建起基于Docker的ELK日志分析平台,为日志数据的收集、存储、分析和可视化提供了一种高效可靠的解决方案。
|
10月前
|
Docker 容器
docker 安装 elk
1. 使用集成镜像方式 2.使用单个镜像安装 3. 开放端口 5044 5045 5601
208 0
|
存储 关系型数据库 jenkins
软件测试|Docker搭建测试用例平台 TestLink
软件测试|Docker搭建测试用例平台 TestLink
186 0
软件测试|Docker搭建测试用例平台 TestLink
|
应用服务中间件 测试技术 nginx
软件测试|Docker 搭建Web服务器nginx
软件测试|Docker 搭建Web服务器nginx
224 0
软件测试|Docker 搭建Web服务器nginx
|
Java 持续交付 Docker
十一、Docker搭建部署SpringCloud微服务项目Demo(二)
十一、Docker搭建部署SpringCloud微服务项目Demo
|
SpringCloudAlibaba 关系型数据库 MySQL
十一、Docker搭建部署SpringCloud微服务项目Demo(一)
十一、Docker搭建部署SpringCloud微服务项目Demo
|
jenkins Java Linux
docker搭建jenkins
自动化部署可以说是项目的必须,其中jenkins可以说是标配了。jenkins在持续集成、持续交付、持续部署方面做得都很好也就是常说的CI、CD。这篇文章就总结下使用docker来搭建jenkins的过程,并记录这中间踩过的坑,防止再踩,同时也为想要学习jenkins的同学提供一点借鉴。
391 0
docker搭建jenkins
|
SQL 存储 关系型数据库
实践-基于Docker搭建的mycat分片应用
实践-基于Docker搭建的mycat分片应用
实践-基于Docker搭建的mycat分片应用
|
NoSQL 关系型数据库 MySQL
基于window10使用docker搭建lnmpr环境
基于window10使用docker搭建lnmpr环境
137 0
基于window10使用docker搭建lnmpr环境