ElasticStack日志分析平台-ES 集群、Kibana与Kafka

一、Elasticsearch

1、介绍:

Elasticsearch 是一个开源的分布式搜索和分析引擎,Logstash 和 Beats 收集的数据可以存储在 Elasticsearch 中进行搜索和分析。

Elasticsearch为所有类型的数据提供近乎实时的搜索和分析:一旦数据被索引,它就可以立即被搜索和分析,这种实时性使得用户能够即时获取最新数据的搜索结果和分析信息。

2、概念:

① 文档:文档是 Elasticsearch中所有可搜索数据的最小的数据单元。它是以JSON 格式表示的一条数据记录,每个文档都有一个唯一的ID来标识,文档可以包含各种字段,例如文本、数字、日期、嵌套对象等。

② 文档元数据:文档除了包含实际的数据外,还有一些元数据信息。这些信息包括文档的版本号、索引的时间戳、路由信息等。

③ 索引(Index):索引是一组具有相似特征的文档的集合,每个索引都有一个唯一的名称,用于标识和检索其中的文档。

二、ES 集群:

1、概念:

Elasticsearch(ES)集群是由一个或多个Elasticsearch节点组成的集合。这些节点协同工作,共同承载数据存储、处理和搜索的负载。

(1) Master Node 和 Master-eligible Node:

① Master Node:主节点负责管理整个集群的状态和拓扑结构;

② Master-eligible Node:有资格成为主节点的节点。

ES 集群每个节点启动后,默认就是一个 Master eligible node,Master-eligible node 可以参加选主流程,成为 Master Node ;当第一个节点启动时,它会将自己选举成 Master Node,每个节点上都保存了集群的状态,只有 Master Node 才能修改集群的状态信息。

(2) Date Node 和 Coordinating Node:

① Data Node:数据节点,这些节点负责存储数据分片;

② Coordinating Node:协调节点,负责接收来自客户端的请求,将请求转发到适当的数据节点,并将数据节点的响应整合后返回给客户端。

(3) 主分片与副本分片:

分片(Shards)是将数据水平分割和分布式存储的机制,它允许将大量数据分散到集群中的多个节点上,以提高性能、扩展性和可用性。

① 主分片(Primary Shard):主分片是索引的原始数据分片,在创建索引时,可以指定主分片的数量,一旦创建后,主分片的数量将保持不变。

② 副本分片(Replica Shard):副本分片是主分片的复制品,用于提供数据的冗余备份和高可用性。副本分片数量可以随时更改,通过增加或减少副本的数量,可以影响集群服务的可用性。

2、集群配置:

(1) 域名解析:

(2) 节点设置(以 ela1 为例):

vim /etc/elasticsearch/elasticsearch.yml

① cluster.name: elk 集群名称,各节点的集群名称相同

② node.name: ela1 节点名称,各节点需要设置独立的节点名称

③ node.data: true 指示节点为数据节点

④ network.host: 0.0.0.0 ;http.port: 9200 节点所绑定的ip和提供服务的端口

⑤ discovery.seed_hosts 指定集群成员,用于主动发现他们

⑥ cluster.initial_master_nodes: ["ela1", "ela2", "ela3"] 指定集群初始化主节点

2号、3号节点的 yml 文件除了 node.name 需要修改,其他都与 ela1 保持一致

(3) 查集群:

systemctl start elasticsearch.service

● 查看集群健康状态:

curl -X GET "localhost:9200/_cat/health?v"

状态含义:

绿色表示健康状态良好,黄色表示有一些问题但仍在正常运行,红色表示存在严重问题。

● 查看集群节点信息:

curl -X GET "localhost:9200/_cat/nodes?v"

3、集群测试

使用 Filebeat 搜集日志,输出到 Logstash, 再由 Logstash 处理完数据后输出到 Elasticsearch。

(1) Logstash配置:

(2) 启动服务,查看输出:

验证Elasticsearch是否创建索引:

curl ‐X GET "192.168.19.20:9200/_cat/indices"

(3) 自定义索引:

用户可自定义索引,例如把访问日志 access.log 中的内容单独放到一个索引中。

三、Kibana

1、简介:

Kibana是一个开源的数据可视化工具,它是Elastic Stack的一部分,Kibana主要用于对Elasticsearch中的数据进行可视化和分析。

2、Kibana 部署

(1) 编辑配置文件:

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

① server.port: 5601 ;server.host: 0.0.0.0

② elasticsearch.hosts: ["http://192.168.198.128:9200"]

用于连接到 ES 集群的地址和端口

③ logging.dest: /var/log/kibana/kibana.log

配置日志文件路径

④ i18n.locale: "zh-CN"

设置页面字体为中文

(2) 创建用户并修改属主和属组:

默认情况下 kibana 不以 root 用户运行,需要创建应该普通用户

useradd ela

mkdir /run/kibana /var/log/kibana/

chown -R ela.ela /run/kibana/

chown -R ela.ela /var/log/kibana/

chown -R ela.ela /usr/local/kibana/

(3) 切换到 ela 用户运行:

su ‐ ela

/usr/local/kibana/bin/kibana

kibana web 界面:

① 创建索引模式:

Kibana 中创建索引模式时,你需要指定一个或多个索引模式名称,这些名称匹配 Elasticsearch中 的一个或多个索引。通过指定索引模式,可以在Kibana中执行搜索、创建可视化图表和构建仪表板。

② 查看日志:

四、Kafka 集群

1、简介:

(1) 概念:

Kafka是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它可以实时的处理大量数据以满足各种需求场景,提高了可扩展性。具有峰值处理能力,能够使关键组件顶住突发的访问压力,不会因为超负荷的请求而完全崩溃。

(2) 特性:

高吞吐量:kafka每秒可以处理几十万条消息

可扩展性:kafka集群支持热扩展- 持久性

可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失

容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败)

高并发:支持数千个客户端同时读写

(3) 组件:

① 话题 (topic):特定类型的消息流,Kafka消息被发布到话题,消费者可以订阅并从主题中读取数据(kafka 是面向 topic的)

② 生产者 (Producer) :负责将数据发布到Kafka的话题中,生产者可以将消息发送到一个或多个话题。

③ 消费者 (Consumer):订阅一个或多个话题,并处理从这些话题中接收到的消息。

④ 代理 (Broker):Kafka集群由多个服务器节点组成,每个节点称为代理。它们负责存储已发布消息记录,并处理生产者和消费者之间的数据传输。

⑤ 分区 (Partition):每个主题可以分为多个分区,每个分区在多个服务器节点上进行副本备份,确保数据的可靠性和容错性。

⑥ 复制 (Replication):Kafka使用复制机制来确保数据的可靠性和容错性,复制允许将相同分区的数据副本保存在多个Broker上。

⑦ 领导者 (Leader):对于每个分区,Kafka中有一个 Leader ,它负责处理所有的读写请求,所有的生产者和消费者都与 Leader 交互。

⑧ 跟随者 (Follower):Follower 是 Leader 的复制品,Follower 会从 Leader 中拉取数据,并保持数据的同步,以便在 Leader 副本失败时接管服务。

⑨ ZooKeeper:ZooKeeper是一个开源的分布式协调服务,用于管理和协调Kafka集群中的Broker节点。ZooKeeper负责维护Kafka集群中各个Broker的状态信息,包括分区分配、Leader选举等,确保Kafka集群的稳定运行。

2、集群部署:

(1) 域名解析:

配置jdk8:yum install -y java-1.8.0-openjdk

(2) 配置 ZK(以 es01 为例):

vim /usr/local/kafka/config/zookeeper.properties

dataDir=/opt/data/zookeeper/data

dataLogDir=/opt/data/zookeeper/logs

clientPort=2181

tickTime=2000

initLimit=20

syncLimit=10

dataDir:指定 ZooKeeper 数据存储的目录;

dataLogDir:指定 ZooKeeper 日志文件存储的目录;

clientPort:ZooKeeper 客户端连接到服务器的端口号;

tickTime:ZooKeeper 服务器之间的心跳时间以及超时时间 (ms);

initLimit:当 ZooKeeper 服务器启动时,等待接收来自 Leader 的初始化连接的时间 (以 tickTime 的倍数为单位);

syncLimit:在 ZooKeeper 集合中的 Follower 节点同步到 Leader 节点的时间限制 (以 tickTime 的倍数为单位)。

server.1=192.168.198.128:2888:3888

server.2=192.168.198.129:2888:3888

server.3=192.168.198.130:2888:3888

kafka集群IP:Port

● 创建data、log目录:

mkdir ‐p /opt/data/zookeeper/{data,logs}

● 创建myid文件:

指定该设备在集群中的编号

echo 1 > /opt/data/zookeeper/data/myid

es02、es03 的配置信息与 es01 相同

mkdir -p /opt/data/zookeeper/{data,logs}

echo 2 > /opt/data/zookeeper/data/myid

echo 3 > /opt/data/zookeeper/data/myid

(3) 配置 Kafka(以 es01 为例):

vim /usr/local/kafka/config/server.properties

broker.id=1

listeners=PLAINTEXT://192.168.198.128:9092

num.network.threads=3

num.io.threads=8

broker.id:配置了 Kafka broker(代理)的唯一标识符,每个 Kafka broker 通过 broker.id 来标识自己在集群中的位置;

listeners=PLAINTEXT://192.168.198.128:9092:配置了 Kafka broker 监听客户端连接的网络接口和地址(配置本机);

num.network.threads:这个参数设置了 Kafka broker 处理消息的最大线程数。

num.io.threads:这个参数定义了 Kafka broker 处理磁盘 I/O 操作的线程数。

socket.send.buffer.bytes=102400

socket.receive.buffer.bytes=102400

socket.request.max.bytes=104857600

socket.send.buffer.bytes:设置了 Kafka 发送数据时的缓存大小;

socket.receive.buffer.bytes:设置了 Kafka 接收数据时的缓存大小;

socket.request.max.bytes:设置了 Kafka 单个请求可以包含的最大字节量。

log.dirs=/opt/data/kafka/logs

num.partitions=6

num.recovery.threads.per.data.dir=1

log.dirs:Kafka 的日志存储目录配置;

num.partition:指定 Kafka 话题的分区数量;

num.recovery.threads.per.data.dir:配置每个数据目录(data.dirs)下用于日志恢复的线程数。

offsets.topic.replication.factor=2

transaction.state.log.replication.factor=1

transaction.state.log.min.isr=1

offsets.topic.replication.factor:指定了存储位置的复制方式,设置为 2 数据会被复制两份;

transaction.state.log.replication.factor ;transaction.state.log.min.isr:设置了事务状态日志数据备份数量为1份,只要有一个备份是活跃的就可以进行写入操作。

log.retention.hours=168

log.segment.bytes=1073741824

log.retention.check.interval.ms=300000

log.retention.hours:日志的保留时间 168小时(7天);

log.segment.bytes:定义了日志段的大小(存储消息的字节数);

log.retention.check.interval.ms:定义了检查日志保留策略的时间间隔,每300,000毫秒 (5分钟) 检查并清理过期的日志段。

zookeeper.connect=192.168.198.128:2181,192.168.198.129:2181,192.168.198.130:2181

zookeeper.connection.timeout.ms=6000

group.initial.rebalance.delay.ms=0

zookeeper.connect:指定了 Kafka 使用的 ZooKeeper 的连接信息;

zookeeper.connection.timeout.ms:定义了连接 ZooKeeper 的超时时间;

group.initial.rebalance.delay.ms:定义了消费者组的初始重新平衡(rebalance)的延迟时间,为 0 毫秒意味着当有新的消费者加入或退出消费者组时,Kafka 将立即开始重新平衡分配分区(partitions)给消费者。

mkdir -p /opt/data/kafka/logs

● 配置 es02 和 es03:

scp -r /usr/local/kafka/config/server.properties es02:/usr/local/kafka/config/

scp -r /usr/local/kafka/config/server.properties es03:/usr/local/kafka/config/

分别修改 broker.id 和 listeners。

mkdir -p /opt/data/kafka/logs

(4) 三台机器启动 zookeeper:

cd /usr/local/kafka

nohup bin/zookeeper‐server‐start.sh config/zookeeper.properties &

(5) 三台集群启动 kafka:

cd /usr/local/kafka

nohup bin/kafka‐server‐start.sh config/server.properties &

(6) 验证效果:

① 在1号机(128)上创建topic:

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic testtopicBean

② 在其他机器上查看 topic:

bin/kafka-topics.sh --zookeeper 192.168.198.128:2181 --list

③ 模拟消息生产和消费 (128 发送消息,129接收):

128:bin/kafka-console-producer.sh --broker-list 192.168.198.129:9092 --topic testtopicBean

129:bin/kafka-console-consumer.sh --bootstrap-server 192.168.198.128:9092 --topic testtopicBean --from-beginning

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

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

相关文章

《向量数据库指南》——TruLens + Milvus Cloud构建RAG深入了解性能

深入了解性能 索引类型 本例中,索引类型对查询速度、token 用量或评估没有明显影响。这可能是因为数据量较小的关系。索引类型对较大语料库可能更重要。 Embedding 模型 text-embedding-ada-002 在准确性(0.72,平均 0.60)和答案相关度(0.82,平均0.62)上优于 MiniLM Embeddin…

Office Word 中的宏

Office Word 中的宏 简介宏的使用将自定义创建的宏放入文档标题栏中的“自定义快速访问工具栏”插入指定格式、内容的字符选中word中的指定文字查找word中的指定文字A,并替换为指定文字B插入文本框并向内插入文字word 表格中的宏操作遍历表格中的所有内容批量设置表…

CTF-PWN-堆- 【off-by-one】

文章目录 堆的off-by-one利用思路Asis CTF 2016 b00ks libc 2.31IDA源码main输入名字creat函数dele函数edit函数print函数reeditor name函数 思路exp思路 堆的off-by-one off-by-one指的是单字节缓冲区溢出(off-by-one 是可以基于各种缓冲区的,比如栈、…

解决公网下,k8s calico master节点无法访问node节点创建的pod

目的:解决pod部署成功后,只能在node节点访问,而master节点无法访问 原因:集群搭建时,没有配置公网进行kubectl操作,从而导致系统默认node节点,使用内网IP加入k8s集群!如下&#xff…

八股文-TCP的三次握手

TCP协议是一种面向连接、可靠传输的协议,而建立连接的过程就是著名的三次握手。这个过程保证了通信的双方能够同步信息,确保后续的数据传输是可靠和有序的。本文将深入解析TCP三次握手的步骤及其意义。 漫画TCP的三次握手 TCP连接的建立采用了三次握手的…

VSCode 使用CMakePreset找不到cl.exe编译器的问题

在用vscode开发c项目的时候,使用预先配置的CMakePresets.json可以把一些特定的cmake选项固定下来,在配置时直接使用 "cmake --config --preset presetname"就可以进行配置,免去在命令行输入过多的配置参数。 但是在vscode中&#…

C++菜鸟日记2

关于getline()函数,在char和string输入的区别 参考博客 1.在char中的使用: 2.在string中的使用: 关于char字符数组拼接和string字符串拼接方法 参考博客 字符串拼接方法: 1.直接用 号 2.利用append(&#xff0…

【观察】华为:数智世界“一触即达”,应对数智化转型“千变万化”

毫无疑问,数智化既是这个时代前进所趋,也是国家战略所指,更是所有企业未来发展进程中达成的高度共识。 但也要看到,由于大量新兴技术的出现,技术热点不停的轮转,加上市场环境的快速变化,让数智化…

Nacos 配置中心底层原理(1.X版本)

前言 Nacos 1.X版本 是长轮询 Nacos 2.X版本 是GRPC 长轮询 概念 客户端会轮询向服务端发出一个长连接请求,这个长连接最多30s就会超时,服务端收到客户端的请求会先判断当前是否有配置更新,有则立即返回,如果没有服务端会将这个…

upload-labs关卡9(基于win特性data流绕过)通关思路

文章目录 前言一、靶场需要了解的知识1::$data是什么 二、靶场第九关通关思路1、看源码2、bp抓包修改后缀名3、检查是否成功上传 总结 前言 此文章只用于学习和反思巩固文件上传漏洞知识,禁止用于做非法攻击。注意靶场是可以练习的平台,不能随意去尚未授…

【cpolar】Ubuntu本地快速搭建web小游戏网站,公网用户远程访问

🎥 个人主页:深鱼~🔥收录专栏:cpolar🌄欢迎 👍点赞✍评论⭐收藏 目录 前言 1. 本地环境服务搭建 2. 局域网测试访问 3. 内网穿透 3.1 ubuntu本地安装cpolar 3.2 创建隧道 3.3 测试公网访问 4. 配置…

Netty Review - 从BIO到NIO的进化推演

文章目录 BIODEMO 1DEMO 2小结论单线程BIO的缺陷BIO如何处理并发多线程BIO服务器的弊端 NIONIO要解决的问题模拟NIO方案一: (等待连接时和等待数据时不阻塞)方案二(缓存Socket,轮询数据是否准备好)方案二存…

医院数字化LIS(检验信息系统)源码

临床检验信息管理系统(LIS)是利用计算机连接医疗设备,通过计算机信息处理技术,将医院检验科或实验室的临床检验数据进行自动收集、存储、处理、提取、传输和交换,满足所有授权用户的功能需求。 一、系统概述 1.LIS&am…

Redis篇---第五篇

系列文章目录 文章目录 系列文章目录前言一、持久化有两种,那应该怎么选择呢?二、怎么使用 Redis 实现消息队列?三、说说你对Redis事务的理解前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,…

Axure基础详解二十二:随机点名效果

效果演示 组件 建立一个【中继器】,内部插入一个“文本框”。【中继器】每页项目数为1,开始页为1。 设置交互 页面载入时交互 给【中继器】新曾行,“name”数据列添加10行数据,填入相应的名字;“shunxu”数据列全部…

黑马程序员微服务 分布式搜索引擎3

分布式搜索引擎03 0.学习目标 1.数据聚合 **聚合(aggregations)**可以让我们极其方便的实现对数据的统计、分析、运算。例如: 什么品牌的手机最受欢迎?这些手机的平均价格、最高价格、最低价格?这些手机每月的销售…

Java项目实战《苍穹外卖》 一、项目概述

人道洛阳花似锦,偏我来时不逢春。 系列文章目录 苍穹外卖是黑马程序员2023年的Java实战项目,作为业余练手用,需要源码或者课程的可以找我,无偿分享 Java项目实战《苍穹外卖》 一、项目概述Java项目实战《苍穹外卖》 二、项目搭建 …

电子学会2023年06月青少年软件编程(图形化)等级考试试卷(一级)真题,含答案解析

青少年软件编程(图形化)等级考试试卷(一级) 一、单选题(共25题,共50分) 1. 看图找规律,请问下图红框中是?( ) A.

git使用patch进行补丁操作

文章目录 前言一、format-patch/am生成和应用补丁1、生成2、应用 二、patch文件解读 前言 在软件开发中,代码协作和版本管理是至关重要的。Git 是一个流行的分布式版本控制系统,它提供了各种功能来简化团队合作和代码管理。但是如何给已有项目打补丁&am…

Kafka学习笔记(三)

目录 第5章 Kafka监控(Kafka Eagle)5.2 修改kafka启动命令5.2 上传压缩包5.3 解压到本地5.4 进入刚才解压的目录5.5 将kafka-eagle-web-1.3.7-bin.tar.gz解压至/opt/module5.6 修改名称5.7 给启动文件执行权限5.8 修改配置文件5.9 添加环境变量5.10 启动…