第一步:环境准备
请确保您的机器上已经安装了 Docker 和 Docker Compose。

第二步:创建项目目录和配置文件
为了让 Docker Compose 能够正确地构建和管理容器,我们需要创建一个特定的目录结构。

创建一个主目录,例如 elk-stack。
在 elk-stack 内部,创建 docker-compose.yml 文件。
在 elk-stack 内部,创建一个 logstash 目录,并在其中再创建一个 pipeline 目录。
在 logstash/pipeline 目录中,创建 logstash.conf 文件。
最终的目录结构如下:

elk-stack/
├── docker-compose.yml
└── logstash/└── pipeline/└── logstash.conf

第三步:编写配置文件
现在,我们将填充这些文件的内容。

  1. docker-compose.yml
    这是最核心的编排文件。它定义了 ELK 的三个服务,并将它们连接在一起。请将以下内容复制到 elk-stack/docker-compose.yml 文件中。

重要提示:Elasticsearch, Kibana, 和 Logstash 的版本号必须完全一致,否则可能会出现兼容性问题。这里我们使用 8.14.0 版本。

version: '3.8'services:elasticsearch:image: elasticsearch:8.14.0container_name: elasticsearchenvironment:- discovery.type=single-node- xpack.security.enabled=false # 为方便测试,禁用安全功能。生产环境强烈建议开启!- ES_JAVA_OPTS=-Xms1g -Xmx1g # 根据您的机器内存调整,建议至少1GBvolumes:- es-data:/usr/share/elasticsearch/dataports:- "9200:9200"- "9300:9300"networks:- elk-netkibana:image: kibana:8.14.0container_name: kibanaenvironment:- ELASTICSEARCH_HOSTS=http://elasticsearch:9200 # 指向 Elasticsearch 容器ports:- "5601:5601"depends_on:- elasticsearchnetworks:- elk-netlogstash:image: logstash:8.14.0container_name: logstashvolumes:- ./logstash/pipeline:/usr/share/logstash/pipeline:ro # 挂载 Logstash 管道配置ports:- "5000:5000/tcp" # 为数据输入开放 TCP 端口- "5000:5000/udp"depends_on:- elasticsearchnetworks:- elk-netvolumes:es-data:driver: localnetworks:elk-net:driver: bridge

配置说明:

discovery.type=single-node: 告知 Elasticsearch 这是一个单节点实例,无需进行集群发现。
xpack.security.enabled=false: 为了简化初次设置,我们禁用了 Elasticsearch 的安全特性(如用户名密码认证)。在生产环境中,请务必将其设置为 true 并配置好密码。
volumes: 我们为 Elasticsearch 的数据创建了一个名为 es-data 的持久化数据卷,这样即使容器被删除,数据也不会丢失。同时,我们将本地的 Logstash 配置文件挂载到了 Logstash 容器中。
networks: 我们创建了一个名为 elk-net 的桥接网络,让三个容器可以通过服务名(elasticsearch, kibana, logstash)相互通信。
depends_on: 确保 Elasticsearch 容器启动后,Kibana 和 Logstash 才会启动。
2. logstash/pipeline/logstash.conf
这个文件定义了 Logstash 的数据处理管道:从哪里接收数据(input),如何处理数据(filter),以及将数据发送到哪里(output)。

将以下内容复制到 elk-stack/logstash/pipeline/logstash.conf 文件中。

input {# 通过 TCP 协议监听 5000 端口,接收 JSON 格式的日志tcp {port => 5000codec => json_lines}
}filter {# 此处可以添加过滤规则,例如 grok, mutate 等# 暂时留空作为示例
}output {# 将处理后的数据输出到 Elasticsearchelasticsearch {hosts => ["http://elasticsearch:9200"]index => "logstash-%{+YYYY.MM.dd}" # 索引名称格式}# 同时在 Logstash 容器的控制台打印输出,方便调试stdout {codec => rubydebug}
}

这个配置表示 Logstash 会:

Input: 监听 TCP 端口 5000,并期望接收到的每行都是一个独立的 JSON 对象。
Output: 将数据发送到名为 elasticsearch 的主机的 9200 端口,并根据日期创建索引(例如 logstash-2025.06.26)。
第四步:启动和验证 ELK Stack
万事俱备,现在可以启动整个技术栈了。

启动服务
在 elk-stack 目录下,打开终端并运行以下命令:

docker-compose up -d  (有的版本是docker cpmpose)

这个命令会在后台(-d)拉取镜像并启动所有服务。第一次启动可能需要一些时间来下载镜像。

