更新Logstore

使用UpdateLogStore接口可以更新Logstore的属性信息,例如数据保存时间、Shard分区个数等。

前提条件

您已完成以下操作:

参数说明

def update_logstore(self, project_name, logstore_name, ttl=None, enable_tracking=None, shard_count=None,
                    append_meta=None,
                    auto_split=None,
                    max_split_shard=None,
                    preserve_storage=None,
                    encrypt_conf=None,
                    hot_ttl=-1,
                    mode=None,
                    telemetry_type=None,
                    infrequent_access_ttl=-1
                    ):           

请求参数

变量

类型

是否必填

说明

project_name

String

Project名称:项目(Project)是日志服务的资源管理单元,是进行多用户隔离与访问控制的主要边界。更多信息,请参见管理Project

logstore_name

String

Logstore名称Project中全局唯一,且创建后不可修改。

其命名规则如下:

  • 仅支持小写字母、数字、连字符(-)和下划线(_)。

  • 必须以小写字母开头,以小写字母和数字结尾。

  • 名称长度为3~63个字符。

ttl

int

数据保存时间,单位为天。取值范围:1~3650,如果配置为3650,表示永久保存。当设置的保存期限到达时,日志将被删除。

数据保存时间(ttl)是以下三部分时间的总和:

  • 热存储数据保存时间(hot_ttl

  • 低频存储数据保存时间(infrequent_access_ttl

  • 归档存储数据保存时间

重要

如果调整了保存期限,日志服务会在1小时内清除所有超出新期限的数据,但是控制台首页的用量明细会在次日进行更新。例如,若原先的数据保存期限是5天,并将其改为1天,那么系统将在1小时内删除前4天的日志数据。

shard_count

int

分区(Shard)数量。更多信息,请参见Shard范围

重要

不支持通过update_logstore修改分区个数,只能通过SplitShard - 分裂Shard增加分区或MergeShard - 合并shard减少分区。

enable_tracking

bool

是否启用WebTracking

  • True:开启WebTracking功能,则表示该Logstore开启互联网匿名写入权限,没有经过有效鉴权,可能产生脏数据。

  • False(默认值):关闭WebTracking

说明

WebTracking支持快速采集各种浏览器以及iOS/Android/APP的访问信息。更多信息,请参见使用Web Tracking采集日志

append_meta

bool

是否开启记录外网IP功能。

  • True:开启记录外网IP功能,开启后日志服务自动把以下信息添加到日志的Tag字段中。

    • __client_ip__:客户端外网IP。

    • __receive_time__:日志到达时间,格式为Unix时间戳。

  • False(默认值):不开启记录外网IP功能。

auto_split

bool

是否开启自动分裂Shard

max_split_shard

int

最大分裂数:开启自动分裂Shard后,最大可支持自动分裂至256个分区。当auto_split参数为True时必须设置。

重要

auto_splitTrue时必须指定。

encrypt_conf

dict

加密配置数据结构,包含参数enableencrypt_typeuser_cmk_info。更多信息,请参见EncryptConf数据加密

telemetry_type

String

可观测数据类型。取值包括:

  • None:日志数据。默认为日志数据。

  • Metrics:时序数据。此时只有以下参数生效:

    • logstore_name

    • ttl

    • shard_count

    • auto_split

    • max_split_shard

    • append_meta

重要

此参数创建后不可修改

hot_ttl

int

数据在Logstore热存储层中的存储时间,单位为天。最小为7,最大不能超过ttl的值,取值为-1代表保存时间ttl内全是热存储。

当数据的存储时间超过您所配置的热存储层数据保存时间后,数据将转为低频存储。关于热存储、低频存储、归档存储的概念和转换流程,请参见管理智能存储分层

  • 热存储数据至少需要保存7天才能转换为低频存储,低频存储至少需要保存30天才能转换为归档存储。

  • 热存储数据至少需要保存30天才能转换为归档存储。

mode

String

日志服务提供Standard(标准型)和Query(查询型)两种类型的Logstore。

  • standard(默认值):支持日志服务一站式数据分析功能,适用于实时监控、交互式分析以及构建完整的可观测性系统等场景。

  • query:支持高性能查询,索引流量费用约为Standard的一半,但不支持SELECT语句,适用于数据量大、存储周期长(周、月级别以上)或无日志分析的场景。

更多信息,请参见Logstore类型对比

infrequent_access_ttl

int

数据在Logstore低频存储层中的存储时间,单位:天。低频存储数据至少需要保存30天才能转换为归档存储。更多信息,请参见管理智能存储分层

返回参数

返回参数请参见:UpdateLogStore - 更新LogStore

示例代码

from aliyun.log import LogClient
import os

# 本示例从环境变量中获取AccessKey ID和AccessKey Secret
access_key_id = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID', '')
access_key_secret = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET', '')
# 日志服务的服务接入点
endpoint = "cn-hangzhou.log.aliyuncs.com"

# 实例化LogClient类
client = LogClient(endpoint, access_key_id, access_key_secret)


def update_logstore():
    # 更新Logstore配置信息
    ttl = 3650
    enable_tracking = True
    shard_count = None
    append_meta = True
    auto_split = True
    max_split_shard = 32
    preserve_storage = None
    encrypt_conf = None
    hot_ttl = 7
    mode = None
    telemetry_type = None
    infrequent_access_ttl = 30

    res = client.update_logstore(project_name, logstore_name, ttl, enable_tracking, shard_count,
                        append_meta, auto_split, max_split_shard, preserve_storage, encrypt_conf,
                        hot_ttl, mode, telemetry_type, infrequent_access_ttl)
    res.log_print()

def get_logstore():
    # 获取指定LogStore信息
    res = client.get_logstore(project_name, logstore_name)

    print('GetLogStoreResponse:')
    print('logstore_name:', res.logstore_name)
    print('shard_count:', str(res.shard_count))
    print('auto_split:', res.auto_split)
    print('max_split_shard:', str(res.max_split_shard))
    print('ttl:', str(res.ttl))
    print('hot_ttl:', str(res.hot_ttl))
    print('infrequent_access_ttl:', str(res.infrequent_access_ttl))
    print('auto_split:', res.enable_tracking)
    print('append_meta:', res.append_meta)


if __name__ == '__main__':
    project_name = 'slsproject-1'
    logstore_name = "logstore-1"

    update_logstore()
    get_logstore()

示例返回结果

UpdateLogStoreResponse:
headers: {'Server': 'AliyunSLS', 'Content-Length': '0', 'Connection': 'keep-alive', 'Access-Control-Allow-Origin': '*', 'Date': 'Mon, 17 Feb 2025 07:00:01 GMT', 'x-log-time': '1739775601', 'x-log-requestid': '67B2DE711508ADEE94320806'}
GetLogStoreResponse:
logstore_name: logstore-1
shard_count: 2
auto_split: True
auto_split: 32
ttl: 3650
hot_ttl: 7
infrequent_access_ttl: 30
auto_split: True
append_meta: True

Process finished with exit code 0

相关文档