Elasticsearch:使用 Docker-Compose 启动单节点 Elastic Stack

这篇具有很好参考价值的文章主要介绍了Elasticsearch:使用 Docker-Compose 启动单节点 Elastic Stack。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Elasticsearch:使用 Docker-Compose 启动单节点 Elastic Stack

首先必须指出的是,在我之前的文章 “Elasticsearch:使用 Docker compose 来一键部署 Elastic Stack 8.x”,我有详述根据官方文档如何创建一个带有三个节点的安全 Elasticsearch 集群。本文基于著名的 Deviatony 存储库和 Elastic 的官方说明。 建议先通读这些说明,如果你已经可以根据这些说明开始搭建你自己的 Elastic Stack,则可以跳过本指南。

1)为什么选择 Elastic Stack?

Elastic Stack(以前称为 ELK stack)是三个开放及免费产品的集合 —— Elasticsearch、Logstash 和 Kibana。

  • Elasticsearch 是一个全文搜索和分析引擎
  • Logstash 是一个日志聚合器,它从多个来源收集和处理数据,将其转换为通用格式,并将其发送到各种目的地,例如 Elasticsearch
  • Kibana 允许用户在 Elasticsearch 中使用图表和图形可视化数据。

使用 Elastic Stack 的好处:

  • 它是开放及免费的,这意味着它可以免费使用,并且可以根据你的需要进行定制。
  • 它是一个完整的日志分析平台,用于搜索、分析和可视化来自不同机器的日志生成数据。
  • 它可以安全地实时提取、分析和可视化来自任何来源和格式的数据。
  • 还有很多 …

2)概述

与 Deviatony 的 repo 相比,本文所使用的 Elastic Stack 有更多的附加功能:

  • 在 docker-compose.yml 中为容器环境变量提供默认值(请注意,仍然可以使用 .env 文件覆盖这些值)
  • 为每个服务定制 Dockerfile
  • 为每个服务定制入口点,使得在运行容器时可以执行额外的命令
  • 使用 Logstash 管道加载到 Elasticsearch 的一些日志条目

3)设置

将此存储库克隆到你的 Docker 主机并 check out 分支 single-node-cluster:

git clone https://github.com/Uhuynh/elastic-stack-docker.git
git checkout single-node-cluster

主项目结构如下:

$ pwd
/Users/liuxg/data/elastic-stack-docker
$ tree -L 3
.
├── LICENSE
├── Makefile
├── docker-compose.setup.yml
├── docker-compose.yml
├── elasticsearch
│   ├── Dockerfile
│   ├── config
│   │   └── elasticsearch.yml
│   └── entrypoint.sh
├── kibana
│   ├── Dockerfile
│   ├── config
│   │   └── kibana.yml
│   └── entrypoint.sh
├── logstash
│   ├── Dockerfile
│   ├── config
│   │   ├── logstash.yml
│   │   └── pipelines.yml
│   ├── entrypoint.sh
│   ├── log_files
│   │   └── test.log
│   └── pipeline
│       └── test_logs.conf
├── markdown
│   ├── login_page.png
│   └── user-page.png
└── setup
    └── elasticsearch
        ├── Dockerfile
        ├── certs.sh
        ├── entrypoint.sh
        ├── helpers.sh
        ├── initialize.sh
        └── roles

elasticsearch.yml、kibana.yml 和 logstash.yml 是 Elastic Stack 中每个服务的主要配置文件。

创建证书

从 Elasticsearch 8.0 开始,默认启用安全性。 启用安全性后,Elastic Stack 安全功能需要对传输网络层进行 TLS 加密,否则你的集群将无法启动。

要开始使用 Elasticsearch 安全性,你需要生成证书颁发机构 (CA),然后使用它为集群中的每个节点生成证书:

docker-compose -f docker-compose.setup.yml run --rm es_certs
$ docker-compose -f docker-compose.setup.yml run --rm es_certs
[+] Running 1/0
 ⠿ Network elastic-stack-docker_default  Create...                                        0.0s
[+] Running 11/11
 ⠿ es_certs Pulled                                                                       40.2s
   ⠿ 95e9c9b381a6 Pull complete                                                           5.2s
   ⠿ 9a45f418de13 Pull complete                                                           5.3s
   ⠿ 00871d1ebcfa Pull complete                                                           5.4s
   ⠿ 89732bc75041 Pull complete                                                           5.4s
   ⠿ f2cd942089ee Pull complete                                                          33.1s
   ⠿ 311f3ae295d1 Pull complete                                                          33.1s
   ⠿ e0351d108cd0 Pull complete                                                          33.2s
   ⠿ a88cdf3ed11e Pull complete                                                          33.2s
   ⠿ c168e6f97f22 Pull complete                                                          33.3s
   ⠿ 81858e17f7f1 Pull complete                                                          33.3s