检查容器状态
等待一两分钟后,运行以下命令检查所有容器是否都已正常运行:

docker-compose ps

应该能看到 elasticsearch, kibana, 和 logstash 三个容器的状态都是 Up 或 running。

验证服务

Elasticsearch: 在浏览器或使用 curl 访问 http://localhost:9200。如果看到一个包含版本信息的 JSON 响应,说明 Elasticsearch 已成功运行。
Kibana: 在浏览器中访问 http://localhost:5601。应该能看到 Kibana 的欢迎界面。由于启动需要时间,如果无法访问请稍等片刻再刷新。
第五步:发送并查看测试日志
现在,我们来测试整个数据流是否通畅。

发送日志到 Logstash
打开一个新的终端,使用 netcat (或 nc) 工具向 Logstash 的 5000 端口发送一条 JSON 格式的日志。

echo '{"level": "info", "service": "my-app", "message": "这是一个测试日志"}' | nc localhost 5000

如果您没有 nc,也可以使用 curl:

curl -X POST -H "Content-Type: application/json" -d '{"level": "info", "service": "my-app", "message": "这是另一个测试日志"}' http://localhost:5000

注意:此处的 curl 能否成功取决于您的 input 插件,对于 tcp 插件,nc 是更可靠的测试工具。

在 Kibana 中查看日志

打开 Kibana 界面 (http://localhost:5601)。
点击左上角的汉堡菜单 (☰),进入 Management > Stack Management。
在 Kibana 分类下,选择 Data Views (或旧版中的 Index Patterns)。
点击 Create data view。
在 Name 和 Index pattern 字段中输入 logstash-*,Kibana 应该会自动识别出我们刚刚创建的索引。
点击 Save data view to Kibana。
创建成功后,再次点击左上角的汉堡菜单 (☰),进入 Analytics > Discover。
应该能看到刚刚发送的那条测试日志了!可以展开日志条目查看详细的 JSON 字段。

若是想监控jar包,可以参考

https://blog.csdn.net/CodeTom/article/details/148954231?sharetype=blogdetail&sharerId=148954231&sharerefer=PC&sharesource=CodeTom&spm=1011.2480.3001.8118

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

闲聊ARM内核参数传递机制

之前一直没怎么在意这个问题,直到最近搞了个奇奇怪怪的项目,才发现这部分知识得补上来,记录一下。 ARM有一个标准,叫《Procedure Call Standard for the Arm Architecture》,人话就是ARM架构过程调用标准,…

万兴喵影Filmora AI Video v14.7.03国际高级版,AI视频剪辑全能工具,一键专业级创作​

[软件名称]: 万兴喵影Filmora AI Video v14.7.03 [软件大小]: 199.4 MB [下载通道]: 夸克盘 | 迅雷盘 软件介绍 🎬《万兴喵影》v14.7.03国际高级版|AI智能剪辑神器,解锁全功能无水印! ✨ 核心优势: ✅ 1000背景音…

暴力风扇方案介绍

炎炎夏日,当普通风扇只能送来 “温柔拂面”,暴力风扇却能吹出 “台风级” 清凉!想知道这些 “风力狂魔” 是如何炼成的?答案藏在电机、电路和芯片的黄金三角组合里。​ 一、电机:暴力风扇的 “心脏起搏器”​ 暴力风扇…

pyqt小问题汇总

文章目录 1、inherit global site-packages2、setGeometry(10,20,30,40)setGeometry(x, y, width, height)1. **x参数**2. **y参数**3. **width参数**4. **height参数** 示例说明与其他方法的对比注意事项示例代码 1、inherit global site-packages 在pycharm 创建项目时&…

提升JavaScript性能的六大关键策略

1、优化代码结构与算法 避免使用嵌套循环,改用更高效的算法如哈希表或二分查找。减少不必要的计算,缓存重复使用的计算结果。使用时间复杂度更低的算法替代高复杂度操作。优化递归调用,避免栈溢出和性能瓶颈。改用迭代或尾递归优化。简化条件…

打造跨平台应用的全能框架:Dioxus

在如今飞速发展的数字世界中,越来越多的开发者开始寻找能够满足跨平台需求的高效框架。而在这些选择中,Dioxus这个全栈应用框架脱颖而出。Dioxus是一款为Web、桌面和移动端开发而设计的全栈框架,采用Rust语言,具备跨平台、一体化的优势。本文将深入介绍Dioxus的独特功能,应…

大事件项目记录5-用户接口开发-更新用户头像

5)更新用户头像。 UserController.java: PatchMapping("updateAvatar")public Result updateAvatar(RequestParam String avatarUrl){userService.updateAvatar(avatarUrl);return Result.success();} UserService.java: UserServ…

