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

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

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

我的问题

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

const filter = `logName="some-log-name" AND jsonPayload.itemId="${itemId}" AND timestamp >= "2023-07-01T00:00:00Z"`;
    const options = {
        autoPaginate: false,
        filter: filter,
        pageSize: 1000,
        orderBy: 'timestamp desc',
    };
    console.log(options, itemId);
    try {
        const [entries] = await logging.getEntries(options);
        return entries.map(entry => entry.data);
    } catch (error) {
        console.error('Error fetching logs:', error);
        return [];
    }

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

$ gcloud logging buckets describe activity-logs-prod-us  --location global --project=c-cloud-environment
createTime: '2023-06-28T07:41:16.899404569Z'
description: Activity logs prod prod us env
indexConfigs:
- createTime: '2023-07-25T11:24:05.142048279Z'
  fieldPath: jsonPayload.itemId
  type: INDEX_TYPE_INTEGER
- createTime: '2023-07-25T11:24:05.142048279Z'
  fieldPath: jsonPayload.logType
  type: INDEX_TYPE_STRING
lifecycleState: ACTIVE
name: projects/c-cloud-environment/locations/global/buckets/activity-logs-prod-us
retentionDays: 3650
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

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

字符串
或者是

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


如果还能用的话。

相关问题