基于 Docker Compose 快速部署 ELK 日志系统

什么是ELK日志系统

ELK日志系统是由Elasticsearch、Logstash和Kibana组成的一套开源日志管理平台,常用于收集、存储、分析和可视化各种类型的日志信息。

  • Elasticsearch:是一个分布式搜索和分析引擎,能够快速存储、搜索和可视化数据,而且还有根据搜索和分析结果发出警报的功能。
  • Logstash:是一个数据收集和处理引擎,主要用于收集、过滤、解析和转换各种形式的数据。
  • Kibana:是一个可视化平台,能够快速创建各种形式的图表和仪表盘,方便用户对数据进行查询和分析。

使用ELK日志系统能够快速的帮助我们发现和解决各种问题,提高应用程序的可靠性和稳定性。

Docker Compose的介绍

Docker Compose是一个用于管理Docker应用程序的工具,可以快速的定义、运行和管理多个容器,常用于开发、测试或部署多个容器组成的应用程序,让应用程序的安装和管理变得非常简单和快捷。

使用Docker Compose可以快速部署ELK日志系统环境,提高你工作效率。

环境准备

在开始部署之前,请确保你已经安装了如下环境:

  • Docker
  • Docker Compose

可以通过如下命令来检查是否已经安装了Docker和Docker Compose:

docker version
docker-compose version 

如果没有安装,可以在官方网站下载并安装。

ELK日志系统安装

在安装ELK日志系统前,我们需要定义一个Docker Compose文件,包含如下三个容器服务:

  • Elasticsearch
  • Logstash
  • Kibana

在工作目录下创建一个docker-compose.yml文件, 编辑如下内容:

version: '3'
services:
  elasticsearch:
    image: elasticsearch:7.9.3
    container_name: elasticsearch
    ports:
      - "9200:9200"
    environment:
      - cluster.name=elasticsearch
      - node.name=elasticsearch-node1
      - discovery.seed_hosts=elasticsearch
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1

  logstash:
    image: logstash:7.9.3
    container_name: logstash
    volumes:
      - ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf
    ports:
      - "5000:5000"
    depends_on:
      - elasticsearch

  kibana:
    image: kibana:7.9.3
    container_name: kibana
    ports:
      - "5601:5601"
    environment:
      - "ELASTICSEARCH_URL=http://elasticsearch:9200"
    depends_on:
      - elasticsearch

保存文件,并且在此文件的相同目录上创建一个名为logstash.conf的文件,配置Logstash数据处理管道的规则,编辑如下内容:

input {
    tcp {
        port => 5000
        codec => json
    }
    udp {
        port => 5000
        codec => json
    }
}

filter {
  if [type] == "apache" {
    grok {
      match => { "message" => "%{COMBINEDAPACHELOG}" }
    }
  }
}

output {
  elasticsearch {
    hosts => ["http://elasticsearch:9200"]
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
  }
  stdout { codec => rubydebug }
} 

最后,现在是时候运行一个简单的命令来启动ELK容器了:

docker-compose up -d

运行完该命令后,我们将在终端中看到以下输出:

Creating network "elk_default" with the default driver
Creating elasticsearch ... done
Creating kibana         ... done
Creating logstash       ... done

运行这个命令之后 ELK 日志系统就自动成功安装和启动了。

ELK日志系统的应用

现在我们可以访问Kibana网址通过可视化方式展示和查询所有的日志信息,访问: http://localhost:5601

在Kibana首页上,点击"Discover"选项卡,你可以看到所有的日志消息,可以执行各种日志查询,及时发现应用程序中的异常和错误,提高应用程序的可靠性和稳定性。

总结

通过本篇文章,我们介绍了基于Docker Compose快速部署ELK日志系统的方法,使用docker-compose是一个快速启动ELK环境的好方法,帮助我们在分布式应用程序中轻松处理大量日志信息,并及时发现和解决各种问题。

Docker Compose提供了很好的容器管理工具,我们可以轻松的管理多个容器服务,并为应用程序提供一个简单、轻松和快速的部署体验。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65af6657add4f0e0ff8d4493