使用docker部署ELK实战

news2024/12/25 12:23:27

目录

  • 什么是ELK
  • ELK简介
    • Elasticsearch
    • Logstash
    • Kibana
  • docker安装ELK
    • 安装es
    • 安装 Kibana
    • 安装logstash

什么是ELK

ELK是一个开源的数据分析平台,由三个开源项目Elasticsearch、Logstash和Kibana组成,因此被称为ELK Stack。ELK Stack主要用于处理和分析大量的日志数据,支持实时搜索、数据可视化和分析。其中,Elasticsearch是一个分布式搜索引擎和分析引擎,能够实现实时搜索和分析大规模的数据集。Logstash是一个数据收集、处理和转换工具,能够从不同来源收集、处理和传输数据。Kibana是一个数据可视化工具,能够通过仪表盘、图形和地图等方式展示数据。ELK Stack的三个组件相互配合,能够构建一个强大的、可扩展的日志分析平台,支持数据的快速检索、可视化和分析。

ELK简介

Elasticsearch

Elasticsearch是一个基于Lucene库的分布式搜索引擎和数据分析引擎,能够实现实时搜索和分析大规模的数据集,支持文本、数字、地理位置等多种类型的数据检索和分析。Elasticsearch是一个开源的、高度可扩展的平台,能够处理海量的数据,并支持分布式的数据存储和处理。Elasticsearch的主要特点包括:

  1. 分布式搜索引擎:Elasticsearch能够对海量的数据进行快速的搜索和查询,并支持实时搜索。

  2. 分布式数据存储:Elasticsearch能够将数据分散存储在多个节点上,以提高数据的可用性和可靠性。

  3. 多数据类型支持:Elasticsearch支持多种数据类型,包括文本、数字、日期、地理位置等。

  4. 实时数据分析:Elasticsearch能够对数据进行实时的聚合、过滤和分析,并支持数据可视化。

  5. 可扩展性:Elasticsearch能够扩展到数百个节点,处理PB级别的数据。

  6. 开源:Elasticsearch是一个开源的软件,源代码可以公开获取和修改。 Elasticsearch广泛应用于企业搜索、日志分析、安全分析和商业智能等领域。它提供了丰富的API和工具,包括RESTful API、Java API和Python API等,方便开发人员集成和使用。

Logstash

Logstash是一个开源的数据收集、处理和转换工具,能够从不同来源收集、处理和传输数据。,主要用于处理和分析大量的日志数据,支持多种数据源和格式,包括文本文件、数据库、日志文件、消息队列等。Logstash能够实现以下功能:

  1. 数据收集:Logstash能够从不同的数据源收集数据,并支持多种数据格式,包括JSON、CSV、XML等。

  2. 数据处理:Logstash能够对收集到的数据进行处理和转换,例如过滤、分析、标准化等。

  3. 数据传输:Logstash能够将处理后的数据传输到目标位置,例如Elasticsearch、Kafka、Redis等。

  4. 插件扩展:Logstash提供了丰富的插件,方便用户扩展和定制功能。

  5. 实时数据处理:Logstash能够实现实时数据处理,支持流式数据处理。 Logstash是一个高度可扩展的工具,能够处理大量的数据,并支持分布式部署。它能够与Elasticsearch、Kibana、Beats等工具集成,构建一个强大的、可扩展的数据分析平台。Logstash提供了丰富的文档和社区支持,方便用户学习和使用。

Kibana

Kibana是一个数据可视化工具,能够通过仪表盘、图形和地图等方式展示数据。主要用于展示和分析从Elasticsearch中获取的数据。Kibana能够实现以下功能:

  1. 数据可视化:Kibana能够通过仪表盘、图形和地图等方式展示数据,支持多种数据类型和格式。

  2. 数据查询:Kibana能够实现对Elasticsearch中存储的数据进行查询和搜索。

  3. 仪表盘管理:Kibana能够创建、管理和共享仪表盘,方便用户展示和分享数据。

  4. 可视化插件:Kibana提供了丰富的可视化插件,方便用户扩展和定制功能。

  5. 数据分析:Kibana能够实现对数据进行聚合、过滤和分析,支持实时数据处理。 Kibana的主要优点包括易用性、可扩展性和丰富的功能。它能够与Elasticsearch、Logstash、Beats等工具集成,构建一个强大的、可扩展的数据分析平台。Kibana提供了丰富的文档和社区支持,方便用户学习和使用。

docker安装ELK

安装es

1.下载es镜像

docker pull elasticsearch:7.12.1

2.运行es并导出es配置文件

# 创建一个docker 网络环境,名为elk
docker network create elk
# 运行es容器
docker run -d --name es --net elk -P -e "discovery.type=single-node" elasticsearch:7.12.1
# 宿主机创建es目录
mkdir es
chmod 666 es
# 进入es目录
cd es
# 查看当前目录
/root/work/es
# 将es容器中的配置文件复制到es目录中
docker cp es:/usr/share/elasticsearch/config/elasticsearch.yml /root/work/es/elasticsearch.yml
# 在es目录中创建data目录
mkdir data
# 准备工作已完成,删除临时创建的es容器
docker rm -f es

