使用docker部署ELK实战

目录

  • 什么是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 网络环境,名为elk
docker network create elk
# 运行es容器
docker run -d --name es --net elk -P -e "discovery.type=single-node" elasticsearch:7.12.1
# 宿主机创建es目录
mkdir es
chmod 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 kibana
docker 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/work
mkdir kibana
docker cp kibana:/usr/share/kibana/config/kibana.yml kibana/
chmod 666 kibana/kibana.yml

3.修改配置文件

server.name: kibana
server.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 kibana
docker 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,如图

使用docker部署ELK实战_第1张图片

安装logstash

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

docker pull logstash:7.12.1

docker run -d -P --name logstash --net elk logstash:7.12.1

mkdir 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 => 5044
    codec => 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

你可能感兴趣的:(运维笔记,docker,elk,elasticsearch)