Creating Certificate Authority...
Archive:  /certs/ca.zip
   creating: /certs/ca/
  inflating: /certs/ca/ca.crt        
  inflating: /certs/ca/ca.key        
Creating certs...
Archive:  /certs/certs.zip
   creating: /certs/es/
  inflating: /certs/es/es.crt        
  inflating: /certs/es/es.key        
Setting file permissions
Setup certs done!

这将启动 es_certs 容器,然后执行 ./setup/elasticsearch/certs.sh 中的 Bash 脚本。 请注意,容器必须由 root 用户运行。

成功运行后,你应该会在项目目录的 ./certs 文件夹中看到生成的证书和密钥:

$ ls
LICENSE                  docker-compose.yml       markdown
Makefile                 elasticsearch            setup
certs                    kibana
docker-compose.setup.yml logstash
$ pwd
/Users/liuxg/data/elastic-stack-docker
$ tree certs -L 2
certs
├── ca
│   ├── ca.crt
│   └── ca.key
├── es
│   ├── es.crt
│   └── es.key
└── instances.yml

然后,你可以将 Elasticsearch 配置为在与其他节点通信时使用这些证书进行身份验证和加密。

elasticsearch.yml

# in elasticsearch.yml

# Transport Protocol (inter-node communication)
# note: production nodes won't start without this feature
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.key: certs/es/es.key
xpack.security.transport.ssl.certificate: certs/es/es.crt
xpack.security.transport.ssl.certificate_authorities: certs/ca/ca.crt

# HTTP Protocol (communication between ES and Kibana / Logstash)
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.verification_mode: certificate
xpack.security.http.ssl.key: certs/es/es.key
xpack.security.http.ssl.certificate: certs/es/es.crt
xpack.security.http.ssl.certificate_authorities: certs/ca/ca.crt

kibana.yml

# in kibana.yml

## Communications between Kibana and Elasticsearch
## see https://www.elastic.co/guide/en/kibana/current/configuring-tls.html#configuring-tls-kib-es
elasticsearch.ssl.certificateAuthorities: config/certs/ca/ca.crt.crt

4)把 Elastic Stack 运行起来

我们在 terminal 中打入如下的命令:

docker-compose up -d

除了用于 Elasticsearch、Logstash 和 Kibana 的 3 个主要容器之外,还有一个设置容器,它运行一个初始脚本来为系统用户(kibana_system、logstash_system)设置密码并创建一个 logstash_internal 用户以将数据写入 Elasticsearch。 

你应该从设置容器中看到以下日志:

$ pwd
/Users/liuxg/data/elastic-stack-docker
$ ls
LICENSE                  docker-compose.yml       markdown
Makefile                 elasticsearch            setup
certs                    kibana
docker-compose.setup.yml logstash
$ docker-compose up -d
[+] Running 4/4
 ⠿ Container elastic-stack-docker-es-1        Ru...                                       0.0s
 ⠿ Container elastic-stack-docker-setup-1     Started                                     0.3s
 ⠿ Container elastic-stack-docker-kibana-1    Running                                     0.0s
 ⠿ Container elastic-stack-docker-logstash-1  Started                                     0.3s

最后我们看到如下的信息:

$ docker ps
CONTAINER ID   IMAGE                           COMMAND                  CREATED          STATUS                   PORTS                                            NAMES
de558e082f4a   elastic-stack-docker-logstash   "/opt/setup/entrypoi…"   41 seconds ago   Up 40 seconds            5044/tcp, 9600/tcp, 0.0.0.0:5100->5100/tcp       elastic-stack-docker-logstash-1
78b590b1e6c7   elastic-stack-docker-kibana     "/opt/setup/entrypoi…"   3 minutes ago    Up 3 minutes             0.0.0.0:5601->5601/tcp                           elastic-stack-docker-kibana-1
ef4e93ed4c16   elastic-stack-docker-es         "/opt/setup/entrypoi…"   3 minutes ago    Up 3 minutes (healthy)   0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp   elastic-stack-docker-es-1

我们可以看到如上的三个容器正在运行。

注意:在没有定义 elastic 超级用户密码的情况下,它的默认密码是:elastic-pass。我们可以使用这个密码来登录 Kibana。

要自定义此初始脚本,你可以查看文件 ./setup/elasticsearch/initialize.sh

等待 1 到 2 分钟让堆栈完成设置,然后在浏览器中访问 Kibana localhost:5601 并使用 docker-compose.yml 中定义的用户 elastic 和密码登录

Elasticsearch:使用 Docker-Compose 启动单节点 Elastic Stack

 

堆栈中已经配置了一个 Logstash 管道,用于将日志从 ./logstash/log_files/test.log 加载到 Elasticsearch 中。

导航到 Management -> Stack Management -> Kibana -> Data View 为这些日志条目创建 data view。

Elasticsearch:使用 Docker-Compose 启动单节点 Elastic Stack

Elasticsearch:使用 Docker-Compose 启动单节点 Elastic Stack 

