基于ELK的分布式日志实时分析与可视化系统设计

目录

一、ELK平台介绍

1.ELK概述

2.Elasticsearch

3.Logstash

4.Kibana

二、部署ES群集

1.资源清单

2.基本配置

3.安装Elasticsearch(elk1上、elk2上、elk3上)

4.安装logstash(elk1上)

5.Filebeat

6.安装Kibana(elk1上)


一、ELK平台介绍

1.ELK概述

a.日志主要包括系统日志、应用程序日志和安全日志

b.日志被分散的存储在不同的设备上

c.集中管理日志后,日志的统计和检索利用grep、awk、wc实现

d.ELK的组成

Elasticsearch

Logstash

Kibana

2.Elasticsearch

a.概述

是一个基于Lucene的搜索服务器

它提供了一个分分布式多用户能力的全文搜索引擎,基于RESTful web接口

- 能够达到实时搜索、稳定、可靠、快速、安装使用方便

b.核心概念

接近实时(NRT):意味着数据从被索引到可被搜索之间存在极短的延迟(通常1秒内)。这是由于 Lucene 的倒排索引机制和 Elasticsearch 的刷新(refresh)机制决定的,默认每1秒刷新一次,使新数据可见

集群(Cluster):是由一个或多个节点(Node)组成的集合,共同存储数据并提供联合索引和搜索能力。

节点(node):是集群中的一个独立服务器,存储数据并参与索引和搜索

索引(index):是类似数据库中的“表”,用于存储具有相似结构的文档(Documents)

类型(type):用于逻辑划分索引中的不同数据结构(类似数据库的“表”)。

文档(document):是 Elasticsearch 中的基本数据单元,以 JSON 格式存储。

分片和复制(shards & replicas):

分片(Shards):索引可以被拆分为多个分片,提高并行处理能力。分片是独立索引单元,可分布在不同节点上。

副本(Replicas):

每个分片可以有多个副本,提供高可用性(节点故障时数据不丢失)和负载均衡(查询可并行执行)。默认情况下,ES 为每个索引创建1个主分片 + 1个副本(可在索引模板中调整)

3.Logstash

a.介绍

由JRsuby语言编写,运行在Java虚拟机上,是一款强大的数据处理工具

可以实现数据传输、格式处理、格式化输出

设计理念:数据输入、数据加工、数据输出

b.工作的三个阶段

input数据输入端,可以接收来自任何地方的源数据

Filter数据中转层,主要进行格式处理,数据类型转换,数据过滤,字段添加、修改等

Output是logstash工作的最后一个阶段,负责将书籍输出到指定位置,兼容大多数应用

4.Kibana

a.介绍

是一个设计使用和Elasticsearch配置工作的开源分析和可视化平台

可以用它进行搜索、查看、集成Elasticserach中的数据索引

可以利用各种图标、报表、地图组件轻松的对数据进行可视化分析

b.主要功能

Elasticsearch无缝集成:支持直接查询、过滤和聚合 ES 索引中的数据

整合数据:支持从多个 Elasticsearch 索引、Logstash 管道或 Beats 采集的数据进行统一分析。

复杂数据分析:支持 聚合(Aggregations) 操作,如 terms(分组统计)、date_histogram(时间序列分析)、avg(平均值计算)等

