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

【日志系列】什么是分布式日志系统?

在这里插入图片描述

✔️什么是分布式日志系统?


现在,很多应用都是集群部署的,一次请求会因为负载均衡而被路由到不同的服务器上面,这就导致一个应用的日志会分散在不同的服务器上面。


当我们要向通过日志做数据分析,问题排查的时候,就需要分别到每台机器上去查看日志,这样就太麻烦了。


于是就有了分布式日志系统,他可以做分布式系统中的日志的统一收集、存储及管理。并且提供好的可用性、扩展性。


在这里插入图片描述

一个好的分布式日志系统,应该具备数据采集、数据加工、查询分析、监控报警、日志审计等功能。有了分布式日志系统,我们就可以做集中化的日志管理, (准)实时性的做日志查询及分析,快速的做问题排查,更好的做数据分析及挖掘。


比较主流的这类日志管理系统有ELK、Graylog、Apache Flume,还有很多类似的云产品,如阿里云的SLS。


一般来说,如果资金够就上SLS,不够就自建ELK。


实现分布式日志系统需要使用分布式系统的一些基本概念和技术,例如消息传递、数据复制和分布式一致性协议。在Java中实现分布式日志系统可以使用一些现有的框架和库,例如Apache Kafka或Logstash。


看一个Demo:


import java.util.Properties;  
import java.util.concurrent.ExecutorService;  
import java.util.concurrent.Executors;  
import java.util.concurrent.TimeUnit;  
import org.apache.kafka.clients.producer.*;  /**
*    一个分布式日志系统的Demo、包括日志的收集、处理、存储和检索功能
*    
*/  
public class DistributedLogSystem {  public static void main(String[] args) {  // 创建日志收集器线程池  ExecutorService collectorPool = Executors.newFixedThreadPool(10);  // 创建Kafka生产者配置  Properties props = new Properties();  props.put("bootstrap.servers", "localhost:9092");  props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");  props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");  // 创建Kafka生产者  Producer<String, String> producer = new KafkaProducer<>(props);  // 启动日志收集器线程  for (int i = 0; i < 10; i++) {  final int threadId = i;  collectorPool.submit(() -> {  try {  // 模拟日志收集逻辑  for (int j = 0; j < 1000; j++) {  String topic = "logs";  String message = "Log message " + threadId + "_" + j;  ProducerRecord<String, String> record = new ProducerRecord<>(topic, message);  producer.send(record);  }  } catch (Exception e) {  e.printStackTrace();  }  });  }  // 关闭日志收集器线程池和Kafka生产者  collectorPool.shutdown();  try {  if (!collectorPool.awaitTermination(60, TimeUnit.SECONDS)) {  collectorPool.shutdownNow();  }  producer.close();  } catch (InterruptedException e) {  collectorPool.shutdownNow();  producer.close();  Thread.currentThread().interrupt();  }  }  
}

上面这个Demo中,首先创建了一个线程池用于日志收集器线程,然后创建了一个Kafka生产者对象。接着,使用线程池启动了10个日志收集器线程,每个线程模拟日志收集逻辑,并将收集到的日志消息发送到Kafka中。最后,关闭了日志收集器线程池和Kafka生产者对象。


✔️扩展知识仓


ELK


ELK是三个开源软件的缩写,分别表示: Elasticsearch,Logstash,Kibana。


Elasticsearch是个开源分布式搜索引擎,提供分析、存储数据等功能


Logstash主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式


Kibana也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。


所以,通常是使用Logstash做日志的采集与过滤,ES做分析和查询,Kibana做图形化界面


在这里插入图片描述

相关文章:

【日志系列】什么是分布式日志系统?

✔️什么是分布式日志系统&#xff1f; 现在&#xff0c;很多应用都是集群部署的&#xff0c;一次请求会因为负载均衡而被路由到不同的服务器上面&#xff0c;这就导致一个应用的日志会分散在不同的服务器上面。 当我们要向通过日志做数据分析&#xff0c;问题排查的时候&#…...

[卷积神经网络]FCOS--仅使用卷积的Anchor Free目标检测

项目源码&#xff1a; FCOShttps://github.com/tianzhi0549/FCOS/ 一、概述 作为一种Anchor Free的目标检测网络&#xff0c;FCOS并不依赖锚框&#xff0c;这点类似于YOLOx和CenterNet&#xff0c;但CenterNet的思路是寻找目标的中心点&#xff0c;而FCOS则是寻找每个像素点&…...

Ubuntu fcitx Install

ubuntu经常出现键盘失灵的问题 查询资料得知应该是Ibus框架的问题 于是需要安装fcitx框架和搜狗拼音 sudo apt update sudo apt install fcitx 设置fcitx开机自启动&#xff08;建议&#xff09; sudo cp /usr/share/applications/fcitx.desktop /etc/xdg/autostart/ 然后…...

【Makefile/GNU Make】知识总结

文章目录 1. 总体认识2. 编写Makefile2.1. Makefile的组成2.2. Makefile文件名2.3. 包含其他Makefile 3. 编写规则4. 编写规则中的构建命令5. 如何使用变量6. 条件判断7. 转换文本的函数8. 如何运行make9. 使用模糊规则10. 使用make来更新存档文件11. 扩展GNU make12. 集成GNU …...

腾讯云轻量服务器和云服务器CVM该怎么选?区别一览

腾讯云轻量服务器和云服务器CVM该怎么选&#xff1f;不差钱选云服务器CVM&#xff0c;追求性价比选择轻量应用服务器&#xff0c;轻量真优惠呀&#xff0c;活动 https://curl.qcloud.com/oRMoSucP 轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年&#xff0c;540元三…...

MySQL定时备份实现

一、备份数据库 –all-databases 备份所有数据库 /opt/mysqlcopy/all_$(date “%Y-%m-%d %H:%M:%S”).sql 备份地址 docker exec -it 容器名称 sh -c "mysqldump -u root -ppassword --all-databases > /opt/mysqlcopy/all_$(date "%Y-%m-%d %H:%M:%S").sq…...

Nginx 不同源Https请求Http 报strict-origin-when-cross-origin

原因&#xff1a; nginx代理配置url指向只开放了/* 而我/*/*多了一层路径 成功&#xff1a;...

openGauss学习笔记-175 openGauss 数据库运维-备份与恢复-导入数据-管理并发写入操作示例

文章目录 openGauss学习笔记-175 openGauss 数据库运维-备份与恢复-导入数据-管理并发写入操作示例175.1 相同表的INSERT和DELETE并发175.2 相同表的并发INSERT175.3 相同表的并发UPDATE175.4 数据导入和查询的并发 openGauss学习笔记-175 openGauss 数据库运维-备份与恢复-导入…...

pnpm、npm、yarn是什么?怎么选择?

pnpm、npm、yarn三者是前端常用的包管理器&#xff0c;那么他们有什么区别呢&#xff1f; 1. npm (Node Package Manager) npm是Node.js的默认包管理器。自Node.js发布以来&#xff0c;npm就一直作为它的一个组成部分存在&#xff0c;因此&#xff0c;安装Node.js时也会自动安…...

MySQL8 一键部署

#!/bin/bash ### 定义变量 mysql_download_urlhttps://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz mysql_package_namemysql-8.0.33-linux-glibc2.12-x86_64.tar.xz mysql_dec_namemysql-8.0.33-linux-glibc2.12-x86_64 mysql_download_…...

12 UVM Driver

目录 12.1 uvm_driver class hierarchy 12.2 How to write driver code? 12.3 UVM Driver example 12.4 How to get sequence items from the sequencer? 12.5 UVM driver methods 12.5.1 Using get_next_item/ try_next_item and item_done methods 12.5.2 Using get…...

“暂存”校验逻辑探讨

1、背景 在业务中可能会遇到这种场景&#xff0c;前端页面元素多且复杂&#xff0c;一次性填完提交耗时很长&#xff0c;中间中断面临着丢失数据的风险。针对这个问题&#xff0c;“暂存”应运而生。 那“暂存”的时候&#xff0c;是否需要对数据校验&#xff0c;如何进行校验…...

探究element-ui 2.15.8中<el-input>的keydown事件无效问题

一、问题描述 今天看到一个问题&#xff0c;在用Vue2element-ui 2.15.8开发时&#xff0c;使用input组件绑定keydown事件没有任何效果。 <template><div id"app"><el-input v-model"content" placeholder"请输入" keydown&quo…...

Unity 代码控制Text自适应文本高度

在使用代码给Text赋值时&#xff0c;且文本有多段&#xff0c;并需要根据实际文本高度适配Text组件的高度时&#xff0c;可以使用以下方法&#xff1a; //Text文本 public TextMeshProUGUI text;void Start() {//代码赋值文本text.text "好!\n很好!\n非常好!";//获…...

TiDB 7.1 多租户在中泰证券中的应用

本文详细介绍了中泰证券在系统国产化改造项目中采用 TiDB 多租户技术的实施过程。文章分析了中泰证券数据库系统现状以及引入 TiDB 资源管控技术的必要性&#xff0c;探讨了 TiDB 多租户的关键特性&#xff0c;并阐述了在实际应用中的具体操作步骤。通过该技术的应用&#xff0…...

嵌入式-stm32-SR04超声波测距介绍及实战

一&#xff1a;超声波传感器介绍 1.1、SR04超声波测距硬件模块 1.2、SR04的四个IO口 vcc:提供电源5V gnd:接地 Trig:是**发送**声波信号的触发器 Echo:是**接收**回波信号的引脚 当TRIG信号被触发时&#xff0c;传感器会发送一定频率的声波信号&#xff0c;该信号被反射后&am…...

智能优化算法应用:基于白鲸算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于白鲸算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于白鲸算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.白鲸算法4.实验参数设定5.算法结果6.参考文献7.MA…...

mac m1芯片 pytorch安装及gpu性能测试

pytorch 使用mac的m1芯片进行模型训练。 #小结&#xff1a;在数据量小和模型参数少&#xff0c;batch_size小时&#xff0c;cpu训练更快&#xff08;原因&#xff1a;每次训练时数据需要放入GPU中&#xff0c;由于batch_size小。数据放入gpu比模型计算时间还长&#xff09; 在…...

go 使用 - sync.WaitGroup

使用 - sync.WaitGroup 简介使用注意点 简介 waitgroup 是等待一组并发操作完成得方法。Goroutines对Go来说是独一无二的&#xff08;尽管其他一些语言有类似的并发原语&#xff09;。它们不是操作系统线程&#xff0c;它们不完全是绿色的线程(由语言运行时管理的线程)&#x…...

Java Web Day07-08_Layui

1. Layui概念介绍 layui&#xff08;谐音&#xff1a;类 UI) 是一套开源的 Web UI 解决方案&#xff0c;采用自身经典的模块化规范&#xff0c;并遵循原生 HTML/CSS/JS 的开发方式&#xff0c;极易上手&#xff0c;拿来即用。其风格简约轻盈&#xff0c;而组件优雅丰盈&#x…...

RT-Thread消息邮箱机制解析与应用实践

RT-Thread消息邮箱机制深度解析1. 消息邮箱概述1.1 线程通信基础机制在实时操作系统中&#xff0c;线程间通信(IPC)是系统设计的关键组成部分。RT-Thread提供了两种基础通信机制&#xff1a;消息邮箱和消息队列。消息邮箱以其轻量级和高效性著称&#xff0c;特别适合小数据量的…...

一、Cisco(静态端口映射实战:从零搭建外网可访问的多服务内网环境)

1. 环境准备与拓扑设计 第一次接触端口映射时&#xff0c;我也被那些专业术语搞得晕头转向。直到自己动手在Cisco Packet Tracer里搭了一套环境&#xff0c;才发现原来原理这么简单。这次我们就用最基础的设备&#xff0c;还原企业里常见的多服务发布场景。 实验设备清单就像搭…...

KMS_VL_ALL_AIO:Windows与Office授权管理全场景解决方案

KMS_VL_ALL_AIO&#xff1a;Windows与Office授权管理全场景解决方案 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 你是否曾在重要会议前遭遇Office突然提示"未授权"导致文件无法编辑…...

别再只调API了!手把手教你用Python和OpenCV自定义Laplacian算子,玩转图像边缘检测

从零构建Laplacian算子&#xff1a;用Python和OpenCV揭开边缘检测的数学面纱 在计算机视觉领域&#xff0c;边缘检测是图像分析的基础操作之一。大多数开发者习惯直接调用OpenCV的cv2.Laplacian函数&#xff0c;却很少思考背后的数学原理。本文将带你从卷积核的底层设计出发&a…...

CM1数值模拟新手避坑指南:从namelist.input配置到并行计算实战

CM1数值模拟新手避坑指南&#xff1a;从namelist.input配置到并行计算实战 刚接触CM1模式的研究人员常常会在配置文件和并行计算环节踩坑——某个参数设置不当可能导致数小时的计算结果突然崩溃&#xff0c;或是并行效率低下浪费计算资源。本文将用真实案例拆解那些文档里没写…...

EMQX Dashboard 5.1新手指南:从安装到安全配置的完整流程

EMQX Dashboard 5.1新手指南&#xff1a;从安装到安全配置的完整流程 在物联网和实时消息传递领域&#xff0c;EMQX作为一款高性能的MQTT消息服务器&#xff0c;已经成为众多企业构建可靠物联网平台的首选。而EMQX Dashboard作为其内置的Web管理控制台&#xff0c;在5.1版本中迎…...

从RGB-D到3D语义分割:用Scannet v2的25k帧子集快速上手你的第一个模型

从RGB-D到3D语义分割&#xff1a;Scannet v2实战指南 在计算机视觉领域&#xff0c;3D场景理解正成为研究热点。Scannet v2作为包含丰富标注的RGB-D数据集&#xff0c;为初学者和专业开发者提供了理想的实验平台。本文将带您快速上手这个强大的工具集&#xff0c;从数据获取到模…...

AI驱动的3D建模革命:PIFuHD开源工具让零基础用户轻松创建高精度数字人

AI驱动的3D建模革命&#xff1a;PIFuHD开源工具让零基础用户轻松创建高精度数字人 【免费下载链接】pifuhd High-Resolution 3D Human Digitization from A Single Image. 项目地址: https://gitcode.com/gh_mirrors/pi/pifuhd 在数字内容创作、游戏开发和AR/VR应用领域…...

最强AI剪辑工具盘点:免费直接用,小白秒变剪辑大师!

一、AI视频剪辑新时代&#xff1a;为什么选择这些工具&#xff1f; 2025年的AI视频工具已经不再是简单的滤镜和特效叠加&#xff0c;而是真正能够理解内容、自动完成剪辑全流程的智能助手。根据权威评测&#xff0c;真正优秀的AI剪辑工具应该具备以下特点&#xff1a; 真正免费…...

Keil多工程工作空间创建与管理实践

Keil系列教程14&#xff1a;创建多工程工作空间的技术实践1. 项目概述在嵌入式开发中&#xff0c;当项目复杂度增加时&#xff0c;往往需要管理多个相互关联的工程。Keil MDK-ARM开发环境提供了多工程工作空间&#xff08;Multi-Project Workspace&#xff09;功能&#xff0c;…...