IT运维日志分析中有哪些常见但没啥用的功能

日志分析是IT运维领域非常重要的一部分工作。甚至可以说,在平台化、模块化、服务化盛行的今天,这部分工作的重要性已经逼近传统的设备监控。不过日志由于来源、使用者、管理者都比设备指标要复杂,导致日志分析的功能需求,也庞大很多。在这些庞大的,或者说『泥沙俱下』的功能需求中,有那么一些然并卵的,或许因为听起来很炫酷,或许因为想延续过去的使用习惯,今天因为出差到外地,难得有空放松下,决定吐槽几个这种然并卵的功能。

realtimealert

排在第一位的就是所谓的『实时告警』。做一个告警系统,其实可以分成两类不同的目的:

出现了问题要修复,

快要出问题得避免。

那么分开说:

如果是要喊人来修复的,假设你的告警内容已经细化到完全不用再排查问题,从告警发出来,到你登录到服务器解决问题,至少也需要数分钟级别——根据墨菲定律,这时候你很可能在睡觉在吃饭在坐车在团建,那么十分钟已经是你行动迅速了。那么告警是第0.1秒发出来的,跟是第10秒发出来的,有什么区别?而把告警从间隔10秒压缩到1秒内的实时,需要花费的架构调整和成本上升,可不是一点半点……(你说一个关键字实时过滤没啥成本?那你需要先加强一下告警系统的追踪、扩展、抑制等功能呢,告警没那么简单)

如果是要提前避免的,一般你的基础架构已经进化的不错了,才会想要通过告警的触发动作来自动化修改你的流量、资源和任务调度编排。这种需求其实更多归入容量规划范畴,很难想象这种事情要实时性干嘛,谁家平台不打余量的?

当然,不管上面哪种,我吐槽的都是追求1秒甚至毫秒的实时。如果你的监控间隔还停留在5分钟以上,可别拿我这段话做挡箭牌——如果你从收到告警到解决问题需要小时级别,5分钟可能是也不算多,但是你的故障定位方式,或者说告警系统的内容细化水平,更加需要提高。

翻页翻页翻页

排在第二位的就是showmemoremoney,错了,logline。日志分析系统一般都会在界面上列出来日志原文供查看。而一帮『手贱』的人,就会很happy地点下一页下一页下一页下~一~页~下~然后系统出问题了。

这个功能需求其实就是过去catlogfile|grepKEYWORD|less习惯的遗毒。上来就恨不得自己能vim进去一行行开始看日志。Ctrl+F嗷嗷翻页固然很爽,不知不觉中时间全都浪费掉了——想想上一条你还想要的『实时』——运维排查问题最适合的思路是快速试错!一个想法验证下不行赶紧验证下一个。如果一页20条日志你看不出来,两页40条日志你看不出来,你就赶紧改个时间段、改个关键词吧。

当然,话说回来,老想着往后翻页,也有可能是真想不出来改用啥关键词。日志分析系统有必要提供帮助用户更快找到合适关键词的能力。这东西就是仪表盘可视化。利用正确的能力做正确的事,而不应该在有正确的方法的情况下继续使用麻烦办法。

经纬度地图

既然说到可视化,可视化方面是做日志分析乃至数据分析最容易误入歧途的方向了。

这些很复杂的可视化就不提了。在日志分析方面,最常见的一个炫酷的效果就是地图。地图可真是一个被各种玩出花来的东西,诸如安全攻击喜欢放个3D地球,在google图片上随便搜『DDoSatackearth』关键词,大把大把;做个推广活动,喜欢搞个实时连线的中国地图看PV,全国各地,来一个访问,飞一个点出来到北京。。。

真的是酷毙了。不过,然后呢?你看到这个点能干嘛?而且飞动中的点,唰唰就过去了,压根捕捉不到。

说到实际情况,IT日志分析需要地图的大多数时候是基于行政区划的统计。全局负载均衡绝大多数都是以行政区划和运营商为基准做的划分,如果通过地图真的定位到什么访问问题,很大可能下一步你能做的是通过商务手段去联系当地电信服务运营商!你要经纬度有什么用?——别忘了免费的GeoIP国内精准度本来就低。花点时间搞一个准确到地市运营商的IP地址库,才是最应该做的事情。

全量下载(etltoBI)

另一个和翻页有些类似的功能,就是要求全量日志下载。这种需求通常目的也是分两类,一类其实跟翻页是一个需求,不知道查啥内容,干脆要求把日志都下载回来自己慢慢折腾;另一类则是环境中有一些标准的BI软件,觉得日志分析软件的可视化和统计方法不够用,还是喜欢、习惯BI,所以要求日志分析系统负责搜索,BI系统负责分析。

这块怎么说呢,列出来有些个人主观化,我个人不太觉得在IT运维领域,有啥是BI能做,而开源日志分析项目做不来的事情。退一步说:真要两个系统的结合,也应该是分层的架构。充分利用日志分析系统的分布式架构并行处理能力,将大量map操作在日志系统完成,将中间统计结果导入到BI中完成最后的reduce工作即可。

