tencentcloud_cls_sdk_go

package module
v1.0.14-polaris Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 8, 2026 License: Apache-2.0 Imports: 31 Imported by: 48

README

Tencent CLS Log SDK

"tencent cloud cls log sdk" 是专门为cls量身打造日志上传SDK。 一切只为满足您的需求~

USAGE

go get github.com/tencentcloud/tencentcloud-cls-sdk-go

为什么要使用CLS Log SDK

  • 异步发送:发送日志立即返回,无须等待,支持传入callback function。
  • 优雅关闭:通过调用close方法,producer会将所有其缓存的数据进行发送,防止日志丢失。
  • 感知每一条日志的成功状态: 用户可以自定义CallBack方法的实现,监控每一条日志的状态
  • 使用简单: 通过简单配置,就可以实现复杂的日志上传聚合、失败重试等逻辑
  • 失败重试: 429、500 等服务端错误,都会进行重试
  • 高性能: 得益于go语言的高并发能力

CLS Host

endpoint填写请参考可用地域中 API上传日志 Tab中的域名(也可以选择地域与网络环境类型自动生成。如:Guangzhou,Extranet)image-20230403191435319

密钥信息

AccessKeyID和AccessKeySecret为云API密钥,密钥信息获取请前往密钥获取。并请确保密钥关联的账号具有相应的SDK上传日志权限

Demo

package main

import (
	"fmt"
	"github.com/tencentcloud/tencentcloud-cls-sdk-go"
	"sync"
	"time"
)

func main() {
	producerConfig := tencentcloud_cls_sdk_go.GetDefaultAsyncProducerClientConfig()
	producerConfig.Endpoint = "ap-guangzhou.cls.tencentcs.com"
	producerConfig.AccessKeyID = ""
	producerConfig.AccessKeySecret = ""
	topicId := ""
	producerInstance, err := tencentcloud_cls_sdk_go.NewAsyncProducerClient(producerConfig)
	if err != nil {
		fmt.Println(err)
		return
	}

        // 异步发送程序,需要启动
	producerInstance.Start()
	
	var m sync.WaitGroup
	callBack := &Callback{}
	for i := 0; i < 10; i++ {
		m.Add(1)
		go func() {
			defer m.Done()
			for i := 0; i < 1000; i++ {
				log := tencentcloud_cls_sdk_go.NewCLSLog(time.Now().Unix(), map[string]string{"content": "hello world| I'm from Beijing", "content2": fmt.Sprintf("%v", i)})
				err = producerInstance.SendLog(topicId, log, callBack)
				if err != nil {
					fmt.Println(err)
					continue
				}
			}
		}()
	}
	m.Wait()
	producerInstance.Close(60000)
}

type Callback struct {
}

func (callback *Callback) Success(result *tencentcloud_cls_sdk_go.Result) {
	attemptList := result.GetReservedAttempts()
	for _, attempt := range attemptList {
		fmt.Printf("%+v \n", attempt)
	}
}

func (callback *Callback) Fail(result *tencentcloud_cls_sdk_go.Result) {
	fmt.Println(result.IsSuccessful())
	fmt.Println(result.GetErrorCode())
	fmt.Println(result.GetErrorMessage())
	fmt.Println(result.GetReservedAttempts())
	fmt.Println(result.GetRequestId())
	fmt.Println(result.GetTimeStampMs())
}

配置参数详解

参数 类型 描述
TotalSizeLnBytes Int64 实例能缓存的日志大小上限,默认为 100MB。
MaxSendWorkerCount Int64 client能并发的最多"goroutine"的数量,默认为50
MaxBlockSec Int 如果client可用空间不足,调用者在 send 方法上的最大阻塞时间,默认为 60 秒。
如果超过这个时间后所需空间仍无法得到满足,send 方法会抛出TimeoutException。如果将该值设为0,当所需空间无法得到满足时,send 方法会立即抛出 TimeoutException。如果您希望 send 方法一直阻塞直到所需空间得到满足,可将该值设为负数。
MaxBatchSize Int64 当一个Batch中缓存的日志大小大于等于 batchSizeThresholdInBytes 时,该 batch 将被发送,默认为 512 KB,最大可设置成 5MB。
MaxBatchCount Int 当一个Batch中缓存的日志条数大于等于 batchCountThreshold 时,该 batch 将被发送,默认为 4096,最大可设置成 40960。
LingerMs Int64 Batch从创建到可发送的逗留时间,默认为 2 秒,最小可设置成 100 毫秒。
Retries Int 如果某个Batch首次发送失败,能够对其重试的次数,默认为 10 次。
如果 retries 小于等于 0,该 ProducerBatch 首次发送失败后将直接进入失败队列。
MaxReservedAttempts Int 每个Batch每次被尝试发送都对应着一个Attemp,此参数用来控制返回给用户的 attempt 个数,默认只保留最近的 11 次 attempt 信息。
该参数越大能让您追溯更多的信息,但同时也会消耗更多的内存。
BaseRetryBackoffMs Int64 首次重试的退避时间,默认为 100 毫秒。 client采样指数退避算法,第 N 次重试的计划等待时间为 baseRetryBackoffMs * 2^(N-1)。
MaxRetryBackoffMs Int64 重试的最大退避时间,默认为 50 秒。

