025-58863719
服务热线
产品方案
南京风城云码软件技术有限公司
联系人:吕先生
电话/传真:025-58863719
邮箱:sales@fcym.cn
网址:www.njfcym.com
地址:南京市浦口区城区南京高新开发区惠达路9号紫金(高新)科技创业特别社区
新闻
您现在的位置: 首页 > 新闻 > 内容
日志审计系统到底是什么
编辑:南京风城云码软件   发布时间:2018-08-16

对于日志大家都不陌生,无论是电脑还是手机每天会产生大量的日志,但是对于这个日志审计系统可能大家都不是特别明白。现在我们南京风城云码软件技术有限公司就来为大家讲解一下到底什么是日志审计系统。

日志审计系统就是专门用来处理我们这些电脑和手机产生的日志,它有以下特点:

这些日志审计系统普遍需要具有以下特点:
(1)构建应用系统和分析系统的桥梁,并将它们之间的关联解耦;
(2)支持近实时的在线分析系统和类似于Hadoop之类的离线分析系统;
(3)具有高可扩展性。即:当数据量增加时,可以通过增加节点进行水平扩展。

我们就从设计架构,负载均衡,可扩展性和容错性等方面对比当今比较有名气的几款日志系统,以便为了更好地了解日志审计系统。
1、Scribe
Scribe是FaceBook开源的日志收集系统,在FaceBook内部已经得到大量的应用,它能够从各种日志源上收集日志,存储到一个中央存储系统 (可以是NFS,分布式文件系统等)上,以便于进行集中统计分析处理。它为日志的“分布式收集,统一处理”提供了一个可扩展的,高容错的方案。它最重要的特点是容错性好,当后端的存储系统crash时,Scribe会将数据写到本地磁盘上,当存储系统恢复正常后,Scribe将日志重新加载到存储系统中。
Scribe的架构比较简单主要包括三部分,分别为Scribe agent, Scribe和存储系统。
1.1、Scribe agent
Scribe agent实际上是一个thrift client,向Scribe发送数据的唯一方法是使用thrift client, Scribe内部定义了一个thrift接口,用户使用该接口将数据发送给server。
1.2、Scribe
Scribe接收到thrift client发送过来的数据,根据配置文件,将不同topic的数据发送给不同的对象。Scribe提供了各种各样的store,如 file, HDFS等,Scribe可将数据加载到这些store中。
1.3、存储系统
存储系统实际上就是Scribe中的store,当前Scribe支持非常多的store,包括file(文件),buffer(双层存储,一个主储存,一个副存储),network(另一个scribe服务器),bucket(包含多个 store,通过hash的将数据存到不同store中),null(忽略数据),thriftfile(写到一个Thrift TFileTransport文件中)和multi(把数据同时存放到不同store中)。
2、Chukwa
Chukwa是一个非常新的开源项目,属于hadoop系列产品,因使用了很多hadoop的组件(用HDFS存储,用mapreduce处理数据),它提供了很多模块以支持hadoop集群日志分析,具有以下特点:
灵活的,动态可控的数据源
高性能,高可扩展的存储系统
合适的框架,用于对收集到的大规模数据进行分析
架构:Chukwa中主要有3种,分别是adaptor,agent和collector,Demux和achieving。
2.1、 Adaptor 数据源
可封装其他数据源,如file,unix命令行工具等,目前可用的数据源有:hadoop logs,应用程序度量数据,系统参数数据(如linux cpu使用流率)。
2.2、 agent和collectorChukwa最开始采用了HDFS作为存储系统,HDFS的设计初衷是支持大文件存储和小并发高速写的应用场景,而日志系统的特点恰好相反,它需支持高并发低速率的写和大量小文件的存储,为了解决这些问题,增加了agent和collector,增加Agent的作用是给adaptor提供各种服务,包括启动和关闭adaptor,将数据通过HTTP传递给Collector;定期记录adaptor状态,以便crash后恢复。增加Collector的作用是对多个数据源发过来的数据进行合并,然后加载到HDFS中;隐藏HDFS实现的细节,如HDFS版本更换后,只需修改collector即可。
2.3、Demux和achieving
为了直接支持利用MapReduce处理数据,内置了两个mapreduce作业,分别用于获取data和将data转化为结构化的log,然后存储到data store(可以是数据库或者HDFS等)中。
3、Kafka
Kafka是2010年12月份开源的项目,采用scala语言编写,使用了多种效率优化机制,整体架构比较新颖(push/pull),更适合异构集群,具有以下特点:
数据在磁盘上的存取代价为0
高吞吐率,在普通的服务器上每秒也能处理几十万条消息
分布式架构,能够对消息分区
支持将数据并行的加载到hadoop
架构
:Kafka实际上是一个消息发布订阅系统。producer向某个topic发布消息,而consumer订阅某个topic的消息,进而一旦有新的关于某个topic的消息,broker会传递给订阅它的所有consumer,在Kafka中消息是按topic组织的,而每个topic又会分为多个partition,这样便于管理数据和进行负载均衡。同时它也使用了zookeeper进行负载均衡,Kafka中主要有三种角色,分别为producer,broker和consumer。

