盲并遗忘着-利用应用交付透析大型网站日志

回忆 像一直开着的机器
趁我不注意
慢慢地清晰反覆播映

-- 《三万英尺》迪克牛仔

当航班在三万英尺的高空爬升下坠,穿越乱流,沉入海底,无人知道它在云中究竟经历了什么波折苦难,甚至无人知道它最终沉睡于何处,随着时间的变迁,也许被人渐渐遗忘。要理清一切,重拾记忆,唯一的希望便是找到那台发着微弱电波,记忆着一切的黑匣子。

服务器网站的日志记录便是如此,它就是网站服务器的黑匣子,日常运维中我们遭遇故障往往非常依赖分析统计的日志来找到问题。像是悬疑电影中的主角,每几分钟就会忘记自己的身份自己的姓名,需要在本子上不停写字,在墙上四处张贴,在记录的时候我们还要四处张望,一旦遗漏了没有看见没法写下来,那也许明天就是末日。

还好我们有日志,这一切都是自动化的!

负载均衡设备在网站前端承担着统一交付业务数据的任务,是最核心的集中点,下面我们以广泛使用的NetScaler为例来探讨在网站日志运维中能够带来的帮助。

一:通过NetScaler记录网站高延迟慢响应时间

通常,网站的标准格式类似

192.35.100.21 - -[19/Jan/2016:14:47:37 -0400] "GET /NetScaler.html HTTP/1.1" 200 6553

这样的日志可以时刻记录访问的源地址、访问时间、目标URL等。但这往往是不够的 :除了用户这端的问题,服务器后端更是我们需要关注的部分。例如服务器性能不足响应慢,用户访问某个网页出现延迟等。当用户报来故障的时候这个访问延迟已经发生过去,如果是上述的日志格式,如何能找到那一刻出现了问题?

记录了很多,可没有应该记录的关键!这一刻感觉自己失去了光明!

要锁定故障必须可以记录服务器端当时的响应时间才可以找出罪魁祸首。

我们需要如下这样,记录响应时间并且写入日志

Sep 7 03:04:21 <local0.alert> 127.0.0.2 09/06/2015:19:04:21 GMT myNS 0-PPE-0 : default REWRITE Message 10782 0 : "MyLog: ClientIP: 192.168.20.1:62716 ServerIP: 192.168.50.68:80 HOST: 192.168.20.67 URL: /index.asp restime: 90ms"

这对于NetScaler来说这是非常轻松的工作,NetScaler可以直接看透传输的内容并做出分析排名,可以按照单位时间的请求,带宽,或者响应时间的排名,一目了然

当然,这样的统计也可以在文本日志中体现出来。我们可以详细规定日志的格式,并在日志输出处勾选用户自定义日志信息

虽然我们测试时的日志简单明了生成的日志很小,但实际上拥有众多用户大型网站的日志是海量的,几小时可能就会以G级别计算。如果每条记录都记录响应时间,寻找高延迟时还是会比较困难,要动用各种工具来查询过滤。NetScaler还可以直接定义标准响应时间,仅仅在高于我们定义的延时发生后,警告才会产生并记录在日志中。

日志的格式内容依据需求任意定义,不仅是英文,我们还可以定义出中文日志在NetScaler上直接查看

日积月累的日志,最好有专门的日志服务器来接受,NetScaler也可以将高延迟的日志发往任意定义的远程日志服务器上,自定义地址如下:

在服务器上便可收到高延迟警报日志,这里用的是免费的KiWi Syslog Server

因为NetScaler天然就以七层方式处理着HTTP流量,因此类似上述的动态统计完全不影响性能。

二:通过NetScaler集中统计日志

默认的情况下,服务器日志是记录在每台服务器中的。每台设备日志的巡查极为耗时费力。我们需要分别配置每台服务器,把日志发送到集中日志服务器上去记录,定期进行文件切割,日志分析。

如前所述,其实大多数网站的前端都部署着负载均衡系统,所有的VIP虚拟站点都落于负载均衡之上,浏览者访问服务器都必须要经过负载均衡设备,那么您有没有想过让负载均衡直接生成日志发送日志,而省去管理后端众多服务器配置的烦恼?

