tlsConsumer "github.com/volcengine/volc-sdk-golang/service/tls/consumer"
"github.com/volcengine/volc-sdk-golang/service/tls/pb"
"github.com/volcengine/volc-sdk-golang/service/tls/siem"
func ConsumerLogsToSyslogClient() error {
consumerCfg := tlsConsumer.GetDefaultConsumerConfig()
consumerCfg.Endpoint = os.Getenv("VOLCENGINE_ENDPOINT")
consumerCfg.Region = os.Getenv("VOLCENGINE_REGION")
consumerCfg.AccessKeyID = os.Getenv("VOLCENGINE_ACCESS_KEY_ID")
consumerCfg.AccessKeySecret = os.Getenv("VOLCENGINE_ACCESS_KEY_SECRET")
consumerCfg.ProjectID = "<YOUR-PROJECT-ID>"
consumerCfg.TopicIDList = []string{"<YOUR-TOPIC-ID>"}
consumerCfg.ConsumerGroupName = "<CONSUMER-GROUP-NAME>"
consumerCfg.ConsumerName = "<CONSUMER_NAME>"
syslogClient := siem.NewSyslogClient()
syslogClient.Host = os.Getenv("SPLUNK_HOST")
syslogClient.Port, _ = strconv.Atoi(os.Getenv("SPLUNK_PORT_UDP"))
syslogClient.SslSettings = &tls.Config{}
err := syslogClient.Connect()
log.Fatalf("syslog client connect error %v:", err)
var handleLogsFunc = func(topicID string, shardID int, l *pb.LogGroupList) {
for _, logGroup := range l.LogGroups {
for _, tlsLog := range logGroup.Logs {
syslogRFC5424 := siem.NewSyslogFormatRFC5424()
for _, content := range tlsLog.Contents {
syslogRFC5424.Priority = content.Value
syslogRFC5424.Version = content.Value
syslogRFC5424.Timestamp, _ = time.Parse(time.RFC3339, content.Value)
syslogRFC5424.Hostname = content.Value
syslogRFC5424.AppName = content.Value
syslogRFC5424.Pid = content.Value
syslogRFC5424.MsgId = content.Value
syslogRFC5424.Message = content.Value
syslogRFC5424Format, err := syslogRFC5424.FormatSyslogMessageWithRFC5424()
log.Printf("NOTICE: syslogRFC5424.FormatSyslogMessageWithRFC5424() failed: %v", err)
err = syslogClient.Send(syslogRFC5424Format)
tlsConsumerIns, err := tlsConsumer.NewConsumer(context.TODO(), consumerCfg, handleLogsFunc)
log.Fatalf("NewConsumer error %v", err)
if err := tlsConsumerIns.Start(); err != nil {
return fmt.Errorf("start consumer failed, error is %v", err)
time.Sleep(300 * time.Second)
_ = syslogClient.Close()