docker-compose 搭建 单机版ELK

docker-compose 搭建 单机版ELK


前言

本次部署将使用ElasticSearch官方的镜像和Docker-Compose来创建单节点的ELK,用于学习ELK操作。在k8s集群内,如果每天的日志量超过20G以上,建议部署在k8s集群外部,以支持分布式集群的架构。在这种情况下,我们将采用有状态部署的方式,并且使用动态存储进行持久化。在运行该yaml文件之前,需要提前创建好存储类。本文档将仅使用常用的ElasticSearch + LogStash + Kibana组件。

准备

环境

  • 操作系统:Centos 7(虚拟机)
  • Docker:26.0.0
  • Docker-Compose:2.25.0
  • ELK Version:7.17.2

文件目录

/docker/
├── elk
│   ├── docker-compose.yml
│   ├── elasticsearch
│   ├── kibana
│   │   └── config
│   │       └── kibana.yml
│   └── logstash
│       ├── config
│       │   └── logstash.yml
│       └── pipeline
│           └── logstash.conf

部署流程

创建 Docker-Compose 的配置文件。

version: '3'services:elasticsearch:image: elasticsearch:7.17.2container_name: elasticsearchports:- "9200:9200"- "9300:9300"restart: alwaysenvironment:# 设置集群名称cluster.name: elasticsearch# 以单一节点模式启动discovery.type: single-nodeES_JAVA_OPTS: "-Xms512m -Xmx512m"volumes:- /docker/elk/elasticsearch/plugins:/usr/share/elasticsearch/plugins- /docker/elk/elasticsearch/data:/usr/share/elasticsearch/data- /docker/elk/elasticsearch/logs:/usr/share/elasticsearch/logsnetworks:- elklogstash:image: logstash:7.17.2container_name: logstashrestart: alwaysports:- "4560:4560"volumes:- /docker/elk/logstash/pipeline/logstash.conf:/usr/share/logstash/pipeline/logstash.conf- /docker/elk/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.ymldepends_on:- elasticsearchlinks:#可以用es这个域名访问elasticsearch服务- elasticsearch:esnetworks:- elkkibana:image: kibana:7.17.2container_name: kibanarestart: alwaysports:- "5601:5601"depends_on:# kibana在elasticsearch启动之后再启动- elasticsearchenvironment:#设置系统语言文中文I18N_LOCALE: zh-CN# 访问域名# SERVER_PUBLICBASEURL: https://kibana.cloud.comvolumes:- /docker/elk/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.ymllinks:#可以用es这个域名访问elasticsearch服务- elasticsearch:esnetworks:- elknetworks:elk:name: elkdriver: bridge

在 Services 中声明了三个服务:

  • elasticsearch
  • logstash
  • kibana
ElasticSearch 服务的配置注意事项:
  • environment 环境设置中 discovery.type 属性设置成 ‘single-node’ ,主要目的是将 ES 的集群发现模式配置为单节点模式。
  • environment 环境设置中 ES_JAVA_OPTS 的 Xms 属性和 Xmx 属性建议设置成大于 ‘-Xms512m -Xmx512m’ ,主要是为了防止 ES 启动成功后,无法查询消息。
  • volumes 持久卷设置中的 /etc/localtime:/etc/localtime 主要目的是将 Docker 容器中的时间与宿主机同步。
  • volumes 持久卷设置中的 ./es/data:/usr/share/elasticsearch/data 主要目的是将 ES 的数据映射到对应的宿主机中,并做持久化设置。
LogStash 服务的配置注意事项:
  • volumes 持久卷中的 ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf:将宿主机本地的 LogStash 配置映射至 Logstash 容器内部。
  • volumes 持久卷设置中的 /etc/localtime:/etc/localtime 主要目的是将 Docker 容器中的时间与宿主机同步。
  • environment 环境设置中 MONITORING_ENABLED 属性设置成 false ,主要目的是关闭 LogStash 监控功能,避免容器崩溃。
  • environment 环境设置中 ES_JAVA_OPTS 的 Xms 属性和 Xmx 属性建议设置成 ‘-Xms1024m’ ‘-Xmx1024m’ ,主要是为了防止 Logstash 消费消息时突然崩溃。
  • depends_on 设置,设置成 elasticsearch,表示 LogStash 容器的启动必须依赖于 ES 容器启动,如果 ES 启动失败,则 LogStash 启动也失败。
