目录

  • 什么是ELK
  • ELK简介
    • Elasticsearch
    • Logstash
    • Kibana
  • docker安装ELK
    • 安装es
    • 安装 Kibana
    • 安装logstash

什么是ELK

ELK是一个开源的数据分析平台,由三个开源项目Elasticsearch、Logstash和Kibana组成,因此被称为ELK Stack。ELK Stack主要用于处理和分析大量的日志数据,支持实时搜索、数据可视化和分析。其中,Elasticsearch是一个分布式搜索引擎和分析引擎,能够实现实时搜索和分析大规模的数据集。Logstash是一个数据收集、处理和转换工具,能够从不同来源收集、处理和传输数据。Kibana是一个数据可视化工具,能够通过仪表盘、图形和地图等方式展示数据。ELK Stack的三个组件相互配合,能够构建一个强大的、可扩展的日志分析平台,支持数据的快速检索、可视化和分析。

ELK简介

Elasticsearch

Elasticsearch是一个基于Lucene库的分布式搜索引擎和数据分析引擎,能够实现实时搜索和分析大规模的数据集,支持文本、数字、地理位置等多种类型的数据检索和分析。Elasticsearch是一个开源的、高度可扩展的平台,能够处理海量的数据,并支持分布式的数据存储和处理。Elasticsearch的主要特点包括:

  1. 分布式搜索引擎:Elasticsearch能够对海量的数据进行快速的搜索和查询,并支持实时搜索。

  2. 分布式数据存储:Elasticsearch能够将数据分散存储在多个节点上,以提高数据的可用性和可靠性。

  3. 多数据类型支持:Elasticsearch支持多种数据类型,包括文本、数字、日期、地理位置等。

  4. 实时数据分析:Elasticsearch能够对数据进行实时的聚合、过滤和分析,并支持数据可视化。

  5. 可扩展性:Elasticsearch能够扩展到数百个节点,处理PB级别的数据。

  6. 开源:Elasticsearch是一个开源的软件,源代码可以公开获取和修改。 Elasticsearch广泛应用于企业搜索、日志分析、安全分析和商业智能等领域。它提供了丰富的API和工具,包括RESTful API、Java API和Python API等,方便开发人员集成和使用。

Logstash

Logstash是一个开源的数据收集、处理和转换工具,能够从不同来源收集、处理和传输数据。,主要用于处理和分析大量的日志数据,支持多种数据源和格式,包括文本文件、数据库、日志文件、消息队列等。Logstash能够实现以下功能:

  1. 数据收集:Logstash能够从不同的数据源收集数据,并支持多种数据格式,包括JSON、CSV、XML等。

  2. 数据处理:Logstash能够对收集到的数据进行处理和转换,例如过滤、分析、标准化等。

  3. 数据传输:Logstash能够将处理后的数据传输到目标位置,例如Elasticsearch、Kafka、Redis等。

  4. 插件扩展:Logstash提供了丰富的插件,方便用户扩展和定制功能。

  5. 实时数据处理:Logstash能够实现实时数据处理,支持流式数据处理。 Logstash是一个高度可扩展的工具,能够处理大量的数据,并支持分布式部署。它能够与Elasticsearch、Kibana、Beats等工具集成,构建一个强大的、可扩展的数据分析平台。Logstash提供了丰富的文档和社区支持,方便用户学习和使用。

Kibana

Kibana是一个数据可视化工具,能够通过仪表盘、图形和地图等方式展示数据。主要用于展示和分析从Elasticsearch中获取的数据。Kibana能够实现以下功能:

  1. 数据可视化:Kibana能够通过仪表盘、图形和地图等方式展示数据,支持多种数据类型和格式。

  2. 数据查询:Kibana能够实现对Elasticsearch中存储的数据进行查询和搜索。

  3. 仪表盘管理:Kibana能够创建、管理和共享仪表盘,方便用户展示和分享数据。

  4. 可视化插件:Kibana提供了丰富的可视化插件,方便用户扩展和定制功能。

  5. 数据分析:Kibana能够实现对数据进行聚合、过滤和分析,支持实时数据处理。 Kibana的主要优点包括易用性、可扩展性和丰富的功能。它能够与Elasticsearch、Logstash、Beats等工具集成,构建一个强大的、可扩展的数据分析平台。Kibana提供了丰富的文档和社区支持,方便用户学习和使用。