非要把原日志(即使是归一化之后的结构数据)导入到BI里做统计,是一个耗时耗力的下下之选。

SQL

第四个很常见的功能,就是SQL。这甚至不是日志分析领域的毛病,在所有和数据相关的、非关系型数据库的数据存储系统上,都会有大把人问:有SQL支持么?

就我的浅薄见识,对所有存储系统要FUSE挂载,对所有数据系统要SQL查询,应该是可以对等的两个吃力不讨好的工作了。在Hadoop上有无数个实现SQL的项目,哪怕Hive和SparkSQL这种级别的大项目在,我还是要说:研发同仁们想要SQL,不就是觉得自己已经会SQL,所以要无缝对接,不用学习新知识么?你们点开Hive文档,里面有多少是非标准SQL的函数功能?

只有极少数基础的、简单的过滤和统计函数,可以横跨API、SQL、DSL等方式,在各平台上都通用。而你选择某个大数据平台的实际理由,大多是它的xxxyyyzzz亮点功能,很好,你需要自己搞一个UDF了……这还搞SQL有什么意义。

从编程语言学来一个经验,对特定领域,采用特定领域语言,即DSL的设计方式,永远是更加高效、灵活、优秀的选择。

在日志分析方面来说,抓住关键词检索、分组统计、上下文关联、时间序列这几个特性,你就可以抽象出来几个能覆盖足够场景的函数了,而借鉴命令行操作的形式,从左到右的书写习惯也比SQL的从右到左的形式更加符合数据流向的效果。

熟悉日志分析领域的人可能看出来我是在给SPL写软文了……自Splunk发明SPL这种日志分析领域的DSL以来,已经有大批日志分析产品跟进了这个形式,SumoLogic、Rizhiyi、XpoLog、MicroSoftAzure、OracleCloudManagement等等。不过公平的说,上面一段要点,确实也可以提炼出来跟SPL不一样的DSL设计,比如说:更接近面向对象编程语言的链式调用函数,同样也符合这个习惯——这也是ELK从5.0开始分发的timelion插件的选择。

livetail

今天我能想到的最后一个恶习遗毒,同样还符合酷炫概念的功能,是livetail,也有叫webtail或者logtail的。不知道从哪来的程序员情节,觉得终端的黑底白字最棒了,非要在浏览器页面上,通过websocket连接上某台服务器,实时查看某个日志文件的尾部滚动。或者简单说,就是一个tail-Flogfile功能的网页化。

由于网络的限制、浏览器渲染的限制(毕竟要很多酷炫效果呢),这类功能一般实现出来带有诸多的限制:

直接从agent建联,意味着后续的归一化结构是无法用来做复杂过滤的,同样还意味着跨平台能力削弱;

需要限制使用者的并发数,以及每个连接的流速。一般来说是每秒不许超过1000条——人肉眼其实每秒也看不过来这么多数据;

为了限速,必须指定具体的hostname和filename,无法使用通配符,无法跨文件关联查询;

为了解决跨文件,在同一页面上切分屏幕,考虑美观和视觉,最多也就是切分一次,即一次可以看两个文件的tail。

我在最前面已经说到了,日志系统之所以现在重要性提高,就是因为日志前所未有的分散,两个分屏的tail,有什么用?

当然,回到这个伪需求的根本目的:我就是在调试而不是事后排错呢,怎么让我可以快速看到我横跨好几个模块的调试日志是否正常?

这跟前面『无限翻页』类似:你真正需要的知道新入的日志有没有异常,而不是刷过去什么字样。通过ANDORNOT等过滤条件,通过时间排序,通过关联ID,你完全可以在秒级得到更精准的、更有利于你阅读的日志。

就写到这里吧,我犹豫很久要不要把人工智能机器学习写进来。考虑到异常探测和预测也算是机器学习的一部分,还是不一竿子打倒全部吧~~这里只说一句:我花时间翻了一打IT运维日志相关的机器学习论文,用神经网络的效果普遍比回归差。嗯~总之,大家老实干活就好了。

作者:小码哥

来源:51CTO

时间: 2024-09-07 21:48:27

IT运维日志分析中有哪些常见但没啥用的功能的相关文章

MySQL运维案例分析:Binlog中的时间戳

背景 众所周知,在Binlog文件中,经常会看到关于事件的时间属性,出现的方式都是如下这样的. #161213 10:11:35 server id 11766 end_log_pos 263690453 CRC32 0xbee3aaf5 Xid = 83631678 我们清楚地知道,161213 10:11:35表示的就是时间值,但除此之外呢?还能知道它的什么信息呢? 案例分析 先从一个典型的案例入手来讲述其中的细节,比如曾经在Galera Cluster碰到的一个问题,可以先看一段Binlo

云计算时代的运维和传统运维对比分析

有人说在云计算工程领域,最难的部分是运维,因为管100台.1万台或是100万台机器,是完全不同的概念,你想机器少可以人管,机器多了还能靠人么,当然不能了.再则,运维系统不属于功能性的东西,常常因为用户看不见而被严重的低估.在8月份的"云计算运维的那些坑儿"那期在线培训中,VisualOps CTO王旭也谈过云计算运维的相关问题.但这里说的机房运维只是云计算运维的一个部分,事实上,随着云平台被越来越多的企业被认可和使用,越来越多的用户开始在云平台上部署自己的应用,如何在云平台上进行自动化

Httpd运维日志:通过apxs添加模块

Brief   在部署Httpd时为方便管理和安全等原因,我们仅会安装所需的模块,那么后期功能扩展时则需要通过Httpd内置提供的apxs程序来进行模块添加.   而apxs程序则位于apache/bin目录下.   Premise   首先我们的平台必须支持DSO特性,而且Httpd必须已经内建了mod_so模块.   DSO(Dynamic Shared Object,动态共享对象)   是一种动态连接/加载的机制,从而可以在运行时将编译成特殊格式的代码加载到可执行程序的地址空间.然后通过m

中小企业运维需要重视日志分析

前言 如果把运维看做是医生给病人看病,日志则是病人对自己的陈述,很多时候医生需要通过对病人的描述得出病人状况,是否严重,需要什么计量的药,该用什么类型的药. 所以古人有句话叫做对症下药,这个"症"就是病人的描述加医生的判断,对于重一点的病再加上很多的化验.在医生看病时,病人描述的病情和化验单上的数据对医生的判断是非常重要的. 同理,日志在运维中的作用也是非常类似的,但很不幸,日志在很多中小企业运维中被严重低估,直到磁盘空间不足的时候才想到,磁盘里有个大的日志文件要把他删了,这样可以节省

日志易:IT 运维分析及海量日志搜索的实践之路(上)

内容简介: IT运维分析(IT Operation Analytics, ITOA)是近年兴起,其把大数据技术应用于分析IT运维产生的大量数据,数据来源主要有日志.网络流量.植入代码.布点模拟监控等.过去使用数据库处理日志无法支持大数据量,后来出现了使用Hadoop/Storm/SparkStreaming等开发框架来处理日志,及最新的使用实时搜索分析引擎来对日志进行实时处理.现如今使用Hadoop/Storm/SparkStreaming等开发框架来处理日志已经在各大公司被广泛的运用,本次演讲

(案例篇)日志易:IT运维分析及海量日志搜索的实践之路(下)

本文为日志易创始人兼CEO陈军,在2016年GOPS全球运维大会.深圳站的演讲实录,主要讲述日志易产品在金融机构.运营商.电网的应用案例. 客户案例 案例一:某大型综合金融机构 这是一个大型的综合金融机构,总部就在深圳,也是中国最大的.他们之前需要逐台去登录服务器:没有办法集中查看日志;没有办法对海量日志进行挖掘和用户行为分析; 而且没有办法做多维度的查询,比如时间段.关键词.字段值;而且没有办法进行日志的业务逻辑分析和告警. 使用日志易产品后:建起日志云,在内部建立了一个私有云来处理日志,已经

架构设计 - 自动化运维之架构设计六要点

运维自动化是我们所渴望获得的,但是我们在一味强调自动化能力时,却忽略了影响自动化落地的一个关键因素.那便是跟运维朝夕相处,让人又爱又恨的业务架构. 因为业务架构是决定运维效率和质量的关键因素之一,所以我想跟大家一起聊一下怎么样的架构设计是对运维友好的.结合这些年在腾讯遇到的业务架构和做运维规划时对业务非功能规范的思考,我们可以把面向运维的架构设计分成六大设计要点. 要点一:架构独立 任何架构的产生都是为了满足特定的业务诉求,如果我们在满足业务要求的同时,能够兼顾运维对架构管理的非功能性要求.那么

运维改革探索(二):构建可视化分布式运维手段

作者介绍 朱祥磊,山东移动BOSS系统架构师,负责业务支撑系统架构规划和建设.获国家级创新奖1项.通信行业级科技进步奖2项.移动集团级业务服务创新奖3项,申请发明专利13项. 工具篇:构建可视化分布式运维手段 工欲善其事,必先利其器.上篇我们已经详细分享了监控相关的知识,然而运维可视化,除了构造可视化监控外,还要建立相应的运维手段,云化下的运维工具和传统架构的有较大不同,对集群式.分布式提出了更高的要求. 1.自动化巡检 从2011年开始推行巡检,最初,我们的武器仅仅是一个word文档.一些ex

阿里云大数据计算平台的自动化、精细化运维之路

免费开通大数据服务:https://www.aliyun.com/product/odps 作者简介:   范伦挺 阿里巴巴 基础架构事业群-技术专家 花名萧一,2010年加入阿里巴巴,现任阿里巴巴集团大数据计算平台运维负责人.团队主要负责阿里巴巴各类离在线大数据计算平台(如MaxCompute.AnalyticDB.StreamCompute等)的运维.架构优化及容量管理等 1.前言 本文主要会从以下四个方面来写,分别是: 阿里大规模计算平台运维面临的一些挑战: 阿里自动化平台建设: 数据精细