Kibana 服务的配置注意事项:
  • volumes 持久卷设置中的 /etc/localtime:/etc/localtime 主要目的是将 Docker 容器中的时间与宿主机同步。
  • volumes 持久卷中的./kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml,主要目的是 Kibana 容器启动使用外部配置文。
  • environment 环境设置中 ELASTICSEARCH_URL 属性设置成 ‘http://elasticsearch:9200’ ,主要目的是连接 ES 容器,监控 ES 服务。
  • environment 环境设置中 I18N_LOCALE 属性设置成 zh-CN ,主要目的将 Kibana 的系统语言设置成中文,可视化页面同时也是中文语言。
  • depends_on 设置,设置成 elasticsearch,表示 Kibana 容器的启动必须依赖于 ES 容器启动,如果 ES 启动失败,则 Kibana 启动也失败。

Kibana 配置

创建 kibana.yml 文件

server.host: "0.0.0.0"
server.shutdownTimeout: "5s"
elasticsearch.hosts: [ "http://elasticsearch:9200" ]
monitoring.ui.container.elasticsearch.enabled: true
  • server.host:设置成 0.0.0.0 表示 允许所有机器访问
  • elasticsearch.hosts:设置成 ES 服务地址,可以是单机地址,也可以是服务地址
  • monitoring.ui.container.elasticsearch.enabled:是否开启对 ES 进行容器监控

LogStash 配置

创建服务主体配置 logstash.yml 文件

http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://elasticsearch:9200" ]
  • http.host:设置成 0.0.0.0 表示Elasticsearch绑定的主机地址
  • elasticsearch.hosts:指定了用于监控Elasticsearch实例的地址

传输管道配置 logstash.conf

input {tcp {mode => "server"host => "0.0.0.0"port => 4560codec => json_lines}
}
output {elasticsearch {hosts => "elasticsearch:9200"index => "%{[spring.application.name]}-%{+YYYY.MM.dd}"}
}

部署测试

docker-compose 启动

docker-compose up -d elasticsearch kibana logstash

访问 9200 端口查看 elasticsearch 是否启动成功

image-20240523100136814

访问 5601 端口查看 Kibana 容器是否启动

image-20240523100518010

整合SpringBoot

在项目中引入Maven依赖
<!-- logstash -->
<dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>7.2</version>
</dependency>
修改项目内的 logback.xml 文件 增加 logstash 配置
<!-- logstash -->
<springProperty scope="context" name="appName" source="spring.application.name"/><!--输出到logstash的appender-->
<appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender"><!--可以访问的logstash日志收集端口--><destination>${logstash.host:logstash.port}</destination><encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"><customFields>{"spring.application.name":"${appName}"}</customFields></encoder>
</appender><root level="info"><appender-ref ref="logstash"/>
</root>
访问 Kibana 查看是否成功推送日志

image-20240523105534647

配置索引模式

这里使用通配符 整合查看所有 *-* 开头的索引

image-20240523103407051

查看使用日志索引

image-20240523104724412

image-20240523105206661

参考资料

  • https://lionli.blog.csdn.net/article/details/125743132
  • https://juejin.cn/post/7143974532766760990
  • https://www.bilibili.com/video/BV1zm4y1i7WW/?share_source=copy_web&vd_source=bb5feb0740121cd1369c48b793f9c393

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

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

相关文章

Flutter 中的 RepaintBoundary 小部件:全面指南

Flutter 中的 RepaintBoundary 小部件&#xff1a;全面指南 在Flutter的高性能渲染体系中&#xff0c;RepaintBoundary是一个重要的优化工具。它允许开发者将复杂的组件分割成独立的部分&#xff0c;以减少不必要的重绘&#xff0c;从而提高应用的性能。本文将提供RepaintBoun…

