ELK在Linux服务器下使用docker快速部署(超详细)

news2024/12/28 4:10:27

ELK是什么?

首先说说什么是ELK

ELK 是一个开源的日志管理和分析平台,由三个主要组件组成:

  1. Elasticsearch:一个分布式搜索和分析引擎,能够快速存储、搜索和分析大量数据。它是 ELK 堆栈的核心,负责数据的索引和查询。
  2. Logstash:一个数据处理管道,可以从多种来源收集数据,进行处理和转换,然后将数据发送到 Elasticsearch。Logstash 支持多种输入、过滤和输出插件,使其非常灵活。
  3. Kibana:一个数据可视化工具,允许用户通过图形界面查看和分析存储在 Elasticsearch 中的数据。用户可以创建仪表板、图表和其他可视化效果,以便更好地理解数据。

ELK 堆栈通常用于日志管理、监控和数据分析,广泛应用于 IT 运维、安全分析和业务智能等领域。通过 ELK,用户可以实时收集、分析和可视化数据,从而快速发现和解决问题。

用白话说:L用来将写的日志文件传输到E中,E可以理解为一个高性能的数据库,支持存储数据和查询,K用来将E中的数据用可视化页面展示出来。

这三个工具都是单独存在的,只是经常将它们组合在称为ELK,所以说如果有其他的工具可以代替其中一个,即可以代替使用,比如说ELK中的L,它功能很多,但是占用内存太多了,轻量级的filebeat就可以适用大多数情况,其简化了部署和配置过程,还通过SSL/TLS支持确保了数据传输的安全性,减少了对系统资源的占用。通过filebeat可以收集多种不同格式的数据,并转换成es可以分辨的格式(如json)存入es中指定的索引中,之后就可以用过kibana查看es中收到的数据。

E中的索引:是一个逻辑命名空间,包含一组相关的文档,类似于传统关系型数据库中的数据库。

ES中的文档:是 Elasticsearch 中存储的基本数据单元,表示一条记录或一项数据,类似于数据库中的一行。

字段(Field):文档由若干字段组成,每个字段有一个字段名和字段值,字段值可以是多种类型,如字符串、数字、日期等。

具体实现

前言

以下步骤是用的aliyun的linux服务器,只要你用的是linux服务器就大差不差都能使用ip地址为:121.196.217.190

在代码中如果有使用到ip地址的请记得把 ip 地址替换!

还有如果用的是服务器的话,记得要把端口开放,不然外部浏览器是进不去容器使用的端口,这里要用到的端口是9200、9300、5601,还有防火墙问题朋友请自行解决。

安装的时候最好统一版本,否则会出现很多问题,我这里使用的版本都是7.12.1版本,拉取镜像的时候统一加上该版本号。

Docker 搭建ELK之前最好熟悉docker的相关指令:比如容器卷使用 docker run -d -v myvolume:/data myimage、强制删除容器: docker rm -f 容器id、创建网络: docker network create elk、进入容器docker exec -it es /bin/bash等等。

在后面的步骤中我也会简短的介绍这些命令的作用,还是看不懂的可以无脑复制粘贴,或者去gpt再详细搜一下命令的作用。

为了方便所有容器的挂载,先创建如下目录 /usr/local/elk,再执行mkdir /usr/local/elk/{elasticsearch,kibana} 创建2个对应的目录,所以以下操作如无特别说明,均在 /usr/local/elk下执行。

为了容器间的通信,需要先用 docker 创建一个网络:

docker network create --subnet=192.168.0.0/16 elk

至于为什么网络用的是192.168.0.0/16 朋友们可以自己去搜一下。略:其实没什么特殊要求,你想的话也可以改,

一、Docker 安装 ElasticSearch

1、拉取镜像
docker pull elasticsearch:7.12.1
2、检查是否拉取成功 运行后看到自己的镜像排列其中即拉取成功
docker images
3、运行容器,并将容器内部的配置文件复制一份到容器外。
# 运行 elasticsearch
docker run -d --name es --net elk -P -e "discovery.type=single-node" elasticsearch:7.12.1
  • docker run:Docker CLI 的命令,用于创建并启动一个新的容器。
  • -d:表示以 detached 模式运行容器,即在后台运行。
  • --name es:为容器指定一个名称,这里名称为 es
  • --net elk:指定容器要加入的网络,这里使用的是名为 elk 的网络。
  • -P:将容器的端口映射到宿主机的随机端口上。这使得可以从宿主机访问容器的端口。
  • -e "discovery.type=single-node":设置环境变量 discovery.typesingle-node。这是 Elasticsearch 的配置,表示以单节点模式运行,不需要集群模式的发现过程。
  • elasticsearch:7.12.1:指定要使用的镜像名称和标签,这里使用的是 elasticsearch 镜像的 7.12.1 版本。
