Elasticsearch7.X-Springboot整合ELK进行日志收集(dockercompose安装)<1>

本文介绍了如何使用Docker Compose快速部署ELK(Elasticsearch、Logstash、Kibana)堆栈,并通过SpringBoot应用的日志集成,实现日志收集和分析。详细步骤包括:1) 检查和下载ELK的Docker镜像;2) 使用docker-compose.yml配置并启动ELK服务;3) 配置SpringBoot应用的日志框架logback,将日志发送到Logstash;4) 测试接口并验证日志是否成功存储在Elasticsearch中。

来源:Elasticsearch7.X-dockercompose安装Springboot整合ELK进行日志收集

请扫码关注查看更多Elasticsearch7.X系列文章!

ELK简介

     ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。

      Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

     Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。从多台服务器上传输和转发日志,并对日志进行丰富和解析,是一个数据管道,提供了大量插件来支持数据的输入和输出处理,并负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。

     Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,Kibana完全使用HTML和Javascript编写,它利用Elasticsearch 的RESTful API来实现其强大的搜索能力,将结果显示位各种震撼的图形提供给最终的用户。可以帮助汇总、分析和搜索重要数据日志,提供了强大而美观的数据可视化。

环境安装

     

1、查看镜像

首先在elastic官方提供的地址查看elk镜像

在如下地址可以查看到官方发布的docker镜像

https://www.docker.elastic.co/#

图片

图片

图片

图片

2、docker-compose方式安装

下面以7.11为例,docker-compose.yml文件如下:

version: '2'

services:

  elasticsearch:

    image: docker.elastic.co/elasticsearch/elasticsearch:7.11.1

    container_name: elk_es7.11.1

    environment:

      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"

      - discovery.type=single-node

    volumes:

      - $PWD/elasticsearch/data:/home/docker/elk/elasticsearch/data

    hostname: elasticsearch

    restart: always

    ports:

      - "9200:9200"

      - "9300:9300"

    networks:

      - elk

  kibana:

    image: docker.elastic.co/kibana/kibana:7.11.1

    environment:

      - ELASTICSEARCH_URL=http://elasticsearch:9200 #elasticsearch 

    hostname: kibana

    depends_on:

      - elasticsearch  #

    restart: always

    ports:

      - "5601:5601"

    networks:

      - elk

  logstash:

    image: docker.elastic.co/logstash/logstash:7.11.1

    environment:

      - elasticsearch.hosts=http://elasticsearch:9200

    container_name: elk_logstash7.11.1 

    volumes:

     - $PWD/elk/logstash/conf.d/logstash.conf:/usr/share/logstash/pipeline/logstash.conf      - $PWD/logstash/config/logstash.yml:/usr/share/elk/logstash/config/logstash.yml

    hostname: logstash

    restart: always

    depends_on:

      - elasticsearch  #

    ports:

      - "4560:4560"

      - "9600:9600"

      - "5044:5044"

    networks:

      - elk

networks:

  elk:

    driver: bridge

启动容器

docker-compose up -d

查看端口

图片

官方安装参考:

https://www.elastic.co/guide/en/logstash/current/docker-config.html

图片

3、浏览器访问kibana是否成功

在浏览器输入http://你的服务器IP:5601/

图片

进行相关端口测试后没问题进行下面的步骤:

springboot-logstash环境搭建

环境说明:springboot2.4.5、ES7.11、logstash7.11、logback6.6

1、添加maven

<dependency>

<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>6.6</version>

</dependency>

2、logback-spring.xml添加日志打印

<appender name="LOGSTASH"

class="net.logstash.logback.appender.LogstashTcpSocketAppender">

<destination>192.168.244.129:4560</destination>

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

<encoder >

    <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}

[service:${springAppName:-}]

[traceId:%X{X-B3-TraceId:-},spanId:%X{X-B3-SpanId:-},parentSpanId:%X{X-B3-ParentSpanId:-},exportable:%X{X-Span-Export:-}]

[%thread] %-5level %logger{50} - %msg%n</pattern>

    <charset>UTF-8</charset>

</encoder>

</appender>

3、启动springboot项目

4、请求测试接口

图片

5、查看elasticsearch的日志数据

  • 新生成的索引名

图片

  • 下面为索引保存的数据

图片

如果觉得文章能帮到您,欢迎关注微信公众号:“蓝天Java大数据” ,共同进步!

