Docker容器部署elasticsearch8.*与Kibana8.*版本使用filebeat采集日志
第 1 步:使用 Docker Compose 部署 Elasticsearch 和 Kibana
首先,我们需要创建一个 docker-compose.yml
文件来定义和运行 Elasticsearch 和 Kibana 服务。这种方式可以轻松管理两个容器的配置和网络。
-
创建
docker-compose.yml
文件在一个新的文件夹中,创建名为
docker-compose.yml
的文件,并填入以下内容。version: '3.8' services:elasticsearch:image: elasticsearch:8.18.2container_name: elasticsearchenvironment:- "discovery.type=single-node"- "xpack.security.enabled=false" # 重要:为简化部署,此处禁用安全功能。生产环境请勿使用!- "ES_JAVA_OPTS=-Xms1g -Xmx1g" # 根据您的服务器资源调整内存volumes:- es_data:/usr/share/elasticsearch/dataports:- "9200:9200"- "9300:9300"networks:- elastic_netkibana:image: kibana:8.18.2container_name: kibanaenvironment:- "ELASTICSEARCH_HOSTS=http://elasticsearch:9200" # 指向 Elasticsearch 容器ports:- "5601:5601"depends_on:- elasticsearchnetworks:- elastic_netvolumes:es_data:driver: localnetworks:elastic_net:driver: bridge
配置说明:
-
xpack.security.enabled=false
: 我们禁用了 Elasticsearch 的安全功能(如用户认证)。这极大地简化了配置过程,但强烈不建议在生产环境中使用。 -
discovery.type=single-node
: 将 Elasticsearch 配置为单节点模式。 -
volumes
: 创建一个名为es_data
的数据卷,用于持久化存储 Elasticsearch 的数据,防止容器删除后数据丢失。 -
networks
: 创建了一个名为elastic_net
的桥接网络,以确保 Kibana 和 Elasticsearch 可以相互通信。
-
-
启动服务
在包含
docker-compose.yml
文件的目录中,打开终端并运行以下命令:docker-compose up -d
-
验证服务状态
等待几分钟,让服务完全启动。然后通过以下命令检查容器是否正常运行:
docker-compose ps
您应该能看到
elasticsearch
和kibana
两个容器都处于Up
状态。您也可以通过浏览器或
curl
命令来验证服务是否可访问:-
Elasticsearch: 打开终端,运行
curl http://localhost:9200
。如果返回一个包含版本信息的 JSON 对象,则表示 Elasticsearch 运行正常。
-
-
-
Kibana: 打开浏览器,访问
http://localhost:5601
。如果看到 Kibana 的欢迎界面,则表示 Kibana 运行正常。
-
第 2 步:安装并配置 Filebeat
现在,我们需要在您已经安装了 NGINX 的服务器上安装和配置 Filebeat。
-
安装 Filebeat
将
filebeat-8.18.2-x86_64.rpm
包上传到您的 NGINX 服务器,并使用以下命令进行安装:rpm -vi filebeat-8.18.2-x86_64.rpm
安装完成后,Filebeat 的配置文件位于
/etc/filebeat/
目录下。 -
启用 NGINX 模块
Filebeat 提供了预置的模块来简化常见服务的日志采集,包括 NGINX。运行以下命令启用 NGINX 模块:
filebeat modules enable nginx
此命令会在
/etc/filebeat/modules.d/
目录下创建一个nginx.yml
配置文件(如果它不存在的话)。 -
配置
filebeat.yml
编辑主配置文件
/etc/filebeat/filebeat.yml
。您需要修改output.elasticsearch
和setup.kibana
部分,使其指向我们刚刚用 Docker 部署的服务。nano /etc/filebeat/filebeat.yml
找到并修改以下关键部分(文件中的其他默认配置可以暂时保持不变):
# ============================== Outputs ===============================# ---------------------------- Elasticsearch Output ---------------------------- output.elasticsearch:# Array of hosts to connect to.# 重要:请将 'your_server_ip' 替换为您服务器的实际 IP 地址。# 不要使用 localhost 或 127.0.0.1,因为 Filebeat 运行在主机上,而 ES 在 Docker 容器中。hosts: ["your_server_ip:9200"]# 如果您在上面 docker-compose.yml 中开启了安全功能,则需要配置用户名和密码# username: "elastic"# password: "your_password"# ============================== Kibana ==================================# Starting with Beats version 6.0.0, the dashboards are loaded via the Kibana API. # This requires a Kibana endpoint configuration. setup.kibana:# Kibana Host# 重要:请将 'your_server_ip' 替换为您服务器的实际 IP 地址。host: "your_server_ip:5601"
关键点:
-
hosts
: 必须填写您服务器的公网或内网IP地址,而不是localhost
,因为 Filebeat 进程需要从主机访问 Docker 容器暴露的端口。 -
setup.kibana.host
: 同上,也需要填写您服务器的 IP 地址。
-
-
检查 NGINX 模块配置
打开
/etc/filebeat/modules.d/nginx.yml
文件,确保它监控的日志路径是正确的。默认配置如下:- module: nginxaccess:enabled: truevar.paths: ["/var/log/nginx/access.log*"] # 检查您的 NGINX access 日志路径是否匹配error:enabled: truevar.paths: ["/var/log/nginx/error.log*"] # 检查您的 NGINX error 日志路径是否匹配
如果您的 NGINX 日志文件存放在其他位置,请务必修改
var.paths
的值。
第 3 步:启动 Filebeat 并加载资源
在启动 Filebeat 之前,我们需要运行 setup
命令。这个命令会自动连接到 Kibana 和 Elasticsearch,并加载预置的 NGINX 仪表板、索引模式等资源。
-
加载 Filebeat 资源
运行以下命令。对日志格式进行简单的模板分解,此过程可能需要一两分钟。
filebeat setup -e
如果看到类似
Dashboards loaded.
的信息,说明资源已成功加载到 Kibana。 -
启动并启用 Filebeat 服务
现在可以启动 Filebeat 服务,并设置为开机自启。
# 启动 Filebeat systemctl start filebeat# 设置为开机自启 systemctl enable filebeat
-
检查 Filebeat 状态
运行以下命令确保 Filebeat 服务正在运行且没有错误:
systemctl status filebeat
您也可以查看 Filebeat 的日志来排查问题:
journalctl -u filebeat -f
。
第 4 步:在 Kibana 中查看 NGINX 日志
现在,所有服务都已配置并运行,是时候在 Kibana 中查看成果了。
-
访问 Kibana
再次打开浏览器,访问
http://your_server_ip:5601
。
-
打开 Discover(发现)页面
-
点击左上角的菜单图标(三条横线)。
-
在 "Analytics" 分类下,点击 "Discover"。
-
-
选择索引模式
-
在 Discover 页面的左上角,您应该会看到一个下拉菜单。
-
filebeat setup
命令已经为您创建了名为filebeat-*
的索引模式。如果未被选中,请从下拉列表中选择它。
-
-
查询日志
一旦选择了正确的索引模式,您应该能看到从 NGINX 推送过来的日志数据流。
-
您可以在顶部的查询栏(KQL)中输入查询语句来过滤日志,例如
nginx.access.response_code : 404
来查找所有 404 错误。 -
左侧的字段列表可以让您快速筛选和分析数据。
-
-
查看 NGINX 仪表板
Filebeat 最强大的功能之一就是预置的仪表板。
-
点击左上角的菜单图标。
-
在 "Analytics" 分类下,点击 "Dashboard"。
-
在搜索框中输入 "nginx",您应该能看到类似于
[Filebeat NGINX] Access and error logs ECS
的仪表板。 -
点击打开它,您将看到一个包含各种图表和统计信息的可视化界面,全面展示了 NGINX 的访问情况和错误。
-
至此,已成功搭建了一套完整的日志采集分析系统。
相关文章:

