elk架构

文章目录

  • 前言
  • 一、ELK架构概念
    • [1.1 ELK组成与原理](#1.1 ELK组成与原理)
    • [1.2 Elasticsearch](#1.2 Elasticsearch)
      • [1.2.1 核心功能](#1.2.1 核心功能)
      • [1.2.2 架构与组件](#1.2.2 架构与组件)
      • [1.2.3 使用场景](#1.2.3 使用场景)
      • [1.2.4 Elasticsearch特点与缺点](#1.2.4 Elasticsearch特点与缺点)
  • 3、Logstash介绍
    • [3.1 主要特点](#3.1 主要特点)
    • [1.4 Kiabana 介绍](#1.4 Kiabana 介绍)
  • 二、ELK部署实操
    • [2.1 环境配置](#2.1 环境配置)
    • [2.2 Elasticsearch部署](#2.2 Elasticsearch部署)
      • [2.2.1 安装Elasticsearch](#2.2.1 安装Elasticsearch)
      • [2.2.2 修改elasticsearch配置文件(修改配置文件一定要备份)](#2.2.2 修改elasticsearch配置文件(修改配置文件一定要备份))
      • [2.2.3 启动elasticsearch](#2.2.3 启动elasticsearch)
      • [2.2.4 elasticsearch可视化界面部署(一般不用)](#2.2.4 elasticsearch可视化界面部署(一般不用))
    • [2.3 Logstash 部署(apache日志索引)](#2.3 Logstash 部署(apache日志索引))
    • [2.4 kibana部署](#2.4 kibana部署)
    • [2.4 Filebeat部署](#2.4 Filebeat部署)
  • 总结

前言

本文学习elk架构

一、ELK架构概念

1.1 ELK组成与原理

ELK 是 Elasticsearch、Logstash、Kibana 的缩写,这三个工具组合在一起,用于数据收集、存储、搜索和可视化分析。它们的角色如下:

Elasticsearch:核心搜索和分析引擎,负责存储数据并提供快速的全文搜索和分析功能。

Logstash:数据收集和处理管道,能够从各种来源(如日志文件、数据库)收集数据,并进行过滤和转换,然后将其发送到Elasticsearch。

Kibana:数据可视化工具,提供图形界面来展示和分析存储在Elasticsearch中的数据,支持创建各种图表和仪表板。

Filebeat:帮助logstash进行数据收集。

大致理解:先由L(logstash)进行数据的收集,并对数据进行处理(过滤与格式化),之后发给E(elasticsearch),E是一个搜索引擎,负责全文搜索与数据的存储,最后是K(kibana)用于从E中提取数据形成可视化界面,但是logstash搜集数据比较吃性能,对于高并发量的情况会吃力,因此通常会在需要Filebeat进行帮助收集数据。

1.2 Elasticsearch

ElasticSearch:是基于Lucene(一个全文检索引擎的架构)开发的分布式存储检索引擎,用来存储各类日志。

Elasticsearch 是用 Java 开发的,可通过 RESTful Web 接口,让用户可以通过浏览器与 Elasticsearch 通信。

Elasticsearch是一个实时的、分布式的可扩展的搜索引擎,允许进行全文、结构化搜索,它通常用于索引和搜索大容量的日志数据,也可用于搜索许多不同类型的文档。

1.2.1 核心功能

全文搜索:Elasticsearch最广为人知的功能是全文搜索。它能够对文本数据进行快速的全文索引和搜索,是实现复杂搜索功能的理想工具。

实时数据分析:支持实时的数据更新和查询,适合用于日志分析、监控数据的实时处理等场景。

分布式架构:Elasticsearch基于分布式架构设计,支持跨集群的数据存储和检索,使其在扩展性和性能上具有很大优势。

RESTful API:Elasticsearch使用简单的HTTP接口(RESTful API),支持通过各种语言和平台进行集成。

1.2.2 架构与组件

1、集群(Cluster):一个或多个Elasticsearch节点(实例)组成一个集群,集群中的所有节点协同工作,共享数据和负载。

2、节点(Node):运行Elasticsearch的单个实例,节点可以有不同的角色(如主节点、数据节点等),负责存储数据和处理查询。

3、索引(Index):一个索引类似于传统数据库中的一个表,包含了一个数据集。每个索引都有唯一的名称,用于引用其中的文档。

4、文档(Document):Elasticsearch中的最小数据单元,每个文档是一个JSON格式的对象,存储在索引中。

5、分片(Shard):每个索引可以被分割为多个分片(shards),每个分片是一个Lucene索引。分片提供了数据的分布和并行处理能力,确保系统的高可用性和可扩展性。

6、副本(Replica):每个分片都可以有一个或多个副本,用于数据冗余和提高系统的容错能力。

1.2.3 使用场景

1、日志和事件数据分析:适合处理大规模的日志、事件流数据,提供实时的查询和分析能力。常与Logstash和Kibana(组成ELK Stack)一起使用。

2、全文搜索应用:如电子商务网站中的产品搜索,社交媒体平台的用户内容搜索。

3、监控和报警系统:通过与Kibana等工具结合,提供数据的可视化和实时监控功能。

4、商业智能(BI):支持复杂数据查询和分析,帮助企业从数据中获取洞察。

1.2.4 Elasticsearch特点与缺点

优点:

1、高性能:得益于Lucene的底层支持,Elasticsearch在处理全文搜索和分析操作时性能非常优越。

2、易扩展:其分布式架构设计使得集群可以随着数据量的增长而轻松扩展。

3、灵活性强:支持多种数据类型和复杂查询语法,可以适应各种不同的应用需求。

4、开放源代码:免费且活跃的社区支持,用户可以自由定制和扩展。

缺点:

1、资源消耗:作为一个内存密集型应用,Elasticsearch对硬件资源的要求较高,尤其在处理大量数据时。

2、学习曲线:虽然Elasticsearch易于集成,但对于新手来说,理解其复杂的查询DSL(DomainSpecific Language)和架构可能需要一些时间。

3、管理复杂性:在大型分布式集群环境中,管理和调优Elasticsearch需要相当的专业知识

3、Logstash介绍

Logstash 作为数据收集引擎。它支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后将处理后的数据发送到存储或分析系统(例如Elasticsearch)。

Logstash 由 Ruby 语言编写,运行在 Java 虚拟机(JVM)上,是一款强大的数据处理工具, 可以实现数据传输、格式处理、格式化输出。Logstash 具有强大的插件功能,常用于日志处理。

3.1 主要特点

1.数据收集:

Logstash能够从多种数据源(如日志文件、数据库、消息队列等)收集数据。

它支持各种输入插件,这些插件帮助你从不同的系统或服务中提取数据。

2.数据处理:

Logstash使用过滤器插件来处理数据,可以对数据进行清洗、格式转换、字段解析等操作。支持丰富的数据处理操作,比如正则表达式解析、日期转换、字段拆分和合并等。

3.数据输出:

处理后的数据可以被发送到多种输出目标,如Elasticsearch、关系型数据库、消息队列、文件系统等。输出插件的灵活性使得Logstash能够与各种系统集成。

  1. 可扩展性:

Logstash的架构允许通过插件轻松扩展和自定义,插件包括输入插件、过滤器插件、输出插件和编码插件等。

  1. 实时处理:

Logstash支持实时数据处理,适用于需要快速数据流的场景,比如实时日志监控、数据流分析等。

1.4 Kiabana 介绍

Kibana 通常与 Elasticsearch 一起部署,Kibana 是 Elasticsearch 的一个功能强大的数据可视化Dashboard,Kibana 提供图形化的 web 界面来浏览Elasticsearch 日志数据,可以用来汇总、分析和搜索重要数据。它为用户提供了交互式仪表盘、图表和报告功能,用于更好地理解数据

Kibana 的工作原理

1.数据存储在 Elasticsearch 中

Kibana 本身不存储数据,而是通过 Elasticsearch 查询和检索存储的数据。Elasticsearch 是Kibana 的数据源,数据可以从不同来源(如 Logstash、Beats、API 等)存储到Elasticsearch 中。

2.查询和分析

用户在 Kibana 中执行查询时,Kibana 会向 Elasticsearch 发送查询请求。查询可以使用Kibana Query Language (KQL) 或 Lucene 查询语法。

3.数据可视化和展示

查询结果返回后,Kibana 会通过各种可视化工具(如图表、地图、仪表盘等)展示数据,帮助用户快速理解和分析数据。

二、ELK部署实操

2.1 环境配置

10.0.0.6 Elasticsearch、node( Elasticsearc的可视化界面)

10.0.0.7 Elasticsearch、kibana、node( Elasticsearch的可视化界面)

10.0.0.8 logstash、apache

10.0.0.9 Filebeat

关闭防火墙与网络安全服务

java安装

yum insatll -y java ------------------------下载java

java -version ------------------------查看java安装信息

2.2 Elasticsearch部署

2.2.1 安装Elasticsearch

将Elasticsearch安装包放至/opt下

tar zxvf 解压Elasticsearch安装包

2.2.2 修改elasticsearch配置文件(修改配置文件一定要备份)

vim /etc/elasticsearch/elasticsearch.yml---------------编辑elasticsearch配置文件

cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml_bak------------------------备份配置文件

cluster.name: my-elk-cluster ------------------------ 17行指定集群名字

node.name: node1 ---------------------23行指定节点名字

path.data: /data/elk_data ------------------------33行指定数据存放路径

path.logs: /var/log/elasticsearch/ ------------------------37行指定日志存放路径

bootstrap.memory_lock: false ------------------------------43行改为在启动的时候不锁定内存

network.host: 0.0.0.0 ------------------------------55行设置监听地址,改为监听所有地址

http.port: 9200 ------------------------------elasticsearch服务的默认监听端口为9200

discovery.zen.ping.unicast.hosts: ["node1", "node2"] ------------------------指定要发现的节点 node1、node2

mkdir -p /data/elk_data ------------------------------创建存放数据位置

chown elasticsearch:elasticsearch /data/elk_data/ ------------------------修改数据文件的属主与属组

2.2.3 启动elasticsearch

systemctl daemon-reload ------------------------重新加载服务

systemctl start elasticsearch.service ------------------------开启elasticsearch服务

netstat -tulnap | grep 9200 ------------------------监听9200端口,查看是否开启成功

2.2.4 elasticsearch可视化界面部署(一般不用)

安装node

部署elasticsearch可视化界面需要依赖node与phantomjs两个软件

第一步 yum insatll -y gcc gcc-c++ make ------------------ 下载相关依赖包

第二步 tar zxvf node-v8.2.1.tar.gz -C /opt ------------------------------解压node安装包至opt下

第三步 编译安装

cd node-v8.2.1/ ------------------------切换至node目录下

./configure

make && make install------------------------编译安装

安装phantomjs

第一步 tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src/ ------------------------解压phantomjs安装包至/usr/local/src下

cp /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin ------------------------将phantomjs移动到/usr/local/bin下

安装 Elasticsearch-head 数据可视化工具

第一步 tar zxvf elasticsearch-head.tar.gz -C /usr/local/src/ ------------------------解压可视化化工具至/usr/local/src下

第二步 修改elasticsearch配置文件

vim /etc/elasticsearch/elasticsearch.yml ------------------编辑Elasticsearch配置文件

在末行加上

http.cors.enabled: true ------------------------------开启跨域访问支持

http.cors.allow-origin: "*" ------------------------------指定跨域访问允许的域名地址为所有

systemctl restart elasticsearch ------------------------重启服务(修改配置文件后要重启服务)

第三步 启动可视化界面

cd /usr/local/src/elasticsearch-head/

npm run start & ------------------------------------------在后台运行可视化界面服务

netstat -natp | grep 9100 ------------------------------监听可视化界面的端口是否开启

第四步 在浏览器搜索nodeip与可视化界面端口号

2.3 Logstash 部署(apache日志索引)

第一步 安装apache

yum install -y httpd ------------------------下载apache服务

systemctl start httpd ------------------------开启httpd服务

第二步 在浏览器上输入apache服务器ip查看静态页面(推荐用火狐)

第三步 安装logstash

cd /opt ------------------------切换到/opt目录下

ln -s /usr/share/logstash/bin/logstash /usr/local/bin/ ------------------创建一个软链接至/usr/local/bin下,使用户可以在任意目录下开启或关闭logstash服务

rpm -ivh logstash-6.6.1.rpm ------------------------------安装logstash

systemctl start logstash.service ------------------------------开启logstash服务

logstash -f:通过这个选项可以指定 Logstash 的配置文件,根据配置文件配置 Logstash 的输入和输出流。

logstash -e:从命令行中获取,输入、输出后面跟着字符串,该字符串可以被当作 Logstash 的配置(如果是空,则默认使用 stdin 作为输入,stdout 作为输出)。

logstash -t:测试配置文件是否正确,然后退出。

第四步 创建配置文件用于传输apache日志到E

vim /etc/logstash/conf.d/apache_log.conf ------------------------编辑apache日志

/usr/share/logstash/bin/logstash -f apache_log.conf ------------------------------输入与输出apache日志文件

第五步 浏览器访问E的ip与可视化端口查看是否索引创建成功

2.4 kibana部署

第一步安装kibana

rpm -ivh kibana-6.6.1-x86_64.rpm

第二步 修改kibana配置文件

vim /etc/kibana/kibana.yml ------------------------编辑kiban配置文件

server.port: 5601 ------------------第二行kibana端口为5601

server.host: "0.0.0.0" ---------------------------第七行监听所有ip

elasticsearch.hosts: ["http://10.0.0.7:9200"] ------------------第28行设置与E连接的ip与端口(要拿数据的地址)

kibana.index: ".kibana ------------------------------第37行设置在 elasticsearch 中添加.kibana索引

第四步 启动kibana服务

systemctl start kibana ------------------------启动kibana服务

netstat -tulnap | grep 5601 ------------------查看5601端口是否正在监听

第五步 在浏览器访问kibana的ip与端口查看数据

点击management ------》 点击 index Patterns ------》Create index patterns可以创建索引

这里我们可以把刚刚创建的apache_access与apache_error索引创建进kibana。

之后点击discover可以选择要查看的索引(以apache_acess为例)

2.4 Filebeat部署

从前文可知,logstash虽然可以支持文件、日志等的数据收集,但对于高并发的日志文件会比较吃力,因此一般企业会部署一个专门收集日志的服务节点,包括Fluentd、Filebeat。

这里我们就来部署一下Filebeat。

第一步 安装Filebeat

安装Filebeat位置 :https://mirrors.huaweicloud.com/filebeat/ (这里我们用的是7.8.1)

将安装包移动到opt下即可

tar zxvf filebeat-6.2.4-linux-x86_64.tar.gz ------------------------解压Filebeat包至opt下

第二步 编辑filebeat配置文件

vim /usr/local/filebeat/filebeat.yml ------------------------编辑filebeat配置文件

收集部分(输入):

输出部分(传输给logstash):

第三步 备份mysql日志文件

因为mysql的日志文件是加密文件,不好直接查询,因此我们备份一遍

mysqldump -u 用户 -p密码 数据库 表 > 日志存放位置

第四步

在logstash中创建一个文件用于接收filebeat与传输给E数据

touch mysql_conf ------------------------创建文件

vim mysql_conf------------------------编辑文件

第五步 启动filebeat(收集并传输)与logstash(接收日志文件)

./filebeat -e -c filebeat------------------------启动filebeat

logstash -f mysql.conf ------------------------------启动logstash收集mysql日志并发送给E

第四步 在浏览器查看

总结

本文讲解了ELK以及F的部署安装,希望本文内容能对大家有所帮助,谢谢观看😜

相关推荐
Vect__2 小时前
Linux常见工具使用方法
linux
小白的程序空间2 小时前
通俗易懂理解Flutter架构
flutter·架构
zfj3212 小时前
深入理解 Linux Namespace:隔离技术的基石
linux·运维·网络
骚戴2 小时前
架构设计之道:构建高可用的大语言模型(LLM) Enterprise GenAI Gateway
java·人工智能·架构·大模型·gateway·api
秋深枫叶红2 小时前
嵌入式第三十三篇——linux系统编程——文件IO
linux·学习·文件io
刚入门的大一新生2 小时前
Linux-Linux的基础指令1
linux
石像鬼₧魂石2 小时前
Hydra 弱口令爆破的详细命令模板
linux·windows·学习·ubuntu
txzz88882 小时前
CentOS-Stream-10 系统安装之SELINUX关闭
linux·运维·centos·selinux
Web极客码2 小时前
如何通过GUI或命令行更改Ubuntu 20.04的DNS设置
linux·ubuntu·php