generate cls log

protoc --gofast_out=. cls.proto

使用北极星(Polaris)做服务发现

SDK 支持将 CLS 上报的目标 Endpoint 通过北极星 polaris-go v2 做服务发现与负载均衡。

1. 自定义 Namespace + Service(Endpoint 作为兜底)
import (
    cls "github.com/tencentcloud/tencentcloud-cls-sdk-go"
    "time"
)

func main() {
    // 创建北极星 Resolver
    resolver, err := cls.NewPolarisResolver(cls.PolarisResolverConfig{
        Namespace:    "Production",             // 必填:北极星命名空间
        Service:      "cls-gateway",            // 必填:北极星服务名
        Scheme:       "http",                   // 可选:默认 http
        FallbackHost: "ap-guangzhou.cls.tencentcs.com", // 可选:服务发现失败时的兜底地址
        Timeout:      500 * time.Millisecond,   // 可选:单次服务发现超时
        LbPolicy:     "weightedRandom",         // 可选:负载均衡策略
        // EnableReport: true,                  // 可选:默认 false(不上报调用结果);开启后会将请求结果回报北极星
    })
    if err != nil {
        panic(err)
    }
    defer resolver.Close()

    producerConfig := cls.GetDefaultAsyncProducerClientConfig()
    // 使用北极星做服务发现时,Endpoint 可以留空;也可作为兜底
    producerConfig.Endpoint = ""
    producerConfig.AccessKeyID = "xxx"
    producerConfig.AccessKeySecret = "yyy"
    producerConfig.Resolver = resolver

    producer, err := cls.NewAsyncProducerClient(producerConfig)
    if err != nil {
        panic(err)
    }
    producer.Start()
    // ... 正常调用 producer.SendLog / SendLogList
}

同步 Producer 的用法完全类似,只需要设置 SyncProducerClientConfig.Resolver = resolver。

2. 工作机制
  • 每次向 CLS 发送前,SDK 会调用 Resolver.Resolve(ctx) 获取一个由北极星选出的可用实例。
  • 调用结果上报默认关闭:需将 PolarisResolverConfig.EnableReport 设为 true 才会在请求结束后通过 Reporter.Report(err, statusCode, cost) 把调用结果(成功/失败、耗时、状态码)回报给北极星,用于故障剔除、负载均衡与熔断。
  • 状态码约定(仅在开启上报时生效):2xx / 4xx 视为调用成功(4xx 属于客户端错误,不影响实例健康度);5xx 与网络错误视为失败。
  • 如果 PolarisResolverConfig.FallbackHost 非空,则在北极星服务发现失败时会兜底使用该地址。
3. 自定义 Resolver

如果你不使用北极星,也可以自己实现 cls.EndpointResolver 接口,完成任意自定义的服务发现逻辑:

type EndpointResolver interface {
    Resolve(ctx context.Context) (endpoint *ResolvedEndpoint, reporter Reporter, err error)
}

feature

Documentation

Index

Constants

View Source
const BAD_REQUEST = "BadRequest"
View Source
const CompressionLevelDefault = -1000
View Source
const INTERNAL_SERVER_ERROR = "InternalError"
View Source
const MISSING_HOST = "MissingHost"
View Source
const MISS_ACCESS_KEY_ID = "MissAccessKeyId"
View Source
const MISS_ACCESS_SECRET = "MissAccessKeyId"
View Source
const MISS_ACCESS_TOKEN = "MissAccessKeyId"
View Source
const UNKNOWN_ERROR = "UnknownError"
View Source
const WRITE_QUOTA_EXCEED = "WriteQuotaExceed"