11|数据库编程:包括数据库的基本概念,JDBC的使用,数据库连接池的实现,Hibernate和MyBatis的应用等。

数据库基本概念 想象你有一个装满宝藏的箱子&#xff0c;里面放着各种宝贝&#xff0c;但这些宝贝都按照一定规则摆放。数据库就像是这样一个箱子&#xff0c;但它存放的是信息&#xff0c;比如姓名、年龄、电子邮件等。它帮我们有条理地管理数据&#xff0c;让我们可以方便地…

【WEB前端2024】开源智体世界:乔布斯3D纪念馆-第26节-内嵌blender展厅

【WEB前端2024】开源智体世界&#xff1a;乔布斯3D纪念馆-第26节-内嵌blender展厅 使用dtns.network德塔世界&#xff08;开源的智体世界引擎&#xff09;&#xff0c;策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界…

python操作rabbitmq的consumer,并强制关闭特定consumer的连接

引入 python获取指定队列的consumer python可以使用rabbitmq_management的api获取所有consumer的信息。【队列需要安装rabbitmq_management&#xff0c;在大部分情况下&#xff0c;我们安装队列的同时&#xff0c;都会安装管理界面&#xff0c;以方便一些简单的手动操作与简单…

网络编程的基础知识(适合新手)

网络编程 在Java中&#xff0c;网络编程是指使用Java语言进行网络通信的编程技术。这种技术使得位于不同地理位置的计算机能够通过网络进行通信&#xff0c;实现资源共享和信息传递。 一、定义 Java网络编程是Java语言在网络通信方面的应用&#xff0c;它利用Java提供的网络…

位带操作 Bit-band

位带操作&#xff08;Bit-banding&#xff09;的特性是ARM Cortex-M微控制器中一个非常有用的功能&#xff0c;其目的是提供一种简便的方法来访问和操作存储器中单个位的状态。位带操作能够使程序员能够以原子操作&#xff08;即不可中断的操作&#xff09;的方式读取和写入单个…

Flutter 中的 DateRangePickerDialog 小部件:全面指南

Flutter 中的 DateRangePickerDialog 小部件&#xff1a;全面指南 在 Flutter 应用开发中&#xff0c;日期和时间的选择是一项常见的用户交互需求。DateRangePickerDialog 是一个方便的小部件&#xff0c;它提供了一个对话框界面&#xff0c;允许用户选择日期范围。这个小部件…

前端-全局样式

当我们有一个样式需要全局引用的时候&#xff0c;我们首先新建一个global.scss的样式文件&#xff0c;这里我举例一下 html, body {margin: 0;height: 100%;width: 100%;#app {height: 100%;} }然后在我们的main.ts 文件中 声明&#xff0c;这样的话我们整个项目都能用到这个样…

重开之数据结构(二刷)

引言: 由于前段时间学习效率不高,导致后面复习前面数据结构没有一个大纲,因此打算重新来学习以下数据结构,期望再次把数据结构学透,并有深刻的印象.并且记录每一次的学习记录 以便于后续复习 二分查找 需求:在有序数组arr内,查找target值 如果找到返回索引位置如果找不到返回…

c++(一)

c&#xff08;一&#xff09; C与C有什么区别命名空间使用 输入输出流引用指针和引用的区别定义拓展 函数重载例子测试函数重载原理 参数默认值什么是参数默认值注意 在c中如何引入c的库动态内存分配new、delete与malloc、free的区别&#xff1f; C与C有什么区别 <1>都是…

Introduction of Internet 计算机网络概述

计算机网络的概念 计算机网络的定义&#xff1a; 多台独立的计算机通过通信线路实现资源共享的计算机系统 计算机网络的组成 资源子网&#xff1a;提供共享的软件资源和硬件资源 通信子网&#xff1a;提供信息交换的网络结点和通信线路 计算机网络类型 按照拓扑排序 星型…

