UAVStack之文件数据归集「建议收藏」

UAVStack之文件数据归集「建议收藏」UAVStack之文件数据归集

大家好,又见面了,我是你们的朋友全栈君。

本周我们向大家介绍UAVStack中的文件数据归集功能。该功能可以有效解决日志查找费时和日志文件丢失等问题,帮助快速定位解决问题,规避日志访问权限可能带来的安全风险。

前言

在分布式微服务架构下,单个应用中往往包含很多实例。日常工作中,我们常常需要查看应用运行过程中产生的日志。但登陆服务器从大量实例中查找目标日志耗时耗力;有时日志文件还会在应用重启过程中丢失。

UAVStack的文件数据归集功能不仅能够集中所有业务的日志,方便工程师更加轻松地查找相关日志,进而快速定位、解决问题;还能省去服务器权限授予环节,有效规避日志访问权限可能带来的安全风险。

架构

归集的文件数据包含应用日志、调用链跟踪、浏览器跟踪和线程分析的数据;也可以在启动参数中配置任意文件路径,配置其它任意文件;还支持UAVStack自身日志文件的归集控制。整体架构如下:

图片描述

● Source:落盘后的数据文件,包括应用日志文件、调用链数据文件、浏览器数据文件和线程分析数据文件。

● 日志采集器:文件数据采集端,负责数据读取、过滤以及上送。

● Channel:数据消费队列,UAVStack使用的消息队列是RocketMQ。

● Sink:从Channel中拉取文件数据,分发到别处。UAVStack默认分发到数据库ElasticSearch,用于存储归集上送的文件数据。

采集模块

UAVStack的文件数据归集是MonitorAgent的Feature。MonitorAgent以守护进程的形式部署,如若死掉将会立即重启,重启后可继续归集文件数据。主要模块如下:

图片描述

● 归集任务控制器:控制下发归集的任务,包括正在运行的任务和已存在的任务;定时轮询归集任务,构建可执行的归集任务。

● 归集任务调度器:定时调度归集任务。

● 任务:执行文件数据归集任务。

● 数据读取器:读取、过滤文件数据。

● 数据发布器:发布已读取上来的文件数据。

归集过程

图片描述

● 开启归集:文件数据归集模块自动发现应用日志的画像信息,并进行处理,判断应用日志画像信息是否更新;用户可控制应用日志、调用链跟踪、浏览器跟踪和线程分析的归集功能。AppHub支持启停文件数据归集功能,可动态选择需要读取的文件。

● 归集任务下发:当用户触发归集后,AppHub端会开启文件数据归集任务并自动下发,生成数据归集任务,写到任务列表中,并持久化到本地文件task.cache中。

● 归集任务控制:定时任务轮询管理任务列表,分别构建可执行的归集任务,并通过ForkJoin提交。

● 文件数据读取:读取ForkJoin提交的每个任务。其中需要处理的日志文件都是通过具体的类进行操作处理。这些类包括RandomAccessFile类,其中seek()方法随机访问文件,read()方法读取文件数据。另外,数据位置定时更新任务能够将读取到的数据的位置更新到本地文件position.cache,供下一次文件读取使用。

● 文件数据过滤:根据配置的日志策略,对读取的日志进行正则表达式的匹配过滤,完成日志数据取舍。

● 文件数据发布:归集上来的日志数据,可按照不同的发布类型走不同的发布实现逻辑,发布到指定的目的地。UAVStack默认发布到RocketMQ中,并支持自定义发布。

另外,HM服务拉取RocketMQ中指定topic的日志数据,处理成相应的格式后存储到ElasticSearch数据库中。

文件数据展示

通过AppHub可以查看归集上来的应用日志、调用链跟踪、浏览器跟踪和线程分析的文件数据。由AppHub调用后台服务的http查询接口,通过HM日志数据服务读取数据库,进行文件数据的查询和展示,如下图所示:

图片描述

文件数据的展示效果如下:

图片描述

● 支持查看不同应用集群、应用实例和日志文件的归集数据。

● 支持按日、小时或分钟查看不同时间的文件数据。

● 支持按升序或降序查看文件数据。

