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

filebeat、kafka

elk的架构

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

logstash:收集日志

kibana:图形化的工具


以上三种结合起来即为日志收集系统

filebeat

  • 作用:filebeat是一款轻量级的日志收集工具,不依赖java环境,用来替代在机器上没有java环境的情况下进行日志收集

filebeat启动收集日志,只要10m左右的内存
在这里插入图片描述

filebeat.inputs:type: logenabled: truepaths:- /var/log/nginx/access.log- /var/log/nginx/error.logtags: ["nginx"]#标签,为了后续logstash进行识别的fields:service_name: 192.168.233.21 nginx#设定显示的索引名称log_type: nginxfrom: 192.168.233.21
  type: logenabled: truepaths:- /usr/local/mysql/data/mysql_general.logtags: ["mysql"]fields:service_name: 192.168.233.21_mysqllog_type: mysqlfrom: 192.168.233.21

zookeeper + kafka

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

zookeeper的工作机制:
1、基于观察者模式设计的分布式结构,负责存储和管理架构当中的元信息,架构当中的应用接受观察者的监控,一旦数据有变化,它会通知对应的zookeeper,保存变化的信息

特点:

  • 1、最少要有3台机器,一个领导者(leader),多个跟随者(follower)组成

  • 2、zookeeper要有半数以上的节点存活,集群就可正常工作,所以都是奇数台部署

  • 3、全局数据一致

  • 4、数据更新的原子性:要么都成功,要么都失败

  • 5、实时性

zookeeper的数据架构:

1、统一命名服务,不是以ip来记录,可以用域名也可以用主机名来记录信息

2、统一配置管理,所有节点信息的配置要一致

3、统一集群管理,在整个分布式的环境中,必须实时的掌握每个节点的状态,如果状态发生变化,要及时更新

在这里插入图片描述

kafka消息队列

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

kafka消息队列 -----------》大数据场景非常合适

rabbitMQ ------------》适合处理小场景的数据请求

activeMQ -------------》适合处理小场景的数据请求

消息队列的应用场景

1、异步处理

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

2、系统解耦

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

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

3、负载均衡

  • 高并发系统中的任务处理

4、流量控制和限流

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

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

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

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

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

6、数据同步和分发:

  • 日志收集和数据收集

  • 远程的实现数据的统一管理

7、实时数据处理

8、备份和恢复

消息队列的模式:

1、点对点(1对1),生产者生产消息,消费者消费

2、发布/订阅模式

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

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

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

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

4、分区:一个主题可以被分为多个分区,每个分区都是数据的有序的子集,分区越多,消费者消费的速度就越快,可以避免生产者的消费堆积,分区当中有偏移量,按照偏移量进行有序存储,消费者可以独立的读写每个分区的数据,一般是不考虑的,只有在消息出现堆积的时候,会考虑扩展分区数

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

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

1、扩展分区数

5、偏移量:消息在分区当中的唯一标识
test1 test2 test3 分区1

0 1 2

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

在这里插入图片描述

log.retention.hours=168(单位为小时,即7天,默认是7天)
消费队列当中,数据保存的最大时间

./kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties
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个副本,不宜超过6个,影响性能,副本数必须是偶数

–partitions 3:定义分区数

./kafka-topics.sh --list --bootstrap-server 192.168.233.61:9092:查看主题数

kafka-console-consumer.sh --bootstrap-server 192.168.233.61:9092,192.168.233.62:9092,192.168.233.63:9092 --topic test1 --from-beginning(消费)

kafka-console-producer.sh --broker-list 192.168.233.61:9092,192.168.233.62:9092,192.168.233.63:9092 --topic test1(生产)

  • 修改主题的分区数:

kafka-topics.sh --bootstrap-server 192.168.233.61:9092,192.168.233.62:9092,192.168.233.63:9092 --alter --topic test1 --partitions 6

在这里插入图片描述

Topic: test1 TopicId: 2vuwpY75Qj2bk2e9EYS4Vg PartitionCount: 3 ReplicationFactor: 2 Configs:Topic: test1 Partition: 0 Leader: 1 Replicas: 1,0 Isr: 1,0
Topic: test1 Partition: 1 Leader: 0 Replicas: 0,2 Isr: 0,2
Topic: test1 Partition: 2 Leader: 2 Replicas: 2,1 Isr: 2,1

leader: 每一个分区都有一个leader
领导者负责处理分区的读写操作

Replicas: 副本数0 1 2分别对应每个leader
Isr: 表示和哪个leader进行同步
Partition: 分区的数量

  • 删除topic:

kafka-topics.sh --delete --bootstrap-server 192.168.233.61:9092,192.168.233.62:9092,192.168.233.63:9092 --topic test1

在这里插入图片描述

filebeat在kafka集群上创建主题

kafka {bootstrap_servers => "192.168.233.61:9092,192.168.233.62:9092,192.168.233.63:9092"topics => "nginx_mysql"type => "nginx_kafka"codec => "json"指定数据的格式是jsonauto_offset_reset => "latest"latest:从尾部开始earliest: 从头部开始decorate_events => true传递给es的数据额外的附加kafka的属性数据
}
input {kafka {bootstrap_servers => "192.168.233.61:9092,192.168.233.62:9092,192.168.233.63:9092"topics => "nginx_mysql"type => "nginx_kakfa"codec => "json"auto_offset_reset => "latest"decorate_events => true
}
}
output {if "nginx-1" in [tags] {elasticsearch {hosts => ["192.168.233.10:9200","192.168.233.20:9200"]index => "%{[fields][service_name]}-%{+YYYY.MM.dd}"}}if "mysql-1" in [tags] {elasticsearch {hosts => ["192.168.233.10:9200","192.168.233.20:9200"]index => "%{[fields][service_name]}-%{+YYYY.MM.dd}"}}
}

相关文章:

filebeat、kafka

elk的架构 es数据库:非关系型数据库,json格式 logstash:收集日志 kibana:图形化的工具 ↓ 以上三种结合起来即为日志收集系统 filebeat 作用:filebeat是一款轻量级的日志收集工具,不依赖java环境&…...

js单例模式

保证一个类只有一个实例,并提供一个访问它的全局访问点 实现 静态方法实现 class SingleTon{//全局的访问点static getInstance(){// 保证一个类只有一个实例if(!this.instance){this.instancenew SingleTon()}return this.instance}}let aSingleTon.getInstance()let bSing…...

【设计模式】装饰器与代理模式的对比

文章目录 装饰器模式(Decorator Pattern)代理模式(Proxy Pattern)两者之间的区别 装饰器模式(Decorator Pattern) 装饰器模式是一种结构型设计模式,它允许你动态地将责任附加到对象上&#xff…...

Proteus-8086调试汇编格式的一点心得

这阵子开始做汇编的微机实验(微机原理与接口技术题解及实验指导,吴宁版本13章),中间出了挺多问题,解决后记录下。 先上电路图 用子电路来仿真发现仿真的时候子电路这块根本没有高低电平输出,只好把子电路拿…...

什么是Kafka?有什么主要用途?

大家好,我是锋哥。今天分享关于【什么是Kafka?有什么主要用途?】面试题。希望对大家有帮助; 什么是Kafka?有什么主要用途? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Kafka 是一个分布式流…...

SpringBoot插件

SpringBoot的插件机制是其强大灵活性的重要体现,它允许开发人员将应用程序的不同功能模块打包为独立的插件,并可以动态地加载和卸载这些插件。以下是对SpringBoot插件机制的详细解析: 一、插件机制的概念 插件机制是一种软件开发方法&#…...

UE 5.3 C++ 管理POI 如何对WidgetComponent 屏幕模式进行点击

一.首先对很多对 World 模式下的点击,选择接受 硬件输入,就可以实现点击。 二。Screen 模式下,的POI。如果想要点击, 设置好 Layers。 在Widget下,加个Button。 即使上面有其他,但也能点击到。 。 如果相…...

Nginx实现接口复制

目录 1、前言 2、接口流复制 2.1、方式一:使用mirror指令 2.1.1、nginx配置 2.1.2、配置说明 2.1.3、测试结果 2.1.4、注意事项 2.2、方式二:使用Lua 2.2.1、安装Openresty 2.2.2、nginx配置 2.2.3、配置说明 2.2.4、测试结果 3、小结 1、前…...

Selenium 八大元素定位方法及场景扩展

Selenium 提供了八种常见的元素定位方法,用于在网页中准确找到需要操作的元素。以下是详细介绍以及一些特殊场景的解决方案。 1. ID 定位 用法: 通过元素的唯一 id 属性进行定位。 element driver.find_element(By.ID, "element_id")使用场…...

WebRTC 的优缺点详细解析

在当今数字化浪潮中,WebRTC技术凭借其独特优势,在众多联网平台中得以广泛应用,为实时通信带来了革命性变化。然而,如同任何技术一样,它也并非十全十美,存在着一些有待攻克的短板。 一、WebRTC的优点 卓越…...

B树及其Java实现详解

文章目录 B树及其Java实现详解一、引言二、B树基础1、B树定义2、B树约束 三、B树Java实现1、B树节点实现2、B树操作2.1、搜索2.2、插入2.3、删除 3、B树的Java代码实现 四、总结 B树及其Java实现详解 一、引言 B树是一种多路平衡查找树,广泛应用于数据库和文件系统…...

下载ffmpeg执行文件

打开网址:Download FFmpeg 按下面步骤操作 解压文件就可以看到ffmpeg的执行文件了,需要通过命令行进行使用: ffmpeg命令行使用参考: ffmpeg 常用命令-CSDN博客...

Redis高频知识点

Redis 目录 1 Redis是AP的还是CP的?2 介绍一下Redis的集群方案?3 什么是Redis的数据分片?4 Redis为什么这么快?5 Redis 的事务机制是怎样的?7 Redis的持久化机制是怎样的?8 Redis 的过期策略是怎么样的&a…...

Boost.Asio 同步读写及客户端 - 服务器实现详解

Boost.Asio 同步读写及客户端 - 服务器实现详解 参考文献 Boost.Asio 官方文档学习资料来源: 参考网址 一、引言 Boost.Asio作为一个强大的跨平台网络编程库,为开发者提供了丰富的网络操作接口。在之前的学习中,我们已接触到其同步读写的API函数&…...

LeetCode 3019.按键变更的次数:遍历(转小写)

【LetMeFly】3019.按键变更的次数:遍历(转小写) 力扣题目链接:https://leetcode.cn/problems/number-of-changing-keys/ 给你一个下标从 0 开始的字符串 s ,该字符串由用户输入。按键变更的定义是:使用与…...

ETCD未授权测试

一、测试环境搭建 首先拉取etcd镜像 docker pull quay.io/coreos/etcd:v3.3.1 # 查看镜像 docker images创建自定义网络 docker network create --driver bridge --subnet172.16.1.0/16 --gateway172.16.1.1 mynet # 查看网络 docker network ls创建etcd节点 节点1: docke…...

【Hystrix-1】Hystrix:构建弹性分布式系统的基石

在分布式系统的广袤星图中,服务间的调用如同星辰间的引力,维系着系统的运转。然而,这种依赖关系也如同达摩克利斯之剑,一旦某个服务出现故障,便可能引发连锁反应,导致整个系统的崩塌。Hystrix,如…...

【超详细】MIT 液态神经网络(LNNs)——深度学习新动向

✅作者简介:双一流博士,人工智能领域学习者,深耕机器学习,交叉学科实践者。已发表SCI1/区top论文10+,授权专利4件,公开10+。可提供专利思路和指导,提供科研小工具,分享科研经验,欢迎交流! 📌个人主页: https://blog.csdn.net/allein_STR?spm=1011.2559.3001.5343…...

Git最便捷的迁移方式

#当公司要求git需要迁移时,你是不是感觉到束手无策。今天带来给大家最快,最便捷的迁移方式 这个命令是用于重命名git仓库中的远程仓库名。在这个命令中,我们将远程仓库的名字从"origin"改为"old-origin"。 git remote …...

2024AAAI SCTNet论文阅读笔记

文章目录 SCTNet: Single-Branch CNN with Transformer Semantic Information for Real-Time Segmentation摘要背景创新点方法Conv-Former Block卷积注意力机制前馈网络FFN 语义信息对齐模块主干特征对齐共享解码头对齐 总体架构backbone解码器头 对齐损失 实验SOTA效果对比Cit…...

ES6从入门到精通:前言

ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG

TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码:HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...

【UE5 C++】通过文件对话框获取选择文件的路径

目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 ,这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器,右键点击 .uproject 文件,选择 "Generate Visual Studio project files",重…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能

指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...

Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解

文章目录 一、开启慢查询日志,定位耗时SQL1.1 查看慢查询日志是否开启1.2 临时开启慢查询日志1.3 永久开启慢查询日志1.4 分析慢查询日志 二、使用EXPLAIN分析SQL执行计划2.1 EXPLAIN的基本使用2.2 EXPLAIN分析案例2.3 根据EXPLAIN结果优化SQL 三、使用SHOW PROFILE…...