内容


Bluemix 日志选项概述

Comments

Bluemix 有三种不同的内置日志机制:

  • Bluemix UI
  • Cloud Foundry 命令行界面 (CLI)
  • 外部日志

我将逐一介绍这三种选项 - 最可靠的机制留待最后介绍 - 以解决上述开发和运营人员所关心的问题。本概述也将涵盖各种选项的利弊。

日志选项 #1:Bluemix UI

在 Bluemix UI 中,您可以按以下步骤获取日志:

  • 登录到 Bluemix
  • 单击 Dashboard(仪表盘)
  • 单击您的应用
  • 单击 Files and Logs(文件和日志):
图 1.文件和日志
文件和日志
  • 展开日志文件夹:
图 2.日志
日志
日志

您将在这里获取有关应用的一些日志。请注意,您在此接收到的日志可能有不同的运行时语言。

优势

  • 在 Web 浏览器中易于获取

弊端

  • 不显示所有日志
  • 日志有不同语言
  • 如果应用有多个实例,日志不会聚集到一起
  • 应用崩溃和部署时,日志不会保存下来。

日志选项 #2:Cloud Foundry CLI

乍看之下,除了保留外,Cloud Foundry CLI 似乎可以提供您所需要的一切。那么,让我们来看看它是怎么工作的吧。在此提醒您注意,Cloud Foundry CLI 是 Cloud Foundry 的命令行界面;而 Cloud Foundry 是在 Bluemix 之上构建和运行的。若要开始使用 CLI,执行以下步骤:

  • 单击在 Bluemix UI 的仪表盘中的应用
  • 单击 Start Coding(开始编码)
  • 根据屏幕指令操作:
图 3.使用 cf 命令行工具
使用 cf 命令行工具
使用 cf 命令行工具

CLI 设置完成后,您就可以从应用中获取日志。使用以下命令:

cf logs myappname

用您的应用名称替换 myappname上述命令将连接至 Bluemix 并为您提供所有应用实例的实时聚集日志。请注意,这些日志不是过去的日志。 但您可以通过 CLI 浏览您应用过去的日志。不过等等,我刚才不是说您不能获取过去的日志吗?嗯,是的,但是有一个警告。通过 CLI,您可以从最近的日志输入中获取过去的日志。这在应用无法启动或需要查看最近发生的事时尤其有用。要执行此操作,执行以下步骤:

cf logs myappname --recent

--recent argument 让 CLI 获取尚未被覆盖的日志。我经常用这个来调试无法启动的应用。

优势

  • 显示您应用的所有日志(标准输出和标准错误)
  • 如果应用有多个实例,日志将会聚集到一起

弊端

  • 比 UI 需要更多工作来获取日志
  • 应用崩溃和部署时,日志不会保存下来
  • 日志没有关于您应用的完整历史。

日志选项 #3:外部日志

最后还有一种选项,我把最好的留到最后 - Cloud Foundry 可让您实时向第三方日志聚集器发送日志,如 Papertrail、Splunk、Sumologic、任何 syslog 主机、任何 syslog-tls 主机或任何 HTTPS POST 终端。

请容我再次强调:您可以编写自己的日志终端,Bluemix 将会向您发送应用日志。 有一天,我在空闲之余编写了一些在有 HTTPS POST 终端的 Bluemix 中运行的 Node.js 应用。该终端可接收我的应用日志并将其存储在 Cloudant 数据库中。最后,我写了个视图,以便日志的全文检索。相当顺利。

这个选项的优势就在于选择。基本上,你可以将日志发送到任何喜欢的地方。此外,通过将日志发送到某处存储起来,您还可以获得一个其他两个选项都没有的优势,即全保留。那么,让我们来看看它是怎么工作的。

若要设置外部日志提供程序,您需要安装 Cloud Foundry CLI。您将需要具备日志提供程序的日志终端(有关详情,参阅本帖后面的参考文献部分);如果有日志终端,则可开始设置日志。例如,下面是启用 Papertrail 日志的命令:

cf cups my-logs -l syslog://logs.papertrailapp.com:PORT
cf bind-service myappname my-logs
cf restage myappname

您需要用您的应用名称替换 myappname,并用正确的 Papertrail 端口替换 PORT。让我们了解一下具体内容:

  • cf cups my-logs -l syslog://logs.papertrailapp.com:PORT 创建日志终端
  • cf bind-service myappname my-logs 连接日志服务至应用
  • cf restage myappname 重启应用并将日志服务与实时日志流相连。

或者,您可以使用以下命令登录到 syslog/syslog-tls:

cf cups my-logs -l syslog://HOST:PORT

cf cups my-logs -l syslog-tls://HOST:PORT

用您的信息替换 HOST 和 PORT。注意,如果您正在使用 syslog-tls,则不能使用自签署的证书 - 该证书必须是证书机构信任的证书。

最后,以下是指定 HTTPS POST 日志的命令:

cf cups my-logs -l https://HOST:PORT

用您的值替换 HOST 和 PORT。

优势

  • 显示您应用的所有日志(标准输出和标准错误)
  • 如果应用有多个实例,日志将会聚集到一起
  • 日志有关于您应用的完整历史
  • 应用崩溃和部署时,日志将会保存下来

弊端

  • 比 UI 需要更多工作来设置日志。

总结

我个人综合使用 Cloud Foundry CLI 和外部日志。当使用一个新应用但该应用启动失败时,我喜欢用 --recent argument 和 CLI。进行开发或测试时,我喜欢用 CLI 来传输日志。应用产品化前,我喜欢是要用外部日志提供程序来保存所有日志。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Cloud computing
ArticleID=1025193
ArticleTitle=Bluemix 日志选项概述
publish-date=01052016