docker之ELK的安装

一、定义

  在微服务学习中,对于微服务日志,分布式日志、海量日志的处理解决方案ELK是一个不错的选择,ELK是Elasticsearch、Logstash和Kibana的缩写,这三者组合起来,形成一个强大的开源实时日志分析平台。主要涉及三个组件Elasticsearch、Logstash、Kibana。

  Elasticsearch:Elasticsearch是一个基于Lucene构建的开源、分布式、RESTful搜索引擎。它设计用于云计算中,能够达到实时搜索、稳定、可靠、快速且易用的效果。Elasticsearch提供了一整套强大的功能,包括全文搜索、结构化搜索、分析以及这三个功能之间的任意组合。

  Logstash:是一个开源数据收集引擎,具有实时管道能力。它能够动态地统一来自不同来源的数据,并将其标准化到所选的目的地。Logstash适合从各种来源接收数据,能够解析数据,然后将数据发送到您选择的“存储库”中。

  Kibana:Kibana是一个为Elasticsearch设计的开源分析和可视化平台。你可以使用Kibana来搜索、查看和可视化存储在Elasticsearch索引中的数据。Kibana使您能够轻松地执行高级数据分析,并在Elasticsearch的索引中以一种吸引眼球的方式展示数据。

  从上述三者结合起来,可以形成一套完整的日志收集、分析和可视化解决方案。Logstash负责收集日志,并将其发送至Elasticsearch进行存储和索引;随后,Kibana可以从Elasticsearch中获取数据,并提供友好的界面供用户进行搜索、分析和可视化。

  通过分析存储引擎+收集+可视化一套完成在日志管理和分析、监控和警报、安全分析和业务分析等场景中非常有用,使得用户可以更好地理解其数据,并据此做出明智的决策,这个就是方便在微服务中查找解决问题。

二、安装

  第一步、安装docker Compose容器编排工具,它基于YAML文件格式,允许您通过一个单独的配置文件来定义和管理多个容器的配置和连接。使用Docker Compose,您可以轻松地定义和组织多个容器之间的关系和依赖关系,指定每个容器的镜像、环境变量、网络设置、挂载点等配置,并使用服务名称来引用其他服务。比如上述三个组件结合使用,则通过compose来设置、创建、运行容器。

安装命令如下所示:

--github下载
sudo curl -L "https://github.com/docker/compose/releases/download/v2.5.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
--设置权限
sudo chmod +x /usr/local/bin/docker-compose

  第二步、编写docker-compose.yml文件,安装docker容器,如下所示:

-- 创建三个容器要挂载的目录
mkdir -p /home/docker/elk/{elasticsearch/{data,plugins},logstash/config}
--给挂载目录设置权限
chmod -R 777 /home/docker/elk/elasticsearch/

  编写docker-compose.yml文件,如下所示:

version: '3'
services:
  elasticsearch:
    image: elasticsearch:7.17.7  # 镜像
    container_name: elk_elasticsearch  # 定义容器名称
    restart: always  # 开机启动,失败也会一直重启
    environment:
      - "cluster.name=elasticsearch" # 设置集群名称为elasticsearch
      - "discovery.type=single-node" # 以单一节点模式启动
      - "ES_JAVA_OPTS=-Xms512m -Xmx1024m" # 设置使用jvm内存大小
    volumes:
      - /home/docker/elk/elasticsearch/plugins:/usr/share/elasticsearch/plugins # 插件文件挂载
      - /home/docker/elk/elasticsearch/data:/usr/share/elasticsearch/data # 数据文件挂载
    ports:
      - 9200:9200
  kibana:
    image: kibana:7.17.7
    container_name: elk_kibana
    restart: always
    depends_on:
      - elasticsearch # kibana在elasticsearch启动之后再启动
    environment:
      - ELASTICSEARCH_URL=http://elasticsearch:9200 # 设置访问elasticsearch的地址
      - I18N_LOCALE=zh-CN # kibana中文界面显示
    ports:
      - 5601:5601
  logstash:
    image: logstash:7.17.7
    container_name: elk_logstash
    restart: always
    volumes:
      # 挂载logstash的配置文件
      - /home/docker/elk/logstash/config/logstash.conf:/usr/share/logstash/pipeline/logstash.conf
    depends_on:
      - elasticsearch # kibana在elasticsearch启动之后再启动
    links:
      - elasticsearch:es # 可以用es这个域名访问elasticsearch服务
    ports:
      - 5041:5041

  然后文件上传至如图所示文件夹,执行如下命令按照yml文件安装容器

docker-compose -f /home/docker/elk/docker-compose.yml up -d

三、总结

  通过查看容器状态,已经完成了整个ELK的安装,通过使用docker compose的容器编排,非常方便把这个组合安装成功,下一步将把这个ELK集成到微服务中,进行场景的实践Demo。

 

posted @ 2024-03-31 00:59  tuqunfu  阅读(4)  评论(0编辑  收藏  举报