当前位置: 首页 > news >正文

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

一、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/datachmod 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等功能还未进行探索,有时间或项目需求时再根据官网进行研究。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • git查看代码提交记录
  • python使用selenium,实现简单爬虫功能
  • 9月4日星期三今日早报简报微语报早读
  • 太阳能光伏异常红外图像数据集
  • CentOS 7 docker 部署遇到内网通,外网不通 问题
  • pytorch pyro更高阶的优化器会使用更高阶的导数,比如二阶导数(Hessian矩阵)
  • HTTP、Session、Token及Cookie详解
  • 【Unity优化】优化Android平台拖动地图表现
  • 使用ElementUI + Vue框架实现学生管理系统前端页面设计
  • java中数据访问层userdao接口怎么写
  • IDEA项目启动在不同端口的方法,服务多端口启动
  • CSS3 文本效果(text-shadow,box-shadow,white-space等)文本溢出隐藏并且显示省略号
  • 系统分析师6:计算机网络
  • 46. 把数字翻译成字符串【难】
  • 【软件测试专栏】测试分类篇
  • java 多线程基础, 我觉得还是有必要看看的
  • Java,console输出实时的转向GUI textbox
  • PHP变量
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • 包装类对象
  • 回顾 Swift 多平台移植进度 #2
  • 简单数学运算程序(不定期更新)
  • 来,膜拜下android roadmap,强大的执行力
  • 悄悄地说一个bug
  • 数据结构java版之冒泡排序及优化
  • 思否第一天
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • AI算硅基生命吗,为什么?
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • 如何正确理解,内页权重高于首页?
  • ​补​充​经​纬​恒​润​一​面​
  • # windows 运行框输入mrt提示错误:Windows 找不到文件‘mrt‘。请确定文件名是否正确后,再试一次
  • (2.2w字)前端单元测试之Jest详解篇
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (C++17) std算法之执行策略 execution
  • (Oracle)SQL优化技巧(一):分页查询
  • (第二周)效能测试
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (全注解开发)学习Spring-MVC的第三天
  • (转)h264中avc和flv数据的解析
  • (自适应手机端)响应式服装服饰外贸企业网站模板
  • ***检测工具之RKHunter AIDE
  • .mp4格式的视频为何不能通过video标签在chrome浏览器中播放?
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .NET 漏洞分析 | 某ERP系统存在SQL注入
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • .NET企业级应用架构设计系列之开场白
  • .Net语言中的StringBuilder:入门到精通
  • .so文件(linux系统)
  • @ModelAttribute 注解