● 支持关键字搜索,多个关键字用空格分开,表示“或”连接,即任意一个关键字匹配即可;多个关键字用“+”分开,表示“与”连接,即所有关键字都匹配的日志信息;如果同时使用空格和“+”,则“或”连接优先;如果关键字首尾都加“*”,则表示模糊匹配,展示所有匹配结果。

● 点击单行日志,支持向前、向后滚动查看日志信息,如下图:

图片描述

文件数据关联

对于归集上来的应用日志、调用链跟踪和浏览器跟踪数据,可进行相互关联;浏览器跟踪数据可关联调用链跟踪数据,调用链跟踪数据可关联应用日志数据,如下图所示:

图片描述

文件数据预警

归集后的文件数据支持预警,可针对文件数据中是否出现关键字或者关键字出现的次数配置预警策略。预警策略触发后可通过邮件、短信、微信等方式通知用户,也可通过Http形式通知第三方应用系统。

总结

UAVStack的文件数据收集功能已被广泛使用,是具备较高可用性和可靠性的分布式服务。如果需要归集的日志量较大,仅需增加UAVStack自身的HM服务,可扩展性较强。

官方网站:https://uavorg.github.io/main/

开源地址:https://github.com/uavorg

UAVStack已在Github上开放源码,并提供了安装部署、架构说明和用户指南等双语文档,欢迎访问-给星-拉取~~~

作者: 段德华 宜信技术学院

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107047.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • idea激活码失效2021年4月最新注册码【在线注册码/序列号/破解码】

    idea激活码失效2021年4月最新注册码【在线注册码/序列号/破解码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    36
  • 再生龙硬盘对拷使用教程_linux系统怎样备份

    再生龙硬盘对拷使用教程_linux系统怎样备份教程1再生龙备份恢复说明:准备两个u盘,一个做再生龙的启动盘,一个做存储镜像文件的盘1.下载再生龙2.下载工具tuxboot制作u启(1)https://sourceforge.net/projects/tuxboot/files/0.8/Windows/3.制作u盘启动盘(1)Clonezilla镜像:clonezilla-live-2.6.1-25-amd64.zip(2)Clon…

    2025年7月3日
    3
  • Java锁详解[通俗易懂]

    Java锁详解[通俗易懂]文章目录什么是锁锁的实现方式锁涉及的几个重要概念类锁和对象锁(重要)synchronized实现原理什么是锁计算机还是单线程的时代,下面代码中的count,始终只会被一个线程累加,调用addOne()10次,count的值一定就累加了10。publicclassTest{//计数器privateIntegercount=0;//累加…

    2022年7月8日
    22
  • matlab怎么表示二元函数,如何用Matlab画二元函数?[通俗易懂]

    matlab怎么表示二元函数,如何用Matlab画二元函数?[通俗易懂]1、首先打开matlab。2、在matlab当前目录空2113间右键5261。41023、然后点击new->M-File。4、然后将文件命令为hello.m。5、然后双击该文1653件,输入[Rmdm]=meshgrid(15:5:50,1:10);6、然后添加f=0.034488*(Rm.^1.9400).*(10^-0.0173*dm);7、接着添加surf(Rm,dm,f)…

    2025年9月29日
    2
  • Arduino 硬件编程语言基础学习入门

    Arduino 硬件编程语言基础学习入门1、Arduino程序必要的setup()和loop()voidsetup(){}voidloop(){}setup()函数中的代码只会被运行一次,通常用来做一些初始化工作;loop()中的代码会被无限次地重复运行,此函数为程序的主体部分。2、程序中的值2.1变量和常量常量是一个字面量,只可以表示一个特定的量。2.2变量类型…

    2022年4月19日
    114
  • hashcode方法实现_java重写hashcode方法

    hashcode方法实现_java重写hashcode方法详解Java中hashCode的作用以下是关于HashCode的官方文档定义:hashcode方法返回该对象的哈希码值。支持该方法是为哈希表提供一些优点,例如,java.util.Hashtable提供的哈希表。hashCode的常规协定是:在Java应用程序执行期间,在同一对象上多次调用hashCode方法时,必须一致地返回相同的整数,前提是对象上equals比较中所用的信息没有…

    2025年9月6日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号