NetScaler本身就具备此功能,叫做NetScaler Web Logging (NSWL),通过单个发送点便可以输送日志。HTTP/HTTPS的日志均可以直接按W3C/NCSA 的标准格式生成,和nginx apache生成的日志完全一致。可按照规定的变量调整格式。日志可发向我们常用的Linux,Windows,FreeBSD系统。

@Netscaler_Insight

我们还可以定义每个日志文件的生成周期(例如每天 每小时),生成文件大小(例如100M  1G),日志文件名称(例如Exmmyydd.log ),虚拟主机名称(例如 www.netscaler.com )并不需要通过自己编辑的脚本来切割日志。

三:通过Appflow可视化日志

在90年代,Cisco为运营商和企业开发了网络流量分析统计协议Netflow,无需探针,对CPU和网络要求低且功能丰富。历经多个版本升级优化,Netflow V9被IETF组织从5个候选方案中确定为IPFIX(IP FlowInformation Export)标准。NetFlow被广泛运用于网络监控,思杰基于此标准开发了全新的多项扩展,例如应用层参数,网页性能参数,数据库参数等

利用这些搜集到的数据,NetScaler Insight将应用层信息搜集统计,以强大的可视化图表展示出来

例如,访问地理位置,消耗带宽和平均响应时间

访问来源IP

请求数量曲线

也可以针对具体业务做出统计

进入具体业务,可以进行具体URL和客户端的分析,可以看到每个url的命中次数,渲染时间,加载时间等

进入具体的URL,可以看到时间曲线图

整个页面的详细分析

访问的操作系统,浏览器类型,响应类型等等

总结

   虽然运用应用交付设备的历史已有十余年,但很多使用者还是仅仅将其和负载均衡,甚至仅仅和轮询算法等价。其实随着技术发展,ADC早已成为网络看透和掌控应用层的大脑和双眼,运用好ADC才可以从网络的三四层直升进入应用层的天地。

   终于发现,我们并没有失忆,也没有失明,我们一直拥有着双眼,要做的仅仅是摘掉眼罩,睁开双眸。

   

   睁开眼的记忆是光明,闭上眼的记忆是黑暗。

时间: 2024-10-25 21:37:01

盲并遗忘着-利用应用交付透析大型网站日志的相关文章

从经典架构项目中透析微服务架构的核心概念和充血模型

微服务架构和SOA区别 微服务现在辣么火,业界流行的对比的却都是所谓的Monolithic单体应用,而大量的系统在十几年前都是已经是分布式系统了,那么微服务作为新的理念和原来的分布式系统,或者说SOA(面向服务架构)是什么区别呢? 我们先看相同点: 需要Registry,实现动态的服务注册发现机制:需要考虑分布式下面的事务一致性,CAP原则下,两段式提交不能保证性能,事务补偿机制需要考虑:同步调用还是异步消息传递,如何保证消息可靠性?SOA由ESB来集成所有的消息:都需要统一的Gateway来汇

数据分析处理——透析表和交叉表

1透视表 数据透视表(Pivot Table)是一种交互式的表,可以进行某些计算,如求和与计数等.所进行的计算与数据跟数据透视表中的排列有关. 之所以称为数据透视表,是因为可以动态地改变它们的版面布置,以便按照不同方式分析数据,也可以重新安排行号.列标和页字段. 数据分析中的透析表十分强大,甚至可以说是相当于分组聚合外加哑变量三个步骤了.但有个前提就是:在使用透析表之前,你必须明确知道自己想要的是什么,需要做什么! 当然,有时候你很难直接看出需求.这时候我们就得添加项目和检查每一步来验证我们一步

利用C#自带组件强壮程序日志

前言 在项目正式上线后,如果出现错误.异常.崩溃等情况, 我们往往第一想到的事就是查看日志. 所以日志对于一个系统的维护是非常重要的. 声明 本文中的示例代码旨在这个框架是怎么工作的,具体实现可以自由发挥. 贯穿所有的日志系统 日志系统,往往是贯穿一个程序的所有代码的; 试想一下,如果你的日志完全是由第三方组件提供的; 那么就意味着,你的所有项目都必须引用这个dll; 也许你会说自己可以2次封装,那么依然需要所有项目都引用你的这个封装后的log项目, 另一方面 一些log组件需要实例化后才可以使