Variables

View Source
var (
	ErrInvalidLengthCls        = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowCls          = fmt.Errorf("proto: integer overflow")
	ErrUnexpectedEndOfGroupCls = fmt.Errorf("proto: unexpected end of group")
)

Functions

func DeflateCompress added in v1.0.13

func DeflateCompress(data []byte) ([]byte, error)

DeflateCompress ...

func GenerateProducerHash added in v1.0.7

func GenerateProducerHash(instanceID string) string

GenerateProducerHash ...

func GetLocalIP

func GetLocalIP() (string, error)

GetLocalIP get local IP with string format

func GetLogListSize

func GetLogListSize(logList []*Log) (int, error)

func GetLogSizeCalculate

func GetLogSizeCalculate(log *Log) (int, error)

func GetTimeMs

func GetTimeMs(t int64) int64

func NewCLSClient

func NewCLSClient(options *Options) (*CLSClient, *CLSError)

func SetUserAgent added in v1.0.9

func SetUserAgent(agent string)

SetUserAgent ...

func SetVersion added in v1.0.9

func SetVersion(ver string)

SetVersion ...

func ZSTDCompress added in v1.0.2

func ZSTDCompress(params ZstdEncoderParams, dst, src []byte) ([]byte, error)

func ZSTDDecompress added in v1.0.2

func ZSTDDecompress(params ZstdDecoderParams, dst, src []byte) ([]byte, error)

Types

type Accumulator

type Accumulator struct {
	// contains filtered or unexported fields
}

func NewAccumulator

func NewAccumulator(config *AsyncProducerClientConfig, worker *Worker, threadPool *SendThreadPool, producer *AsyncProducerClient) *Accumulator

NewAccumulator ...

type AsyncProducerClient

type AsyncProducerClient struct {
	Client *CLSClient
	// contains filtered or unexported fields
}

AsyncProducerClient async producer client

func NewAsyncProducerClient

func NewAsyncProducerClient(asyncProducerClientConfig *AsyncProducerClientConfig) (*AsyncProducerClient, error)

NewAsyncProducerClient 初始化Async Producer Client

func (*AsyncProducerClient) Close

func (producer *AsyncProducerClient) Close(timeoutMs int64) error

func (*AsyncProducerClient) SendLog

func (producer *AsyncProducerClient) SendLog(topicId string, log *Log, callback CallBack) error

func (*AsyncProducerClient) SendLogList

func (producer *AsyncProducerClient) SendLogList(topicId string, logList []*Log, callback CallBack) (err error)

func (*AsyncProducerClient) Start

func (producer *AsyncProducerClient) Start()

type AsyncProducerClientConfig

type AsyncProducerClientConfig struct {
	TotalSizeLnBytes    int64
	MaxSendWorkerCount  int64
	MaxBlockSec         int
	MaxBatchSize        int64
	MaxBatchCount       int
	LingerMs            int64
	Retries             int
	MaxReservedAttempts int
	BaseRetryBackoffMs  int64
	MaxRetryBackoffMs   int64
	Endpoint            string

	AccessKeyID     string
	AccessKeySecret string
	AccessToken     string
	Source          string
	Timeout         int
	IdleConn        int
	CompressType    string
	HostName        string
	// Resolver 可选:设置后每次发送前会动态解析 Host(如通过北极星服务发现)。
	// 若 Resolver 不为 nil,Endpoint 可以为空,或作为兜底使用。
	Resolver EndpointResolver
	// contains filtered or unexported fields
}

AsyncProducerClientConfig Producer Config

func GetDefaultAsyncProducerClientConfig

func GetDefaultAsyncProducerClientConfig() *AsyncProducerClientConfig

GetDefaultAsyncProducerClientConfig 获取默认的Producer Config

func (*AsyncProducerClientConfig) SetEndpointByRegionAndNetworkType added in v1.0.12

func (config *AsyncProducerClientConfig) SetEndpointByRegionAndNetworkType(region Region, networkType NetworkType)

SetEndpointByRegionAndNetworkType 根据地域和网络类型设置域名

type Attempt

type Attempt struct {
	Success      bool
	RequestId    string
	ErrorCode    string
	ErrorMessage string
	TimeStampMs  int64
}

func NewAttempt

func NewAttempt(success bool, requestId, errorCode, errorMessage string, timeStampMs int64) *Attempt

NewAttempt init attempt

type CLSClient

type CLSClient struct {
	// contains filtered or unexported fields
}

func (*CLSClient) ResetSecretToken

func (client *CLSClient) ResetSecretToken(secretID string, secretKEY string, secretToken string) *CLSError

func (*CLSClient) Send

func (client *CLSClient) Send(ctx context.Context, topicId string, group ...*LogGroup) *CLSError

Send cls实际发送接口

type CLSError

type CLSError struct {
	HTTPCode  int32  `json:"httpCode"`
	Code      string `json:"errorCode"`
	Message   string `json:"errorMessage"`
	RequestID string `json:"requestID"`
}

Error defines sls error

func NewError

func NewError(httpCode int32, requestID, errorCode string, err error) *CLSError

NewClientError new client error

func (CLSError) Error

func (e CLSError) Error() string

func (CLSError) String

func (e CLSError) String() string

type CallBack

type CallBack interface {
	Success(result *Result)
	Fail(result *Result)
}

type Credentials added in v1.0.6

type Credentials struct {
	SecretID    string
	SecretKEY   string
	SecretToken string
}

type EndpointResolver

type EndpointResolver interface {
	// Resolve 返回本次请求要使用的 Endpoint。
	// 返回的 Reporter 可能为 nil,此时表示不需要上报。
	Resolve(ctx context.Context) (endpoint *ResolvedEndpoint, reporter Reporter, err error)
}

EndpointResolver 用于每次发送前动态解析出真实的目标地址。 实现方(例如北极星 PolarisResolver)在 Resolve 中执行服务发现, 返回本次请求应使用的 Host 以及一个 Reporter 用于请求结束后上报调用结果。

type ErrorMessage

type ErrorMessage struct {
	Code    string `json:"errorcode"`
	Message string `json:"errormessage"`
}

type Log

type Log struct {
	Time                 *int64         `protobuf:"varint,1,req,name=time" json:"time,omitempty"`
	Contents             []*Log_Content `protobuf:"bytes,2,rep,name=contents" json:"contents,omitempty"`
	CollectTime          *int64         `protobuf:"varint,3,opt,name=collectTime" json:"collectTime,omitempty"`
	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
	XXX_unrecognized     []byte         `json:"-"`
	XXX_sizecache        int32          `json:"-"`
}

func NewCLSLog

func NewCLSLog(logTime int64, addLogMap map[string]string) *Log

NewCLSLog ...

func (*Log) Descriptor

func (*Log) Descriptor() ([]byte, []int)

func (*Log) GetCollectTime added in v1.0.8

func (m *Log) GetCollectTime() int64

func (*Log) GetContents

func (m *Log) GetContents() []*Log_Content

func (*Log) GetTime

func (m *Log) GetTime() int64

func (*Log) Marshal

func (m *Log) Marshal() (dAtA []byte, err error)

func (*Log) MarshalTo

func (m *Log) MarshalTo(dAtA []byte) (int, error)

func (*Log) MarshalToSizedBuffer

func (m *Log) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*Log) ProtoMessage

func (*Log) ProtoMessage()

func (*Log) Reset

func (m *Log) Reset()

func (*Log) Size

func (m *Log) Size() (n int)

func (*Log) String

func (m *Log) String() string

func (*Log) Unmarshal

func (m *Log) Unmarshal(dAtA []byte) error

func (*Log) XXX_DiscardUnknown

func (m *Log) XXX_DiscardUnknown()

func (*Log) XXX_Marshal

func (m *Log) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Log) XXX_Merge

func (m *Log) XXX_Merge(src proto.Message)

func (*Log) XXX_Size

func (m *Log) XXX_Size() int

func (*Log) XXX_Unmarshal

func (m *Log) XXX_Unmarshal(b []byte) error

type LogGroup

type LogGroup struct {
	Logs                 []*Log    `protobuf:"bytes,1,rep,name=logs" json:"logs,omitempty"`
	ContextFlow          *string   `protobuf:"bytes,2,opt,name=contextFlow" json:"contextFlow,omitempty"`
	Filename             *string   `protobuf:"bytes,3,opt,name=filename" json:"filename,omitempty"`
	Source               *string   `protobuf:"bytes,4,opt,name=source" json:"source,omitempty"`
	LogTags              []*LogTag `protobuf:"bytes,5,rep,name=logTags" json:"logTags,omitempty"`
	Hostname             *string   `protobuf:"bytes,6,opt,name=hostname" json:"hostname,omitempty"`
	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
	XXX_unrecognized     []byte    `json:"-"`
	XXX_sizecache        int32     `json:"-"`
}