Docker容器部署elasticsearch8.*与Kibana8.*版本使用filebeat采集日志
第 1 步:使用 Docker Compose 部署 Elasticsearch 和 Kibana 首先,我们需要创建一个 docker-compose.yml 文件来定义和运行 Elasticsearch 和 Kibana 服务。这种方式可以轻松管理两个容器的配置和网络。 创建 docker-compose.yml 文件 在一个新的文件夹…...

OpenCV CUDA模块图像处理------双边滤波的GPU版本函数bilateralFilter()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 该函数在 GPU 上执行双边滤波操作,是一种非线性平滑滤波器,能够在 保留边缘的同时去除噪声。 函数原型 void cv::cuda:…...

华为手机开机卡在Huawei界面不动怎么办?
遇到华为手机卡在启动界面(如HUAWEI Logo界面)的情况,可依次尝试以下解决方案,按操作复杂度和风险由低到高排序: 🔧 一、强制重启(优先尝试) 1.通用方法 长按 电源键 音量下键…...
并行硬件环境及并行编程
文章目录 A1. (并行编程 基于的)硬件环境 的 基本模型A2. 特定的硬件实现B1. 并行编程基本模型与编程技术✅ 并行编程的一般流程**第一阶段:基于“编程直觉模型”设计程序****第二阶段:程序编译并部署到实际硬件** B2.特定的 硬件环境下的 并行编程 A1. …...
ORM框架(SQLAlchemy 与 Tortoise )
注:本文是python的学习笔记;不是教程!不是教程!内容可能有所疏漏,欢迎交流指正。 框架概述 什么是ORM? ORM(Object-Relational Mapping,对象关系映射)是一种编程技术&a…...