Spring Cloud 微服务架构模型

下面是一个完整的 springcloud-eureka-demo 示例项目,包含: Eureka Server 注册中心 Eureka Client 服务提供者(service-provider) Eureka Client 服务消费者(service-consumer) 📁 项目结构…

计算机网络 网络层:控制平面

在本章中,包含网络层的控制平面组件。控制平面作为一种网络范围的逻辑,不仅控制沿着从源主机到目的主机的端到端路径间的路由器如何转发数据报,而且控制网络层组件和服务如何配置和管理。5.2节,传统的计算图中最低开销路径的路由选…

力扣第85题-最大矩形

力扣链接:85. 最大矩形 - 力扣(LeetCode) 给定一个仅包含 0 和 1 、大小为 rows x cols 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。 输入:matrix [["1","0","1","…

6-创建和查询

创建&查询 DDL - 表操作 - 查询 查询当前数据库所有表 查询库表之前需要先试用 use 数据库名 进入数据库才可以查询到该数据库的库表, 否则将会出现未选择数据库的报错; 如果数据库中并无数据表, 则会出现 Empty set 的相应结果 SHOW TABLES;切换到 sys 数据库, 并且查询库…

【Java面试】MySQL的聚集索引和非聚集索引的区别?

一、存储结构的本质差异 物理存储的哲学冲突 聚集索引的本质是将数据行的物理存储顺序与索引键值的逻辑顺序强制绑定,这种设计源于计算机科学的局部性原理(Locality Principle)。 为什么选择B树? B树的平衡多路特性(通…

LRU缓存设计与实现详解

LRU缓存设计与实现详解 一、LRU缓存核心概念1.1 LRU策略定义1.2 应用场景1.3 核心操作要求 二、数据结构设计:双向链表哈希表2.1 为什么选择双向链表?2.2 为什么结合哈希表?2.3 节点结构设计(双向链表)2.4 LRU缓存的逻…

RabbitMQ中,basicAck、basicNack和basicReject是三种核心的消息确认机制

channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, true); channel.basicReject(message.getMessageProperties().getDeliveryTag(), false); channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); 在RabbitMQ中&#xff0…

UNIAPP入门基础

一、开发环境准备 1. 安装 HBuilderX(官方推荐IDE) 下载地址:HBuilderX 官网 版本选择: App开发版:开箱即用,内置 UniApp 插件 标准版:需手动安装 UniApp 插件(运行时会提示) 安装步骤: Windows:双击安装包,勾选“创建桌面快捷方式” macOS:拖拽到 Applications…

前端单点登录

“前端单点登录(SSO, Single Sign-On)”是指在多个系统之间共享用户登录状态,使用户只需登录一次,就可以在多个子系统中使用同一身份访问资源,无需重复登录。 以下是一个典型的前端单点登录方案的介绍和实现思路&…

DiNA:扩张邻域注意力 Transformer

摘要 Transformer 正迅速成为跨模态、跨领域和跨任务中应用最广泛的深度学习架构之一。在计算机视觉领域,除了持续发展的纯 transformer 架构,分层 transformer 也因其优越的性能和在现有框架中易于集成而受到广泛关注。这类模型通常采用局部化的注意力…

对于“随机种子”的作用的理解

深度学习系统的两大组成部分 确定性部分(无法通过种子改变): ✅ 网络结构:层数、神经元数量、连接方式 ✅ 学习率:如您所说,这是开发者明确设置的固定值或调度策略 ✅ 损失函数:MSE、CrossEnt…

C# 委托(调用带引用参数的委托)

调用带引用参数的委托 如果委托有引用参数,参数值会根据调用列表中的一个或多个方法的返回值而改变。 在调用委托列表中的下一个方法时,参数的新值(不是初始值)会传给下一个方法。例如, 如下代码调用了具有引用参数的…

Cisco FMC events无法加载并且cpu high故障- Cisco bug

FMC故障 日志无法加载,并且CPU high 95% 经确认是bug问题,需要重置1个monetdb的进程 https://bst.cloudapps.cisco.com/bugsearch/bug/CSCwe47671 https://bst.cloudapps.cisco.com/bugsearch/bug/CSCwi64429 2.1 备份FMC配置 2.2 重置进程 大约为2…