func (*LogGroup) Descriptor

func (*LogGroup) Descriptor() ([]byte, []int)

func (*LogGroup) GetContextFlow

func (m *LogGroup) GetContextFlow() string

func (*LogGroup) GetFilename

func (m *LogGroup) GetFilename() string

func (*LogGroup) GetHostname added in v1.0.8

func (m *LogGroup) GetHostname() string

func (*LogGroup) GetLogTags

func (m *LogGroup) GetLogTags() []*LogTag

func (*LogGroup) GetLogs

func (m *LogGroup) GetLogs() []*Log

func (*LogGroup) GetSource

func (m *LogGroup) GetSource() string

func (*LogGroup) Marshal

func (m *LogGroup) Marshal() (dAtA []byte, err error)

func (*LogGroup) MarshalTo

func (m *LogGroup) MarshalTo(dAtA []byte) (int, error)

func (*LogGroup) MarshalToSizedBuffer

func (m *LogGroup) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*LogGroup) ProtoMessage

func (*LogGroup) ProtoMessage()

func (*LogGroup) Reset

func (m *LogGroup) Reset()

func (*LogGroup) Size

func (m *LogGroup) Size() (n int)

func (*LogGroup) String

func (m *LogGroup) String() string

func (*LogGroup) Unmarshal

func (m *LogGroup) Unmarshal(dAtA []byte) error

func (*LogGroup) XXX_DiscardUnknown

func (m *LogGroup) XXX_DiscardUnknown()

func (*LogGroup) XXX_Marshal

func (m *LogGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*LogGroup) XXX_Merge

func (m *LogGroup) XXX_Merge(src proto.Message)

func (*LogGroup) XXX_Size

func (m *LogGroup) XXX_Size() int

func (*LogGroup) XXX_Unmarshal

func (m *LogGroup) XXX_Unmarshal(b []byte) error

type LogGroupList

type LogGroupList struct {
	LogGroupList         []*LogGroup `protobuf:"bytes,1,rep,name=logGroupList" json:"logGroupList,omitempty"`
	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
	XXX_unrecognized     []byte      `json:"-"`
	XXX_sizecache        int32       `json:"-"`
}

func (*LogGroupList) Descriptor

func (*LogGroupList) Descriptor() ([]byte, []int)

func (*LogGroupList) GetLogGroupList

func (m *LogGroupList) GetLogGroupList() []*LogGroup

func (*LogGroupList) Marshal

func (m *LogGroupList) Marshal() (dAtA []byte, err error)

func (*LogGroupList) MarshalTo

func (m *LogGroupList) MarshalTo(dAtA []byte) (int, error)

func (*LogGroupList) MarshalToSizedBuffer

func (m *LogGroupList) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*LogGroupList) ProtoMessage

func (*LogGroupList) ProtoMessage()

func (*LogGroupList) Reset

func (m *LogGroupList) Reset()

func (*LogGroupList) Size

func (m *LogGroupList) Size() (n int)

func (*LogGroupList) String

func (m *LogGroupList) String() string

func (*LogGroupList) Unmarshal

func (m *LogGroupList) Unmarshal(dAtA []byte) error

func (*LogGroupList) XXX_DiscardUnknown

func (m *LogGroupList) XXX_DiscardUnknown()

func (*LogGroupList) XXX_Marshal

func (m *LogGroupList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*LogGroupList) XXX_Merge

func (m *LogGroupList) XXX_Merge(src proto.Message)

func (*LogGroupList) XXX_Size

func (m *LogGroupList) XXX_Size() int

func (*LogGroupList) XXX_Unmarshal

func (m *LogGroupList) XXX_Unmarshal(b []byte) error

type LogSendRetryQueue

type LogSendRetryQueue struct {
	// contains filtered or unexported fields
}

LogSendRetryQueue RetryQueue cache ProducerBatch and retry latter

func NewRetryQueue

func NewRetryQueue() *LogSendRetryQueue

NewRetryQueue ...

func (*LogSendRetryQueue) Len

