使用docker部署ELK日志框架-Elasticsearch

news2024/11/26 16:53:21

一、ELK知识了解

1-ELK组件

工作原理:
(1)在所有需要收集日志的服务器上部署Logstash;或者先将日志进行集中化管理在日志服务器上,在日志服务器上部署 Logstash。
(2)Logstash 收集日志,将日志格式化并输出到 Elasticsearch 群集中。
(3)Elasticsearch 对格式化后的数据进行索引和存储。
(4)Kibana 从 ES 群集中查询数据生成图表,并进行前端数据的展示。

2- ELK部署 

1、环境
(1) 操作系统版本:

[root@kk ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)

 (2) docker版本( docker安装 --参考-http://t.csdnimg.cn/wiQTu)

[root@kk ~]# docker -v
Docker version 24.0.7, build afdd53b

(3) 本次ELK三个组件选择官网最新8.7.1版本

[root@kk ~]# systemctl start docker  //启动docker

//拉取镜像文件

[root@kk ~]# docker pull docker.elastic.co/elasticsearch/elasticsearch:8.11.1  //这是最新版本

[root@kk ~]# docker pull elasticsearch:8.7.1   //本文用8.7版本

# 查看镜像 docker images 

[root@kk ~]# docker images

2.创建一个ELK容器通信专用网络 

[root@kk ~]# docker network create elastic
6d32f1379cdbe03a44fafd7445aae8dcb15c79825d9ec6f2e34234abcd633f26
查看建立的信道情况:docker network ls

如下图所示:

3.创建ELK目录,方便容器启动后目录挂载 

 [root@kk ~]# mkdir -p /etc/{elasticsearch,kibana,logstash}

4. 拉取配置文件

# 启动elasticsearch

[root@kk ~]# docker run -d --name es --net elastic -P -e "discovery.type=single-node" elasticsearch:8.7.1
50d2ef8abc301f370664b137c6d6f93bf8dd72b2b7539d4509d8571a04591515

# 进入容器内

# 进入配置文件目录
[root@kk ~]# docker exec -it es /bin/bash
elasticsearch@50d2ef8abc30:~$  cd /usr/share/elasticsearch/config
( 容器内工作目录为/usr/share/elasticsearch/config)
# 退出容器
elasticsearch@50d2ef8abc30:~/config$ exit
exit
# 复制文件
[root@kk ~]# docker cp es:/usr/share/elasticsearch/config/elasticsearch.yml /etc/elasticsearch/config
Successfully copied 2.56kB to /etc/elasticsearch/config

# 修改权限
chmod -R 777 /etc/elasticsearch

5.重新启动容器并挂载目录 

查看运行的容器

[root@kk ~]# docker ps -a
CONTAINER ID   IMAGE                 COMMAND                  CREATED         STATUS                          PORTS                                                                                      NAMES
c2a3a23141dd   elasticsearch:8.7.1   "/bin/tini -- /usr/l…"   9 minutes ago   Up 9 minutes                    0.0.0.0:32769->9200/tcp, :::32769->9200/tcp, 0.0.0.0:32768->9300/tcp, :::32768->9300/tcp   es

# 删除临时启动容器
                                                             vibrant_blackwell
[root@kk ~]# docker rm -f es
es

# 启动容器挂载目录

docker run -d --name es --net elastic -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -v /etc/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /etc/elasticsearch/data/:/usr/share/elasticsearch/data -v /etc/elasticsearch/plugins/:/usr/share/elasticsearch/plugins --privileged=true elasticsearch:8.7.1
 

[root@kk ~]# docker run -d elasticsearch:8.7.1
e48d06b30424b9d345431152cc69d0870fcbf2e0cbe60f48e3a3e9b51684788e

# 若无加载的容器,那么需要重启docker 
sudo systemctl restart docker

# 查看容器状态
docker ps

# 查看容器日志状态
docker logs -f es

总算启动成功。

插曲:

期间出现下面问题,删除容器docker 重装不成功,之后把容器删除,重新挂载,后再次启动容器反复尝试。 

docker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error mounting "/etc/elasticsearch/config/elasticsearch.yml" to rootfs at "/usr/share/elasticsearch/config/elasticsearch.yml": stat /etc/elasticsearch/config/elasticsearch.yml: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type.

查询解决方案:

这个错误通常是由于容器无法启动导致的。错误信息中提到了一个文件路径的问题,可能是由于文件路径不存在或者文件类型不匹配导致的。建议您检查一下容器的配置文件,确保文件路径正确,并且文件类型与容器内部的文件类型匹配。如果文件路径正确,但是文件类型不匹配,您可以尝试将文件复制到容器内部,并将其类型更改为正确的类型。如果问题仍然存在,您可以尝试重新安装Docker或者更新Docker版本,以确保Docker的正常运行。 

 没办法,只能重新安装下docker 版本再从头来。

6.验证elasticsearch是否正常启动

curl 172.20.193.85:9200 

 

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

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

相关文章

JJJ:python学习笔记

p4 没有编译的过程 源码和输入得到输出 静态语言:编译型 脚本语言:解释型 p5 又叫做胶水语言 p7 p8 p10

蓝眼开源云盘部署全过程(手动安装)

环境概述: 系统-Centos7.4 数据库-MySQL8 云盘系统-Tank4.0.1 前提:操作系统已完成安装,有外部网络。 一.安装数据库 cd到合适的目录进行下载安装操作,期间不要切换出去。 wget https://dev.mysql.com/get/mysql80-community-r…

Synchronized面试题

一:轻量锁和偏向锁的区别: (1)争夺轻量锁失败时,自旋尝试抢占锁 (2)轻量级锁每次退出同步块都需要释放锁,而偏向锁是在竞争发生时才释放锁,线程不会主动释放偏向锁 二&…

STM32 LL库 TIM3定时器多通道捕获输入采集

为什么不用HAL库,使用HAL库捕获输入一个通道还尚可,多通道捕获由于HAL的回调函数不符合我的要求,干脆直接切换到LL库。网上找了许多,代码处理写的不符合我的要求,这里记录一下我的调试过程。 TIM2输出1路PWM信号&#…

电磁场与电磁波part1--矢量分析

目录 1、方向导数 2、散度定理(高斯定理) 3、散度与旋度的比较 4、旋度定理(斯托克斯定理) 5、关于点乘、叉乘、梯度、散度、旋度的计算 ~~~~~~~~~~~~~~~~~~~~~~~~ 确认过眼神,是我看不懂的 ~~~~~~~~~~~~~~~~…

FPGA时序分析与约束(13)——I/O接口约束

一、概述 在应用了时钟约束后,所有寄存器到寄存器的路径都能定时。为了获得更加精准的FPGA外部时序信息,设计者需要为FPGA的I/O接口指定时序信息,一般时序工具只能获取FPGA器件内部的时序信息,对于FPGA器件引脚之外的时序信息&…

【C++】-- 红黑树详解

目录 一、红黑树概念 1.概念 2.性质 二、红黑树定义 1.红黑树节点定义 (1)将新插入节点置为红色 (2)将新插入节点置为黑色 2.红黑树定义 三、红黑树插入 1.插入节点 2.控制颜色 (1)父亲为黑色 &#xff0…

如何使用 Github Action 管理 Issue

本文作者为 360 奇舞团前端开发工程师 Daryl 前言 很多小伙伴打开 github 上的仓库都只使用Code查看代码,或者只是把 github 当成一个代码仓库,但是 github 还提供了很多好用的功能。 其中,GitHub Action就是一个很好用的功能,本文…

EfficientNet:通过模型效率彻底改变深度学习

一、介绍 EfficientNet 是深度学习领域的里程碑,代表了神经网络架构方法的范式转变。EfficientNet 由 Google Research 的 Mingxing Tan 和 Quoc V. Le 开发,在不影响性能的情况下满足了对计算高效模型不断增长的需求。本文深入探讨了 EfficientNet 背后…

自动驾驶汽车:人工智能最具挑战性的任务

据说,自动驾驶汽车是汽车行业梦寐以求的状态,将彻底改变交通运输业。就在几年前,对自动驾驶汽车的炒作风靡一时,那么到底发生了什么呢?这么多公司吹嘘到2021年我们将迎来的无人驾驶汽车革命在何处?事实证明…

LeetCode(18)整数转罗马数字【数组/字符串】【中等】

目录 1.题目2.答案3.提交结果截图 链接: 12. 整数转罗马数字 1.题目 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X …

javaweb---maventomcat使用教程

文章目录 今日内容0 复习昨日1 Maven1.0 引言1.1 介绍1.2 下载1.3 安装1.3.1 解压1.3.2 配置环境变量1.3.3 测试 1.4 仓库1.5 Maven配置1.5.1 修改仓库位置1.5.2 设置镜像 2 IDEA - MAVEN2.1 idea关联maven2.2 创建java项目2.3 java项目结构2.4 pom2.5 导入依赖2.5.1 查找依赖2…

【Hello Go】Go语言基础类型

Go语言基础类型 基础类型命名变量变量声明变量初始化变量赋值匿名变量 常量字面常量常量定义iota枚举 基础数据类型分类 fmt包的标准输入输出格式说明输入类型转换类型取别名 基础类型 命名 Go语言中的命名遵循下面的几个规则 必须以字母或者是下划线开头不能使用Go语言中的…

C/C++---------------LeetCode第1394.找出数组中的幸运数

找出数组中的幸运数 题目及要求暴力算法哈希算法在main里使用 题目及要求 在整数数组中,如果一个整数的出现频次和它的数值大小相等,我们就称这个整数为「幸运数」。 给你一个整数数组 arr,请你从中找出并返回一个幸运数。 如果数组中存在…

过滤器模式 rust和java的实现

文章目录 过滤器模式实现 过滤器模式实现javarustjavarust rust代码仓库 过滤器模式 过滤器模式(Filter Pattern)或标准模式(Criteria Pattern)是一种设计模式,这种模式允许开发人员使用不同的标准来过滤一组对象&…

C++ opencv基本用法【学习笔记(九)】

这篇博客为修改过后的转载,因为没有转载链接,所以选了原创 文章目录 一、vs code 结合Cmake debug1.1 配置tasks.json1.2 配置launch.json 二、图片、视频、摄像头读取显示2.1 读取图片并显示2.2 读取视频文件并显示2.3 读取摄像头并写入文件 三、图片基…

C# 之 选择并调用文件[winform]

winform 之 选择并调用文件 在 form.cs[设计] 文件中选择一个button, 然后设置一个点击函数 将下方内容复制到函数中执行 private void push_btn_Click(object sender, EventArgs e){ // 1. 打开文件管理器选择文件OpenFileDialog openFileDialog1 new OpenFileDialog(); /…

【数电】IEEE754浮点数

IEEE754浮点数 1.组成及分类2.计算(1)符号位(2)阶码(3)尾码(4)实际计算公式 1.组成及分类 (1)组成 IEEE754浮点数由三部分组成:符号位、阶码和尾码。 (2)分类 根据数据位宽分为三类:短浮点数、长浮点数和…

PHP项目学习笔记-萤火商城-增加一个模块(表涉及到的操作和文件)

背景 是在store的后台添加一个页面,显示的如满意度调查的页面 在router.config.js里面配置一个新的菜单 路径:yoshop2.0-store\src\config\router.config.js 代码如下,很简单,定义了这菜单点击的时候进入的页面,和下面…

Donut 中,video组件层级失效、同层渲染失效、z-index设置无效解决办法

微信小程序转安卓之后,z-index设置的层级关系失效,video组件总是处在最上层解决办法: 很重要的设置! 同层渲染要开 xweb,project.miniapp.json中勾选此设置 感谢腾讯官方大佬 黄嘉敏