SDK主要功能
不同语言的SDK实现逻辑在具体细节上会存在细微差异,但都是对云日志服务API的进一步包装,实现的功能基本一致,SDK的主要功能包括:
- 跨语言封装 :云日志服务为各种编程语言提供了统一的API封装库,让您无需关注底层API的调用细节,即可实现高效、安全的日志服务交互。
- 数字签名自动化 :封装库内置了数字签名功能,您无需手动处理复杂的签名逻辑,只需提供必要的认证信息,SDK将自动完成签名过程。
- ProtoBuffer透明封装 :在上传日志时,SDK会自动将您的日志数据转换为符合ProtoBuffer格式的二进制数据,让您无需关心具体的ProtoBuffer编码细节。
- 压缩支持 :SDK支持日志数据的压缩传输,以提升传输效率和存储效率。默认情况下,SDK会启用压缩模式,默认使用lz4压缩。
- 统一错误处理 :云日志服务提供了统一的错误处理机制,让您可以按照您所熟悉的语言习惯来处理API请求中可能出现的异常。
- 异步请求 :目前,云日志服务提供的SDK全部具备同步请求方式,确保请求的完整性和顺序性。部分SDK提供异步请求、批量上传等更强大的功能。
这些特性旨在降低使用云日志服务API的复杂性,提高开发效率。更多详细信息,请参考下文提供的接口规范、请求签名、ProtoBuffer格式、错误处理机制等文档。
SDK列表
使用前准备
- 已在对应区域(资源池)开通云日志服务,详情参考开通云日志服务。
- 目标端云主机所在的vpc需要创建vpc终端节点,以打通与日志服务的网络连接,操作详情参考接入概述。
- 使用SDK接入云日志服务,需要设置正确的 AccessKey、SecretKey 和服务端 Endpoint。在调用前SDK,你需要已知以下参数:
- 云日志服务访问地址。详情请查看访问地址(Endpoint)。
- key凭证:accessKey和secretKey 。详情请查看如何获取访问密钥(AK/SK)。
- 日志项目编码:logProject,在使用SDK前,需要确保您有至少一个已经存在的日志项目。
- 日志单元编码:logUnit,在使用SDK前,需要确保日志项目中有至少一个已经存在的日志单元。
- 待上传的日志:logItem,在使用SDK前,需要确保日志已按照特定格式组织。
参数说明
参数 | 类型 | 描述 | 是否必须 |
---|---|---|---|
endpoint | string | 访问地址,详情请查看访问地址(Endpoint) | 是 |
accessKey | string | AccessKey,简称AK | 是 |
secretKey | string | SecretKey ,简称SK | 是 |
logProject | string | 日志项目编码 | 是 |
logUnit | string | 日志单元编码 | 是 |
logItem | LogItem | 待上传的日志 | 是 |
日志格式
日志格式根据SDK的语言类型有细微的差异,以Java SDK 为例,LogItem 有四个参数。
content 和 labels 是一个List 类型,其中的 LogContent
和 Labels
是一个<K,V>类型,K 是String 类型,V是一个泛型,可以为String、int、double等类型。
注意:其中content和labels的key的长度不超过64字符,仅支持数字、字母、下划线、连字符(-)、点(.),且必须以字母开头。value类型最好使用字符串(String)和数字类型(int,double),其他类型建议先转为字符串类型,并且value值不能为空或空字符串。
参数 | 类型 | 描述 | 是否必须 |
---|---|---|---|
log_timestamp | long | 时间戳,单位纳秒,一般是当前时间 | 是 |
origin_msg | string | 原始日志内容 | 是 |
content | ArrayList |
对日志进行分词后的内容,可用于索引 | 否 |
labels | ArrayList |
自定义标签 | 否 |
参数(Endpoint) 获取方式
各资源池地址请查看访问地址(Endpoint)。
参数(AccessKey、SecretKey)获取方式
天翼云账号的AK和SK,硬编码到代码中或者明文存储都有很大的安全风险,建议密文存放,使用时解密,确保安全,或者设置在环境变量中,从环境变量中获取。
AK、SK可以通过登录天翼云官网,在用户的账号中心中查看。详情请查看如何获取访问密钥(AK/SK)。
参数(logProject、logUnit)获取方式
logProject、logUnit代表了日志上传的目标日志项目与目标日志单元。要获取这两个参数的前提是您已经成功开通了云日志服务,并创建了日志项目和日志单元,详情参考创建日志项目与日志单元。
创建完成后,您可在云日志服务控制台-日志管理-日志项目与日志单元列表中获取。
注意日志项目和日志单元编码所属区域要和访问地址endpoint相对应,例如日志项目和日志单元开通在华东1区域内,则也需要使用华东1的endpoint。
接入限制
目前API 和 SDK日志上传都进行了频控限流措施,目前的传输的限制如下:
- 在1个日志项目下,写入流量最大限制:200MB/s
- 在1个日志项目下,写入次数最大限制:1000次/s
- 在1个日志单元下,写入流量最大限制:100MB/s
- 在1个日志单元下,写入次数最大限制:500次/s
如果日志上传频率很高,写入次数的被限流,可以在每次写入时上传多条日志,或者使用异步批量上传功能(部分SDK支持)。