# 进入容器查看配置文件路径
docker exec -it es /bin/bash
cd config
  • docker exec:Docker CLI 的命令,用于在运行中的容器内执行命令。
  • -it:这两个参数组合在一起,-i 表示交互式(interactive),-t 表示分配一个伪终端(pseudo-TTY)。它们使得你可以与容器内运行的命令进行交互。
  • es:指定要执行命令的容器的名称或 ID。在这个例子中,容器名称是 es
  • /bin/bash:这是要在容器内执行的命令,即启动 Bash shell。
4、容器化配置

在 config 中使用ls命令可以看到 elasticsearch.yml 配置文件,再执行 pwd 命令可以看到当前目录为: /usr/share/elasticsearch/config,后用命令exit退出容器,开始执行文件的拷贝:

# 将容器内的配置文件拷贝到 /usr/local/elk/elasticsearch/ 中
docker cp es:/usr/share/elasticsearch/config/elasticsearch.yml elasticsearch/
 
# 修改文件权限
chmod 666 elasticsearch/elasticsearch.yml
 
# 在elasticsearch 目录下再创建data目录,同时修改权限
mkdir elasticsearch/data
chmod -R 777 elasticsearch/data

这里进行修改文件权限只是为了在进行挂载后,在外部修改配置文件,容器内部的配置文件也会更改。

5、重新运行容器并挂载刚才创建的文件
# 先删除旧的容器
docker rm -f es
 
# 运行新的容器
docker run -d --name es \
--net elk \
-p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
--privileged=true \
-v $PWD/elasticsearch/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v $PWD/elasticsearch/data/:/usr/share/elasticsearch/data \
elasticsearch:7.12.1

-v $PWD/elasticsearch/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml

  • 将宿主机当前目录下的 elasticsearch/elasticsearch.yml 文件挂载到容器的 Elasticsearch 配置目录中,用于自定义 Elasticsearch 配置。

-v $PWD/elasticsearch/data/:/usr/share/elasticsearch/data

  • 将宿主机当前目录下的 elasticsearch/data/ 目录挂载到容器的 Elasticsearch 数据目录中,用于持久化存储 Elasticsearch 数据。

此时使用 docker ps 即可查看已经运行的容器有哪些,此时使用curl 121.196.217.190:9200 或者直接去浏览器输入121.196.217.190:9200查看elasticsearch有没有启动成功,下面就是成功的样子。
在这里插入图片描述

到此为止容器elasticsearch安装完成,之后因为data已经挂载了,在data下可以查看容器内的数据。在宿主机修改也会同步到容器内部。

6、es认证

进入到vi elasticsearch/elasticsearch.yml 进行操作添加配置进入vim操作后,摁下 i进入插入模式将以下内容添加进去。

http.cors.enabled: true
http.cors.allow-origin: "*"

xpack.security.enabled: true
xpack.security.audit.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true

添加好使用命令esc + : + wq!后摁下enter就修改配置好了,可以使用cat elasticsearch/elasticsearch.yml 进行查看。

之后重启es 使用命令docker restart es

此时进入到es容器中docker exec -it es /bin/bash 进入到bin文件夹中cd bin

运行以下命令

./elasticsearch-setup-passwords  interactive

之后就可以让你输入密码了,建议都输入成一样的,比如abcdef,

在这里插入图片描述

之后可以换个浏览器(怕当前浏览器有缓存)再输入121.196.217.190:9200 发现有弹窗让你输入账号密码,说明es认证成功了,

账号默认是elastic 密码就是刚才自己输入的那个
在这里插入图片描述

二、Docker 安装 Kibana

1、拉取镜像
docker pull kibana:7.12.1
2、检查是否拉取成功 运行后看到自己的镜像排列其中即拉取成功
docker images
3、启动
# 启动 kibana 容器并连接同一网络elk
docker run -d --name kibana --net elk -P -e "ELASTICSEARCH_HOSTS=http://es:9200" -e "I18N_LOCALE=zh-CN" kibana:7.12.1

-e “ELASTICSEARCH_HOSTS=http://es:9200” 表示连接刚才启动的 elasticsearch 容器,因为在同一网络(elk)中,地址可直接填 容器名+端口,即 es:9200, 也可以填 http://121.196.217.190:9200,即 http://ip:端口