func (retryQueue *LogSendRetryQueue) Len() int

func (*LogSendRetryQueue) Less

func (retryQueue *LogSendRetryQueue) Less(i, j int) bool

func (*LogSendRetryQueue) Pop

func (retryQueue *LogSendRetryQueue) Pop() interface{}

func (*LogSendRetryQueue) Push

func (retryQueue *LogSendRetryQueue) Push(x interface{})

func (*LogSendRetryQueue) Swap

func (retryQueue *LogSendRetryQueue) Swap(i, j int)

type LogTag

type LogTag struct {
	Key                  *string  `protobuf:"bytes,1,req,name=key" json:"key,omitempty"`
	Value                *string  `protobuf:"bytes,2,req,name=value" json:"value,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (*LogTag) Descriptor

func (*LogTag) Descriptor() ([]byte, []int)

func (*LogTag) GetKey

func (m *LogTag) GetKey() string

func (*LogTag) GetValue

func (m *LogTag) GetValue() string

func (*LogTag) Marshal

func (m *LogTag) Marshal() (dAtA []byte, err error)

func (*LogTag) MarshalTo

func (m *LogTag) MarshalTo(dAtA []byte) (int, error)

func (*LogTag) MarshalToSizedBuffer

func (m *LogTag) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*LogTag) ProtoMessage

func (*LogTag) ProtoMessage()

func (*LogTag) Reset

func (m *LogTag) Reset()

func (*LogTag) Size

func (m *LogTag) Size() (n int)

func (*LogTag) String

func (m *LogTag) String() string

func (*LogTag) Unmarshal

func (m *LogTag) Unmarshal(dAtA []byte) error

func (*LogTag) XXX_DiscardUnknown

func (m *LogTag) XXX_DiscardUnknown()

func (*LogTag) XXX_Marshal

func (m *LogTag) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*LogTag) XXX_Merge

func (m *LogTag) XXX_Merge(src proto.Message)

func (*LogTag) XXX_Size

func (m *LogTag) XXX_Size() int

func (*LogTag) XXX_Unmarshal

func (m *LogTag) XXX_Unmarshal(b []byte) error

type Log_Content

type Log_Content struct {
	Key                  *string  `protobuf:"bytes,1,req,name=key" json:"key,omitempty"`
	Value                *string  `protobuf:"bytes,2,req,name=value" json:"value,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (*Log_Content) Descriptor

func (*Log_Content) Descriptor() ([]byte, []int)

func (*Log_Content) GetKey

func (m *Log_Content) GetKey() string

func (*Log_Content) GetValue

func (m *Log_Content) GetValue() string

func (*Log_Content) Marshal

func (m *Log_Content) Marshal() (dAtA []byte, err error)

func (*Log_Content) MarshalTo

func (m *Log_Content) MarshalTo(dAtA []byte) (int, error)

func (*Log_Content) MarshalToSizedBuffer

func (m *Log_Content) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*Log_Content) ProtoMessage

func (*Log_Content) ProtoMessage()

func (*Log_Content) Reset

func (m *Log_Content) Reset()

func (*Log_Content) Size

func (m *Log_Content) Size() (n int)

func (*Log_Content) String

func (m *Log_Content) String() string

func (*Log_Content) Unmarshal

func (m *Log_Content) Unmarshal(dAtA []byte) error

func (*Log_Content) XXX_DiscardUnknown

func (m *Log_Content) XXX_DiscardUnknown()

func (*Log_Content) XXX_Marshal

func (m *Log_Content) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Log_Content) XXX_Merge

func (m *Log_Content) XXX_Merge(src proto.Message)

func (*Log_Content) XXX_Size

func (m *Log_Content) XXX_Size() int

func (*Log_Content) XXX_Unmarshal

func (m *Log_Content) XXX_Unmarshal(b []byte) error

type NetworkType added in v1.0.12

type NetworkType string

NetworkType 网络类型,可以将string赋值给该类型,实现自定义网络类型

const (
	Intranet NetworkType = "cls.tencentyun.com" //内网
	Extranet NetworkType = "cls.tencentcs.com"  //外网
)

type Options

type Options struct {
	Host         string
	Scheme       string
	Timeout      int
	IdleConn     int
	CompressType string
	Credentials  Credentials
	// Resolver 可选。若不为 nil,则每次发送请求前会调用其 Resolve 方法
	// 动态解析实际使用的 Host(如通过北极星服务发现)。
	// 请求完成后会通过返回的 Reporter 回报调用结果,供负载均衡/熔断使用。
	Resolver EndpointResolver
}

type PolarisResolver

type PolarisResolver struct {
	// contains filtered or unexported fields
}

PolarisResolver 基于北极星(polaris-go v2)的 EndpointResolver 实现。

func NewPolarisResolver

func NewPolarisResolver(cfg PolarisResolverConfig) (*PolarisResolver, error)

NewPolarisResolver 创建一个新的北极星 Resolver。 如果 cfg.ConsumerAPI 为空,将通过 polarisapi.NewConsumerAPI() 使用默认配置文件创建。

func (*PolarisResolver) Close

func (r *PolarisResolver) Close()

Close 释放内部持有的 ConsumerAPI(仅当由本 Resolver 内部创建时才会销毁)。

func (*PolarisResolver) Resolve

Resolve 实现 EndpointResolver 接口,返回一个由北极星选出的实例地址。

type PolarisResolverConfig

type PolarisResolverConfig struct {
	// Namespace 必填,北极星命名空间,例如 "Production"。
	Namespace string
	// Service 必填,北极星服务名(对应 CLS 网关在北极星上注册的服务名)。
	Service string
	// Scheme 可选,"http" 或 "https",默认 "http"。
	Scheme string
	// FallbackHost 可选:当北极星服务发现失败时的兜底地址,
	// 例如 "ap-guangzhou.cls.tencentcs.com"。为空则在服务发现失败时直接返回错误。
	FallbackHost string
	// Timeout 可选,单次服务发现的超时时间。<=0 时使用北极星的默认配置。
	Timeout time.Duration
	// LbPolicy 可选,负载均衡算法,如 "weightedRandom"、"ringHash" 等。
	// 为空时使用北极星默认策略。
	LbPolicy string
	// ConsumerAPI 可选:如果你已经在其他地方创建了 ConsumerAPI,可直接注入复用。
	// 为空时内部会通过 polarisapi.NewConsumerAPI() 使用默认配置文件(./polaris.yaml)创建。
	ConsumerAPI polarisapi.ConsumerAPI
	// EnableReport 是否在每次请求结束后把调用结果(成功/失败、耗时、状态码)
	// 上报回北极星,供其做故障剔除、负载均衡与熔断。默认 false(不上报)。
	// 仅当你希望北极星根据 CLS 上报请求的真实结果动态调整实例健康度时才开启。
	EnableReport bool
}

PolarisResolverConfig 北极星 Resolver 配置。

基于 polaris-go v2(git.woa.com/polaris/polaris-go/v2)实现, 用于将 CLS 上报的目标 Endpoint 通过北极星做服务发现与负载均衡。

type ProducerBatch

type ProducerBatch struct {
	// contains filtered or unexported fields
}

func NewProducerBatch

func NewProducerBatch(topicID string, config *AsyncProducerClientConfig, callBackFunc CallBack, logData interface{}, packageID string) *ProducerBatch

NewProducerBatch 初始化Producer batch

type Region added in v1.0.12

type Region string

Region 地域类型,可以将string赋值给该类型,实现自定义地域

const (
	Beijing       Region = "ap-beijing"
	Guangzhou     Region = "ap-guangzhou"
	Shanghai      Region = "ap-shanghai"
	Chengdu       Region = "ap-chengdu"
	Nanjing       Region = "ap-nanjing"
	Chongqing     Region = "ap-chongqing"
	Hongkong      Region = "ap-hongkong"
	Siliconvalley Region = "na-siliconvalley"
	Ashburn       Region = "na-ashburn"
	Singapore     Region = "ap-singapore"
	Bangkok       Region = "ap-bangkok"
	Frankfurt     Region = "eu-frankfurt"
	Tokyo         Region = "ap-tokyo"
	Seoul         Region = "ap-seoul"
	Jakarta       Region = "ap-jakarta"
	Saopaulo      Region = "sa-saopaulo"
	ShenzhenFSI   Region = "ap-shenzhen-fsi"
	ShanghaiFSI   Region = "ap-shanghai-fsi"
	BeijingFSI    Region = "ap-beijing-fsi"
	ShanghaiADC   Region = "ap-shanghai-adc"
)

type Reporter

