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

news2024/10/6 14:31:22

首先必须指出的是,在我之前的文章 “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 和密码登录

 

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

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

 

 

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

 

 

使用 Elastic Stack 进行愉快的测试!希望对你学习之旅有所帮助! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/509972.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

KPI考核管理:有效提升企业绩效指标

KPI考核管理是企业中常用的绩效管理方法之一,这种方式涉及到目标设定、绩效评估和奖惩措施等方面。在本文中,我们将探讨KPI考核管理的重要性、KPI管理方法以及如何应对。 一、KPI考核管理的重要性 KPI考核管理是企业实现战略目标的重要手段之一&#x…

[Mysql] MySQL索引与事务

黎明前的黑暗最难度过,但一旦坚持住,便是灿烂朝阳. 文章目录 1. 索引1.1 索引的概念1.2 索引的创建与使用 2. 事务2.1 事务的使用2.2 事务的特性与隔离机制2.2.1 隔离级别 1. 索引 1.1 索引的概念 索引是一种特殊的文件,可以对表中一列或多列创建索引,…

JZ-7Y-204 DC110V 2NO 2NC 静态中间继电器 板前接线 JOSEF约瑟

品牌:JOSEF约瑟名称:静态中间继电器型号:JZ-7Y-204额定电压:6V~220VAC/DC,380VAC触点容量:10A/250V10A/220VDC功率消耗:≤6W 1 用途 JZ-7中间继电器 板前接线用于各种保护和自动控制装置中,以…

PB文件定义为int64,HTTP返回为string的问题

最近开发遇见一个问题,pb文件中定义的一个字段类型为int64,而客户端拿到却是string。很奇怪,经过排查原来是 proto3中json映射问题 原文链接:https://protobuf.dev/programming-guides/proto3/#json JSON映射 Proto3 支持 JSON …

【GO 编程语言】 函数

函数 文章目录 函数一、什么是函数1.函数的声明 二、函数的声明和调用三、形参和实参四、可变参数五、值传递和引用传递六、函数中变量的作用域七、defer八、函数的本质探究九、匿名函数十、回调函数十一、闭包 一、什么是函数 函数是基本的代码块,用于执行一个任务。Go 语言最…

【手撕代码系列】JS手写实现apply方法

公众号:Code程序人生,分享前端所见所闻 在JavaScript中,apply()是Function对象的一个方法,它允许我们以指定的this值和参数列表调用函数。这个方法通常被用来在函数调用时动态地传递参数,或者在调用函数时绑定this值。…

chatgpt软件批量写作软件-文章改编软件

文章改编软件 文章改编软件是一种能够将原有的文本进行复制粘贴后,通过一定算法进行改写和改编的工具。其主要应用领域在于将一些内容复制到网站或博客等平台上时,避免因为重复内容而被识别为“抄袭”,从而提高文章的独特性和可读性。 然而…

TweenMax 源码阅读

GSAP 之 TweenMax 源码阅读(一) 一、背景 GreenSock (绿袜子) GreenSock 是一家做 专业级 JavaScript 动画的公司,主要产品就是其下的 GSAP (GreenSock Animation Platform),配合着 GSPA 开发了很多专业的…

前端架构师-week5-egg.js+云Mongodb快速入门

目录 下载项目模版功能实现流程分析egg.js简介 egg.js 官网 初始化 云 mongodb 云 mongodb 开通 本地 mongodb 安装 mongodb 使用方法 通过 egg.js 框架添加新的API 云 mongodb 开通 本地 mongodb 调试技巧讲解 egg.js 接入 mongodb 方法 云 mongodb 如何连接公网…

mysql深分页

第一种:主键自增id情况: 未改: select * from wx_product_category_info where category_name_cn#{categoryNameCn} and category_type#{categoryType} order by id asclimit #{pageNum}, #{pageSize};在普通的limit条件下,如果…

如何通过appuploader把ipa文件上传到App Store教程步骤

​ iOS APP上架App Store其中一个步骤就是要把ipa文件上传到App Store!​ 下面进行步骤介绍!​ 利用Appuploader这个软件,可以在Windows、Linux或Mac系统中申请ios和上传IPA到App Store Connect。​ 非常的方便,没有Mac也可以…

回炉重造十三----Docker的运用

1、Docker和虚拟机的区别 两者的区别 虚拟化环境下每个 VM 是一台完整的计算机,在虚拟化硬件之上运行所有组件,包括其自己的操作系统。 容器之间可以共享操作系统,比起 VM 被认为是更轻量级.且与 VM 类似,每个容器都具有自己的文件系统、CPU…

42电机插座接线可以用PH2.0冷压端子

文章目录 42电机插座接线可以用PH2.0冷压端子概述笔记备注END 42电机插座接线可以用PH2.0冷压端子 概述 设备上的42电机在我不断调整电机安装位置时, 接线从插孔中折断了. 问厂家, 他们的线也是定制的. 另外, 他是销售, 不清楚具体插座的型号和插座要用的冷压端子是哪种. 因为…

Java 关键字之:package与import

一、package 关键字 为了更好的实现项目中类的管理,提供包的概念使用package声明类或者接口所属的包,声明在源文件的首行包,属于标识符,遵循标识符的命名规则、规范(xxxyyyzzz)、"见名知意"每“.”一次,就代…

windows 下安装Docker (WSL2)

测试环境: VMware Workstation 17 WinServer2022 docker 4.19 python3.8 第一步:环境准备: 1.开启虚拟化 2. 开启WSL、容器功能 重启服务器 第二步: 安装docker 桌面版:Get Docker | Docker Documentation 此时启动会…

Django框架之错误视图和HTTP方法装饰器

本篇主要记录如何定义视图,错误视图有哪些并如何实现自定义, HTTP方法装饰器定义及实现,还有csrf中间件设置位置及关闭。 定义视图 一般在views.py文件下定义 视图参数: 错误视图 400视图 当出现SuspiciousOperation异常并且代…

Linux Kernel内核整体架构(图文详解)

1,前言 本文是“Linux内核分析”系列文章的第一篇,会以内核的核心功能为出发点,描述Linux内核的整体架构,以及架构之下主要的软件子系统。之后,会介绍Linux内核源文件的目录结构,并和各个软件子系统对应。…

WPF 从0开始写笔记,全属性功能深度剖析 20230510

文章目录 FontFamilyFontWeightResizeModeAllowsTransparencyMarginCornerRadiusBorder.effectBlurRadiusdirectionVerticalAlignmentTargetTypeControlTemplateDataTemplate 和ControlTemplate的区别StrokePath控件Border FontFamily 在WPF中,FontFamily属性用于指…

5月第1周榜单丨飞瓜数据B站UP主排行榜(哔哩哔哩平台)发布!

飞瓜轻数发布2023年5月1日-5月7日飞瓜数据UP主排行榜(B站平台),通过充电数、涨粉数、成长指数三个维度来体现UP主账号成长的情况,为用户提供B站号综合价值的数据参考,根据UP主成长情况用户能够快速找到运营能力强的B站…

【C++】类型转换-static_cast、reinterpret_cast、const_cast、dynamic_cast

文章目录 1. C语言中的类型转换2. 为什么C需要四种类型转换3. C强制类型转换static_castreinterpret_castconst_castdynamic_cast 4.explicit5.RTTI6.考点 1. C语言中的类型转换 在C语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配,或者返回值类型与接收返回…