在TypeScript中指定Google Cloud Logging查询中的存储桶

zf2sa74q  于 2023-08-07  发布在  TypeScript
关注(0)|答案(2)|浏览(140)

bounty还有2天到期。回答此问题可获得+250声望奖励。Adam Matan希望引起更多关注这个问题:我希望这将帮助其他人了解使用GCP Logging的多桶查询的性能问题。

我的问题

我使用GCL来存储系统中项目的活动事件。每个事件都存储为单独的日志行,当我想查看特定项目的活动历史时,我使用其TS库查询GCL:

  1. const filter = `logName="some-log-name" AND jsonPayload.itemId="${itemId}" AND timestamp >= "2023-07-01T00:00:00Z"`;
  2. const options = {
  3. autoPaginate: false,
  4. filter: filter,
  5. pageSize: 1000,
  6. orderBy: 'timestamp desc',
  7. };
  8. console.log(options, itemId);
  9. try {
  10. const [entries] = await logging.getEntries(options);
  11. return entries.map(entry => entry.data);
  12. } catch (error) {
  13. console.error('Error fetching logs:', error);
  14. return [];
  15. }

字符串
字段已正确编入索引:

  1. $ gcloud logging buckets describe activity-logs-prod-us --location global --project=c-cloud-environment
  2. createTime: '2023-06-28T07:41:16.899404569Z'
  3. description: Activity logs prod prod us env
  4. indexConfigs:
  5. - createTime: '2023-07-25T11:24:05.142048279Z'
  6. fieldPath: jsonPayload.itemId
  7. type: INDEX_TYPE_INTEGER
  8. - createTime: '2023-07-25T11:24:05.142048279Z'
  9. fieldPath: jsonPayload.logType
  10. type: INDEX_TYPE_STRING
  11. lifecycleState: ACTIVE
  12. name: projects/c-cloud-environment/locations/global/buckets/activity-logs-prod-us
  13. retentionDays: 3650
  14. updateTime: '2023-07-25T11:24:05.142048279Z'

**不幸的是,对于几十万项的小数据集,响应需要15-20秒。

What Have I Tried

我怀疑这个问题与索引有关,或者与我在其他GCL桶中有大量数据有关。我尝试指定要搜索的存储桶,但找不到此选项。

我的问题

如何在GCL查询中指定存储桶,以避免搜索所有存储桶?

wnrlj8wa

wnrlj8wa1#

要指定存储桶,您需要指定该存储桶中的LogView作为要在ListLogEntries查询中查询的资源名称。
调用logging.getEntries(options)时,options是一个GetEntriesRequest
您可以在选项中设置resourceNames字段。
这个resourceNames可以接受一个project-id或一个LogView名称。您可以使用如下所示的视图名称:
projects/[PROJECT_ID]/regions/[REGION]/buckets/[BUCKET_ID]/views/[VIEW_ID]
查看API here的完整文档。

v8wbuo2f

v8wbuo2f2#

你可以试试include

  1. import * as gcs from '@google-cloud/storage';
  2. const storage = new gcs.Storage();
  3. const bucket = storage.bucket(bucketname);

字符串
或者是

  1. const destBucket = gcs.bucket(....);


如果还能用的话。

相关问题