docker安装ELK

安装es

1.下载es镜像

docker pull elasticsearch:7.12.1

2.运行es并导出es配置文件

# 创建一个docker 网络环境,名为elkdocker network create elk# 运行es容器docker run -d --name es --net elk -P -e "discovery.type=single-node" elasticsearch:7.12.1# 宿主机创建es目录mkdir eschmod 666 es# 进入es目录cd es# 查看当前目录/root/work/es# 将es容器中的配置文件复制到es目录中docker cp es:/usr/share/elasticsearch/config/elasticsearch.yml /root/work/es/elasticsearch.yml# 在es目录中创建data目录mkdir data# 准备工作已完成,删除临时创建的es容器docker rm -f es

3.运行es

# 运行新的容器docker run -d --name es \--net elk \-p 9200:9200 -p 9300:9300 \-e "discovery.type=single-node" \--privileged=true \-v $PWD/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \-v $PWD/data/:/usr/share/elasticsearch/data \elasticsearch:7.12.1

4.验证es是否运行成功

[root@localhost es]# curl 127.0.0.1:9200{"name" : "57df77848d46","cluster_name" : "docker-cluster","cluster_uuid" : "mYN2JAk_RGqn58QcPho3Pw","version" : {"number" : "7.12.1","build_flavor" : "default","build_type" : "docker","build_hash" : "3186837139b9c6b6d23c3200870651f10d3343b7","build_date" : "2021-04-20T20:56:39.040728659Z","build_snapshot" : false,"lucene_version" : "8.8.0","minimum_wire_compatibility_version" : "6.8.0","minimum_index_compatibility_version" : "6.0.0-beta1"},"tagline" : "You Know, for Search"}

安装 Kibana

1.下载kibana镜像

docekr search kibanadocker pull kibana:7.12.1# 启动 kibana 容器并连接同一网络docker run -d --name kibana --net elk -P -e "ELASTICSEARCH_HOSTS=http://es:9200" -e "I18N_LOCALE=zh-CN" kibana:7.12.1

2.复制kibana配置文件

cd /root/workmkdir kibanadocker cp kibana:/usr/share/kibana/config/kibana.yml kibana/chmod 666 kibana/kibana.yml

3.修改配置文件

server.name: kibanaserver.host: "0"elasticsearch.hosts: [ "http://192.168.2.6:9200" ]monitoring.ui.container.elasticsearch.enabled: true# 开启 kibana 的汉化i18n.locale: zh-CN

4.重新启动容器

docker rm -f kibanadocker run -d --name kibana \-p 5601:5601 \-v $PWD/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml \--net elk \kibana:7.12.1

5.访问kibana

通过ip:5601 可访问kibana,如图

安装logstash

1.拉取镜像并复制配置文件

docker pull logstash:7.12.1docker run -d -P --name logstash --net elk logstash:7.12.1mkdir logstash# 拷贝数据docker cp logstash:/usr/share/logstash/config logstash/docker cp logstash:/usr/share/logstash/data logstash/docker cp logstash:/usr/share/logstash/pipeline logstash/#文件夹赋权chmod -R 777 logstash/

2.修改logstash相关配置文件

  • 修改 logstash/config 下的 logstash.yml 文件,主要修改 es 的地址:
http.host: "0.0.0.0"xpack.monitoring.elasticsearch.hosts: [ "http://192.168.2.6:9200" ]
  • 修改 logstash/pipeline 下的 logstash.conf 文件:
input {tcp {mode => "server"host => "0.0.0.0"# 允许任意主机发送日志port => 5044codec => json_lines# 数据格式}}output {elasticsearch {hosts=> ["http://192.168.2.6:9200"] # ElasticSearch 的地址和端口index=> "elk" # 指定索引名codec=> "json"}stdout {codec => rubydebug}}

3.重新启动容器

#注意先删除之前的容器docker rm -f logstash# 启动容器并挂载docker run -d --name logstash --net elk \--privileged=true \-p 5044:5044 -p 9600:9600 \-v $PWD/logstash/data/:/usr/share/logstash/data \-v $PWD/logstash/config/:/usr/share/logstash/config \-v $PWD/logstash/pipeline/:/usr/share/logstash/pipeline \logstash:7.12.1

4.查看日志

docker logs -f logstash