go语言map扩容
map是什么? 在Go语言中,map是一种内置的无序key/value键值对的集合,可以根据key在O(1)的时间复杂度内取到value,有点类似于数组或者切片结构,可以把数组看作是一种特殊的map,数组的key为数组的下标&…...
安全访问家中 Linux 服务器的远程方案 —— 专为单用户场景设计
在现代远程办公与频繁差旅的背景下,许多人需要从外地访问家中的 Linux 文件服务器,以获取重要文件。在涉及敏感数据(如客户资料、财务信息)时,数据的安全性成为首要考虑因素。以下内容将聚焦于如何在仅有一台笔记本电脑…...
前端开发三剑客:HTML5+CSS3+ES6
在前端开发领域,HTML、CSS和JavaScript构成了构建网页与Web应用的核心基础。随着技术标准的不断演进,HTML5、CSS3以及ES6(ECMAScript 2015及后续版本)带来了诸多新特性与语法优化,极大地提升了开发效率和用户体验。本文…...
[Java 基础]Java 中的关键字
在 Java 编程语言中,关键字 (Keywords) 是预定义的、具有特殊含义的标识符 (identifiers)。它们是 Java 语言语法的一部分,被 Java 编译器赋予了特定的功能和用途。因此,你不能将关键字用作变量名、类名、方法名或其他用户自定义的标识符。 …...

5.3 Spring Boot整合JPA
本文详细介绍了如何在Spring Boot项目中整合Spring JPA,实现对数据库的高效操作。首先,创建Spring Boot项目并添加必要的依赖,如Druid数据源。接着,配置数据源属性,创建实体类Comment和Article,并使用JPA注…...

腾讯开源视频生成工具 HunyuanVideo-Avatar,上传一张图+一段音频,就能让图中的人物、动物甚至虚拟角色“活”过来,开口说话、唱歌、演相声!
腾讯混元团队提出的 HunyuanVideo-Avatar 是一个基于多模态扩散变换器(MM-DiT)的模型,能够生成动态、情绪可控和多角色对话视频。支持仅 10GB VRAM 的单 GPU运行,支持多种下游任务和应用。例如生成会说话的虚拟形象视频࿰…...

