如何访问 Google Cloud Functions 执行指标?

How can I access Google Cloud Function execution metrics?

我想以编程方式获取与 Google 云函数执行相关的指标(例如调用、延迟等)。有没有一种(最好是简单的)方法来实现这一点(例如通过 API)?

Cloudfunctions 正在使用 Stackdriver 来捕获和显示这些指标。 (我假设您正在寻找显示在控制台中每个函数上的相同指标。)StackDriver 有一个 API 和客户端库,您可以在其中提取指标。有关更多信息,请访问 https://cloud.google.com/monitoring/docs/reference/libraries#client-libraries-install-nodejs

这是一个将这些内容拉入 node.js

的小例子
const util = require("util");
// Imports the Google Cloud client library
const monitoring = require("@google-cloud/monitoring");

// Your Google Cloud Platform project ID
const projectId = "<YOUR PROJECT ID>";

// Creates a client
const client = new monitoring.MetricServiceClient({
  keyFilename: "<YOUR CREDENTIALS>"
});

// list of metrics also avaliable at https://cloud.google.com/monitoring/api/metrics_gcp#gcp-cloudfunctions
// list all metrics avaliable
client
  .listMetricDescriptors({
    // name: `projects/${projectId}/monitoredResourceDescriptors/cloud_function`,
    name: `projects/${projectId}`,
    filter: 'metric.type = starts_with("cloudfunctions.googleapis.com")'
  })
  .then(results => {
    console.log(results);
  })
  .catch(err => {
    console.error("ERROR:", err);
  });

const currentTime = new Date();
endTime = currentTime.toISOString();
startTime = new Date(currentTime - 1 * 60 * 60 * 1000).toISOString();
interval = {
  startTime: {
    // Limit results to the last 20 minutes
    seconds: Date.now() / 1000 - 60 * 60
  },
  endTime: {
    seconds: Date.now() / 1000
  }
};

// get the executions accross time
client
  .listTimeSeries({
    name: `projects/${projectId}`,
    filter:
      'metric.type = "cloudfunctions.googleapis.com/function/execution_count" AND resource.label.function_name = "<YOUR FUNCTION NAME>"',
    view: "FULL",
    interval
  })
  .then(results => {
    // console.log(results);
    console.log(util.inspect(results, { showHidden: true, depth: 5 }));
  })
  .catch(err => {
    console.error("ERROR:", err);
  });