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.mfbz.cn/a/154702.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python Numpy.einsum

、 见 https://zhuanlan.zhihu.com/p/27739282

Resolume Arena 7.15.0(VJ音视频软件)

Resolume Arena 7是一款专业的实时视觉效果软件,用于创造引人入胜的视频演出和灯光秀。它提供了丰富多样的功能和工具,可以将音频、视频和图像合成在一起,创造出令人惊叹的视觉效果。 Resolume Arena 7支持多种媒体格式,包括视频文…

微信@all bug复现及原理分析

1、复现 条件: 1、Windows PC 端微信 2、自建一个群聊拥有群管权限可以所有人 废话不多说,直接上图 所有人 剪切后,到另一个群中,引用任意一个群里成员的消息,并将刚才剪切的粘贴至此,发送 便可完成非群…

LeetCode之二叉树

发现更多计算机知识,欢迎访问Cr不是铬的个人网站 最近数据结构学到二叉树,就刷了刷力扣,写这篇文章也是辅助记忆。 103二叉树锯齿形遍历 要解出本道题,首先要会层次遍历。层次遍历我们都知道用一个队列去实现就行。但是力扣这里…

重磅 | 进一步夯实生态建设,朗思科技与阿里龙蜥完成兼容性认证

近日,北京朗思智能科技有限公司(以下简称“朗思科技”)自主研发的数字员工产品与OpenAnolis龙蜥社区龙蜥操作系统(Anolis OS)8完成兼容性认证。测试结果显示,双方产品相互兼容,功能正常&#xf…

【window 10】开启加速器,连接外网 打开外网链接

打开网页 链接 https://steampp.net/,点击下载 下载 我选的是 微软商店 安装 打开后界面是这样,先注册个用户登录 选择 需要加速的内容 先选中下面的复选框 再点击 ‘一键加速’ 按钮,出现下面的界面 打开外网的链接 直接访问 就好了&#xf…

【算法每日一练]-图论(保姆级教程 篇3(遍历))#图的遍历 #奶牛牧场 #杂务

今天讲图的遍历 目录 题目:图的遍历 思路: 题目:奶牛牧场 思路: 题目:杂务 思路: 题目:图的遍历 思路: 正向建边需要跑O(N^2)会超时,所以反向建边,先从最大的点出发&#x…

解锁编程潜能:探索亚马逊CodeWhisperer,打造编程世界的声音引导者

文章目录 前言一、什么是 Amazon CodeWhisperer?二、如何使用CodeWhisperer?安装CodeWhisperer插件配置CodeWhisperer生成注释和文档 总结 前言 随着CHATGPT的一声巨响,大语言模型已经成为了一个备受瞩目的创新应用。亚马逊云科技作为全球领…

Java常用命令行指令有哪些?Java指令分享!

在Java开发中,命令行工具是非常重要的,它们允许开发人员执行各种任务,从编译和运行Java程序到管理Java虚拟机。本文将介绍一些常用的Java命令行指令,并通过具体实例演示它们的用法。 1. 编译Java源代码 使用javac命令可以将Java源…

贪吃蛇基础知识铺垫2(c语言)

宽字符的打印 那如果想在屏幕上打印宽字符,怎么打印呢? 宽字符的字⾯量必须加上前缀“L”,否则 C 语⾔会把字⾯量当作窄字符类型处理。前缀“L”在单引 号前⾯,表⽰宽字符,对应 wprintf() 的占位符为 %lc &#xff1b…

[Linux]NFS文件共享服务

一、NFS 1.1 NFS的简介 NFS(Network File System 网络文件服务),是一种基于 TCP/IP 传输的网络文件系统协议,最初由 Sun 公司开发。 NFS 服务的实现依赖于 RPC(Remote Process Call,远端过程调用&#x…

Hacker 资讯|11 月中下旬区块链黑客松活动汇总

「TinTin Hacker 快讯」是 TinTinLand 建立的一个资讯专栏,汇集近期线上线下的黑客松及 Grant,旨在帮助开发者和区块链爱好者获取最新的黑客松资讯,鼓励他们了解并根据自身情况参与不同的黑客松,更好地建设 Web3 生态。 2023 Wint…

被保留的IP地址:潜在用途和管理策略

在互联网的底层,存在一些特定范围的IP地址被保留,不分配给特定的设备或组织。这些被保留的IP地址有着特殊的用途,涉及网络通信、安全性和私有网络等方面。本文将深入探讨被保留的IP地址的潜在用途以及管理策略。 1. 被保留的IP地址范围 被保留…

【算法基础】分解质因数

文章目录 什么是分解质因数具体案例输入格式输出格式数据范围 原理讲解原始方法转换思路利用试除法判定质数的思路为什么不需要单独判断是否为质数 什么是分解质因数 分解质因数是指将一个合数用质因数相乘的形式表示出来,即将一个合数分解为若干个质数的乘积。其中…

接口自动化测试如何实现?5个步骤轻松拿捏!

最近接到一个接口自动化测试的case,并展开了一些调研工作,最后发现,使用pytest测试框架并以数据驱动的方式执行测试用例,可以很好的实现自动化测试。这种方式最大的优点在于后续进行用例维护的时候对已有的测试脚本影响很小。当然…

python+requests接口自动化完整项目设计源码

前言 有很多小伙伴吵着要完整的项目源码,完整的项目属于公司内部的代码,这个是没法分享的,违反职业道德了,就算别人分享了,也只适用于本公司内部的业务。 所以用例的代码还是得自己去一个个写,我只能分享…

4.4.2.1 内部类

内部类 成员内部类 定义 调用内部类 访问修饰符的影响 外部类的成员变量及成员方法在内部类的使用 内部类在外部类的使用 静态内部类 静态内部类调用非静态外部类 1

乡村电商人才齐聚浙江建德,这场农播氛围值已拉满!

“3、2、1,上链接!” “现场营造了很好的交流氛围,碰撞出了不少合作机会。” “农播让我们有机会为家乡农产品代言,并且通过电商平台,把优质农特产品卖到全国各地。” “就像是一个演员需要一个舞台,一个好产品也需…

企业邮箱认证指南:安全与高效的邮箱认证方法

企业邮箱是专门为企业提供的电子邮件服务,安全性和专业性更高。在开始使用企业邮箱之前,很多人会有一些问题,比如企业邮箱需要认证吗、如何开通企业邮箱,以及哪款企业邮箱好。 1、企业邮箱在使用前需要认证吗? 答案是肯…

数据结构(c语言版本) 二叉树的遍历

要求 实现二叉树的创建,并输入二叉树数据 然后先序遍历输出二叉树、中序遍历输出二叉树、后序输出二叉树 例如二叉树为: 该二叉树的先序遍历结果为: A B D C E F 该二叉树的中序遍历结果为: B D A E C F 该二叉树的后序遍历结果…
最新文章