当前位置: 首页 > article >正文

ELK zookeeper kafka

elk:统一日志收集系统

elasticsearch:分布式的全索引引擎的非关系型数据库

存储所有的日志信息,主和从 最少需要2台

logstash:动态的从各种指定的数据源,获取数据,而且对数据进行过滤,分析。

按照统一的格式发送到es

kibana:把es的数据进行展示,进行客户端可以理解的操作,汇总,分析和搜索数据的平台。

1两台服务器,好解决。

工作原理:

1、logstash收集日志数据

2、收集到的数据按照es的格式,发送到数据库

3、在图形界面展示--kibana

4、客户端访问kibana

数据库,99%都是物理服务器

nginx可以是微服务

redis可以是微服务部署

keep/lvs?   docker可以部署,k8s不需要

elk

物理服务器:

8核16G/32G   cpu和内核

16核32G

硬盘: 500G   机械硬盘

硬盘:1T 固态

品牌: 华为

ELK的安装

test1  es1

test2 es2

test3  logstash   kibana

安装es  logstash 内存不能少于4G

安装elasticsearch

安装java          java -version

清理内核的命令

echo 3 > /proc/sys/vm/drop_caches

test1

test2

test3

echo 3 > /proc/sys/vm/drop_caches

安装kibana        logstash

建立软连接

      

收集日志

-f file  从指定文件开始收集

--path.data /opt/test1 每开启一个logstash就会有一个数据文件,默认都在/var/log/logstash

elk的架构

es数据库  非关系型数据库,json格式

logstash   收集日志

kibana   图形化的工具

filebeat是一款轻量级的日志收集工具,不依赖java环境,

用来替代在机器上没有java环境的情况下进行日志收集。

filebeat启动收集日志,只要10M左右内存。

mysql1

general_log=on
general_log_file=/usr/local/mysql/data/mysql_general.log
 


 

logstash的端口,不是一定是5044,可以是任意端口,5044是logstash的默认端口

-e:输出格式为标准输出

-c:指定配置文件

test3

zookeeper

zookeeper:开源的分布式框架协调服务


zookeeper的工作机制

基于观察者模式设计的分布式结构,复制存储和管理架构当中的元信息,架构当中的应用接受观察者的监控,一旦数据有变化,通知对于的zookeeper,保存变化的信息。

zookeeper特点
1、最少要有3台服务器,一个领导者(leader),多个跟随者(follower)。
2、zookeeper要有半数以上的节点存货,整个架构就可以正常工作,所有都是奇数台部署
3、全局数据一致
4、数据更新的原子性,要么都成功,要么都失败。
5、实时性

zookeeper的数据结构

1、统一的命名服务,不是以IP来记录,可以用域名也可以是主机名来记录信息。
2、统一配置管理,所有的节点信息的配置要是一致的。
3、统一的集群管理,在整个分布式的环境中,必须实时的掌握每个节点的状态,如果状态发生变化,要及时更新。

nginx1 2 3

1:指的是服务器的序号

192.168.233.61:对应服务器的ip地址

3188: leader和follower之间交换信息的端口

3288:选举端口

对应主机按照序号分别创建 myid文件

kafka

kafka信息队列:

服务端向客户端发送一个指令,客户端收到指令并且通过这个指令反馈到服务器,完成一个异步方式的通信的流程。

kafka信息队列------->大数据场景非常合适

rabbitMQ------------->适合小场景的数据请求

activeMQ--------------->适合小场景的数据请求

信息队列的应用场景:

1、异步处理

用户的短信验证码,邮件通知

2、系统解耦

微服务架构中的服务之间的通信

降低各个组件之间的依赖程度(耦合度),提高组件的灵活性和可维护性

3、负载均衡

高并发系统中的任务处理

信息队列把多个任务分发到多个消费者实列,电商平台的订单系统

4、流量控制和限流

根据api请求来进行处理,通过控制信息的生产速度和消费的处理速度来完成限流。

端口:应用和应用之间通信

api接口:应用程序内部各个组件之间通信的方式

5、任务调度和定时任务:

信息队列可以定时的进行任务调度,按照消费者的计划生成对应的数据

6、数据同步和分发:

日志收集和数据收集

远程实现数据的统一管理

7、实时数据处理

8、备份和恢复

信息队列的模式:

1、点对点,一对一,生产者生产消息,这个是一对一的。

2、发布/订阅模式

消息的生产者发布一个主题,其他的消费者订阅这个主题,从而实现一对多。

主题:topic

kafka组件的名称

1、主题 topic,主题是kafka数据流的一个基本的单元,类似于数据的管道,生产者将消息发布到主题,其他的消费者订阅主题,来消费消息,主题可以被分区,分区有偏移量

2、生产者:将消息写入主题和分区

3、消费者:从分区和主题当中接受发布的消息,一个消费者可以订阅多个主题。

4、分区:一个主题可以被分为多个分区,每个分区都是数据的有序的子集,分区越多,消费者消费的速度就越快,避免生产者的消费堆积。分区当中有偏移量,按照偏移量进行有序存储,消费者可以独立的读写每个分区的数据。

如何读取分区的数据,一般是不考虑的。只有在消息出现堆积的时候,会考虑扩展分区数。

kafka的消费堆积出现应该如何处理:

消费者没有及时处理掉生产者发布的消息,导致消息堆积。

1、扩展分区数

5、偏移量:消息在分区当中的唯一标识,根据偏移量指定消费者获取消息的位置。

6、经纪人:zookeeper,存储分区的信息,kafka集群的元数据。

kafka消息出现堆积应该如何处理:

扩大分区的数量

kafka数据流向图

nginx1 2  3

不可以相同

可以设置一样的大小

添加kafka的全局变量

可以不做

一起启动

创建主题

nginx1

kafka-topics.sh --create --bootstrap-server                                                                     192.168.233.61:9092,192.168.233.62:9092,192.168.233.63:9092 --replication-factor 2 --partitions 3 --topic test1

--bootstrap-server   :这里的地址一般是一个集群当中地址即可,默认的我们包含所有。

--replication-factor:定义主题的副本数2个副本  2-4个   副本是偶数。

partitions 3: 定义分区数   3   6个

生产消息  

发布消息

查看kafka当前集群的主题数

nginx2

消费消息

nginx3

export KAFKA_HOME=/usr/local/kafka
export PATH=$PATH:$KAFKA_HOME/bin

如何修改主题的分区数:

leader:每一个分区都有一个leader

领导者负责处理分区的读写操作

0

1

2

Replicas:副本数0  1  2 分别对应每个leader

lsr:表示和哪个leader进行同步

Partition:分区的编号

修改分区数

删除主题

查看主题

完整数据架构

mysql1

test3

开启

logstash -f kafka.conf --path.data /opt/testa &

nginx1

启动消费者


http://www.kler.cn/a/465896.html

相关文章:

  • numpy数组学习
  • 【JAVA】用于控制流程的关键字 break、continue、return 使用场景,注意事项和实例
  • ValuesRAG:以检索增强情境学习强化文化对齐
  • 【PS不常见教程】实操篇之通道抠图-抠黑色背景的图片
  • C语言:调试的概念和调试器的选择
  • 【NX入门篇】
  • 基于Matlab的变压器仿真模型建模方法(12):单相降压自耦变压器的等效电路和仿真模型
  • 供需平台信息发布付费查看小程序系统开发方案
  • Linux内核 -- Netlink多播组消息处理技术
  • STM32-笔记30-编程实现esp8266联网功能
  • Unity-Mirror网络框架-从入门到精通之Benchmark示例
  • [python SQLAlchemy数据库操作入门]-19.使用复合条件构建复杂查询
  • 猴子吃桃.
  • Golang的并发编程实战经验
  • 【2024最新】基于Python+Mysql+Django+Vue网上商城的设计与实现Lw+PPT
  • AI 自动化编程:现状、挑战与未来发展
  • STM32 和 ESP32
  • 打开idea开发软件停留在加载弹出框页面进不去
  • 蛋白互作组学系列丨(三)IP-MS方案设计
  • 多层设计模式:可否设计各层之间公用的数据定义模块?
  • ubuntu24.04使用open-vm-tools无法在主机和虚拟机之间拖拽文件夹
  • 本地测试文件解析
  • Qt 5.14.2 学习记录 —— 사 信号与槽机制(1)
  • 黑马JavaWeb开发跟学(十四).SpringBootWeb原理
  • 基于Swarm的大模型应用:一个天气助手
  • uniapp Stripe 支付