Elasticsearch:使用 Docker-Compose 启动单节点 Elastic Stack 

然后你可以导航到 Kibana Analytics -> Discover 以查看、搜索、分析日志条目并创建可视化。

 Elasticsearch:使用 Docker-Compose 启动单节点 Elastic Stack

Elasticsearch:使用 Docker-Compose 启动单节点 Elastic Stack 

使用 Elastic Stack 进行愉快的测试!希望对你学习之旅有所帮助! 文章来源地址https://www.toymoban.com/news/detail-453286.html

到了这里,关于Elasticsearch:使用 Docker-Compose 启动单节点 Elastic Stack的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 用docker-compose部署Rabbitmq三节点集群部署方案

    主机名 IP node1 10.4.2.10 node2 10.4.2.59 node3 10.4.2.134 (1) 在/root目录下先创建一个rabitmq目录用于存放文件 mkdir  rabitmq (2)修改主机名和域名解析hosts文件 (1)修改主机名 hostnamectl set-hostname  node1    hostnamectl set-hostname  node2 hostnamectl set-hostname  node3 node1  node2   node3 分别对应

    2024年02月04日
    浏览(32)
  • docker-compose启动minio

    一、创建文件夹 二、docker-compose.yml 注意:新版 :RELEASE.2023-03-24T21-41-23Z 数据格式是这种 老版: RELEASE.2022-05-26T05-48-41Z 三、开启防火墙 四、验证 172.50.2.40:9001

    2024年02月16日
    浏览(32)
  • 使用docker-compose启动docker镜像报错exec ./docker-entrypoint.sh: no such file or directory

    报错原因:exec ./docker-entrypoint.sh: no such file or directory 我们可以在linux下通过cat -v命令查看.sh文件   例: cat -v Dockerfile         WORKDIR /tools/*******/^M         RUN chmod a+x /tools/*********/docker-entrypoint.sh^M         ENTRYPOINT [\\\"./docker-********.sh\\\"]^M 这种后缀有^M的即为编码错误造成的

    2024年02月15日
    浏览(28)
  • Docker-compose 启动 lnmp 开发环境

    GitHub传送阵 docker-lnmp 项目帮助开发者快速构建本地开发环境,包括Nginx、PHP、MySQL、Redis 服务镜像,支持配置文件和日志文件映射,不限操作系统; 此项目适合个人开发者本机部署,可以快速切换服务版本满足学习服务新版本的需求; 也适合团队中统一开发环境,设定好配置

    2024年02月01日
    浏览(31)
  • docker-compose 如何安排容器启动的顺序

    在使用docker-compose进行容器部署的时候,时常是需要对容器的启动顺序进行编排,比如在应用容器启动前,需要先启动数据库的容器。通过对官方文档的阅读,发现在docker-compose中,可以使用depends_on配合健康检查healthcheck来实现。 参考链接: https://docs.docker.com/compose/compose-fi

    2024年02月12日
    浏览(31)
  • 在M1芯片的Macbook上使用docker-compose启动mysql,并利用 NaviCat Premium 客户端进行连接

    在M1芯片的Macbook上使用docker-compose启动mysql,并利用 NaviCat Premium 客户端进行连接   先打开控制台,使用 uname -m 来查看自己CPU芯片的架构   苹果的M系列芯片使用的是ARM64架构,因此,需要安装相应版本的一些列工具。         因为我是M1芯片,所以安装docker desktop时候,当

    2024年02月12日
    浏览(40)
  • docker-compose deploy elasticsearch tls

    参考: https://www.elastic.co/guide/en/elastic-stack-get-started/7.9/get-started-docker.html https://www.elastic.co/guide/en/elasticsearch/reference/7.17/configuring-tls-docker.html#_run_the_example

    2024年02月16日
    浏览(29)
  • 【docker系列】docker-compose安装elasticsearch和kibana

    大家好,我是walker 一个从文科自学转行的程序员~ 爱好编程,偶尔写写编程文章和生活 欢迎关注公众号【 I am Walker 】,回复“电子书”,就可以获得200多本编程相关电子书哈~ 我的gitee:https://gitee.com/shen-chuhao/walker.git 里面很多技术案例! (1)、 [root@localhost docker]# mkdir es (

    2023年04月08日
    浏览(41)
  • docker-compose deploy 高可用 elasticsearch TLS

    测试 修改 docker-compose.yaml 重启 清理容器卷 参考: Running the Elastic Stack on Docker Encrypting communications in an Elasticsearch Docker Containere

    2024年02月08日
    浏览(30)
  • 【QA】docker-compose-部署django-如何设置自动启动

    使用docker-compose部署django项目,通常做法是: 构建docker镜像 运行容器 进入容器里面启动django项目 但是这样不够自动化。 尝试通过配置脚本的方式,让容器启动的时候就启动django项目,但这样往往使得容器一直处于重启状态,容器无法运行,本文主要解决这个问题 docker-com

    2024年01月23日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包