[文献阅读] Emo-VITS - An Emotion Speech Synthesis Method Based on VITS
[文献阅读]:An Emotion Speech Synthesis Method Based on VITS 在VITS基础上通过参考音频机制,获取情感信息,从而实现的情感TTS方式。 摘要 VITS是一种基于变分自编码器(VAE)和对抗神经网络(GAN…...
网络协议通俗易懂详解指南
目录 1. 什么是网络协议? 1.1 协议的本质 1.2 为什么需要协议? 1.3 协议分层的概念 2. TCP协议详解 - 可靠的信使 📦 2.1 TCP是什么? 2.2 TCP的核心特性 🔗 面向连接 🛡️ 可靠传输 📊 流量控制 2.3 TCP三次握手 - 建立连接 2.4 TCP四次挥手 - 断开连接…...

OpenCV-Python Tutorial : A Candy from Official Main Page(持续更新)
OpenCV-Python 是计算机视觉领域最流行的开源库之一,它结合了 OpenCV (Open Source Computer Vision Library) 的 C 高性能实现和 Python 的简洁易用特性,为开发者提供了强大的图像和视频处理能力。具有以下优势: 典型应用领域: …...

【Vue】指令补充+样式绑定+计算属性+侦听器
【指令补充】 【指令修饰符】 指令修饰符可以让指令的 功能更强大,书写更便捷 分类: 1.按键修饰符(侦测当前点击的是哪个按键) 2.事件修饰符(简化程序对于阻止冒泡, 一些标签的默认默认行为的操作&…...
.Net Framework 4/C# 泛型的使用、迭代器和分部类
一、泛型的使用 泛型是用于处理算法、数据结构的一种编程方法。泛型的目标是采用广泛适用和可交互性的形式来表示算法和数据结构,以便它们能够直接用于软件构造。 泛型简单理解就是,在声明时暂时不固定其类型,例如 int 类型、double 类型等,在调用泛型时,再将要用的类型补…...

LLM 笔记:Speculative Decoding 投机采样
1 基本介绍 投机采样(Speculative Sampling)是一种并行预测多个可能输出,然后快速验证并采纳正确部分的加速策略 在不牺牲输出质量的前提下,减少语言模型生成 token 所需的时间 传统的语言模型生成是 串行 的 必须生成一个&…...

当SAP系统内计划订单转换为生产订单时发生了什么?
【SAP系统研究】 #SAP #计划订单 #生产订单 #采购申请 一、关于计划订单的一点疑惑 曾经对SAP为什么会有计划订单,是感到很疑惑的。 这个界面简单,配置点也不多,能被随意“摆布”,一旦要变形就消失得无影无踪的计划订单,why? 但是,再次重新审视过之后,才发现它其实…...

PDF转PPT转换方法总结
你是否遇到过这些场景? 收到客户发来的产品手册PDF,明天就要用它做演示; 公司历史资料只有PDF版,领导突然要求更新为幻灯片。 这时PDF转PPT工具就成了救命稻草。接下来,介绍三种PDF转PPT工具。 1. iLoveOFD在线转换…...

3D Web轻量化引擎HOOPS Communicator的定制化能力全面解析
HOOPS Communicator 是Tech Soft 3D推出的高性能Web工程图形引擎。它通过功能丰富的JavaScript API,帮助开发团队在浏览器中快速添加2D/3D CAD模型的查看与交互功能。该引擎专为工程应用优化,支持大规模模型的流畅浏览、复杂装配的智能导航、流式加载和服…...

【力扣链表篇】19.删除链表的倒数第N个节点
题目: 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5]示例 2: 输入:head [1], n 1 输出:[]…...
.Net Framework 4/C# 集合和索引器
一、ArrayList 类(集合) ArrayList 类位于 System.Collections 命名空间下,它可以动态地添加和删除元素。 ArrayList 提供了3个构造器,通过这3个构造器可以有3种声明方式: 默认构造器,将会以默认ÿ…...

如何使用Jmeter进行压力测试?
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 一、什么是压力测试 软件测试中:压力测试(Stress Test),也称为强度测试、负载测试。压力测试是模拟实际应用的软硬…...

Grafana-ECharts应用讲解(玫瑰图示例)
工具: MySQL 数据库 MySQL Workbench 数据库管理工具(方便编辑数据) Grafana v11.5.2 Business Charts 6.6(原 Echarts插件) 安装 安装 MySQL社区版安装 MySQL Workbench安装 Grafana在 Grafana 插件中搜索 Business Charts 进行安装以上安装步骤网上教程很多,自行搜…...
洛谷P1591阶乘数码
P1591 阶乘数码 题目描述 求 n ! n! n! 中某个数码出现的次数。 输入格式 第一行为 t ( t ≤ 10 ) t(t \leq 10) t(t≤10),表示数据组数。接下来 t t t 行,每行一个正整数 n ( n ≤ 1000 ) n(n \leq 1000) n(n≤1000) 和数码 a a a。 输出格式…...

前端vue3 上传/导入文件 调用接口
点击按钮导入: <el-uploadaction"https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15":auto-upload"false":on-change"handleFileChange":show-file-list"false"><el-button type"warning"…...
概述侧边导航的作用与价值
侧边导航的作用与价值:介绍侧边导航的核心优势和用户体验提升点。设计原则:使用表格对比说明侧边导航的三大设计准则。基础实现方法:分步骤讲解静态侧边导航的实现技术。高级交互实现:提供滑动式侧边栏的完整交互解决方案。优化技…...

Python训练营-Day22-Titanic - Machine Learning from Disaster
Description linkkeyboard_arrow_up 👋🛳️ Ahoy, welcome to Kaggle! You’re in the right place. This is the legendary Titanic ML competition – the best, first challenge for you to dive into ML competitions and familiarize yourself w…...

FreeCAD:开源世界的三维建模利器
FreeCAD 开发模式 FreeCAD的开发采用多语言协作模式,其核心框架与高性能模块主要使用C构建,而用户界面与扩展功能则通过Python脚本实现灵活定制。具体来说: C核心层:作为基础架构,C负责实现与Open CASCADE Technology…...
指针的定义与使用
1.指针的定义和使用 int point1(){//定义指针int a 10;//指针定义语法: 数据类型 * 指针变量名int * p;cout << "sizeof (int(*)) --> " << sizeof(p) << endl;//让指针记录变量a的地址 & 取址符p &a ;cout << &qu…...