4、拷贝文件
docker cp kibana:/usr/share/kibana/config/kibana.yml kibana/
 
chmod 666 kibana/kibana.yml

之后打开配置文件修改内容

修改es的地址为自己的ip,添加账号密码和添加i18n.locale: zh-CN将kibana改为汉化版本。

注意:账号密码都要用“”包围 比如“elastic"/“abcdef”

在这里插入图片描述

这样有了配置文件,在启动容器时就不用通过 -e 指定环境变量了。

5、重新开个容器
#删除原来未挂载的容器
docker rm -f kibana
 
# 启动容器并挂载
docker run -d --name kibana \
-p 5601:5601 \
-v $PWD/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml \
--net elk \
--privileged=true \
kibana:7.12.1

等待两秒后浏览器输入看是否成功http://121.196.217.190:5601 打开 kibana 控制台,就能看到可视化页面了,如果失败了可以使用: docker logs kibana 查看容器日志看是否运行有误等。

至此:ELK中的EK已经完成!

最后就看L了,这里就直接配置一个filebeat

三、配置filebeat

filebeat不用docker下载了,可以直接使用wget下载

# 进入elk文件夹后
# 下载
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.8.1-linux-x86_64.tar.gz
# 解压文件
tar -zxvf filebeat-8.8.1-linux-x86_64.tar.gz 
# 重命名
mv filebeat-8.8.1-linux-x86_64  filebeat

elk在宝塔中的简单部署和使用_宝塔 elasticsearch-CSDN博客

可以先看看这个博主的后半段。

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

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

相关文章

【FOC】【001】Clarke变换--- 2024.9.13

目录 前言背景知识介绍Clarke变换结束语 前言 在电机控制领域,想必大家都听过foc矢量控制,比我们耳熟能详的pid控制效果更好,那具体foc干了哪几件事呢?接下来本栏中会详细的讲解foc的原理。 该栏目部分参考于《慧驱动》 背景知识介…

gin配置swagger文档

一、基本准备工作 1、安装依赖包 go get -u github.com/swaggo/swag/cmd/swag go get -u github.com/swaggo/gin-swagger go get -u github.com/swaggo/files2、在根目录上配置swagger的路由文件 //2.初始化路由router : initialize.Routers()// 配置swaggerdocs.SwaggerInfo…

Redis系列之底层数据结构SDS

Redis系列之底层数据结构SDS 实验的环境 Redis 6.0VSCode 1.88.1 什么是SDS? SDS:Simple Dynamic String,翻译为简单动态字符串。SDS是一种用于存储二进制数据的数据结构,具有动态扩容的特点,代码位于src/sds.h和src/sds.c …

解决“找不到msvcp140.dll无法继续执行代码”问题:技术困境与解决方案

在现代计算机技术的发展中,软件依赖性问题日益凸显,其中“找不到msvcp140.dll无法继续执行代码”错误尤为常见。本文将从技术背景、问题成因、解决方案及预防措施四个方面,深入探讨这一技术困境,旨在为读者提供全面的理解和有效的…

来云栖大会!探展云上开发,沉浸式体验云原生 + AI 新奇玩法

2024 云栖大会来了! 本届云栖大会将于 9 月 19 日至 9 月 21 日 在杭州云栖小镇召开 汇集全球最新云计算、AI 硬科技 云栖大会的主论坛将设置三个对话环节,大模型、自动驾驶和机器人领域的领军技术人和明星创业者将分享 AI 前沿趋势和应用进展。 20…

北京网页制作-网站策划

北京网页制作与网站策划 随着互联网的快速发展,网页制作和网站策划逐渐成为企业成功的重要因素。在北京这座现代化的大都市,各行各业都意识到网络的重要性,纷纷投身于网页制作与网站策划的浪潮中。本文将探讨北京网页制作的现状、常见的策划流…

基于Java web技术开发设计的学生信息管理系统

学生信息管理系统:Java Web技术与MySQL数据库的融合应用 包含初始化sql脚本 本毕业设计聚焦于构建一套高效、安全的学生信息管理系统,该系统采用先进的Java Web技术进行开发,并依托MySQL数据库实现数据的高效存储与管理。 背景与挑战&…

超声波清洗机的优势有哪些?四款精品超声波清洗机推荐,闭眼入

在这个快节奏的时代里,清洁和卫生变得尤为重要。对于那些追求精致生活的人们来说,家中配备一台超声波清洗机无疑是一件居家的好选择。本文将为您介绍四款广受好评的超声波清洗机,让您在日常清洗中也能享受到科技带来的便捷与舒适。无论是眼镜…

九、Redis 的实际使用与Redis的设计

一、多级缓存架构 在线上系统中,一定不会单纯的只部署一个Redis集群,而是使用Redis结合其他的多级缓存应用进行架构。 使用多级缓存架构的优点就是可以使不同类型的数据分布在不同的应用中,比如redis的热点key可以存储到nginx本地缓存、服务…

[渗透测试]-CVE-2016-4437-Shiro550漏洞复现

Shiro550漏洞爆出的时间是2016年为第4437个漏洞,所以它的CVE编码是2016-4437 文章目录 前言 什么是Shiro550漏洞? 1.Shiro550漏洞原理: 2.漏洞利用 3.漏洞复现: 前提:下载并打开vulhub靶场。 CVE-2016-4437-shiro550漏…

基于react native的锚点

基于react native的锚点 效果示例图示例代码 效果示例图 示例代码 /* eslint-disable react-native/no-inline-styles */ import React, { useEffect, useRef, useState } from react; import {Image,ImageBackground,ScrollView,StyleSheet,Text,TouchableOpacity,View, } fr…

怎么选到好用的运动耳机?这五款年度精选骨传导耳机非常好用!

在过去的两年里,骨传导耳机逐渐被大众的所熟知。可能毕竟长时间使用音量过大的传统入耳式耳机,多多少少会对我们的听力健康构成威胁。所以很多人就想找一款不伤耳朵的耳机。然后就了解到了骨传导耳机,所以就会延伸出这些问题——骨传导耳机好…

【Canvas与密铺】90年代马赛克密铺效果 1920x1080

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>20世纪90年代马赛克瓷砖效果1920x1080</title><style type&…

美创获评CNVD年度原创漏洞发现贡献单位!

9月10日&#xff0c;第21届中国网络安全年会暨网络安全协同治理分论坛在广州成功举办。会上&#xff0c;美创科技首次获评“CNVD年度原创漏洞发现贡献单位”。 美创科技依托第59号安全实验室&#xff0c;专注数据安全技术和攻防研究。凭借深厚的技术积累与优势&#xff0c;被遴…

SEAFARING靶场渗透

一.SQL注入漏洞 1.输入id1 -- 下方出现数据说明闭合成功 2.测试得出数据库有三列 3.三处都是回显点 4.联合查询爆出库名 5.查表名 ?id-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schematest-- 6.查字段名 ?id-1 union sele…

vscode spring boot项目编辑yaml不自动提示补全如何解决

文章目录 properties能够自动弹出提示但是YAML文件就不会自动弹出提示ctrl空格不出提示的解决办法 properties能够自动弹出提示 但是YAML文件就不会自动弹出提示 只是不会自动弹出来而已&#xff0c;按ctrl空格即可解决 ctrl空格不出提示的解决办法 如果按ctrl空格没有用 …

WGCLOUD使用指南 - 自动计算磁盘剩余空间的可使用天数

WGCLOUD是一款免费开源的运维监控软件&#xff0c;性能优秀&#xff0c;部署简单&#xff0c;轻巧使用&#xff0c;支持大部分的Linux和Windows、安卓、MacOS等平台安装部署 最近发布的新版本&#xff0c;WGCLOUD新增了可以自动计算每个磁盘剩余空间的可使用天数&#xff0c;主…

你还在为写PPT而烦恼吗,Kimi一键帮你生成PPT

PPT已经成为我们日常工作和学习中不可或缺的一部分。无论是企业会议、学术报告还是产品展示&#xff0c;一个精心制作的PPT都能有效提升信息传递的效率和质量。然而&#xff0c;制作一个既美观又专业的PPT并非易事&#xff0c;它需要耗费大量的时间和精力。幸运的是&#xff0c…

中伟视界:皮带跑偏检测算法及其实现模型和判断方法

皮带输送机广泛应用于矿山、港口、化工等行业&#xff0c;其正常运行对生产效率和安全性至关重要。皮带跑偏是输送机常见的故障之一&#xff0c;可能导致物料撒落、设备损坏&#xff0c;甚至引发安全事故。为了有效监测和预防皮带跑偏&#xff0c;现代技术利用多种算法模型和判…

还有哪个地方能申请到免费一年期的SSL证书?

SSL证书是互联网中用于加密网站与访问者之间数据传输的安全证书。它通过数字签名确认网站的真实身份&#xff0c;确保数据传输的私密性、完整性和服务器身份的真实性&#xff0c;有效防止数据在传输过程中被窃取或篡改&#xff0c;是保障网站安全性的重要手段。 永久免费SSL证…