docker-compose 搭建 单机版ELK

2024-05-24 07:28

本文主要是介绍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

这篇关于docker-compose 搭建 单机版ELK的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/997760

相关文章

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

pico2 开发环境搭建-基于ubuntu

pico2 开发环境搭建-基于ubuntu 安装编译工具链下载sdk 和example编译example 安装编译工具链 sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib 注意cmake的版本,需要在3.17 以上 下载sdk 和ex

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动

禅道Docker安装包发布

禅道Docker安装包发布 大家好, 禅道Docker安装包发布。 一、下载地址 禅道开源版:   /dl/zentao/docker/docker_zentao.zip  备用下载地址:https://download.csdn.net/download/u013490585/16271485 数据库用户名: root,默认密码: 123456。运行时,可以设置 MYSQL_ROOT_P

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群 华为云最近正在举办828 B2B企业节,Flexus X实例的促销力度非常大,特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务的需求,一定不要错过这个机会。赶紧去看看吧! 什么是华为云Flexus X实例 华为云Flexus X实例云服务是新一代开箱即用、体

docker-compose安装和简单使用

本文介绍docker-compose的安装和使用 新版docker已经默认安装了docker-compose 可以使用docker-compose -v 查看docker-compose版本 如果没有的话可以使用以下命令直接安装 sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-c

01 Docker概念和部署

目录 1.1 Docker 概述 1.1.1 Docker 的优势 1.1.2 镜像 1.1.3 容器 1.1.4 仓库 1.2 安装 Docker 1.2.1 配置和安装依赖环境 1.3镜像操作 1.3.1 搜索镜像 1.3.2 获取镜像 1.3.3 查看镜像 1.3.4 给镜像重命名 1.3.5 存储,载入镜像和删除镜像 1.4 Doecker容器操作 1.4

JavaFX环境的搭建和一个简单的例子

之前在网上搜了很多与javaFX相关的资料,都说要在Eclepse上要安装sdk插件什么的,反正就是乱七八糟的一大片,最后还是没搞成功,所以我在这里写下我搭建javaFX成功的环境给大家做一个参考吧。希望能帮助到你们! 1.首先要保证你的jdk版本能够支持JavaFX的开发,jdk-7u25版本以上的都能支持,最好安装jdk8吧,因为jdk8对支持JavaFX有新的特性了,比如:3D等;