当前位置: 首页 > news >正文

Dockerfile搭建ELK

使用 Dockerfile 安装 ELK

一、引言

ELK Stack(Elasticsearch, Logstash, Kibana)是一种流行的日志管理和分析解决方案。它允许用户实时搜索、分析和可视化日志数据。通过 Docker,可以方便地部署 ELK ,快速获取一个功能齐全的日志分析环境。本文将引导您通过 Dockerfile 安装 ELK Stack,并提供详细的步骤和示例。

二、ELK Stack 组件简介

  1. Elasticsearch:一个基于 Lucene 的搜索引擎,负责存储和搜索数据。
  2. Logstash:一个数据处理管道,能够从多种来源接收数据,进行过滤和转换,然后将数据发送到 Elasticsearch。
  3. 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。以下是通过标准输入发送数据的示例:

  1. 打开另一个终端窗口。
  2. 使用以下命令进入 Logstash 容器:
docker exec -it <logstash_container_id> /bin/bash
  1. 运行 Logstash,并输入数据:
logstash -f /usr/share/logstash/pipeline/logstash.conf

在提示符下输入一些日志信息,然后按 Enter,这些信息将自动发送到 Elasticsearch。

七、在 Kibana 中查看数据

  1. 打开 Kibana UI,访问 http://localhost:5601
  2. 在左侧菜单中选择 “Discover”,您应该能看到 Logstash 发送到 Elasticsearch 的数据。
  3. 如果没有数据,请确保您在 Logstash 中正确输入了数据,并且数据没有被过滤掉。

八、总结与注意事项

详细介绍了如何使用 Dockerfile 和 Docker Compose 安装和配置 ELK Stack。通过这种方式,我们能够快速搭建一个完整的日志收集、分析和可视化环境。

注意事项:

  1. 资源限制:确保您的 Docker 容器有足够的内存和 CPU 资源,尤其是在处理大量日志数据时,Elasticsearch 可能会消耗较多资源。

  2. 数据持久化:本文配置中未配置数据持久化,重启容器时,数据将丢失。可以通过挂载卷来持久化 Elasticsearch 和 Logstash 的数据。

  3. 安全性:在生产环境中,应考虑使用安全措施,如用户认证和加密通信。

  4. 版本兼容性:确保 Elasticsearch、Logstash 和 Kibana 的版本一致,以避免兼容性问题。

希望这能帮助您更好地理解和使用 ELK Stack 进行日志管理和分析。

相关文章:

Dockerfile搭建ELK

使用 Dockerfile 安装 ELK 一、引言 ELK Stack&#xff08;Elasticsearch, Logstash, Kibana&#xff09;是一种流行的日志管理和分析解决方案。它允许用户实时搜索、分析和可视化日志数据。通过 Docker&#xff0c;可以方便地部署 ELK &#xff0c;快速获取一个功能齐全的日…...

在合规的地方怎么用EACO地球链兑换交换价值?

地球链EACO&#xff08;EarthChain&#xff0c;简称$E&#xff09;是一种虚拟数字资产。 目前在中国大陆&#xff0c;虚拟资产相关业务活动属于金融活动&#xff0c;包括虚拟资产的交易、兑换等操作&#xff0c;因此应该谨慎去寻求如何用它来交换价值。 虚拟资产交易炒作活动&…...

VS无法安装Win10SDK_10.0.2200,快捷方法

Visual Studio无法安装Win10SDK_10.0.2200&#xff0c;我在安装VS2019、2022提示&#xff0c;软件就不能编译。 因为之前安装过VS软件&#xff0c;重新安装软件提示“无法安装”。 原因 之前安装在D盘&#xff0c;现在没有D盘了 说明 因为电脑第一次安装VS&#xff0c;会自动安…...

github多个账号配置多个SSH秘钥

背景 对于有多个github账号的同学&#xff0c;需要配置多个ssh秘钥分别管理多个账号。 方法 1、生成多个SSH秘钥 # 为第一个 GitHub 账号生成密钥 ssh-keygen -t ed25519 -C "your_email_1example.com" -f ~/.ssh/id_ed25519_github_work# 为第二个 GitHub 账号生…...

静态/动态代理详解,一次性看完再也不会搞不清!

代理官方原文翻译&#xff1a; 给其他对象提供一个代理或者占位符&#xff0c;来控制对这个对象的访问。 代理最核心的思想&#xff1a; 在客户端和目标对象之间创建一个“中介”&#xff0c;用于保护目标对象和增强目标对象 静态代理&#xff1a; 该代理对象需要我们手动…...

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中设置了语言&#xff0c;并且已经置顶了&#xff0c;但是不生效&#xff0c;在windows上直接有设置当前语言为chrome显示语言&#xff0c;但是mac上没有。 解决办法 在系统里面有一个单独给chrome设置语言的&#xff1a; 单独给它设定成指定的语言&#xff0c;然后重…...

Python中的人工智能框架与实例

在人工智能(AI)领域&#xff0c;Python因其简洁的语法、丰富的库和强大的社区支持&#xff0c;成为了最受欢迎的编程语言之一。本文将详细介绍Python中的人工智能框架&#xff0c;并通过具体实例展示如何使用这些框架来实现不同的人工智能应用。 一、Python中的人工智能框架 …...

论文阅读(二十六):Dual Attention Network for Scene Segmentation

文章目录 1.Introduction3.DANet3.1Position Attention Module3.2Channel Attention Module 论文&#xff1a;Dual Attention Network for Scene Segmentation   论文链接&#xff1a;Dual Attention Network for Scene Segmentation   代码链接&#xff1a;Github 1.Intr…...

Stack和Queue(3)

Stack和Queue&#xff08;3&#xff09; priority_queue的模拟实现 priority_queue.h #include <vector>namespace soobin {template<class T, class Container vector<T>>class priority_queue{public://强制生成默认构造priority_queue() default;temp…...

怎样把学生的成绩单独告知家长?

期中考试季的到来让校园里的气氛似乎也变得紧张起来。家长们开始频繁地联系老师&#xff0c;希望了解孩子的表现&#xff1b;孩子们则在考试后&#xff0c;绞尽脑汁地想出各种理由&#xff0c;以期在成绩不理想时能减轻家长的失望。老师们更是忙得不可开交&#xff0c;不仅要批…...

vue3父组件控制子组件表单验证及获取子组件数值方法

1、关键部分的代码如下&#xff0c;我努力交代清楚了&#xff0c;希望能让大家看懂。 <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 解决内存可见性问题和指令重排序问题 一、设计模式 在讲解案例前&#xff0c;先介绍一个概念设计模式&#xff…...

Java.6--多态-设计模式-抽象父类-抽象方法

一、多态 1.定义--什么是多态&#xff1f; a.同一个父类的不同子类对象&#xff0c;在做同一行为的时候&#xff0c;有不同的表现形式&#xff0c;这就是多态。&#xff08;总结为&#xff1a;一个父类下的不同子类&#xff0c;同一行为&#xff0c;不同表现形式。&#xff0…...

JAVA Maven 的安装与配置

一、下载地址 官方网站&#xff1a;Maven – Download Apache Maven 我这里是3.8.6版本 二、安装步骤 maven安装之前要先安装jdk&#xff0c;请确保你的系统已经安装了jdk环境。 1.将下载好的 Maven 进行解压 apache-maven-3.6.8-bin.zip 2.配置本地仓库:修改 conf/settin…...

【程序分享】PCB元件坐标对齐工具 V1.3

↑↑↑点击上方蓝字&#xff0c;关注我们&#xff01; “PCB元件坐标对齐工具 V1.3”脚本程序在PCB文档中将元件的坐标自动移动到参考圆弧的中心&#xff0c;参考圆弧支持机械层1层和禁止布线层&#xff0c;参考图元的位置任意&#xff0c;不局限于栅格位置。 程序会自动…...

[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版本&#xff1a; 1.8Hutool版本&#xff1a; 5.8.25 问题描述 客服端文件上传主要代码&#xff1a; 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制作图像处理工具的文章&#xff0c;也知道pyqt通过使用label控件显示图像的…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统&#xff1a;Ubuntu 24.04 LTS (WSL2)架构&#xff1a;x86_64 (GNU/Linux)Rust 版本&#xff1a;rustc 1.87.0 (2025-05-09)Cargo 版本&#xff1a;cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解&#xff0c;涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容&#xff0c;并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念&#xff08;ACID&#xff09; 事务是…...

【51单片机】4. 模块化编程与LCD1602Debug

1. 什么是模块化编程 传统编程会将所有函数放在main.c中&#xff0c;如果使用的模块多&#xff0c;一个文件内会有很多代码&#xff0c;不利于组织和管理 模块化编程则是将各个模块的代码放在不同的.c文件里&#xff0c;在.h文件里提供外部可调用函数声明&#xff0c;其他.c文…...

VSCode 使用CMake 构建 Qt 5 窗口程序

首先,目录结构如下图: 运行效果: cmake -B build cmake --build build 运行: windeployqt.exe F:\testQt5\build\Debug\app.exe main.cpp #include "mainwindow.h"#include <QAppli...