当然可以,以下是详细的步骤: 1. 安装docker和docker-compose 在CentOS上安装Docker和Docker Compose,可以使用以下命令: ``` sudo yum update -y sudo yum install -y docker sudo systemctl start docker sudo systemctl enable docker sudo systemctl status docker ``` Docker Compose是Docker的一个插件,需要单独安装: ``` sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose docker-compose --version ``` 2. 创建工作目录 在你选择的目录里创建一个名为`elk`的目录,并进入该目录。 ``` mkdir elk && cd elk ``` 在该目录中新建以下文件夹 ``` mkdir -p logs/elasticsearch config/elasticsearch logs/kibana logs/logstash plugin ``` 3. 创建elasticsearch docker compose 在`elk`目录下,创建一个名为`docker-compose.yml`的文件,并加入以下内容: ```yml version: '3' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0 container_name: elasticsearch environment: - discovery.type=single-node - xpack.security.enabled=false - "ES_JAVA_OPTS=-Xms512m -Xmx512m" volumes: - ./logs/elasticsearch:/usr/share/elasticsearch/logs - ./config/elasticsearch:/usr/share/elasticsearch/config ports: - 9200:9200 - 9300:9300 networks: - elk networks: elk: ``` 说明: - `elasticsearch`是容器名称,可以根据实际情况调整 - `discovery.type=single-node`表示只有一个节点 - `xpack.security.enabled=false`表示不启用安全模式 - `ES_JAVA_OPTS=-Xms512m -Xmx512m`表示分配512MB内存给Elasticsearch容器 - `./logs/elasticsearch:/usr/share/elasticsearch/logs`表示将本地的`logs/elasticsearch`目录映射到Elasticsearch容器内的`/usr/share/elasticsearch/logs`目录 - `./config/elasticsearch:/usr/share/elasticsearch/config`表示将本地的`config/elasticsearch`目录映射到Elasticsearch容器内的`/usr/share/elasticsearch/config`目录 - `9200:9200`和`9300:9300`表示将容器内的9200和9300端口映射到宿主机上,方便通过浏览器访问 4. 创建kibana docker compose 在`elk`目录下,继续编辑`docker-compose.yml`,添加以下内容: ```yml version: '3' services: elasticsearch: ... networks: - elk kibana: image: docker.elastic.co/kibana/kibana:7.14.0 container_name: kibana environment: - ELASTICSEARCH_HOSTS=http://elasticsearch:9200 volumes: - ./logs/kibana:/usr/share/kibana/logs ports: - 5601:5601 depends_on: - elasticsearch networks: - elk networks: elk: ``` 说明: - `kibana`服务依赖于`elasticsearch`服务,必须要先启动`elasticsearch` - `ELASTICSEARCH_HOSTS=http://elasticsearch:9200`表示连接到Elasticsearch容器的9200端口 - `5601:5601`表示将容器内的5601端口映射到宿主机上,方便通过浏览器访问 5. 创建logstash docker compose 在`elk`目录下,继续编辑`docker-compose.yml`,添加以下内容: ```yml version: '3' services: elasticsearch: ... networks: - elk kibana: ... networks: - elk logstash: image: docker.elastic.co/logstash/logstash:7.14.0 container_name: logstash volumes: - ./plugin:/usr/share/logstash/plugins command: logstash -f /usr/share/logstash/pipeline/logstash.conf ports: - 5044:5044 - 5000:5000 depends_on: - elasticsearch networks: - elk networks: elk: ``` 说明: - `logstash`服务依赖于`elasticsearch`服务,必须要先启动`elasticsearch` - `./plugin:/usr/share/logstash/plugins`表示将本地的`plugin`目录映射到Logstash容器内的`/usr/share/logstash/plugins`目录 - `command: logstash -f /usr/share/logstash/pipeline/logstash.conf`表示运行`/usr/share/logstash/pipeline/logstash.conf`文件中的配置 - `5044:5044`和`5000:5000`表示将容器内的5044和5000端口映射到宿主机上,方便和应用程序交互 6. 配置logstash 在`elk`目录下,创建`logstash/pipeline`目录,并在其中新建名为`logstash.conf`的文件,并加入以下内容: ```conf input { tcp{ port => 5000 type => "spring-boot" } udp { port => 5000 type => "spring-boot" } } filter { if [type] == "spring-boot" { grok { match => { "message" => "%{TIMESTAMP_ISO8601:logtime} %{LOGLEVEL:loglevel} --- \[%{DATA:thread}\] %{DATA:class}.%{DATA:method} : %{GREEDYDATA:message}" } } } } output { elasticsearch { hosts => ["elasticsearch:9200"] index => "spring-boot-%{+YYYY.MM.dd}" } } ``` 说明: - `input`表示输入流设置,这里使用了TCP或UDP协议,监听5000端口 - `filter`表示过滤流设置,grok插件用来解析正则表达式。这里用正则表达式解析Spring Boot应用程序产生的日志文件 - `output`表示输出流设置,将过滤后的日志数据输出到Elasticsearch7. 使用Docker Compose启动服务 在`elk`目录下,运行以下命令启动服务: ``` docker-compose up -d ``` 等待一些时间后,整个`ELK`服务就启动了。 8. 测试 启动所有容器后,让Spring Boot应用程序将日志发送到端口5000 打开浏览器,输入`http://你的ip:5601/app/discover`访问Kibana应用程序。在Kibana应用程序中,创建索引,并在Discover页面中查看项目的日志信息。 现在,您已经成功地使用Docker Compose在CentOS上搭建了一个Spring Boot整合ELK
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值