LogHub 智能日志分析通用公开数据集-程序员宅基地

技术标签: 云原生  日志收集  可观测性  智能运维  公开数据集  日志分析  

01 数据驱动的智能运维

传统运维 是指通过网络监控、事件预警、业务调度、故障诊断与排障等手段,使服务处于长期稳定可用的状态。随着业务的发展、服务器规模的扩大,以及虚拟化技术的发展 ,运维工作扩展到了容量管理、弹性扩缩容、安全管理,以及故障分析根因定位等范围。

进一步的,云原生的概念被广泛关注 ,也对云原生时代下的运维工作提出了更高的要求,这就是云原生可观测性。不仅仅是系统监控和人工排障,可观测性是从系统内部出发,基于白盒化的思路去监测系统内部的运行情况,它贯穿应用开发的整个声明周期,通过分析应用的指标、日志和链路等数据,去构建完整的观测模型,从而实现故障诊断、根因分析和快速恢复

如此自动化 ️ 、智能化 的可观测性应用也得益于近些年来人工智能(AI,Artificial Intelligence)技术的发展,这也催生了另一个可观测领域的重要概念–智能运维(AIOps, Artificial Intelligence for IT Operations)智能运维是指通过机器学习等人工智能算法,自动地从来自于多种运维工具和设备的大规模数据中学习并总结规则,并作出决策的智能化运维方式 。智能运维能快速分析处理海量数据,并得出有效的运维决策,执行自动化脚本以实现对系统的整体运维,能有效运维大规模系统。

更简单 的理解:智能运维是人工智能技术在运维领域的应用。我们熟知在人工智能技术蓬勃发展的背后是我们所处的大数据时代,数据作为技术发展的基石,发挥出越来越重要的作用。智能运维技术的发展同样离不开海量运维数据的支撑,但是智能运维还处于 起步阶段 ,产业界和学界的结合不够密切,企业拥有大量运维数据但无法有效利用,而研究者无法获取真实生产数据使得很多智能运维技术无法成功部署到生产环境中。

为了打破这一僵局,有很多实验室和企业向社会公开生产环境中的真实运维数据,本文要介绍的就是其中之一 LogHub 一个大型的日志数据集集合

在这里插入图片描述

02 日志数据的价值与优势

LogHub 是一个大型的日志数据集集合,除了日志数据之外,智能运维技术分析的数据对象还包括很多其他的运维数据,这些 多源运维数据 总体上可以分为系统运行时数据和历史记录数据。历史记录数据通常是一些用于备份等行为的数据,如表单、系统更新文档等。与历史记录数据相比, 系统运行时数据更能够反映系统的动态特征及系统发生故障时的上下文信息,对未知故障具有更好的探测和表达能力

系统运行时数据主要包括监控数据日志数据,这也是传统运维最为关注的数据。监控数据一般是系统运行状态下的资源占用情况用于观察系统的状态和趋势 ,例如 CPU使用率、内存使用率、网络流量、进程数目以及进程资源使用率等。日志数据则是程序开发人员为辅助调试在程序中嵌入的打印输出代码所产生的文本数据 ,用以记录程序运行时的变量信息、程序执行状态等。

可以看出监控数据关注的是系统状态和粗粒度的应用状态,如系统资源使用情况、进程状态、服务状态等;而日志数据则更加关注细粒度的应用状态和跨组件的程序执行逻辑。所以对与故障诊断和根因定位等任务而言,日志数据相较监控数据更具优势 :

1️⃣日志能够支持更加细粒度的故障诊断与根因分析。根据监控数据的故障诊断往往只能定位到某一个资源指标出现异常波动,而基于日志数据的故障诊断技术可以定位到特定的出错日志及事件信息 。

2️⃣ 日志能够支持对程序执行逻辑的跟踪,实现跨组件、跨服务地捕捉程序执行异常和性能异常。每一条请求在系统内部的执行逻辑通常会经过多个组件或程序模块,每一个组件或程序模块均会输出日志,这些日志可以在一定程度上反映该请求的执行轨迹。通过对这些日志进行关联和建模,可以刻画复杂的请求执行路径,进而诊断故障组件及故障程序执行位置 。

3️⃣ 日志能够支持定位异常请求实例,并捕捉故障细节。根据监控数据的故障诊断偏重于统计意义上的故障症状,而基于日志数据的故障诊断则可以跟踪每一个请求实例,识别异常,并刻画异常请求执行路径上的相关细节 。

03 Loghub 数据集

系统运行时数据是运维的主要关注对象,而日志数据相较于监控数据包含更加丰富 的系统运行时信息而被广泛应用于软件系统的开发和维护。

我们已经提到过,不管是软件发展趋势,还是云原生概念,软件规模和复杂度是在确定性的增加的,这也导致日志量的快速增长 。为了高效和有效地处理这些大量日志,智能运维技术被提出,这些研究重点关注使用人工智能技术提供支持的智能日志分析。

我们也提到了,智能运维领域刚起步不久 ,由于缺乏公共日志数据集和必要的基准测试,智能运维技术中只有一小部分在工业中成功部署。为了填补学术界和工业界之间的这一重大差距,并促进对 AI 驱动的日志分析的更多研究,香港中文大学 的智能运维研究团队收集并组织了一个大型的日志数据集集合 loghub

Loghub 维护的日志数据集大小总计超过 77GB。其中一些日志是从以前的研究中发布的生产数据 ,而另一些日志是从他们的实验室系统中收集的真实数据 。这些日志来着各种类型的系统,如下图所示,目前包括分布式系统日志(Distributed systems)、超级计算机集群日志(Supercomputers)、操作系统日志(Operating systems)、移动应用日志(Mobile systems)、服务器应用日志(Server applications)和独立软件日志(Standalone software)

Loghub 日志数据集开源项目地址 |

在这里插入图片描述

04 分布式系统日志

笔者目前关注分布式系统日志较多,本文仅介绍 LogHub 中的分布式系统日志 ,其他类型的日志,如有需要可以参考文章 《Loghub: A Large Collection of System Log Datasets towards Automated Log Analytics

4.1 HDFS

​ HDFS(Hadoop Distributed File System)是一个被设计成适合运行在通用硬件上的分布式文件系统(Distributed File System)。HDFS 是一个高度容错性的系统,适合部署在廉价的机器上,并能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。loghub 中提供了两套 HDFS 日志数据:HDFS-1,HDFS-2

​ ️ HDFS-1 是在一个 203 个节点的 HDFS 集群中使用基准工作负载产生的,在日志产生过程中根据手工制定的规则通过人工来识别并标记异常 。这些日志数据根据块 ID 分割成称为追踪(trace)的日志序列,然后每条与块 ID 关联的追踪都被标记了正常或异常的标签。除此之外,HDFS-1日志数据集还包括具体异常类型的信息,所以也可以将它用于重复问题识别的研究。

​ ️ HDFS-2 则是在一个包括 1 个名称节点和 32 个数据节点的实验室环境中产生的,这些日志数据是节点级别的聚合收集。这是一个没有标签 的原生巨大数据集,日志量超过 16 GB,其中可能包含异常数据。

样例数据下载地址 HDFS-1

样例数据下载地址 HDFS-2

4.2 Hadoop

​ Hadoop是一种分布式数据和计算的框架。其底部是 HDFS 存储 Hadoop 集群中所有存储节点上的文件;HDFS 上层是 MapReduce 计算引擎,除了这两个核心部分还有数据仓库工具 Hive 和分布式数据库 Hbase等。这些组成元素的有机结合使得 Hadoop 很擅长存储大量的半结构化的数据集,数据可以随机存放,所以一个磁盘的失败并不会带来数据丢失;另外,Hadoop 也非常擅长分布式计算,能够快速地跨多台机器处理大型数据集合。

​ 这些特性让 Hadoop 大受欢迎,在工业界 得到了广泛的应用,也更多地被研究者所关注。loghub 中提供了由 46 个内核,跨越 5 台物理机的 Hadoop 集群产生的日志数据。这些日志数据记录的是 Hadoop 集群上 WordCountPageRank 两个测试应用的运行数据。为了模拟生产环境中的服务故障,在该 Hadoop 集群运行过程中通过如下三种方式注入故障:

  • 机器停机:在应用程序运行时,关闭一台服务器以模拟机器故障;
  • 网络断开连接:断开一台服务器与网络的连接以模拟网络连接失败;
  • 磁盘已满:引用运行期间,手动填满一台服务器的硬盘来模拟磁盘完全失败。

​ 在该数据集中提供了不同故障的标签 ,所以也可以用于重复问题识别的研究。

样例数据下载地址 Hadoop

4.3 OpenStack

​ OpenStack 是一种云操作系统 ️,可控制整个数据中心内的大型计算、存储和网络资源池。因为 OpenStack 是一个开源云计算软件,它由许多不同的组件构成,这些组件又可以通过一个独特的仪表盘进行管理,该仪表盘为管理员提供了完全控制权,同时授权最终用户通过 Web 界面配置资源。

​ Openstack 项目虽然诞生时间不长,但其发展之迅速,在云计算领域的影响力扩展,使得这个年轻的项目成为业内的焦点,也有学者参与到 OpenStack 的研究中。loghub 收集的 OpenStack 数据集是在 Cloud Lab 上生成的,这是一个用于云研究的灵活的科学基础设施计算。该数据集中提供了正常日志和故障注入异常案例 ,使数据更容易被使用于异常检测研究。

样例数据下载地址 OpenStack

4.4 Spark

​ Apache Spark 是一个统一的大型数据处理与分析引擎,内置流、SQL、机器学习和图处理逻辑。目前,Spark 已被广泛部署在工业领域。loghub 中提供的 Spark 数据集是在一个包含 32 台物理机的实验室环境中聚合收集的。该日志数据集是在机器级别进行聚合,日志的大小超过 2 GB。该数据集也没有做人工处理,提供的是原始数据 ,无需进一步的修改或标签,其中也可能包含异常的应用程序运行记录。

样例数据下载地址 Spark

4.5 ZooKeeper

​ ZooKeeper 是一个为分布式应用程序提供协调服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。loghub 中提供的 ZooKeeper 日志数据集也是通过从一个包含 32 台物理机的实验室环境中聚合日志收集的,日志数据涵盖的时间段为 26.7 天。

样例数据下载地址 ZooKeeper

参考资料

[1] Shilin He, Jieming Zhu, Pinjia He, Michael R. Lyu. Loghub: A Large Collection of System Log Datasets towards Automated Log Analytics. Arxiv, 2020.

[2] 贾统, 李影, 吴中海. 基于日志数据的分布式软件系统故障诊断综述 J. 软件学报, 2020, 31(7):22.

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_41773806/article/details/124429267

智能推荐

NAT技术及应用_pnat-程序员宅基地

文章浏览阅读4.4k次。之前我们讨论了, IPv4协议中, IP地址数量不充足的问题。 (对于IP协议请看文章这里写链接内容) 我们再来了解一个技术:NAT技术(网络地址转换)什么是NATNAT技术是当前解决IP地址不够用的主要手段, 是路由器的一个重要功能。NAT能够将私有IP对外通信时转为全局IP. 也就是就是一种将私有IP和全局IP相互转化的技术方法。简单点说,就是在局域网中使用内部地址,..._pnat

从零开始构建一个电影知识图谱,实现KBQA智能问答[上篇]:本体建模、RDF、D2RQ、SPARQL endpoint与两种交互方式详细教学_rdb2rdf-程序员宅基地

文章浏览阅读522次。从零开始构建一个电影知识图谱,实现KBQA智能问答[上篇]:本体建模、RDF、D2RQ、SPARQL endpoint与两种交互方式详细教学_rdb2rdf

Linux 防火墙开放特定端口 (iptables)_防火墙放开指定端口 linux iptables-程序员宅基地

文章浏览阅读831次。iptables是linux下的防火墙,同时也是服务名称。service iptables status 查看防火墙状态service iptables start 开启防火墙service iptables stop 关闭防火墙service iptables restart _防火墙放开指定端口 linux iptables

python 实现输入一个小于1000的整数,对其进行因式分解_编写程序,用户从键盘输入小于1000的整数,对其进行因式分解-程序员宅基地

文章浏览阅读1.1w次,点赞10次,收藏50次。编写程序,用户从键盘输入一个小于1000的整数,对其进行因式分解。例如:10=2 X 5 ; 60 = 2 X 2 X 2 X 3 X 5实现这个小程序,主要使用到的思想就是一个简单的递归思想。用户输入一个整数,接收整数,之后把整数传入到递归函数中,使用递归函数计算出该整数的所有最简因式。def index(n): global list1 for i in range(2, n+1): if n % i == 0: # 找出n中最小的因式 _编写程序,用户从键盘输入小于1000的整数,对其进行因式分解

websocket和uni-app里使用websocket_uniapp websocket-程序员宅基地

文章浏览阅读4.4k次,点赞4次,收藏5次。socket:插座;套接字 ​ 网络上的两个程序通过一个双向(全双工)的通信连接实现数据的交换,这个连接的一端称为一个socket。就像用座机打电话,给两个座机都插上电话线,就可以打电话,即语音信息的交流。属性描述readyState只读属性 readyState 表示连接状态,可以是以下值:0 - 表示连接尚未建立。1 - 表示连接已建立,可以进行通信。2 - 表示连接正在进行关闭。3 - 表示连接已经关闭或者连接不能打开。_uniapp websocket

SQL Server调优系列基础篇(常用运算符总结——三种物理连接方式剖析)-程序员宅基地

文章浏览阅读96次。前言上一篇我们介绍了如何查看查询计划,本篇将介绍在我们查看的查询计划时的分析技巧,以及几种我们常用的运算符优化技巧,同样侧重基础知识的掌握。通过本篇可以了解我们平常所写的T-SQL语句,在SQL Server数据库系统中是如何分解执行的,数据结果如何通过各个运算符组织形成的。技术准备基于SQL Server2008R2版本,利用微软的一个更简洁的案例库(Northwind)进行解析...

随便推点

vi简介-程序员宅基地

文章浏览阅读531次。vi_vi简介

Android 在使用SmartRefreshLayout遇到的点点滴滴_could not find com.scwang.smartrefresh:smartrefres-程序员宅基地

文章浏览阅读9.7k次。记录错误_could not find com.scwang.smartrefresh:smartrefreshlayout:1.1.0-alpha-18

一键关闭win10防火墙拦截更新等小工具-程序员宅基地

文章浏览阅读5.8k次。简介:秒关闭win10防火墙拦截更新清爽简单的一款小工具,可以帮助你一键关闭Windows以及烦人的系统自动更新,WIN10防火墙自动删除软件网盘下载地址:http://www.bytepan.com/AkejxHdvOCe_一键关闭win10防火墙拦截更新等小工具

PAT 乙级 1008 数组元素循环右移问题 (20分)(JAVA版,随遇C)_pat乙级1008java-程序员宅基地

文章浏览阅读147次。1008数组元素循环右移问题(20分)一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A​0​​A​1​​⋯A​N−1​​)变换为(A​N−M​​⋯A​N−1​​A​0​​A​1​​⋯A​N−M−1​​)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?输入格式:每个输入包含一个测试用例,第1行输入N(1≤N≤100)和M(≥0);第2行输入N个整数,之间用空格分隔.._pat乙级1008java

linux kvm虚拟机img文件挂载到宿主机_kvm导入img镜像-程序员宅基地

文章浏览阅读1.5k次。在使用虚拟化的过程中,难免会遇到虚拟机异常导致无法启动等故障,这时候如何从虚拟机的img中将重要文件或数据拷贝出来显得尤为重要,今天介绍一下利用qemu-nbd的方式将img文件挂载到宿主机。需要注意的是,目前仅针对于img文件类型为qcow2的做过测试。1. 检测img文件的类型: file test.img test.img: Qemu Image, Format:_kvm导入img镜像

我的vim和emacs配置文件(2014-05-19更新)_vim/emacs cursor配置-程序员宅基地

文章浏览阅读6.7k次,点赞5次,收藏3次。vimrc:"cnsworder setcolorscheme ronsyntax onset nobackupset tabstop=4set softtabstop=4set shiftwidth=4set expandtabset autoindentset numberset laststatus=2source $VIMRUNTIME/ftplugin/m_vim/emacs cursor配置

推荐文章

热门文章

相关标签