3.1、Producer
Producer的任务是向broker发送数据。Kafka提供了两种producer接口,一种是low_level接口,使用该接口会向特定的broker的某个topic下的某个partition发送数据;另一种是high level接口,该接口支持同步/异步发送数据,基于zookeeper的broker自动识别和负载均衡(基于Partitioner),producer可以通过zookeeper获取可用的broker列表,也可以在zookeeper中注册listener,该listener在以下情况下会被唤醒:
添加一个broker
删除一个broker
注册新的topic
broker注册已存在的topic
当producer得知以上时间时,可根据需要采取一定的行动。
3.2、Broker
Broker采取了多种策略提高数据处理效率,包括sendfile和zero copy等技术。
3.3、 Consumer
consumer的作用是将日志信息加载到中央存储系统上。Kafka提供了两种consumer接口,一种是low level的,它维护到某一个broker的连接,并且这个连接是无状态的,每次从broker上pull数据时,都要告诉broker数据的偏移量。另一种是high-level 接口,它隐藏了broker的细节,允许consumer从broker上push数据而不必关心网络拓扑结构。更重要的是对于大部分日志系统而言,consumer已经获取的数据信息都由broker保存,而在Kafka中是由consumer自己维护所取数据信息。
4、Flume
Flume是cloudera于2009年7月开源的日志系统,它内置的各种组件非常齐全,用户几乎不必进行任何额外开发即可使用,具有以下特点:
可靠:当节点出现故障时,日志能够被传送到其他节点上而不会丢失。Flume提供了三种级别的可靠性保障,从强到弱依次分别为:end-to-end(收到数据agent首先将event写到磁盘上,当数据传送成功后,再删除;如果数据发送失败,可以重新发送。),Store on failure(这也是scribe采用的策略,当数据接收方crash时,将数据写到本地,待恢复后,继续发送),Best effort(数据发送到接收方后,不进行确认)。
可扩展:Flume采用了三层架构,分别问agent,collector和storage,每一层均可以水平扩展。其中,所有agent和collector由master统一管理,这使得系统容易监控和维护,且master允许有多个(使用ZooKeeper进行管理和负载均衡),这就避免了单点故障问题,也可根据需要添加自己的agent,colletor或者storage。
可管理:所有agent和colletor由master统一管理,这使得系统便于维护,用户可以在master上查看各个数据源或者数据流执行情况,且可以对各个数据源配置和动态加载,Flume提供了web 和shell script command两种形式对数据流进行管理。
架构:Flume采用了分层架构,由三层组成,分别为agent,collector和storage。agent和collector均由两部分组成:source和sink,source是数据来源,sink是数据去向。
4.1、agent
agent的作用是将数据源的数据发送给collector,Flume自带了很多直接可用的数据源(source)如:
text(“filename”):将文件filename作为数据源,按行发送
tail(“filename”):探测filename新产生的数据,按行发送出去
fsyslogTcp(5140):监听TCP的5140端口,并且接收到的数据发送出去
同时提供了很多sink,如:
console[("format")] :直接将将数据显示在桌面上
text(“txtfile”):将数据写到文件txtfile中
dfs(“dfsfile”):将数据写到HDFS上的dfsfile文件中
syslogTcp(“host”,port):将数据通过TCP传递给host节点
4.2、 collector
使用autoE2EChain,当某个collector 出现故障时,Flume会自动探测一个可用collector,并将数据定向到这个新的可用collector上。
4.3、 storage
storage是存储系统,可以是一个普通file,也可以是HDFS,HIVE,HBase等。
5、总结
根据这四个系统的架构设计,可以总结出典型的日志系统需具备三个基本组件,分别为agent(封装数据源,将数据源中的数据发送给collector),collector(接收多个agent的数据,并进行汇总后导入后端的store中),store(中央存储系统,应该具有可扩展性和可靠性,应该支持当前非常流行的HDFS)。

以上就是我们南京风城云码软件技术有限公司为大家讲解的关于日志审计系统的相关概念,大家如果对文中的代码或者相关概念还是有不理解的问题,欢迎来咨询我们南京风城云码软件技术有限公司。

南京风城云码软件
025-58863719
服务热线

版权所有:南京风城云码软件技术有限公司 技术支持:南京seo公司手机版  电子邮箱:sales@fcym.cn

地址:江苏省南京市浦口区城区南京高新开发区惠达路9号紫金(高新)科技创业特别社区  电话:025-58863719  手机: