Docker搭建ELK日志系统

本文介绍了如何使用Docker在三台服务器上分别搭建Elasticsearch、Kibana和Logstash,形成ELK日志系统,实现日志的收集、分析和展示。在Spring Boot应用中集成Logstash,确保微服务日志有效管理和检索。同时,提供了配置文件示例和启动命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于Docker搭建ELK日志系统,并在Spring Boot中集成Logstash实现微服务的日志收集。

ELK是Elasticsearch、Logstash、Kibana的简称,这三者是核心套件实现日志采集、分析、展示,但并非全部。Elasticsearch官网地址

Elasticsearch是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;是一套开放REST和JAVA API等结构提供高效搜索功能,可扩展的分布式系统。它构建于Apache Lucene搜索引擎库之上。

Logstash是一个用来搜集、分析、过滤日志的工具。它支持几乎任何类型的日志,包括系统日志、错误日志和自定义应用程序日志。它可以从许多来源接收日志,这些来源包括 syslog、消息传递(例如 RabbitMQ)和JMX,它能够以多种方式输出数据,包括电子邮件、websockets和Elasticsearch。

Kibana是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据。它利用Elasticsearch的REST接口来检索数据,不仅允许用户创建他们自己的数据的定制仪表板视图,还允许他们以特殊的方式查询和过滤数据。

下面我们是分别在3台服务器上搭建的。

安装elasticsearch

拉取镜像

docker pull elasticsearch:7.6.0

Elasticsearch默认是集群模式,集群模式下对机器配置较高;因此我们这里使用单机版的部署作为示例。下面是启动命令:

docker run -d --restart=always --name es7 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.0

之后通过9200端口在浏览器上访问http://192.168.56.102:9200(需要开启外网访问权限),有信息返回则成功;像下面的信息:

{
  "name" : "node-1",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "7jUr1QFPQcSbDGG4A4c5Og",
  "version" : {
    "number" : "7.6.0",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "7f634e9f44834fbc12724506cc1da681b0c3b1e3",
    "build_date" : "2020-02-06T00:09:00.449973Z",
    "build_snapshot" : false,
    "lucene_version" : "8.4.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

注意:如果需要添加插件时,需要将容器的插件目录映射到实际的路径中或者通过命令(如安装ik分词器:docker cp ik elasticsearch:/usr/share/elasticsearch/plugins/)将其拷贝到容器中
如果机器内存过小会导致启动失败,在集群模式下容易遇到

安装kibana

kibana主要用于对elasticsearch的数据进行分析查看。注意选择的版本必须和elasticsearch的版本相同或者低,建议和elasticsearch的版本相同,否则会无法将无法使用kibana。

拉取kibana的docker镜像

docker pull kibana:7.6.0

创建kibana的配置:

mkdir -p /home/elk/config
vi /home/elk/config/kibana.yml

在里面添加如下配置

# Default Kibana configuration for docker target
server.name: kibana
server.host: "0"
# elasticsearch的地址,多个使用逗号分割
elasticsearch.hosts: [ "http://192.168.56.102:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true
# 语言选择为中文
i18n.locale: "zh-CN"

启动kibana:

docker run -d --restart=always --name kibana -v /home/elk/config/kibana.yml:/usr/share/kibana/config/kibana.yml -p 5601:5601 kibana:7.6.0

启动成功后访问5601端口即可进入kibana管理界面http://192.168.56.104:5601 。(进入后要求选择配置,直接选择自己浏览即可)

操作说明

刚进入系统时会有如下提示,任意选择即可:

创建索引模式,以便我们可以查看日志信息;


安装Logstash

logstash会将收到的日志信息推送到elasticsearch中。

拉取Logstash的镜像

docker pull logstash:7.6.0

创建logstash的日志处理配置文件logstash.conf

mkdir -p /home/elk/config
vi /home/elk/config/logstash.conf

添加如下配置:

input {

  tcp{
    port => 5044
    codec => json_lines
  }
}
filter {
       mutate {
         remove_field => ["logLevel", "stdoutOpen", "useLogStash", "logStashDestination"]
       }
}
output {

  #stdout {
  #  codec => rubydebug
  #}

  elasticsearch {
    hosts => ["192.168.56.105:9200"]
    index => "logstash-%{[env]}-%{[server_name]}-%{+YYYY.MM.dd}"
  }
}

创建logstash的的es配置文件logstash.yml

vi /home/elk/config/logstash.yml

添加如下配置:<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值