Docker 安装FileBeat、Elasticsearch及Kibana详细步骤

news2024/9/19 23:37:04

一、ELK简介

二、docker安装Elasticsearch

2.1 创建Docker网络

2.2 拉取镜像

2.3 创建挂载目录

2.4  添加配置文件

2.5 创建es容器

2.6 测试Elasticsearch是否安装成功

三、docker安装Logstash

3.1 拉取镜像

3.2 创建挂载目录

3.3 添加配置文件

3.4 创建Logstash容器

 四、安装 Filebeat

4.1 下载 filebeat 

4.2 配置 filebeat.yml

4.3 启动 filebeat

4.4 效果展示

五、docker安装Kibana

5.1 拉取镜像

5.2 创建挂载目录

5.3 添加配置文件

5.4 创建kibana容器

5.5 验证 Kibana 是否安装成功

5.6 查看索引管理

5.7 创建数据视图


一、ELK简介

Elastic Stack(也称为 ELK Stack)是公认的日志监测领域的领导者,拥有业界最广泛、最全面的系列日志数据源,是备受欢迎的免费开放日志平台。官网地址为:Elasticsearch:官方分布式搜索和分析引擎 | Elastic

Kibana:数据的探索、可视化和分析 | Elastic

ELK Stack是软件集合Elasticsearch、Logstash、Kibana的简称,用于对日志文件数据进行抽取、分析、存储、展示的日志引擎。

  • Elasticsearch:

支持全文索引的分布式存储和索引引擎,用于存储从Logstash或Beats接收到的数据

  • Logstash:

日志分析工具,用来对日志数据进行分析和过滤,将处理后的数据发送给Elasticsearch

  • Kibana:

可视化工具,主要负责查询 Elasticsearch 的数据并以可视化的方式展现给业务方

  • Beats:

通过配置文件指定数据源和输出目标,然后定期从数据源采集数据,并将数据发送到Logstash或Elasticsearch。 Beats比Logstash更轻量、性能更高,常用工具包括:FileBeat、Metricbeat、Packetbeat等

ELK框架如下:

二、docker安装Elasticsearch

官网安装说明:

Install Elasticsearch with Docker | Elasticsearch Guide [8.15] | Elastic

注意:首先看官网安装步骤及说明。我之前在docker中直接拉取的 elasticsearch 镜像,安装后容器总是在重启中,可能是环境配置项与elasticsearch版本不符(发现是5年前创建的版本)。最后拉取最新的8.15.0版本才解决,所以首先根据官网说明操作,避免无谓的踩坑!

2.1 创建Docker网络

需要Elasticsearch与Kinaba容器互联,因此首先创建网络,以便能直接通过容器名相互访问:

docker network create elk_net

2.2 拉取镜像

在Elasticsearch官网中查找最新版本,以目前的8.15.0版本为例:

docker pull docker.elastic.co/elasticsearch/elasticsearch:8.15.0

2.3 创建挂载目录

# 新增宿主机目录,用于保存es配置文件及数据
mkdir -p /usr/local/es/data /usr/local/es/config /usr/local/es/plugins

# 增加读写权限
chmod 777  /usr/local/es/data
chmod 777  /usr/local/es/config
chmod 777  /usr/local/es/plugins

2.4  添加配置文件

新建elasticsearch.yml文件

vim /usr/local/es/config/elasticsearch.yml

 在编辑框中输入以下配置内容,然后按esc键退出编辑模式,输入:wq保存并退出

cluster.name: "elastic"   # es集群名称
network.host: 0.0.0.0
http.cors.enabled: true
http.cors.allow-origin: "*"
#开启密码校验,若开启就必须要设置密码
xpack.security.enabled: false

2.5 创建es容器

docker run --name es -p 9200:9200 -p 9300:9300 \
--network elk_net \
--restart=always \
-e "discovery.type=single-node" \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
--privileged \
-v /usr/local/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /usr/local/es/data:/usr/share/elasticsearch/data \
-v /usr/local/es/plugins:/usr/share/elasticsearch/plugins \
-d docker.elastic.co/elasticsearch/elasticsearch:8.15.0

上述命令的解释:

docker run -d:设置容器后台运行
--name es:给es容器取的名字
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m":设置堆内存大小,这里是因为我的虚拟机内存总共只有2G,所以设置的比较小,你自己设置不要低于这个内存大小,否则会出现内存溢出的报错
-e "discovery.type=single-node":设置的启动模式为非集群模式
-v /usr/local/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml: 挂载数据卷,绑定es的配置目录
-v /usr/local/es/data:/usr/share/elasticsearch/data:挂载数据卷,绑定es的数据目录
-v /usr/local/es/plugins:/usr/share/elasticsearch/plugins:挂载数据卷,绑定es的插件目录
--privileged:授予数据卷访问权
--network elk_net:加入elk_net的网络中,就是我们刚刚创建的,如果你不是这个名字根据你的实际情况去修改
-p 9200:9200:端口映射,9200暴露的是用户访问的http端口
-p 9300:9300:端口映射,9300暴露的是es各个节点互联的端口,这个端口我们单点模式现在用不到

2.6 测试Elasticsearch是否安装成功

在浏览器中输入宿主机IP及端口9200(第5步中映射的elasticsearch端口),返回如下内容,表示安装成功。

注意:如果是在阿里云上部署,需要将9200、9300等端口添加到安全组

三、docker安装Logstash

3.1 拉取镜像

docker pull docker.elastic.co/logstash/logstash:8.15.0

3.2 创建挂载目录

# 新增宿主机目录,用于保存es配置文件及数据
mkdir -p /usr/local/logstash/data /usr/local/logstash/config

# 增加读写权限
chmod 777  /usr/local/logstash/data
chmod 777  /usr/local/logstash/config

3.3 添加配置文件

①logstash.yml:设置logstash运行参数等

vim /usr/local/logstash/config/logstash.yml

 在文件logstash.yml编辑框中输入以下配置内容,然后按esc键退出编辑模式,输入:wq保存并退出

node.name: "logstash001" #节点名称
http.host: "0.0.0.0"
xpack.monitoring.enabled: false #设置禁用X-Pack监视功能

 ②pipelines.yml:用于指定在一个logstash中运行多个管道的配置文件,在启动logstash时他会自动加载 pipelines.yml 中指定的path.config下的所有的管道配置文件conf合并成一个整体的配置文件

vim /usr/local/logstash/config/pipelines.yml

在文件pipelines.yml编辑框中输入以下配置内容,然后按esc键退出编辑模式,输入:wq保存并退出

# This file is where you define your pipelines. You can define multiple.
#For more information on multiple pipelines,see the documentation:https://ww.elastic.co/guide/en/logstash/current/multiple-pipelines.html
#可以在这个配置文件中定义多个管道,用于从多个数据源中获取信息
- pipeline.id: pipeline001  #管道id
  path.config: "/usr/local/logstash/config/*"

③pipeline001.conf:配置管道的输入及输出

vim /usr/local/logstash/config/pipeline001.conf

在文件pipeline001.conf编辑框中输入以下配置内容,然后按esc键退出编辑模式,输入:wq保存并退出

#获取/usr/share/logs/*下的文件输出到es中

input {

        file {

                path => ['/nginxproxymanager/data/logs/*'] 

                type => "nginx-log"

        }

}

filter{

        #json{

                #将message作为解析json的字段

                #source =>"message

        #}

}

output{

        if [type] == "nginx-log"{

                elasticsearch {

                        hosts => ["es:9200"]

                        inde x=> "nginx-log-%{+YYYY-MM-dd}"

                        user => "root"

                        password => "123456"

                }

        }

}

3.4 创建Logstash容器

docker run -d --privileged=true \
--restart=always \
--name=logstash \
--network elk_net \
-p 5047:5047 -p 9600:9600 \
-v /usr/local/logstash/config:/usr/share/logstash/config \
-v /usr/local/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml \
-v /usr/local/logstash/config/pipelines.yml:/usr/share/logstash/config/pipelines.yml \
-v /nginxproxymanager/data/logs:/usr/share/logs \
docker.elastic.co/logstash/logstash:8.15.0

 四、安装 Filebeat

官网安装指南:

Filebeat quick start: installation and configuration | Filebeat Reference [8.15] | Elastic

 

4.1 下载 filebeat 

首先以在windows下安装为例,

①点击下载 filebeat-8.15.0-windows-x86_64.zip,注意下载与 elasticsearch 对应的版本

②解压到 C:\Program Files\filebeat 文件夹

③进行到window命令窗口,并执行下面的命令

 > cd 'C:\Program Files\Filebeat'

 > .\install-service-filebeat.ps1

linux环境下安装:

curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.15.0-linux-x86_64.tar.gz
tar xzvf filebeat-8.15.0-linux-x86_64.tar.gz

4.2 配置 filebeat.yml

在filebeat根目录下打开filebeat.yml,按如下步骤配置:

①配置Filebeat inputs

filebeat.inputs:

- type: filestream      #输入类型,包括log、filestream等

  id: my-filestream-id

  enabled: true    #默认false,需要写为true

  paths:   # 采集日志的目录,可以添加多个

    - D:\HLLPos25\log\*

 

日志内容示例:

 

②配置Kibana

配置kibana地址(需先按第五大步骤安装好kibana),以便日志可视化。

③配置Outputs

配置filebeat采集的日志的输出路径,可输入到:elasticsearc、logstash、kafka、redis等。以输出到 elasticsearch 为例:

output.elasticsearch:

  hosts: ["http://182.92.181.157:9200"]   #elasticsearch服务地址

  indices:  #索引列表,如果不添加索引,则默认计入形如filebeat-8.15.0-2024.09.03索引中

       # 日志内容中含有 error 字符串的日志都被划分到error-8.15.0-2024.09.03 索引中

    - index: "error-%{[agent.version]}-%{+yyyy.MM.dd}" 

      when.contains:

        message: "error"

    - index: "info-%{[agent.version]}-%{+yyyy.MM.dd}"

      when.contains:

        message: "info"

4.3 启动 filebeat

windows命令窗口中运行(注意在filebeat根目录下): 

.\filebeat -c filebeat.yml -e

或者将 filebeat 安装为window服务,当监控的日志目录下日志发生变化时,filebeat将采集日志上传到elasticsearch等 

linux下启动:

./filebeat setup -e

4.4 效果展示

在kibana中查询日志(具体操作见5.6),如下图显示:

五、docker安装Kibana

5.1 拉取镜像

docker pull docker.elastic.co/kibana/kibana:8.15.0

5.2 创建挂载目录

mkdir -p /usr/local/kibana/config /usr/local/kibana/data

chmod 777 /usr/local/kibana/data
chmod 777 /usr/local/kibana/config

5.3 添加配置文件

vim /usr/local/kibana/config/kibana.yml

在文件kibana.yml编辑框中输入以下配置内容,然后按esc键退出编辑模式,输入:wq保存并退出

server.name: kibana
server.host: "0.0.0.0"
xpack.monitoring.ui.container.elasticsearch.enabled: true
elasticsearch.hosts: ["http://es:9200"] #elasticsearch服务地址
elasticsearch.username: "root"
elasticsearch.password: "123456"
elasticsearch.requestTimeout: 50000
i18n.locale: "zh-CN" #中文ui界面 

5.4 创建kibana容器

docker run -d \
--restart=always \
--name kibana \
--network elk_net \
-p 5601:5601 \
--privileged \
-v /usr/local/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
docker.elastic.co/kibana/kibana:8.15.0

 其中 e ELASTICSEARCH_HOSTS=http://es:9200 表示Kibana的数据来源为http://es:9200,即在第二步中安装的容器名为 es(es和kibana设置了相同的network网络,所以可以通过容器名相互访问) 的 Elasticsearch。

5.5 验证 Kibana 是否安装成功

在浏览器中输入docker容器宿主机IP及Kibana默认端口5601,用户名为root,密码为123456,出现如下内容表示安装成功:

注意:

1、如果是在阿里云上部署,需要将5601等端口添加到安全组

2、kibana.yml配置文件中增加 i18n.locale: "zh-CN" ,会显示为中文界面,否则默认为英文界面

5.6 查看索引管理

进入Kibana的管理->数据->索引管理,可查看到如下索引列表:

 

这是因为在4.2步骤中配置了output 索引,当含有info、error的日志内容通过filebeat上传后,在kibana索引管理中可查看到对应的索引;如果没配置output索引,这里默认出现 filebeat-8.15.0-2024.09.03 索引。

 

5.7 创建数据视图

 kibana查询日志需要先创建数据视图,匹配上一步中的索引,步骤如下:

Discovery->创建数据视图->保存视图:

 

 

总结:本文总只配置了 ELK Stack 中的基本功能,Filebeat 输出到kafka、redis等功能还未进行探索,有时间或项目需求时再根据官网进行研究。

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

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

相关文章

如何更新我的SSL证书到期日期?

续订SSL证书需要获取新证书来替换即将过期的证书。该过程可能略有不同,具体取决于Gworg获取证书的方法。以下是有关如何续订SSL证书的一般指南: 检查有效期: 在开始续订流程之前,请检查SSL证书的当前到期日期。您通常可以在SSL证…

【PyTorch】深入解析 `with torch.no_grad():` 的高效用法

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 引言一、with torch.no_grad(): 的作用二、with torch.no_grad(): 的原理三、with torch.no_grad(): 的高效用法3.1 模…

24 初识C++

目录 一、C概念 (一)C是什么 (二)C的历史 (三)C参考文档 二、第一个C程序 三、C的域 四、命名空间 namespace (一)namespace 的作用 (二)namespace 的…

如何从 SIM 卡恢复短信?这篇专业教程文章会帮到你

您是 Android 手机的忠实用户吗?您是否定期通过打电话、发送短信或在 WeChat 上聊天来与朋友和家人保持联系?如果你这样做,我相信你的手机上一定有很多短信,这些短信对于保存你与他人聊天的内容非常重要。您是否有这样的经验&…

碧桂园服务上海项目获评“2024年度上海市物业管理优秀示范项目”

近日,上海市物业管理行业协会发布《关于2024年度上海市物业管理优秀示范项目评定结果的公示》官方红头文件。文件对上海市393个物业管理优秀示范项目进行公示。 上海联源物业发展有限公司露香园项目、静鼎安邦府邸项目、佘山东郡项目和上海金晨物业经营管理有限公司…

mac 安装brew并配置国内源

​ 前置条件 - Xcode 命令行工具 一行代码安装Homebrew 添加到路径(PATH) - zsh shell为例 背景介绍 最近重装了我的MAC mini (m1 芯片), 很多软件都需要重新安装,因为后续还需要安装一些软件,所以想着安装个包管理软件 什么…

苹果手机通话记录怎么恢复?已总结了4个方法,快速恢复

苹果手机的通话记录是我们联系好友与家人的重要方式之一。如果我们忘记储存重要好友或家人的联系方式,但是曾经有过通话,那我们就可以在苹果手机的通话记录中找到重要的联系人。但是,如果这些通话记录不小心被删除了,那苹果手机通…

ArkUI-状态管理最佳实践

ArkUI-状态管理最佳实践 概述合理选择装饰器使用监听和订阅精准控制组件刷新Watch装饰器监听数据源使用自定义事件发布订阅 概述 在声明式UI编程范式中,UI是应用程序状态的函数,应用程序状态的修改会更新响应的UI界面。ArkUI采用了MVVM模式。 ArkUI提…

2024年第十届数维杯国际大学生数学建模挑战赛

竞赛介绍 为了培养学生的创新意识及运用数学方法和计算机技术解决实际问题的能力,内蒙古创新教育学会、内蒙古基础教育研究院决定主办2024年第十届数维杯国际大学生数学建模挑战赛(国际赛)。 数维杯大学生数学建模挑战赛每年分为两场&#…

uniapp开发鸿蒙,是前端新出路

uniapp开发鸿蒙,是前端新出路吗? 相信不少前端从业者一听uniapp支持开发鸿蒙Next后非常振奋。小编作为7年前端也是非常激动,第一时间体验了下。在这里也给大家分享一下我的看法 uniapp开发鸿蒙优势 1.对于前端开发者而言,几乎无需…

基于51单片机的跑马串口调试波形发生器proteus仿真

地址: https://pan.baidu.com/s/1WTjU_hRJ-fLMTT5g1q-NlA 提取码:1234 仿真图: 芯片/模块的特点: AT89C52/AT89C51简介: AT89C52/AT89C51是一款经典的8位单片机,是意法半导体(STMicroelectro…

嵌入式全栈开发学习笔记---C++(多态)

目录 多态polymorphic 多态成立的三个条件 1、要有继承 2、要有虚函数重写 3、用父类指针(父类引用)指向子类对象 重载与重写区别 动态联编和静态联编 多态原理 构造函数中调用虚函数能否实现多态? 用父类指针指向子类数组 虚析构函数 动态类型识别 第…

【免越狱】iOS任意版本号APP下载

下载地址 https://pan.quark.cn/s/570e928ee2c4 软件介绍 下载iOS旧版应用,简化繁琐的抓包流程。一键生成去更新IPA(手机安装后,去除App Store的更新检测)。 软件界面 使用方法 一、直接搜索方式 搜索APP,双击选…

Vue3 + Ts + Vite项目 websoket封装使用

文章目录 一、安装二、封装三、请求地址配置3.1 将接口地址放到 public3.2 引入 ipconfig.js 文件3.3 全局类型声明 四、页面使用4.1 引用4.2 注册 五、说明 一、安装 npm npm install websocket --save-devpnpm pnpm install websocket --save-dev二、封装 在 /src/utils …

Haskell爬虫:连接管理与HTTP请求性能

爬虫技术作为数据抓取的重要手段,其效率和性能直接影响到数据获取的质量与速度。Haskell,作为一种纯函数式编程语言,以其强大的类型系统和并发处理能力,在构建高效爬虫方面展现出独特的优势。本文将探讨在Haskell中如何通过连接管…

OVMR:华为北大联手,基于多模态融合的SOTA开放词汇识别 | CVPR 2024

即插即用的方法OVMR将新类别的多模态线索嵌入到VLM中,以增强其在开放词汇识别中的能力。它最初利用多模态分类器生成模块将示例图像嵌入到视觉标记中,然后通过推断它们与语言编码器的上下文关系来自适应地融合多模态线索。为了减轻低质量模态的负面影响&…

[DICOM活久见] 序列内部的RescaleIntercept不同导致的问题

本文由Markdown语法编辑器编辑完成. 1. 背景: 本文记录在工作中遇到的一些比较罕见的dicom图像. 这对于在未来工作中, 处理图像时, 需要考虑方案的完整性, 会有很大的帮助. 本文介绍的, 是目前我工作10年来, 头一次见到的一个CT序列, 它的序列内的RescaleIntercept值, 不是完…

Ubuntu解压7z压缩包方法

0 Preface/Foreword 1 解压缩指令 1.1 环境安装和检查 环境:检测ubuntu环境是否装有7z工具,如果没有,需要手动安装,安装方法如下: sudo apt-update sudo apt-get install p7zip-full 检测工具是否安装成功&#xff…

qmt量化交易策略小白学习笔记第56期【qmt编程之期权数据--获取历史期权列表--原生Python】

qmt编程之获取期权数据 qmt更加详细的教程方法,会持续慢慢梳理。 也可找寻博主的历史文章,搜索关键词查看解决方案 ! 获取历史期权列表 函数能帮助用户获取历史期权列表, 包括某日历史在上交所上市的认购合约和认沽合约, 也包括已经退市的…

PTA单词首字母大写

作者 颜晖 单位 浙大城市学院 本题目要求编写程序,输入一行字符,将每个单词的首字母改为大写后输出。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。 输入格式: 输入给出一行字符。 输出格式…