type Reporter interface {
	// Report 上报调用结果。err 为 nil 表示成功,非 nil 表示失败。
	// statusCode 为 HTTP 状态码;若发生网络错误无 HTTP 响应,可传 0。
	Report(err error, statusCode int, cost time.Duration)
}

Reporter 用于将一次请求的调用结果上报回 Resolver(如北极星)。

type ResolvedEndpoint

type ResolvedEndpoint struct {
	// Host 形如 "host:port" 或 "domain";不需要带 scheme 前缀。
	Host string
	// Scheme 可选:http 或 https。为空时沿用 Options.Scheme。
	Scheme string
}

ResolvedEndpoint 表示一次解析出的目标地址。

type Result

type Result struct {
	// contains filtered or unexported fields
}

func NewResult

func NewResult() *Result

NewResult init result

func (*Result) GetErrorCode

func (result *Result) GetErrorCode() string

func (*Result) GetErrorMessage

func (result *Result) GetErrorMessage() string

func (*Result) GetRequestId

func (result *Result) GetRequestId() string

func (*Result) GetReservedAttempts

func (result *Result) GetReservedAttempts() []*Attempt

func (*Result) GetTimeStampMs

func (result *Result) GetTimeStampMs() int64

func (*Result) IsSuccessful

func (result *Result) IsSuccessful() bool

type SendThreadPool

type SendThreadPool struct {
	// contains filtered or unexported fields
}

func NewSendThreadPool

func NewSendThreadPool(worker *Worker) *SendThreadPool

type SyncProducerClient added in v1.0.3

type SyncProducerClient struct {
	// contains filtered or unexported fields
}

SyncProducerClient synchronized producer client

func NewSyncProducerClient added in v1.0.3

func NewSyncProducerClient(config *SyncProducerClientConfig) (*SyncProducerClient, error)

NewSyncProducerClient new sync producer client

func (*SyncProducerClient) ResetSecretToken added in v1.0.3

func (c *SyncProducerClient) ResetSecretToken(secretID string, secretKEY string, secretToken string) error

ResetSecretToken reset temporary secret info

func (*SyncProducerClient) SendLogGroupList added in v1.0.6

func (c *SyncProducerClient) SendLogGroupList(ctx context.Context, topicID string, logGroupList []*LogGroup) error

SendLogGroupList send batched logs to cls

func (*SyncProducerClient) SendLogList added in v1.0.3

func (c *SyncProducerClient) SendLogList(ctx context.Context, topicID string, logList []*Log) error

SendLogList send batched logs to cls

type SyncProducerClientConfig added in v1.0.3

type SyncProducerClientConfig struct {
	Endpoint string

	AccessKeyID     string
	AccessKeySecret string
	AccessToken     string
	Timeout         int
	IdleConn        int
	CompressType    string
	NeedSource      bool
	HostName        string
	// Resolver 可选:设置后每次发送前会动态解析 Host(如通过北极星服务发现)。
	// 若 Resolver 不为 nil,Endpoint 可以为空,或作为兜底使用。
	Resolver EndpointResolver
	// contains filtered or unexported fields
}

SyncProducerClientConfig sync producer config

func GetDefaultSyncProducerClientConfig added in v1.0.3

func GetDefaultSyncProducerClientConfig() *SyncProducerClientConfig

GetDefaultSyncProducerClientConfig get default sync producer config

func (*SyncProducerClientConfig) SetEndpointByRegionAndNetworkType added in v1.0.12

func (config *SyncProducerClientConfig) SetEndpointByRegionAndNetworkType(region Region, networkType NetworkType)

SetEndpointByRegionAndNetworkType 根据地域和网络类型设置域名

type TimerSendLogTask

type TimerSendLogTask struct {
	// contains filtered or unexported fields
}

func NewTimerSendLogTask

func NewTimerSendLogTask(logAccumulator *Accumulator, retryQueue *LogSendRetryQueue, ioWorker *Worker, threadPool *SendThreadPool) *TimerSendLogTask

type Worker

type Worker struct {
	// contains filtered or unexported fields
}

func NewWorker

func NewWorker(clsClient *CLSClient, retryQueue *LogSendRetryQueue, maxSendWorkerCount int64, producer *AsyncProducerClient) *Worker

NewWorker ...

type ZstdDecoderParams added in v1.0.2

type ZstdDecoderParams struct {
}

type ZstdEncoderParams added in v1.0.2

type ZstdEncoderParams struct {
	Level int
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL