Dockerfile搭建ELK
使用 Dockerfile 安装 ELK
一、引言
ELK Stack(Elasticsearch, Logstash, Kibana)是一种流行的日志管理和分析解决方案。它允许用户实时搜索、分析和可视化日志数据。通过 Docker,可以方便地部署 ELK ,快速获取一个功能齐全的日志分析环境。本文将引导您通过 Dockerfile 安装 ELK Stack,并提供详细的步骤和示例。
二、ELK Stack 组件简介
- Elasticsearch:一个基于 Lucene 的搜索引擎,负责存储和搜索数据。
- Logstash:一个数据处理管道,能够从多种来源接收数据,进行过滤和转换,然后将数据发送到 Elasticsearch。
- Kibana:一个数据可视化工具,提供可视化界面以展示存储在 Elasticsearch 中的数据。
三、环境准备
在开始之前,确保您的系统上已安装 Docker 和 Docker Compose。可以使用以下命令检查 Docker 是否已安装:
docker --version
如果未安装,请前往 Docker 官方文档 进行安装。
四、创建 Dockerfile
4.1 创建项目目录
首先,我们需要创建一个项目目录来存放我们的 Dockerfile 和其他配置文件。
mkdir elk-stack
cd elk-stack
4.2 创建 Dockerfile
在 elk-stack 目录中,创建一个 Dockerfile 文件,并在其中添加以下内容:
# 使用官方 Elasticsearch 镜像
FROM elasticsearch:7.x# 配置 Elasticsearch
ENV discovery.type=single-node# 暴露 Elasticsearch 端口
EXPOSE 9200 9300# 启动 Elasticsearch
CMD ["elasticsearch"]
这个 Dockerfile 基于官方的 Elasticsearch 镜像,并设置为单节点模式。
4.3 创建 Logstash 配置文件
在 elk-stack 目录中,创建一个 logstash.conf 文件,配置 Logstash 的输入、过滤和输出:
input {stdin {}
}filter {mutate {add_field => { "source" => "stdin" }}
}output {elasticsearch {hosts => ["elasticsearch:9200"]index => "logstash-%{+YYYY.MM.dd}"}
}
这个配置文件的作用是接收标准输入的数据,并将其发送到 Elasticsearch,使用日期作为索引名的一部分。
4.4 创建 Kibana 配置文件
在 elk-stack 目录中,创建一个 kibana.yml 配置文件:
server.port: 5601
elasticsearch.hosts: ["http://elasticsearch:9200"]
这个配置文件定义了 Kibana 服务器的端口和 Elasticsearch 的地址。
4.5 创建 Docker Compose 文件
创建一个名为 docker-compose.yml 的文件,以便于管理 ELK Stack 的多个服务:
version: '3.7'services:elasticsearch:build: .environment:- discovery.type=single-nodeports:- "9200:9200"- "9300:9300"logstash:image: logstash:7.xvolumes:- ./logstash.conf:/usr/share/logstash/pipeline/logstash.confports:- "5044:5044"kibana:image: kibana:7.xports:- "5601:5601"environment:- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
在这个配置文件中,我们定义了三个服务:Elasticsearch、Logstash 和 Kibana。Elasticsearch 通过构建 Dockerfile 创建,而 Logstash 和 Kibana 则直接使用官方镜像。
五、构建和启动 ELK Stack
5.1 构建 Docker 镜像
在 elk-stack 目录中,使用以下命令构建 Docker 镜像:
docker-compose build
5.2 启动 ELK Stack
构建完成后,使用以下命令启动所有服务:
docker-compose up
您应该会看到所有服务的日志输出,表示它们正在运行。
5.3 验证服务状态
-
Elasticsearch: 打开浏览器,访问
http://localhost:9200。如果看到 Elasticsearch 的状态信息,说明服务正常运行 -
Kibana: 打开浏览器,访问
http://localhost:5601。您将看到 Kibana 的用户界面
六、使用 Logstash 发送数据
您可以使用 Logstash 收集数据并发送到 Elasticsearch。以下是通过标准输入发送数据的示例:
- 打开另一个终端窗口。
- 使用以下命令进入 Logstash 容器:
docker exec -it <logstash_container_id> /bin/bash
- 运行 Logstash,并输入数据:
logstash -f /usr/share/logstash/pipeline/logstash.conf
在提示符下输入一些日志信息,然后按 Enter,这些信息将自动发送到 Elasticsearch。
七、在 Kibana 中查看数据
- 打开 Kibana UI,访问
http://localhost:5601。 - 在左侧菜单中选择 “Discover”,您应该能看到 Logstash 发送到 Elasticsearch 的数据。
- 如果没有数据,请确保您在 Logstash 中正确输入了数据,并且数据没有被过滤掉。
八、总结与注意事项
详细介绍了如何使用 Dockerfile 和 Docker Compose 安装和配置 ELK Stack。通过这种方式,我们能够快速搭建一个完整的日志收集、分析和可视化环境。
注意事项:
-
资源限制:确保您的 Docker 容器有足够的内存和 CPU 资源,尤其是在处理大量日志数据时,Elasticsearch 可能会消耗较多资源。
-
数据持久化:本文配置中未配置数据持久化,重启容器时,数据将丢失。可以通过挂载卷来持久化 Elasticsearch 和 Logstash 的数据。
-
安全性:在生产环境中,应考虑使用安全措施,如用户认证和加密通信。
-
版本兼容性:确保 Elasticsearch、Logstash 和 Kibana 的版本一致,以避免兼容性问题。
希望这能帮助您更好地理解和使用 ELK Stack 进行日志管理和分析。
相关文章:
Dockerfile搭建ELK
使用 Dockerfile 安装 ELK 一、引言 ELK Stack(Elasticsearch, Logstash, Kibana)是一种流行的日志管理和分析解决方案。它允许用户实时搜索、分析和可视化日志数据。通过 Docker,可以方便地部署 ELK ,快速获取一个功能齐全的日…...
在合规的地方怎么用EACO地球链兑换交换价值?
地球链EACO(EarthChain,简称$E)是一种虚拟数字资产。 目前在中国大陆,虚拟资产相关业务活动属于金融活动,包括虚拟资产的交易、兑换等操作,因此应该谨慎去寻求如何用它来交换价值。 虚拟资产交易炒作活动&…...
VS无法安装Win10SDK_10.0.2200,快捷方法
Visual Studio无法安装Win10SDK_10.0.2200,我在安装VS2019、2022提示,软件就不能编译。 因为之前安装过VS软件,重新安装软件提示“无法安装”。 原因 之前安装在D盘,现在没有D盘了 说明 因为电脑第一次安装VS,会自动安…...
github多个账号配置多个SSH秘钥
背景 对于有多个github账号的同学,需要配置多个ssh秘钥分别管理多个账号。 方法 1、生成多个SSH秘钥 # 为第一个 GitHub 账号生成密钥 ssh-keygen -t ed25519 -C "your_email_1example.com" -f ~/.ssh/id_ed25519_github_work# 为第二个 GitHub 账号生…...
静态/动态代理详解,一次性看完再也不会搞不清!
代理官方原文翻译: 给其他对象提供一个代理或者占位符,来控制对这个对象的访问。 代理最核心的思想: 在客户端和目标对象之间创建一个“中介”,用于保护目标对象和增强目标对象 静态代理: 该代理对象需要我们手动…...
Webserver(2)GCC
目录 安装GCCVScode远程连接到虚拟机编写代码gcc编译过程gcc与g的区别Xftp连接虚拟机上传文件 安装GCC sudo apt install gcc g查看版本是7.5 touch test.c创建代码 但是在虚拟机中写代码很不方便 VScode远程连接到虚拟机编写代码 gcc test.c -o app在虚拟机中用gcc编译的…...
mac电脑设置chrome浏览器语言切换为日语英语等不生效问题
在chrome中设置了语言,并且已经置顶了,但是不生效,在windows上直接有设置当前语言为chrome显示语言,但是mac上没有。 解决办法 在系统里面有一个单独给chrome设置语言的: 单独给它设定成指定的语言,然后重…...
Python中的人工智能框架与实例
在人工智能(AI)领域,Python因其简洁的语法、丰富的库和强大的社区支持,成为了最受欢迎的编程语言之一。本文将详细介绍Python中的人工智能框架,并通过具体实例展示如何使用这些框架来实现不同的人工智能应用。 一、Python中的人工智能框架 …...
论文阅读(二十六):Dual Attention Network for Scene Segmentation
文章目录 1.Introduction3.DANet3.1Position Attention Module3.2Channel Attention Module 论文:Dual Attention Network for Scene Segmentation 论文链接:Dual Attention Network for Scene Segmentation 代码链接:Github 1.Intr…...
Stack和Queue(3)
Stack和Queue(3) priority_queue的模拟实现 priority_queue.h #include <vector>namespace soobin {template<class T, class Container vector<T>>class priority_queue{public://强制生成默认构造priority_queue() default;temp…...
怎样把学生的成绩单独告知家长?
期中考试季的到来让校园里的气氛似乎也变得紧张起来。家长们开始频繁地联系老师,希望了解孩子的表现;孩子们则在考试后,绞尽脑汁地想出各种理由,以期在成绩不理想时能减轻家长的失望。老师们更是忙得不可开交,不仅要批…...
vue3父组件控制子组件表单验证及获取子组件数值方法
1、关键部分的代码如下,我努力交代清楚了,希望能让大家看懂。 <template><KeepAlive><component ref"comp" :is"compNames[steps[compIndex].comp]" /></KeepAlive><el-button click"prevBtn"…...
【JavaEE】【多线程】单例模式
目录 一、设计模式1.1 单例模式1.1.1 饿汉模式1.1.2 懒汉模式 1.2 线程安全问题1.3 懒汉模式线程安全问题的解决方法1.3.1 原子性问题解决1.3.2 解决效率问题1.3.3 解决内存可见性问题和指令重排序问题 一、设计模式 在讲解案例前,先介绍一个概念设计模式ÿ…...
Java.6--多态-设计模式-抽象父类-抽象方法
一、多态 1.定义--什么是多态? a.同一个父类的不同子类对象,在做同一行为的时候,有不同的表现形式,这就是多态。(总结为:一个父类下的不同子类,同一行为,不同表现形式。࿰…...
JAVA Maven 的安装与配置
一、下载地址 官方网站:Maven – Download Apache Maven 我这里是3.8.6版本 二、安装步骤 maven安装之前要先安装jdk,请确保你的系统已经安装了jdk环境。 1.将下载好的 Maven 进行解压 apache-maven-3.6.8-bin.zip 2.配置本地仓库:修改 conf/settin…...
【程序分享】PCB元件坐标对齐工具 V1.3
↑↑↑点击上方蓝字,关注我们! “PCB元件坐标对齐工具 V1.3”脚本程序在PCB文档中将元件的坐标自动移动到参考圆弧的中心,参考圆弧支持机械层1层和禁止布线层,参考图元的位置任意,不局限于栅格位置。 程序会自动…...
[bug] vllm 0.6.1 RuntimeError: operator torchvision::nms does not exist
[bug] vllm 0.6.1 RuntimeError: operator torchvision::nms does not exist 环境 python 3.10 torch 2.4.0cu118 torchvision 0.19.0cu118 vllm 0.6.1.post2cu118问题详情 if torch._C._d…...
处理Hutool的Http工具上传大文件报OOM
程序环境 JDK版本: 1.8Hutool版本: 5.8.25 问题描述 客服端文件上传主要代码: HttpRequest httpRequest HttpUtil.createPost(FILE_UPLOAD_URL); Resource urlResource new UrlResource(url, fileName); httpRequest.form("file&q…...
transforms的使用
示例代码 from PIL import Image from torch.utils.tensorboard import SummaryWriter from torchvision import transforms#打开该图片 img_path"hymenoptera_data/val/bees/10870992_eebeeb3a12.jpg" imgImage.open(img_path) writerSummaryWriter("logs&quo…...
python-PyQt项目实战案例:制作一个视频播放器
文章目录 1. 关键问题描述2. 通过OpenCV读取视频/打开摄像头抓取视频3. 通过PyQt 中的 QTimer定时器实现视频播放4. PyQt 视频播放器实现代码参考文献 1. 关键问题描述 在前面的文章中已经分享了pyqt制作图像处理工具的文章,也知道pyqt通过使用label控件显示图像的…...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
