Swisscom Application Cloud 上的应用程序性能监控

Application Performance monitoring on Swisscom Application Cloud

我正在研究监控我们在 Swisscom 的 cloud-foundry 中安装的选项。我的目标如下:

到目前为止,我理解的选项如下(包括一些BUT):

  1. 我使用了一个非常好的 TOP cf-plugin (github) 这很好用。似乎它注册自己以获得所需的消防水管喷嘴并消耗数据。

这对于跟踪/临时监控非常有用,但对于严肃的基础设施监控不是很好。

  1. 我发现的另一种方法是使用 firehose-syslog 解决方案。

这可以部署为一个应用程序(据我所知)以类似的方式完成工作,就像 TOP cf 插件一样。

问题是,它需要注册客户端,因此它可以通过多普勒端点进行身份验证。出于某种原因,top-cf-plugin 会自动/以另一种方式执行此操作。

  1. 我正在考虑的最后一个选项是将监控本身构建到应用程序(使用特殊的构建包)

这可以用 Datadog 来完成。但是好像还需要专门的uaa客户端来注册Nozzle。

我想检查一下,是否有人(曾经)在类似的道路上,有一些发现。

最后我想向swisscom社区支持提出以下问题:

由于需要管理员权限,我们无法为firehose提供UAA客户端。 但是,有不同的方法可以在用户上下文中获取指标。

  1. CF API

    您可以通过轮询CF来获取特定应用的基本指标API: https://apidocs.cloudfoundry.org/5.0.0/apps/get_detailed_stats_for_a_started_app.html

    但是,由于您必须轮询(并且针对每个应用程序),因此不推荐使用这种方式。

  2. syslog drain 中的指标

    CF 允许开发人员将他们的日志转发到 syslog drain;在更新的版本中,CF 还会将指标发送到此 syslog drain(请参阅 https://docs.cloudfoundry.org/devguide/deploy-apps/streaming-logs.html#container-metrics)。 例如,您可以使用 Swisscom 的 Elasticsearch 服务来存储这些指标,然后使用 Kibana 对其进行分析。

  3. 使用 loggregator (firehose) 的指标

    firehose 允许为两种类型的角色将日志流式传输到客户端: 将 所有 日志流式传输给管理员(这需要具有管理员权限的 UAA 客户端)并将 app 日志和指标流式传输给具有应用 [=] 权限的开发人员58=]。这也是 cf logs 命令使用的。 cf top 也是这样 (it enumerates all apps and streams the logs of each app). 但是,您会发现大多数利用 firehose 的开源工具只能在管理员模式下工作,因为它们是为平台运营商编写的。

当然,您也可以通过对其进行检测(白盒方法)来监控您的应用程序,例如通过在 Spring 启动应用程序中配置 Spring 执行器或通过包含代理您最喜欢的 APM 供应商(Dynatrace、AppDynamics 等)

我想这是最常见的方法;我们已经看到很多团队通过检测他们的应用程序而取得成功。特别是因为高级监控无论如何都需要您创建自己的指标,因为 firehose 提供的 cpu/memory 指标在微服务世界中并不那么强大。

但是,选项 2. 也值得一试,特别是因为 ELK 的堆栈指标支持越来越好。