如何最大限度利用CloudWatch Logs

日期:2016-11-4作者:Chris Moyer

【TechTarget中国原创】不同于标准的应用开发方法,使用AWS Lambda的无服务计算不便于调试。以下这些工具可以帮助开发人员调试Lambda错误。
开发人员可以用来建立和管理无服务应用程序的AWS Lambda教程、工具和框架已经有一些了。但关于调试Lambda方面的信息还很缺失。
Lambda函数不像标准应用部署。开发人员无法通过SSH连到服务器上查看日志文件,输出或运行测试命令来了解到底哪里出错了。Lambda函数运行在一个即时环境中,启动一个新容器并执行代码,然后在几分钟内快速销毁该容器。虽然一些容器可以被重用,但开发人员无法在函数调用失败时访问容器从而确定哪里出错了。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

评论
查看更多评论

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

云计算之管理>更多

  • 如何使用Azure API管理服务?

    在云和微服务架构时代,API是数字化业务的通用语言。根据分析公司Forrester Research预测,仅在美国,API管理工具的支出将在未来5年内达到近30亿美元。

  • 逐条讲解:云计算中的容器技术

    在如今,在讨论云时是很难不提及容器技术的。无论你是刚刚入门的技术新人或者经验丰富的专业人士,一定都应当知道这些与云中容器技术相关的重要术语。

  • 发挥你数据存储专家的价值

    看上去所有人都在试图消灭存储管理员。如果通用的虚拟管理员能够管理存储,或者云可以负责这一切,为什么不这么做?

  • HPE云收购Cruiser:揭示IT离不开云成本管理工具

    Hewlett Packard Enterprise已正式关闭自己的公有云IaaS产品,但IT专业人员要知道它并未退出公有云游戏。

相关推荐

技术手册>更多

  • Windows Azure技巧集锦

    如今,微软已经视云计算为核心战略,该项业务的表现甚至将决定这家老牌IT巨头未来的走势,而且其云计算产品Windows Azure也占据微软云计算服务的半壁江山。

  • 云开发系列文摘之私有云战略

    公有云和私有云各自成为镁光灯下的焦点词汇,但是很多分析师则愿意在二者的混合物——缓和云上下注。专家看到了人们对于私有云的兴趣,因为很多企业就是简单的不能或者不信任,所以不会将数据放入公有云中。不久的将来,这一现状会改变,一些数据在公有云中也非常安全,也许在亚马逊的保护之下甚至比大多数的IT内部要更加安全。在本期云开发文摘中,我们将如何制定良好的私有云战略。

  • 云计算入门手册

    “虚拟桌面”的概念的从何而来的?支持虚拟桌面的框架有哪些?云计算与虚拟桌面、云计算与SOA的关系是什么?云计算架构模型呢?如何企业考虑使用云计算,应该注意哪些事项?本手册将为您解答在这些方面的疑惑。

  • 购买云服务注意事项指南

    如果你需要数据中心有更多的计算或存储容量,但资本费用却成问题,那么公共云计算服务是一个很不错的选择。你可以根据需要获得可无限扩展的IT资源,只要为实际使用的那部分付费。但是在公共云中运行企业应用程序并不像有些提供商所说的那么简单。这本指南中的这些实用的指导准则探讨了购买云服务时要考虑的方面以及要提出的问题。

TechTarget

最新资源
  • 安全
  • CIO
  • SOA
  • 虚拟化
  • 网络
  • 数据中心
【TechTarget中国原创】

不同于标准的应用开发方法,使用AWS Lambda的无服务计算不便于调试。以下这些工具可以帮助开发人员调试Lambda错误。

开发人员可以用来建立和管理无服务应用程序的AWS Lambda教程、工具和框架已经有一些了。但关于调试Lambda方面的信息还很缺失。

Lambda函数不像标准应用部署。开发人员无法通过SSH连到服务器上查看日志文件,输出或运行测试命令来了解到底哪里出错了。Lambda函数运行在一个即时环境中,启动一个新容器并执行代码,然后在几分钟内快速销毁该容器。虽然一些容器可以被重用,但开发人员无法在函数调用失败时访问容器从而确定哪里出错了。

相反,开发人员必须使用日志记录工具,如Loggly或CloudWatch Logs 加上Kibana,来诊断问题。他们还可以使用像最新开源的AppEnlight这样的工具来管理Lambda的自定义AWS指标。

使用日志管理诊断问题

最简单的选择是使用Amazon内置的CloudWatch Logs;CloudWatch Logs允许开发人员通过内置的控制台搜索日志或者使用Kibana在亚马逊弹性搜索服务(ES)中对日志进行索引。但是,Amazon ES在日志量很大的情况下可能会非常昂贵。

开发人员可以使用CloudWatch Logs,通过CloudWatch指标进行基本的警报和图形化,但这些指标必须被预先设置好。没有办法可以追溯添加AWS指标,和查看指标创建之前的历史记录。此外,许多AWS指标(例如高级的定时功能和基于绘制的图形功能)在CloudWatch Logs中不可用。开发人员如果想要用这些功能的话,只能使用Kibana。

还有一些工具可以用来追踪CloudWatch Logs,如Apex的内置日志功能。此功能允许开发人员在部署完一个应用程序后或试图主动诊断一个问题时,可以近乎实时地查看日志。

最好的选择是使用CloudWatch Logs来访问日志,然后发送JSON格式的日志消息。这些消息将复杂的数据显示在日志中,帮助提供IT团队解决问题所需的信息。但日志往往还不够 - 你无法从日志中跟踪高级的问题,例如函数超时或一个异步函数抛出的异常。

使用AppEnlight进行高级诊断

NewRelic和其他应用性能监视工具对于基于Web的应用诊断非常有用,但那些没法在没有持久状态或任何直接基于Web请求的环境中执行(例如Lambda)。AppEnlight是一个可以为任何应用程序提供性能和错误日志功能的工具,即便不是基于Web的应用。

因为AppEnlight是开源的,所以可以调整。我创建了一个名为appenlight-reporter的NodeJS包管理器模块来帮助检测Lambda函数。在注册一个免费的AppEnlight帐户后,开发人员可以创建一个新的AppEnlight Reporter实例以添加AppEnlight插装:

var AppEnlightReporter = require('appenlight-reporter');

var appEnlight = new AppEnlightReporter({

  api_key: ‘API-KEY',

});

代码插装是指追踪错误报告,资源日志或完成一个操作所需时间的能力。代码插装提供了对特定代码或整个应用程序为什么会花费很长时间来处理或整个失败的详细分析。例如,代码插装会显示接收一个来自MySQL的请求花费了多长时间,以及在此时间内发生了哪些错误消息。一些框架,如NewRelic,提供了代码的自动化插装工具;其他的框架允许自定义事务跟踪,这要求开发人员标记代码块的开始和结束。

DevOps团队可以通过端点选项将报告器配置为直接连接到自定义的托管实例。他们还可以使用默认的标记和一个自定义的server_name。

AppEnlight Reporter可以分析自定义函数调用和AWS指标;还可以直接将错误报告发送到AppEnlight。开发人员可以使用以下代码发送一个自定义指标到AppEnlight:

appEnlight.sendMetrics(‘metricName', [

 [‘tagName', ‘tagValue'],

 [‘numericTag', 0],

]);

Use this code to send error reports to AppEnlight:

使用此代码发送错误报告到AppEnlight:

appEnlight.sendReport({

 view_name: ‘functionName',

 priority: 8, // Should be 0-10

 error: ‘Details of the Error that occurred',

 http_status: 500,

 tags: [

   // Custom tags just like with sendMetrics

 ],

 start_time: start_date.toISOString(),

 request_id: context.awsRequestId,

});

建议开发人员发送context.awsRequestId,因为这有助于将请求与发送的日志对应起来。如果与winston-appenlight包一起使用,日志行将显示在所有发送的错误报告中。DevOps团队还可以使用简单的Lambda函数将所有日志和请求ID一起从CloudWatch Logs发送到AppEnlight,从而简化日志记录的流程。

AppEnlight仪表盘

一旦AppEnlight从Lambda函数那里接收到数据,DevOps团队就可以使用两个主要的功能来诊断问题。Logs的部分允许开发人员对日志进行全文搜索,并通过标签,函数名称和resource进行过滤。

如何最大限度利用CloudWatch Logs

AppEnlight为开发人员提供了一个界面用于检查Lambda日志

开发人员还可以查看日志事件图表,并选择一个标签,添加一个过滤器。

除了Logs以外,AppEnlight还有一个仪表板系统,用于查看自定义指标的统计信息。以下仪表板使用的是自定义指标Created通过New Abstract标签创建的过滤:

如何最大限度利用CloudWatch Logs

AppEnlight仪表板允许开发人员创建自定义指标,例如Abstracts Created。

仪表板还可以有很多图表,将来自AWS指标和日志的统计信息进行合并显示。

AppEnlight有一个错误报告的方法,对于每一个sendReport函数调用,DevOps团队可以查看所有发送的错误以及特定错误发生的次数列表。配置日志,以便与错误报告相同的RequestID一起发送。那些日志会直接显示在错误报告中:

如何最大限度利用CloudWatch Logs

开发人员可以在AppEnlight中检查错误报告的历史记录

AppEnlight的免费托管版本对于接受数据的多少有限制。免费版本可以帮助开发人员熟悉适应该服务,但用户可能必须升级到付费版本才能享受到全部的好处。那些运行自己定制的AppEnlight托管版本的DevOps团队没有数据上的限制,因此对于任何具有大量关键任务数据的应用程序都推荐这种方法。

该开源AppEnlight工具允许用户提交Pull-Requests到代码库来改善性能和测试新颁本。该工具的一个Docker容器版据说正在开发中。