【STM32】计算定时器的溢出

TIM2、3、4、5、12、13、14在APB1上&#xff0c;最大计数频率84M。 TIM1、8、9、10、11在APB2上&#xff0c;最大计数频率168M。 time(arr1)/(prescale1)/Tclk 算出来的是秒 下图使用TIM14 84MHz 那么time33600*25000/8400000010S&#xff0c;10S进入一次中断 中断方式开…

基于STM32+NBIOT(BC26)设计的物联网观赏鱼缸

文章目录 一、前言1.1 项目介绍【1】开发背景【2】项目实现的功能【3】项目模块组成 1.2 设计思路 二、(硬件控制端)硬件选型2.1 STM32开发板2.2 PCB板2.3 USB下载线2.4 NBIOT模块2.5 杜邦线&#xff08;2排&#xff09;2.6 稳压模块2.7 电源插头2.8 水温检测传感器2.9 水质检测…

三星HBM3/3E未通过英伟达测试标准

据报道&#xff0c;三星的最新HBM3与HBM3E内存堆栈在满足英伟达的热能和功耗要求方面遇到了困难。这些内存产品因过热及高功耗问题未能通过英伟达的测试&#xff0c;这对三星来说是一个重大挫折&#xff0c;尤其是考虑到英伟达在全球AI应用处理器市场占据主导地位。同时&#x…

001 CentOS 7.9 安装及配置jdk-8u411-linux-x64.tar.gz

文章目录 1. 下载JDK安装包2. 创建安装目录3. 上传并解压JDK安装包4. 配置环境变量5. 验证安装 1. 下载JDK安装包 首先&#xff0c;需要从Oracle官方网站或其他可信赖的来源下载jdk-8u411-linux-x64.tar.gz安装包。 2. 创建安装目录 在终端中执行以下命令&#xff0c;创建一…

TiDB学习4:Placement Driver

目录 1. PD架构 2. 路由功能 2. TSO 2.1 TSO 概念 2.2 TSO分配过程 2.3 TSO时间窗口 3. 调度 3.1 信息收集 3.2 生成调度(operator) 3.3 执行调度 4. Label 与高可用 4.1 Label 的配置 5. 小结 1. PD架构 PD是整个TiDB的总控&#xff0c;相当于集群的大脑 PD集成了…

Android 版本与 API level 以及 NDK 版本对应

采用 Android studio 开发 Android app 的时候&#xff0c;需要选择支持的最低 API Level 和使用的 NDK 版本&#xff0c;对应开发 app 的最低 SDK 版本&#xff1a; 在 app 的 build.gradle 文件里&#xff0c;对应于代码如下&#xff1a; 目前各版本的占有率情况如下&#xf…

PaddleSeg训练推理及模型转换全流程

文章目录 1、数据准备1.1 数据标注1.2 数据导出1.3 标签较验1.4 数据集整理1.5 标签可视化 2、 模型训练3、模型验证4、模型推理5、模型导出6、导出文件的推理7、将模型转换成onnx8、使用onnx进行推理 本文记录一下使用paddleseg进行语议分割模型对人体进行分割的使用流程。事实…

jmeter服务器性能监控分析工具ServerAgent教程

ServerAgent介绍&#xff1a;支持监控CPU&#xff0c;memory&#xff0c;磁盘&#xff0c;网络等&#xff0c;和JMeter集成&#xff0c;在JMeter的图形界面中&#xff0c;可以实时看到监控的数据&#xff0c;但是&#xff0c;它只能监控硬件资源使用情况。 不能监控应用服务 S…

MySQL:表的约束

文章目录 0.小知识&#xff0c;数据转化1.空属性(非空约束)2.默认值&#xff08;default&#xff09;3.comment&#xff08;列描述&#xff09;4.zerofill(显示约束)5.primary key(主键约束)6.auto_increment(自增长)7.unique(唯一键)8.foreign key (外键)9.综合表结构的设计 表…