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

Simple hello world demo for writing custom OpenCensus metrics to StackDriver on GKE?

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

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

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。

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

有 stats/metrics 实施的示例代码,Stackdriver 专门针对 Node.js、Go 和 JAVA。

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

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

这里有一个guide and some examples here and here

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 Agent Exporter。唯一需要注意的是,并非所有 OpenCensus 语言 SDK 都已扩展为包含 OpenCensus 代理。该代理可用于例如戈朗。我的示例展示了如何使用通过 Kubernetes Secret 映射的 Google 服务帐户部署到 Kubernetes。您可以将 Agent 添加为 sidecar(最好),然后重新调整 Kubernetes 配置以向 Agent 提供服务帐户密码。

HTH!