日志服务基础资源包括日志项目、日志主题等,本文档通过示例代码演示如何通过 SDK 创建日志项目、日志主题并配置索引。
已安装日志服务 Go SDK。更多信息,请参见安装 Go SDK。
已执行以下命令安装 proto 依赖包。
go get -u github.com/gogo/protobuf/proto
已添加 VOLCENGINE_ACCESS_KEY_ID
等环境变量。环境变量的配置方式请参考配置身份认证信息。
注意
推荐通过环境变量动态获取火山引擎密钥等身份认证信息,以免 AccessKey 硬编码引发数据安全风险。
本文档通过示例代码演示如何通过 SDK 在指定地域下创建日志项目、日志主题并配置索引。日志项目所在的地域为 your-service-region,且与初始化 Client 时填写的地域一致。创建日志主题时,推荐开启自动分裂分区,在业务突发大流量的场景中避免数据读写速度受限于分区数量。本文以同时开启全文索引和键值索引为例,您可以根据日志字段及检索分析需求按需设置索引,关于设置索引的详细说明请参考配置索引。
创建日志项目、日志主题并配置索引的示例代码如下。
package tls import ( "fmt" "github.com/volcengine/volc-sdk-golang/service/tls" ) func main() { // 初始化客户端,推荐通过环境变量动态获取火山引擎密钥等身份认证信息,以免 AccessKey 硬编码引发数据安全风险。详细说明请参考https://www.volcengine.com/docs/6470/1166455 // 使用 STS 时,ak 和 sk 均使用临时密钥,且设置 VOLCENGINE_TOKEN;不使用 STS 时,VOLCENGINE_TOKEN 部分传空 client := tls.NewClient(os.Getenv("VOLCENGINE_ENDPOINT"), os.Getenv("VOLCENGINE_ACCESS_KEY_ID"), os.Getenv("VOLCENGINE_ACCESS_KEY_SECRET"), os.Getenv("VOLCENGINE_TOKEN"), os.Getenv("VOLCENGINE_REGION")) // 创建日志项目 // 请根据您的需要,填写ProjectName和可选的Description;请您填写和初始化client时一致的Region; // CreateProject API的请求参数规范请参阅https://www.volcengine.com/docs/6470/112174 createProjectResp, err := client.CreateProject(&tls.CreateProjectRequest{ ProjectName: "project-name", Description: "project-description", Region: "your-service-region", }) if err != nil { // 处理错误 fmt.Println(err.Error()) } projectID := createProjectResp.ProjectID // 创建日志主题 // 请根据您的需要,填写ProjectId、TopicName、Ttl、Description、ShardCount、AutoSplit、MaxSplitShard、EnableTracking等参数值 // CreateTopic API的请求参数规范请参阅https://www.volcengine.com/docs/6470/112180 maxSplitShard := int32(10) enableTracking := true createTopicResp, err := client.CreateTopic(&tls.CreateTopicRequest{ ProjectID: projectID, TopicName: "topic-name", Ttl: 30, Description: "topic-description", ShardCount: 2, AutoSplit: true, MaxSplitShard: &maxSplitShard, EnableTracking: &enableTracking, }) if err != nil { // 处理错误 fmt.Println(err.Error()) } topicID := createTopicResp.TopicID // 创建索引配置 // 请根据您的需要,填写TopicId,开启FullText全文索引或KeyValue键值索引或同时开启二者 // CreateIndex API的请求参数规范请参阅https://www.volcengine.com/docs/6470/112187 _, err = client.CreateIndex(&tls.CreateIndexRequest{ TopicID: topicID, FullText: &tls.FullTextInfo{ Delimiter: ",-;", CaseSensitive: false, IncludeChinese: false, }, KeyValue: &[]tls.KeyValueInfo{ { Key: "key1", Value: tls.Value{ ValueType: "text", Delimiter: ", ?", CasSensitive: false, IncludeChinese: false, SQLFlag: false, }, }, { Key: "key2", Value: tls.Value{ ValueType: "long", Delimiter: "", CasSensitive: false, IncludeChinese: false, SQLFlag: true, }, }, }, }) if err != nil { // 处理错误 fmt.Println(err.Error()) } }
通过 SDK 发送调用 API 的请求以后,您会收到服务端的响应,如果响应中包含 200 以外的状态码,表示接口调用失败。您可以参考各个 API 的文档查看对应的错误码信息。
本示例中涉及到的 API 接口如下。您可以参考 API 文档查看对应接口的详细信息。
API | 说明 |
---|---|
调用 CreateProject 接口创建一个日志项目。 | |
调用 CreateTopic 接口创建日志主题。 | |
调用 CreateIndex 接口创建索引。 |
关于日志服务基础资源管理的完整示例代码,请参考 TLS Go SDK Demo on GitHub。