提到日志,很多人的第一印象就是系统打到本地的Log文件,出问题的时候看一下这个Log文件,用来排查问题。更进一步可以根据这个Log文件做实时的监控、第三方审计、入侵检测、行为分析、数据大盘制作等等。
马老师说过:阿里巴巴不是零售,我们是一家数据公司,为了数据才做电商、做物流、卖东西。我们认为日志是记录世间人和物所有行为的一种方式,是数据中极其重要又极其庞大的一个组成部分。会产生日志的设备有:服务器、交换机、手机、传感器、IOT设备、智能设备...产生的日志类型有:网络的七层日志、OS日志、订单日志、支持日志、GPS定位日志、用户点击日志...产生的日志形式有:文本文件、二进制文件、syslog、udp日志...如何充分利用这些日志资源才是我们的核心技术和竞争力。
数据的价值是什么?数据的价值在于把数据变成行动。这里一个非常重要的过程是数据分析。提到数据分析,大部分人首先想到的都是Hadoop、流计算、机器学习等数据加工的方式。如果从整个过程来看,数据分析其实包含了4个过程:采集,存储,计算和理解四个主要步骤:
数据的采集是一门很大的范畴,从实时性上和每次传输数据规模上分,一般可以分为3类:
实现日志的实时采集一般有2种方式:
下面我们来详细剖析一下二者区别:
对比项 | 直采 | Agent |
---|---|---|
实现复杂度 | 高,需要针对不同的应用/设备/日志存储端分别实现 | 低,无需专门实现 |
性能开销 | 低,直接上传,无额外性能开销 | 较高,需要一层中转,例如本地磁盘、网络等,有一部分额外开销 |
应用影响 | 高,由于日志采集和应用在同一进程,隔离性很难保证 | 较低,日志采集和应用处于不同进程/设备,采集异常对于应用影响较低 |
耦合度 | 紧耦合 | 松耦合 |
可扩展性 | 低,如果更换采集协议、采集目的端,代价极高 | 高,只需更改Agent,无需对应用本身进行改造 |
可靠性 | 较低,日志随应用生灭,应用crash时数据可靠性很难保证 | 较高,通常由磁盘/中间框架实现持久化,具备一定的可靠性 |
从以上分析来看,两种采集方式各有优缺点、也有各自适应的场景:
日志采集Agent有很多,例如Logstash、Fluentd、Beats系列(FileBeats、MetricBeats、Packetbeat、Winlogbeat、Auditbeat、Heartbeat)、Nxlog、Telegraf、Heka、Nifi、Logspout、Datadog agent、Sematext agent、Splunk addon系列、Sumologic collector。。。
业界有那么多的Agent,每个Agent各种各样的功能和特性看起来让人眼花缭乱。但围绕日志采集这个最原始的需求展开,无非也就是功能、性能、稳定性、运维代价这4个方面:
阿里云日志服务也有自己的采集Agent--Logtail。目前logtail已承载阿里云全站、所有云产品服务、全球各Region部署、阿里巴巴集团(淘宝、天猫、菜鸟等)上重要服务的数据采集。每天采集接近百万服务器上数PB的实时数据,对接数千个应用与消费者。之所以使用Logtail作为采集Agent也是经过上述四个方面的综合考虑。由于采集Agent数量众多,这里我们选择目前最主流的3款Agent进行对比:
Logtail | Logstash | Fluentd | Beats系列 | ||
---|---|---|---|---|---|
功能 | 文本文件采集 | 支持 | 支持 | 支持 | 支持 |
syslog | 支持 | 支持 | 支持 | 不支持 | |
处理方式 | 正则、anchor、分隔符、json任意组合 | 插件扩展 | 插件扩展 | 只支持multiline | |
过滤 | 正则 | 插件扩展 | 插件扩展 | 不支持 | |
压缩 | lz4 | 插件扩展 | 插件扩展 | 支持 | |
功能扩展 | 支持插件 | 支持插件 | 支持插件 | 支持(修改源码) | |
性能 | 采集性能 | 极简单核160M/s、正则20M/s | 单核2M/s左右 | 单核3-5M/s | 极简单核15M/s |
资源消耗 | 平均CPU 2%、内存 40M | 10倍以上性能消耗 | 10倍以上性能消耗 | 内存消耗较低 | |
稳定性 | 多租户隔离 | 自实现的隔离 | 线程级隔离 | 线程级隔离 | goroutine隔离 |
硬性资源限制 | 支持 | 支持 | 支持 | 不支持 | |
资源动态调整 | 支持 | 不支持 | 不支持 | 不支持 | |
数据保存 | 支持 | 插件支持 | 插件支持 | 不支持 | |
进程守护 | 支持 | 辅助软件支持 | 辅助软件支持 | 辅助软件支持 | |
采集点位保存 | 所有均支持 | 只支持文件 | 插件支持 | 只支持文件 | |
运维代价 | 本地监控 | 支持 | 支持 | 支持 | |
服务端监控 | 支持 | Beta版本支持简单功能 | 辅助监控软件扩展 | 不支持 | |
集群自动缩扩容 | 自定义标识机器组 | 不支持 | 不支持 | 不支持 | |
运行时配置变更 | 支持 | 支持 | 支持 | 支持 | |
服务端配置管理 | 支持 | Beta版本支持简单功能 | 辅助软件扩展 | 不支持 | |
自动升级 | 支持 | 辅助软件扩展 | 辅助软件扩展 | 不支持 |
相对主流的采集Agent,Logtail在采集功能上有一定的不足,对于输入源、处理方式等支持没有开源软件的多,但从目前的功能来看,可以满足95%以上的日志采集需求。但日志采集并不是能够采集到就可以。相对开源软件,Logtail的优势是有集团百万服务器、上万应用的练兵环境,很多问题纯粹从Agent和开源社区的角度并不会考虑到。因此经历了数年的迭代优化,在性能、稳定性、运维代价上,Logtail相对更加成熟,在性价比上具有绝对的优势。
为什么80%的码农都做不了架构师?>>> ...
PdfParser 是一个标准的 PHP 库提供个用于从 PDF 文件中抽取数据的工具。它加载 PDF文件并解析文件中对象、头和元数据,可抽取其中的文本信息,支持压缩的 PDF、MAC OS 罗马字符集编码、8进制和16进制编码。兼容PSR-0 和 PSR-1。官方文档:https://www.pdfparser.org/documentation使用composer安装依赖包:composer require smalot/pdfparser1、获取文件的基本信息,如:制作人、日期、总页数.
DSL 领域相关语言(行话)gradle build执行build下所有task(不包括doLast)gradlew -q take名 quite安静 执行该目录下的build.gradle文件中的 take正则$ 用于匹配行结束符 it$groovy语言4.times方法 循环4次task intro(dependsOn: hello) intro依赖hello任务未定义依
接上篇 Dev中GridControl的GridView 基本样式设置上图: 导出部分的代码: 1 /// <summary> 2 /// 导出excel 3 /// </summary> 4 /...
参考自《C++ Primer Plus 6th Edition》除了修改代码外,有两种方法能够用来扩展类的定义,一个是组合,另一个就是继承组合: 使用类型为别类的成员变量继承: 从已有的类派生出新类,在新类中加入新的成员本文仅讨论继承中的公有继承 (class derivedClass : public baseClass)分为三部分...
把/etc/inetd.conf文件中的Telnet项中在最后的telnetd改成telnetd -k180 -K5 -N3。意思为该telnet 连接在闲置180秒后,每隔5秒钟发一次在线查询信号给终端,如发三次后,每次均无应答,则断开此telnet 连接,并删除相对应的进程。这样即使不正常关机 也不会留下多余的进程。
0x00 前言在CVE-2014-4113出来后,x64环境下的提权又是一片短暂的光明.在此漏洞披露前,PR/IIS溢出/LPK劫持等对64位版本都无效果,网上公开曾有一个Exp有效,代号为MS10048x64.本文谨记录x64下可提权的Exp与测试过程.暂不考虑依赖第三方服务(如MSSQL/MYSQL)等的提权测试环境:WindowsServer2003Ent...
题目链接:DominationTime Limit: 8 Seconds Memory Limit: 131072 KB Special JudgeEdward is the headmaster of Marjar University. He is enthusiastic about chess and often plays
Copyright(c) 2017,烟台大学计算机与控制工程学院 All rights reserved. 文件名称:text.cpp 作者:黄潇慧 完成日期:2017年11月2日 版本:vc6.0 问题描述:实现二叉树的层次遍历算法,并对用”A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))”创建的二叉树进行测试 输入描述: 输出描述: 代
tarjan算法:将强连通分量缩成一个点,形成一个新的有向图学习这个算法是通过解一个题目,看题目意思很明朗,看起来很简单,只是看起来-_-但是现在我学了这个算法,就不怕了。问题题出:题目链接 有个大佬,啥都会,萌新们纷纷跑来向大佬学习,但是大佬觉得萌新们太多(sha)了,只想教一部分,然后让那些人再去教别的萌新,如果萌新A会教萌新B,萌新B又会教萌新C,这样,大佬只要教会萌新A,萌新...
数据结构、操作系统、编译原理、软件工程先学好这些课再说吧选好复习用书在复习应考时,大家要根据自己的具体情况,制定一套完整的复习计划。不要拘泥于某种特定的方法,某种方法对别人很合适,但不一定适合你。在参考书的使用上,我向大家推荐两本参考书,一本是清华大学出版社出版的《程序设计》,另一本是大连理工大学出版社出版的《全真试题精解》。在看《程序设计》这本书时,不一定非要按顺序从第一页看到最后一页,可以从中...
码字不易,有帮助的同学希望能关注一下我的微信公众号:Code程序人生,感谢!代码自用自取。Electron是什么?你只要记住下面这两句话就可以对Electron有个基本了解:Electron 是由 Github开发的开源框架它允许开发者使用Web技术构建跨平台的桌面应用Electron = Chromium + Node.js + Native APIChromium : 为Electron提供了强大的UI能力,可以不考虑兼容性的情况下,利用强大的Web生态来开发界面。Node.