用于将自定义 OpenCensus 指标写入 GKE 上的 StackDriver 的简单 hello world 演示?

Posted

技术标签:

【中文标题】用于将自定义 OpenCensus 指标写入 GKE 上的 StackDriver 的简单 hello world 演示?【英文标题】:Simple hello world demo for writing custom OpenCensus metrics to StackDriver on GKE? 【发布时间】:2019-12-31 03:05:33 【问题描述】:

是否有一个简单的 hello world 示例用于在 GKE 应用程序中创建自定义指标并将其写入 StackDriver?

我看到有几个更大的演示项目似乎在使用它,例如:

https://github.com/GoogleCloudPlatform/microservices-demo https://github.com/rghetia/microservices-demo/tree/oc_agent

但它们似乎不同。后者有一个用于 oc-agent 的 DaemonSet,而第一个似乎没有。此外,还有测试版 Stackdriver Kubernetes Engine Monitoring,我不确定这样做是否会有所不同?似乎已经设置了一个指标服务器 pod,以及一个 prometheus-to-sd prod。

【问题讨论】:

【参考方案1】:

如果您希望专门为 Stackdriver 编写自定义 OpenCensus 指标,可以使用适用于 OpenCensus 的 Stackdriver 支持的 Stats/Metrics 和 Trace 导出器。示例可以在https://opencensus.io/exporters/ 找到。

有专门针对 Node.js、Go 和 JAVA 使用 Stackdriver 实现统计/指标的示例代码。

以下是 GCP 文档中的示例: https://cloud.google.com/monitoring/custom-metrics/open-census

【讨论】:

而且 Stackdriver 甚至会自动显示项目 ID、集群和节点名称,尽管我没有在 opencensus api 中明确配置它们。【参考方案2】:

上面的AlphaPapa回答很好。

我也写了几个简单的例子:

https://medium.com/google-cloud/opencensus-and-firestore-native-34bc1e3a962f

一些背景|指导:

在 Google acquired Stackdriver 之后,提供了客户端库,使开发人员能够将指标发送到 Stackdriver。这种紧密耦合方法的挑战在于,客户还使用 Prometheus、Datadog、Azure、AWS 等作为指标,使用 Zipkin、Jaeger、Stackdriver 等进行跟踪,客户应该要求他们现在使用的系统具有灵活性,明天可能会使用.

Google 在内部使用一个名为 Census 的系统,将指标生产者(例如您的代码)与指标消费者(例如 Stackdriver)分离。该机制作为 OpenCensus 开源。 OpenCensus 将指标生产者与消费者分离跟踪生产者与消费者。这允许您编写代码度量|跟踪客户端代码一次,它允许您的 SRE 团队切换监控|跟踪系统而不受惩罚。 OpenCensus Agent|Collector 是这种方法的顶峰,应该是您使用 OpenCensus 时的默认选择。

OpenCensus 可能代表了最好的方法,而且大部分都非常出色除了OpenCensus 和 OpenTracing 正在合并到 OpenTelemetry 和 - IMO - 这导致了减速。

我推荐你:

考虑 OpenCensus,但要知道它已进入一个重大变化时期。 更喜欢使用 OpenCensus Agent|Collector 来解耦您的客户端代码和服务 配置代理以使用例如Stackdriver 和其他指标|跟踪服务 在具有适当 IAM 角色的代理上使用应用程序默认凭据: 将指标写入 Stackdriver 将跟踪记录写入 Stackdriver Trace

在我的示例中,我使用了 Stackdriver Exporter。您应该改用 OpenCensus 代理导出器。唯一需要注意的是,并非所有 OpenCensus 语言 SDK 都已扩展为包含 OpenCensus 代理。代理可用于例如戈朗。我的示例展示了如何使用通过 Kubernetes Secret 映射的 Google 服务帐户部署到 Kubernetes。您可以将代理添加为边车(首选),然后只需重新调整 Kubernetes 配置以向代理提供服务帐户密钥。

HTH!

【讨论】:

感谢历史!了解背景非常有帮助。是的,总的来说,谷歌的遥测收集方法似乎还没有成熟,这反映在不断变化的无数方法中。也许几年后,我们会看到一些简单的“快乐路径”,这些路径在所有各种示例和教程中都是一致的。 我采用了直接的 Stackdriver Exporter 方法。我的整个服务都在 GCP 中,我没有计划使用另一个监控系统,所以我觉得这种方法是最轻量的。【参考方案3】:

您可以使用Prometheus 将自定义指标发送到 Stackdriver。你有 Go、Java、Python 和 Ruby,以及许多非官方的第三方客户端库。

这里有一个guide 和一些示例here 和here。

【讨论】:

以上是关于用于将自定义 OpenCensus 指标写入 GKE 上的 StackDriver 的简单 hello world 演示?的主要内容,如果未能解决你的问题,请参考以下文章

Jmeter FileWriter类,用于将自定义响应结果写到excel/txt/word/csv

将自定义标签注入 Java 客户端的默认 jmx Prometheus 指标

如何使用 OpenCensus 检测 Prometheus Gauge?

如何从 ADLS 将自定义数据框写入 eventthub

如何将自定义类型的列表/数组写入 HDF5 文件?

有没有办法在构建阶段自动将自定义值写入包的 .plist?