打字猴:1.70050884e+09
1700508840 日志是指事件记录——不论这种行为是一种更贴近人类生活的行为记录(例如消费行为记录、参观行为记录),抑或更贴近计算机底层操作的行为(例如攻击告警记录、磁盘I/O记录)。本书提到的日志都是广义的日志,而非服务程序在服务器磁盘上留下的日志文件。
1700508841
1700508842 日志发生的位置通常是分散的。例如,在一个连锁便利店的销售系统中,所有的销售记录和盘点记录都分散存放在各个营业点,一般来说会在白天营业结束后通过一些离线的操作进程归集到数据中心来存档。这就是典型的数据延时收集。
1700508843
1700508844 从分散的终端集中收集数据的解决方案不止1种,让我们来看看都有哪些方式。
1700508845
1700508846 对终端不能或不便存储日志的场景,通常在事件发生后立刻将日志数据上报,产生的是单条数据日志。我们也称这种方式为“日志流”(Log Streaming)。
1700508847
1700508848 对终端有一定存储能力的场景,通常在其本地保存一份日志以备查阅,同时通过其他方式将日志上传。因实时性不同,分为实时上传和延时上传两种。实时上传的情况和单条数据日志上报的场景类似,而延时上传的情况和前面说的存档销售记录和盘点记录的方式类似。
1700508849
1700508850 数据科学家养成手册 [:1700503606]
1700508851 12.2.1 实时上传
1700508852
1700508853 1.上传方式与问题
1700508854
1700508855 实时上传的常见方式有如下3种。
1700508856
1700508857 方式1:在终端使用DTU上传
1700508858
1700508859 DTU(Data Transfer Unit)是一种数据传输模块,以无线DTU居多(如图12-3所示)。
1700508860
1700508861
1700508862
1700508863
1700508864 图12-3 无线DTU模块
1700508865
1700508866 DTU通常可以当成一个“黑匣子”来使用,有“入口”和“出口”两个数据接口。“入口”可以连接RJ-45、COM、1394、USB、同轴电缆等多种数据接口,通常用来接收由电子探测装置传送过来的数据。常见的电子探测装置包括温度、压力、气体浓度、磁场强度等的探测设备。“出口”一般有CDMA、GPRS、IEEE 802.11x(Wi-Fi)等多种协议的接口,通过IP协议栈把数据送入互联网。这种设备在矿山、自然环境监测、民用远程抄表等场景中经常使用。
1700508867
1700508868 方式2:在终端使用Wi-Fi或有线以太网上传
1700508869
1700508870 使用Wi-Fi上传的场景在我们身边就更常见了。
1700508871
1700508872 每个人使用的智能手机和PC上都安装了许多软件,每个软件只要拥有本地网络接口的使用权限,就可以进行数据的上传和下载。这些软件中的大多数每天都会与其后台所连接的服务器通信,报送一些从本机上扫描到的信息,包括且不限于本地的MAC地址、IP地址、CPU资源、内存资源、安装软件列表,甚至一些信息的输入记录等。
1700508873
1700508874 方式3:在服务器端使用以太网上传
1700508875
1700508876 在使用互联网对外提供服务的企业中,会有相当数量的服务器产生大量的日志。这里包括这些服务器的访问日志,也包括其自身系统的工作日志等。由于服务器本身具有一定的日志存储能力,所以自然允许实时和延时两种形态的日志传送。对于需要实时传送的服务器来说,可以考虑使用一些开源工具帮助收集和发送日志。
1700508877
1700508878 在每一台希望享受日志告警分析服务的主机上部署一套第三方程序是需要勇气的,这里有太多的未知风险,谁也不知道自己是不是下一个特洛伊木马(1)的受害者。因此,更为实际的方式是在自己授权的情况下主动开放不涉密的日志内容给服务提供方。这么说可能太拗口,其实就是在服务器上安装一个软件,由这个软件收集指定的日志内容,并实时把日志内容发送到提供日志告警分析服务的相应监听端口供其收集。只要本地的收集进程是可信的,不会随便收集指定日志内容以外的任何信息,那就非常安全。
1700508879
1700508880 所以,在这个环节很多公司(尤其是互联网公司)都喜欢使用一些开源的工具,对下载的源代码进行一些个性化的修改和验证,确认没有问题后编译使用。这种方式也被认为是目前性价比最高的数据采集方式。这类软件的选择范围也比较广,业界常用的有Fluentd(2)、Flume(3)、Heka(4)等。
1700508881
1700508882 以Fluentd(如图12-4所示)为例,这种工具可以安装在任意的主机上,对系统日志、Web服务日志等各种日志进行监控,只要发现新的日志内容就会立刻收集起来。在收集的过程中,这些日志可以经过第一次处理,也就是在没有发出去之前这些先过滤日志,根据过滤条件来选择对新发现的一条日志是做丢弃处理、发往其他的服务器地址,还是只在本地其他文件上转存等,十分方便。对于互联网公司,尤其是初创的互联网公司来说,这种开源工具能够节省大量的开发成本,让开发人员把精力向业务方向集中。
1700508883
1700508884
1700508885
1700508886
1700508887 图12-4 FIuentd工作流程示意图
1700508888
1700508889 在提供日志告警分析服务的主机上也需要部署Fluentd。这里的Fluentd进程用来接收从其他服务器上部署的Fluentd发来的日志。接收到日志后,Fluentd可以根据配置再对日志进行过滤或转发给另一台Fluentd服务器,也可以直接保存在本地可访问的数据容器中,例如Elasticsearch、MongoDB、Hadoop HDFS等。
[ 上一页 ]  [ :1.70050884e+09 ]  [ 下一页 ]