如何从监控 API 中获取指标样本

How get a metric sample from monitoring APIs

我仔细看了monitoring API. As far as I have read, it is possible to use gcloud for creating Monitoring Policies and edit the Policies ( Using Aleert API).

然而,从一方面来看,gcloud 似乎只能创建和编辑策略选项,而不能读取此类策略的结果。从这个页面我读到了这个选项:

Creating new policies
Deleting existing policies
Retrieving specific policies
Retrieving all policies
Modifying existing policies

另一方面,我阅读了 result of a failed request

Summary of the result of a failed request to write data to a time series.

所以它在我脑海中敲响了警钟,我确实可以得到一个结果列表,比如在一段时间内所有失败的写入请求。但是怎么办?

拜托,我的直截了当的问题是:我能否以某种方式监听警报事件或获取抛出的警报结果列表 Monitoring API v3

我发现 tag_firestore_instance 与 firestore 有某种关联,但如何使用它以及我可以搜索哪些信息?我无法在任何地方找到如何使用它。也许是常见的获取(例如 Postman/curl)或来自 gcloud shell。

PS.: 这个问题最初发布在 Google Group 但我被鼓励在这里问。

*** 根据 Alex 的建议进行编辑

我有一个 Angular 页面在监听我的 Firestore 数据库中的文档

export class AppComponent {
  public transfers: Observable<any[]>;

  transferCollectionRef: AngularFirestoreCollection<any>;

  constructor(public auth: AngularFireAuth, public db: AngularFirestore) {
    this.listenSingleTransferWithToken();
  }

  async listenSingleTransferWithToken() {
    await this.auth.signInWithCustomToken("eyJ ... CVg");
    this.transferCollectionRef = this.db.collection<any>('transfer', ref => ref.where("id", "==", "1"));
    this.transfers = this.transferCollectionRef.snapshotChanges().map(actions => {
      return actions.map(action => {
        const data = action.payload.doc.data();
        const id = action.payload.doc.id;
        return { id, ...data };
      });
    });
  }
}

所以,我知道至少有一个 reader 从

计数到 return
name: projects/firetestjimis
filter: metric.type = "firestore.googleapis.com/document/read_count"
interval.endTime: 2020-05-07T15:09:17Z

听懂你说的有点困难,但这是我想出来的。

这是可用的 Firestore 指标列表:https://cloud.google.com/monitoring/api/metrics_gcp#gcp-firestore

然后您可以将这些指标类型传递给此 API https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list

在那个页面上,我使用了右侧的"Try This API"工具并填写了以下内容

name = projects/MY-PROJECT-ID

filter = metric.type = "firestore.googleapis.com/api/request_count"

interval.endTime = 2020-05-05T15:01:23.045123456Z

在 chrome 的检查器中,我可以看到这是该工具发出的 GET 请求: https://content-monitoring.googleapis.com/v3/projects/MY-PROJECT-ID/timeSeries?filter=metric.type%20%3D%20%22firestore.googleapis.com%2Fapi%2Frequest_count%22&interval.endTime=2020-05-05T15%3A01%3A23.045123456Z&key=API-KEY-GOES-HERE

编辑: 上面返回了 200,但是 json 负载是空的。 我们还需要添加以下条目以获取要填充的数据

interval.startTime = 2020-05-04T15:01:23.045123456Z

也可以尝试到这里 console.cloud.google.com/monitoring/metrics-explorer 并在 "Find resource type and metric" 框中键入 firestore 并查看 google 自己的仪表板是否有数据填充. (这是为了确认那里确实有数据供您获取)