大型网站系统架构技术原理透析

跟朋友聊天的时候,发现很多人对大型网站系统架构非常感兴趣,我也很感兴趣,经常会在家里2台笔记本和1台服务器组成的局域网环境里作些实验.我进 入IT行业的时间,大约是97,98年吧,那时候PC客户端软件最为盛行,做软件开发是一份很体面也很喜欢的工作.我从Win3.1上的VC1.5开始一 直到VC6.0,然后转为.Net开发,基本上都是从事客户端软件开发.本人的性格是危机意识向来严重,所以深感互联网必将盛行,传统软件必将走向没落, 于是转向了WEB开发.记得以前去某Portal网站应聘的时候,主考官

【转载】利用新浪博客建设网站外链

当今网络管理机制越来越完善,允许发外接的网站越来越少,建设网站外链变得越来越困难,今天和大家分享一篇文章,告诉你如何利用新浪博客建设网站外键. 目前国内知名的博客平台有QQ.网易.新浪.搜狐.百度等,先来分析一下为什么我为什么选择新浪博客建设网站外链? 腾讯博客(QQ空间)是不被搜索引擎收录的,所以直接淘汰. 网易博客使用的是三级域名,即使成功建设外链权重也不高. 百度博客(百度HI)即将要关闭了,完全是浪费时间. 搜狐博客也是使用三级域名,权重并不高. 新浪博客的内容页使用 blog.sina

[转]利用C#自带组件强壮程序日志

利用C#自带组件强壮程序日志 在项目正式上线后,如果出现错误,异常,崩溃等情况 我们往往第一想到的事就是查看日志 所以日志对于一个系统的维护是非常重要的 声明 正文中的代码只是一个栗子,一个非常简单的栗子,只是说明这个框架是怎么工作的 具体实现可以自由发挥~~~~ 贯穿所有的日志系统 日志系统,往往是贯穿一个程序的所有代码的; 试想一下,如果你的日志完全是由第三方组件提供的; 那么就意味着,你的所有项目都必须引用这个dll; 也许你会说自己可以2次封装,那么依然需要所有项目都引用你的这个封装后的

利用ASP.NET MVC Filter 处理网站异常

1,Filter(筛选器)是基于AOP(面向方面编程)的设计,他的好处什么的就不是本文要说的,如果要了解关于filter的相关知识请参照,大神说的够清楚了:http://www.cnblogs.com/willick/p/3331520.html 这里主要记录一下我自己的利用ASP.NET MVC Filter 处理网站异常过程: 2,首先添加 一个自定义的filter类: using System; using System.Collections.Generic; using System.

透析Java本质-谁创建了对象,this是什么

Android系统手机屏幕的左上角为坐标系,同时y轴方向与笛卡尔坐标系的y轴方向想反.通过提供的api如getLeft , getTop, getBottom, getRight可以获得控件在parent中的相对位置.同时,也可以获得控件在屏幕中的绝对位置,详细用法可参考android应用程序中获取view的位置 当我们编写一些自定义的滑动控件时,会用到一些api如scrollTo(),scrollBy(),getScrollX(), getScrollY().由于常常会对函数getScroll

阿里P8架构专家带你透析分布式架构

什么是分布式系统 分布式系统是由一组通过网络进行通信.为了完成共同的任务而协调工作的计算机节点组成的系统.分布式系统的出现是为了用廉价的.普通的机器完成单个计算机无法完成的计算.存储任务.其目的是利用更多的机器,处理更多的数据. 首先需要明确的是,只有当单个节点的处理能力无法满足日益增长的计算.存储任务的时候,且硬件的提升(加内存.加磁盘.使用更好的CPU)高昂到得不偿失的时候,应用程序也不能进一步优化的时候,我们才需要考虑分布式系统.因为,分布式系统要解决的问题本身就是和单机系统一样的,而由于