如何从cloud_run获取instanceid?

How to get instanceid from cloud_run?

来自云 运行 的日志吐出一些好的 json resource.labels.revision_name = my_name-00046-kip。

json 路径 labels.instanceId 更像是这样

00bf4bf02d71261c0c1f55a601331b336a5d90d365cca1b28330dcf3e456fb7c07d5b72f1d3c9a971e391b5edc3512aea8559d172b24e639

根据这份文件,我能够得到 revision_name

https://cloud.google.com/run/docs/reference/container-contract#env-vars

但我无法获取实例 ID,并且必须按实例报告指​​标,否则两个实例在同一分钟内报告将被拒绝。如何获取实例 ID(最好通过 DockerFile,如果不通过 api 调用)。如果云 运行 在一个修订名称下启动 10 个实例,我必须确保向我计划用实例 ID 填写 job_id 的通用任务资源唯一地报告指标。

谢谢, 院长

Stackdriver中logging的条目如下

labels: {
  instanceId: "00bf4bf02d4b374e91dda64bc4c4241a218302c4bcc73a01ecf85e582127e8c8076fcbe18b3cc934f5ed33e5dc1348c58cfd40cbecc0c9ae2a0b6d2356"   
 }

  labels: {
   configuration_name: "cloudrunservice"    
   location: "us-central1"    
   project_id: "xxxx-xxxx-000"    
   revision_name: "cloudrunservice-00002-leq"    
   service_name: "cloudrunservice"    
  }
  type: "cloud_run_revision" 

如您所述,每个都有实例 ID、修订名称和服务名称。这样,您就不必担心同一实例/时间在日志记录中被拒绝的条目。

我在 UI、managing Revisions 中看不到与实例 ID 相关的内容。从日志中处理此 JSON 您可以获得 InsanceID。

请尝试使用元数据服务器获取实例 ID:

http://metadata.google.internal/computeMetadata/v1/instance/id

请注意,"Metadata-Flavor: Google" header 也是必需的。

如果您正在使用 Java(如标签所示),以编程方式从“内部元数据服务器”获取实例 ID 的最简单方法可能是包含依赖项 com.google.cloud:google-cloud-core:1.93.5 (或更新)通过 Gradle/Maven 然后调用以下方法:

import com.google.cloud.MetadataConfig;

String instanceId = MetadataConfig.getInstanceId();