让更多的团队成员收益:提供 Dashboard(仪表盘) 功能,可将多个可视化图表组合,并支持共享链接或嵌入到其他系统(如 Confluence、Web 应用

接口灵活:提供 REST API,允许开发者以编程方式管理 Kibana 对象

配置简单:通过 Management 模块可轻松管理索引模式、用户权限、警报规则等

可视化多数据源:支持多种图表类型(柱状图、折线图、饼图、热力图等),并可结合 Maps 插件展示地理数据。

简单数据导出:支持将查询结果或图表导出为 CSV、PDF、PNG 格式,方便分享或进一步分析。

二、部署ES群集

1.资源清单

操作系统

IP地址

主机名

软件包

OpenEuler 24.03

192.168.16.142

elk1

Elasticsearch、logstash、kibana

OpenEuler 24.03

192.168.16.143

elk2

Elasticsearch、filebeat、httpd

OpenEuler 24.03

192.168.16.144

elk3

Elasticsearch、

2.基本配置

a.设置主机名

hostnamectl set-hostname elk1
hostnamectl set-hostname elk2
hostnamectl set-hostname elk3

b.在ES主机上设置Host文件(elk1上、elk2上、elk3上)

vi /etc/hosts
192.168.16.142  elk1
192.168.16.143  elk2
192.168.16.144  elk3

c.创建es运行用户(elk1上、elk2上、elk3上)

 useradd es

d.安装java环境(elk1上、elk2上、elk3上)

dnf -y install java-11 tar
java -version

e.设置访问限制(elk1上、elk2上、elk3上)

vi /etc/security/limits.confes soft nofile 65535
es hard nofile 65535
es soft nproc 65535
es hard nproc 65535
es soft memlock unlimited
es hard memlock unlimitedvi /etc/sysctl.conf
vm.max_map_count=655360sysctl -p

3.安装Elasticsearch(elk1上、elk2上、elk3上)

a.安装Elasticsearch

tar zxf elasticsearch-7.10.0-linux-x86_64.tar.gz 
mv elasticsearch-7.10.0 /usr/local/elasticsearch
vi /usr/local/elasticsearch/config/jvm.options-Xmx2g        #22
-Xmx2g

b.更改Elasticsearch主配置文件

#第一台更改
vi /usr/local/elasticsearch/config/elasticsearch.ymlcluster.name: kgc-elk-cluster   #17行,群集名称
node.name: elk1    #23行,本节点主机名
path.data: /elk/data    #33行,数据文件路径
path.logs: /elk/logs    #37行,日志文件路径
bootstrap.memory_lock: false    #43行,锁定物理内存
network.host: 0.0.0.0    #55行,监听地址
http.port: 9200    #59行,监听端口
discovery.seed_hosts: ["elk1", "elk2","elk3"]    #68行,群集中的主机列表
cluster.initial_master_nodes: ["elk1"]    #72行,master主机名称#推送配置文件到第二台
scp /usr/local/elasticsearch/config/elasticsearch.yml elk2:/usr/local/elasticsearch/config/elasticsearch.yml#推送配置文件到第三台
scp /usr/local/elasticsearch/config/elasticsearch.yml elk3:/usr/local/elasticsearch/config/elasticsearch.yml#第二台更改
vi /usr/local/elasticsearch/config/elasticsearch.yml
node.name: elk2    #23行,本节点主机名#第三台更改
vi /usr/local/elasticsearch/config/elasticsearch.yml
node.name: elk3    #23行,本节点主机名

c.创建数据存放路径并授权

mkdir -p /elk/data
mkdir -p /elk/logs
chown -R es:es /elk/
chown -R es:es /usr/local/elasticsearch

d.启动es

su - esnohup /usr/local/elasticsearch/bin/elasticsearch &
exit

e.查看节点信息

ss -nlpt | grep 9200
LISTEN 0      4096               *:9200            *:*    users:(("java",pid=3136,fd=253))

4.安装logstash(elk1上)

a.在logstash服务器上安装logstash

#安装
tar zxf logstash-7.10.0-linux-x86_64.tar.gz 
mv logstash-7.10.0 /usr/local/logstash
chmod -R 777 /usr/local/logstash/data#添加服务
vi /usr/local/logstash/system.confinput { 
file{ 
path =>"/var/log/messages" 
type =>"system" 
start_position =>"beginning" 
} 
} 
output { 
elasticsearch { 
hosts => ["192.168.16.142:9200"] 
index =>"system-%{+YYYY.MM.dd}" 
} 
}#添加读权限
chmod +r /var/log/messages

b.测试安装结果

#采集日志(启动)
/usr/local/logstash/bin/logstash -f /usr/local/logstash/system.conf
#访问验证(elk3上)
curl -XGET "http://localhost:9200/_cat/indices"
#green open system-2025.05.20 xnX0OgCxTmGZ6Msy5A1aXA 1 1 14184 0 5.8mb 2.8mb

5.Filebeat

a.在产生日志的客户端上安装Filebeat(elk2上)

dnf install -y httpd
systemctl start httpd

b.安装filebeat(elk2上)

tar zxf filebeat-7.10.0-linux-x86_64.tar.gz
mv filebeat-7.10.0-linux-x86_64 /usr/local/filebeat

c.配置web01服务器filebeat的输出(elk2上)

 vi /usr/local/filebeat/filebeat.ymlfilebeat.inputs:
- type: logpaths:- /var/log/httpd/access_logoutput.logstash:hosts: ["192.168.16.142:5044"]

d.修改logstash的配置文件(elk1上)

vi /usr/local/logstash/config/beats.confinput {beats {port => "5044"codec => "json"}
}
seccomp:enabled: false
output{elasticsearch {hosts => ["192.168.16.142:9200"]index => "weblog-beat-%{+YYYY.MM.dd}"}
}

e.运行logstash并验证(elk1上)

/usr/local/logstash/bin/logstash -f /usr/local/logstash/config/beats.conf --path.data=/usr/local/logstash/config.d/web01 &> /tmp/logstash.log &

f.启动(elk2上)

/usr/local/filebeat/filebeat -c /usr/local/filebeat/filebeat.yml

6.安装Kibana(elk1上)

a.在elk1上安装Kibana

tar zxf kibana-7.10.0-linux-x86_64.tar.gz
mv kibana-7.10.0-linux-x86_64 /usr/local/kibana

b.修改Kibana主配置文件

vi /usr/local/kibana/config/kibana.ymlserver.port: 5601    #2行
server.host: "0.0.0.0"    #7行
elasticsearch.hosts: ["http://192.168.16.142:9200"]    #28行
kibana.index: ".kibana"    #32行chown -R es:es /usr/local/kibana

c.启动Kibana服务

su - es
nohup /usr/local/kibana/bin/kibana &nohup /usr/local/kibana/bin/kibana &

d.验证Kibana

http://192.168.16.142:5601/

 e.将elk1主机的系统日志添加到kinnba

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

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

相关文章

电机控制选 STM32 还是 DSP?技术选型背后的现实博弈

现在搞电机控制,圈里人都门儿清 —— 主流方案早就被 STM32 这些 Cortex-M 单片机给拿捏了。可要是撞上系统里的老甲方,技术认知还停留在诺基亚砸核桃的年代,非揪着 DSP 不放,咱也只能赔笑脸:“您老说的对,…

【案例分享】蓝牙红外线影音遥控键盘:瑞昱RTL8752CJF

蓝牙红外线影音遥控键盘 Remotec的无线控制键盘采用瑞昱蓝牙RTL8752CJF解决方案,透过蓝牙5.0与手机配对后,连线至 Remotec 红外 code server 取得对应影音视觉设备的红外 code后,即可控制多达2个以上的影音视觉设备,像是智能电视…

PostgreSQL如何更新和删除表数据

这节说下怎样更新和删除表数据,当然认识命令了,可以问AI帮忙写。 接上节先看下天气表weather的数据,增加了杭州和西安的数据: 一.UPDATE更新命令 用UPDATE命令更新现有的行。 假设所有 杭州 5月12日的温度低了两度,用…

简单三步FastAdmin 开源框架的安装

简单三步FastAdmin 开源框架的安装 第一步:新建站点1,在宝塔面板中,创建一个新的站点,并填写项目域名。 第二步:上传框架1,框架下载2,上传解压缩 第三步:配置并安装1,进入…

使用 pytesseract 构建一个简单 OCR demo

简介 pytesseract 库是 Google Tesseract OCR (光学字符识别)引擎的一个 Python 封装库,使用广泛且功能强大。 构建 使用 pytesseract 构建一个简单 OCR demo。 步骤一:安装必要的库 您需要在您的 Python 环境中安装 pytessera…

十三: 神经网络的学习

这里所说的“学习”是指从训练数据中自动获取最优权重参数的过程。为了使神经网络能进行学习,将导入损失函数这一指标。而学习的目的就是以该损失函数为基准,找出能使它的值达到最小的权重参数。为了找出尽可能小的损失函数的值,我们将介绍利…

AWS 创建VPC 并且添加权限控制

AWS 创建VPC 并且添加权限控制 以下是完整的从0到1在AWS中创建VPC并配置权限的步骤(包含网络配置、安全组权限和实例访问): 1. 创建VPC 步骤: 登录AWS控制台 访问 AWS VPC控制台,点击 创建VPC。 配置基础信息 名称…

ICASSP2025丨融合语音停顿信息与语言模型的阿尔兹海默病检测

阿尔兹海默病(Alzheimers Disease, AD)是一种以认知能力下降和记忆丧失为特征的渐进性神经退行性疾病,及早发现对于其干预和治疗至关重要。近期,清华大学语音与音频技术实验室(SATLab)提出了一种将停顿信息…

C# 导出word 插入公式问题

最近遇到了一个问题,下载一个文档时需要下载word可编辑的公式。找了很久终于找到了一种解决办法。下面是以C#代码来实现在Word中插入公式的功能。 目录 一、引入dll程序集文件1、通过 NuGet 引入dll(2种方法)的方法:2、手动添加d…

智汇云舟携最新无人机2D地图快速重建技术亮相广西国际矿业展览会

5月22至25日,广西国际矿业展览会(以下简称 “矿业展”)在南宁国际会展中心成功举办。智汇云舟与合作伙伴广西空驭数智信息技术有限公司携无人机 2D地图快速重建技术,以及视频孪生智慧矿山解决方案参会,为矿山行业数字化…

OpenSSL 签名验证详解:PKCS7* p7、cafile 与 RSA 验签实现

OpenSSL 签名验证详解:PKCS7* p7、cafile 与 RSA 验签实现 摘要 本文深入剖析 OpenSSL 中 PKCS7* p7 数据结构和 cafile 的作用及相互关系,详细讲解基于 OpenSSL 的 RSA 验签字符串的 C 语言实现,涵盖签名解析、证书加载、验证流程及关键要…

9:OpenCV—模板匹配

模版匹配 1、模板匹配概念 模板匹配是一项在一副图像中寻找与另一幅模板图像最匹配(相似)部分的技术。模板匹配不是基于直方图的,而是通过在输入图像上滑动图像块(模板)同时对比相似度,来对模板和输入图像…

Composer 常规操作说明与问题处理

目录 一、 Composer 简介,安装二、全局配置三、项目配置(composer.json)3.1 composer.json 文件1. 基础字段信息2. **require(生产环境依赖)**3. **require-dev(开发环境依赖)** 3.2 composer.l…

Spring Boot 3.0与Java 17:企业级应用开发的新范式

引言 随着Spring Boot 3.0和Java 17的正式发布,企业级应用开发迎来了新的技术范式。这两项技术的结合不仅带来了性能提升,还引入了众多现代化的编程特性,为开发者提供了更强大、更高效的开发体验。本文将深入探讨Spring Boot 3.0与Java 17的…

Vue 组件 - 指令

Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue指令 目录 指令写法 自定义指令 简单封装指令 指令传递字符串 update事件 指令应用 指令实现轮播 指令函数简写 指令函数列表 bind inserted update componentUpdated unbind Vue3指令轮播 nextick 总结 指…

5.28 后端面经

为什么golang在并发环境下更有优势 Go语言(Golang)在并发环境下的优势主要源自其设计哲学和内置的并发机制,这些机制在语言层面提供了高效、简洁且安全的并发编程工具。以下是其核心优势的详细分析: 1. Goroutine:轻量…

Linux线程入门

目录 Linux线程概念 什么是线程 重新理解进程 线程的优点 线程的缺点 线程的异常 线程用途 Linux线程概念 什么是线程 在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列”。一切进程至…

通信应用高速模数转换器ADC

在5G通信、医疗成像、航空航天及工业自动化等关键领域,高速ADC模数转换器作为信号链的“心脏”,其性能直接决定了系统的精度与效率。然而,如何精确测试高速ADC的动态参数、优化设计验证流程、应对复杂应用场景的挑战,始终是工程师…

PostgreSQL 中 JSONB 数据类型的深度解析以及如何使用

一、JSONB 核心特性解析 1. 存储结构与优势 ​​二进制存储​​:将 JSON 数据解析为二进制格式(分解键值对,去除空格和重复键)​​高效查询​​:支持 GIN/GiST 索引,查询速度比 JSON 类型快 10 倍​​数据…

C++_核心编程_ 左移运算符重载 “<<” 左移运算符

作用&#xff1a;可以输出自定义数据类型 */ //目标 调用p1,输出Person 中的属性 m_A ,m_B &#xff1a; /* #### 4.5.2 左移运算符重载 “<<” 左移运算符 作用&#xff1a;可以输出自定义数据类型 *///目标 调用p1,输出Person 中的属性 m_A ,m_B &#xff1a; class…