3.运行es

# 运行新的容器
docker run -d --name es \
--net elk \
-p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
--privileged=true \
-v $PWD/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v $PWD/data/:/usr/share/elasticsearch/data \
elasticsearch:7.12.1

4.验证es是否运行成功

[root@localhost es]# curl 127.0.0.1:9200
{
  "name" : "57df77848d46",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "mYN2JAk_RGqn58QcPho3Pw",
  "version" : {
    "number" : "7.12.1",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "3186837139b9c6b6d23c3200870651f10d3343b7",
    "build_date" : "2021-04-20T20:56:39.040728659Z",
    "build_snapshot" : false,
    "lucene_version" : "8.8.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

安装 Kibana

1.下载kibana镜像

docekr search kibana
docker pull kibana:7.12.1

# 启动 kibana 容器并连接同一网络
docker run -d --name kibana --net elk -P -e "ELASTICSEARCH_HOSTS=http://es:9200" -e "I18N_LOCALE=zh-CN" kibana:7.12.1

2.复制kibana配置文件

cd /root/work
mkdir kibana
docker cp kibana:/usr/share/kibana/config/kibana.yml kibana/
chmod 666 kibana/kibana.yml

3.修改配置文件

server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://192.168.2.6:9200" ]
monitoring.ui.container.elasticsearch.enabled: true
# 开启 kibana 的汉化
i18n.locale: zh-CN

4.重新启动容器

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 \
kibana:7.12.1

5.访问kibana

通过ip:5601 可访问kibana,如图

在这里插入图片描述

安装logstash

1.拉取镜像并复制配置文件

docker pull logstash:7.12.1

docker run -d -P --name logstash --net elk logstash:7.12.1

mkdir logstash

# 拷贝数据
docker cp logstash:/usr/share/logstash/config logstash/
docker cp logstash:/usr/share/logstash/data logstash/
docker cp logstash:/usr/share/logstash/pipeline logstash/

#文件夹赋权
chmod -R 777 logstash/

2.修改logstash相关配置文件

  • 修改 logstash/config 下的 logstash.yml 文件,主要修改 es 的地址:
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://192.168.2.6:9200" ]
  • 修改 logstash/pipeline 下的 logstash.conf 文件:
input {
  tcp {
    mode => "server"
    host => "0.0.0.0"  # 允许任意主机发送日志
    port => 5044
    codec => json_lines    # 数据格式
  }
}

output {
  elasticsearch {
      hosts  => ["http://192.168.2.6:9200"]   # ElasticSearch 的地址和端口
      index  => "elk"         # 指定索引名
      codec  => "json"
  }
  stdout {
    codec => rubydebug
  }
}

3.重新启动容器

#注意先删除之前的容器
docker rm -f logstash

# 启动容器并挂载
docker run -d --name logstash --net elk \
--privileged=true \
-p 5044:5044 -p 9600:9600 \
-v $PWD/logstash/data/:/usr/share/logstash/data \
-v $PWD/logstash/config/:/usr/share/logstash/config \
-v $PWD/logstash/pipeline/:/usr/share/logstash/pipeline \
logstash:7.12.1

4.查看日志

docker logs -f logstash

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

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

相关文章

数字安全免疫力:“关基”企业构建安全体系的通关攻略

2023年5月1日起,《信息安全技术 关键信息基础设施安全保护要求》(以下简称《关基保护要求》)正式实施,这是关键信息基础设施安全保护相关的首个国家标准。相对于2021年9月1日起实施的《关键信息基础设施安全保护条例》&#xff0c…

复习css样式的第1章

什么是 CSS? CSS 指的是层叠样式表* (Cascading Style Sheets)CSS 描述了如何在屏幕、纸张或其他媒体上显示 HTML 元素CSS 节省了大量工作。它可以同时控制多张网页的布局外部样式表存储在 CSS 文件中 三种使用 CSS 的方法 有三种插入样式表的方法: 外…

RISC-V体系结构的U-Boot引导过程 第一阶段

RISC-V体系结构的U-Boot引导过程 第一阶段 flyfish .globl _start _start:.globl使符号对链接器可见相当于C语言中的Extern,声明此变量,并且告诉链接器此变量是全局变量,外部可以访问.u-boot.lds里的ENTRY(_start)也是这里的_start。 即指定…

SUNet: Swin Transformer UNet for ImageDenoising

Abstract 图像恢复是一个具有挑战性的不适定问题,也是一个长期存在的问题。在过去的几年中,卷积神经网络(cnn)几乎主导了计算机视觉,并在不同层次的视觉任务中取得了相当大的成功,包括图像恢复。然而,最近基于Swin tr…

权限验证框架之Shiro

文章目录 前言shiro 核心项目构建默认Session模式配置测试接口Realm编写权限测试无权限测试登录测试权限测试 前后端分离tokenJWTFilter重写认证修改配置 总结 前言 交替换个脑子,一直搞考研的东西,实在是无聊。所以顺便把工程上的东西,拿来…

软件测试面试大全(全800+题)

1、B/S架构和C/S架构区别 B/S 只需要有操作系统和浏览器就行,可以实现跨平台,客户端零维护,维护成本低,但是个性化能力低,响应速度较慢 C/S响应速度快,安全性强,一般应用于局域网中&#xff0c…

C++ [STL之list模拟实现]

本文已收录至《C语言和高级数据结构》专栏! 作者:ARMCSKGT STL之list模拟实现 前言正文基本框架节点类迭代器类list类 迭代器类功能实现list迭代器迭代器设计思想迭代器操作设计 list类功能实现默认成员函数容量查询数据访问节点插删相关头尾插删任意位置…

MySQL数据库索引的种类、创建、删除

目录 一:MySQL 索引 1、MySQL 索引介绍 2、 索引的作用 3、索引的副作用 4、 创建索引的原则依据 二、索引的分类和创建 1、 普通索引 (1) 直接创建索引 (2) 修改表方式创建 (3) 创建表的…

【Turfjs】几何计算,计算地理空间上点坐标的经纬度,距离,围成的闭合空间面积等工作,都可以通过Turfkjs来实现

​​​​​​Turf.js中文网 几何计算: 1. 前端js就用这个 Turfjs的类库。参考网站: 计算两线段相交点 | Turf.js中文网 2. 后端java语言就可以用 JTS这个类库,参考网站:https://locationtech.github.io/jts/ https://github.com…

MVCC和undo log

MVCC多版本并发控制 MVCC是多版本并发控制(Multi-Version Concurrency Control,简称MVCC),是MySQL中基于乐观锁理论实现隔离级别的方式,用于实现已提交读和可重复读隔离级别的实现,也经常称为多版本数据库…

面向对象接口

生活中大家每天都在用 USB 接口,那么 USB 接口与我们今天要学习的接口有什 么相同点呢? 在Java程序设计中的接口 接口就是规范,定义的是一组规则,体现了现实世界中“如果你是/要…则必须 能…”的思想。继承是一个"是不是&…

几款GB28181流媒体平台的详细介绍和使用整理

随着监控行业国标GB28181的应用范围越来越广泛,成熟的GB28181接入平台越来越多,本文梳理一下目前各大成熟的流媒体服务器平台及实际应用效果供各位参考。 1)NTV GBS NTV GBS是一款成熟、功能完善、产品化程度很高的GB28181服务平台,从2022年…

原点安全助力金融机构消费者个人信息保护合规

数字经济的发展进一步加速了金融业务与生活场景之间的融合,数亿民众在享受金融数字化便利服务的同时,也更容易遭受个人信息泄露、权益侵害等事件。在实际业务开展过程中,部分金融机构仍存在各种侵害消费者个人信息权益的乱象。 我国对数据安…

工作经验--产品季节性分析

产品季节性分析 1.了解季节性的重要性2.如何发现季节性产品统计方法:季节性指数法:傅里叶分析法:其他: 1.了解季节性的重要性 产品是否存在季节性变化,对于卖家来说相当重要,旺季提前备货、淡季防止库存冗余…

工业无监督缺陷检测,提升缺陷检测能力,解决缺陷样品少、不平衡等问题(二)

1. 工业缺陷检测简介 在工业生产中,质量保证是一个很重要的话题, 因此在生产中细小的缺陷需要被可靠的检出。工业异常检出旨在从正常的样本中检测异常的、有缺陷的情况。工业异常检测主要面临的挑战: 难以获取大量异常样本正常样本和异常样本差异较小异常的类型不能预先得知…

UNITY3D回合制游戏开发教程案例

UNITY3D实现回合制游戏 ,类似梦幻西游,口袋妖怪,阴阳师。 先上效果 UNITY3D 回合制游戏案例源码开发教程 普通攻击 AOE技能 游戏概述 回合制游戏是一种策略游戏,玩家需要在自己的回合内进行决策,然后等待对手的回合…

redis学习 -- 常用指令

应用场景 String :缓存,限流,计数器,分布式锁,分布式session Hash:存储y用户信息,用户主页访问量,组合查询 List:关注人时间轴列 Set:点赞,标签&…

【在人间】关于网吧的记忆

高考完的暑假当了两个月夜班的网管,挣得一台小米6,也见识了不少社会人。 乡镇网吧,店里有老虎机,挣的钱比网吧一晚上收入多得多,最狠的一次有人一下输了3000个币(一个币一块钱),半夜喊老板下楼哭爹喊娘的要…

Docker:启动,停止,删除

1.启动一个容器: docker run 可选参数 镜像名 [COMMAND] [ARG...] docker run -it ubuntu /bin/bash ,启动一个使用ubuntu的docker,并使用/bin/bash做为dcoker中执行的命令。 其中818d5a1c32ac为容器ID 在宿主机上,可以通过docker ps查看容器的状态: 启动容器时常用的可选…

程序员疯抢的 Java 面试宝典(PDF 版)限时开源

Java 面试 2023 届高校毕业生规模预计 1076 万人,同比增加 367 万人,对于 23 届的同学们来说,今年下半年大规模进行的秋招是获得全职 Offer 的最重要的途径!对于程序员来说,大家都知道校招难度相对于社招来说会有所降…