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) 装饰器模式是一种结构型设计模式,它允许你动态地将责任附加到对象上ÿ…...

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…...

stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...

中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...

毫米波雷达基础理论(3D+4D)
3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
在工业制造领域,无损检测(NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统,以非接触式光学麦克风技术为核心,打破传统检测瓶颈,为半导体、航空航天、汽车制造等行业提供了高灵敏…...

tauri项目,如何在rust端读取电脑环境变量
如果想在前端通过调用来获取环境变量的值,可以通过标准的依赖: std::env::var(name).ok() 想在前端通过调用来获取,可以写一个command函数: #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...