fix: correctly set ASCII trailer for syslog output (#10393)

This commit is contained in:
Joshua Powers 2022-01-11 15:15:13 -07:00 committed by GitHub
parent f59bdf9f10
commit bccecef13b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 31 additions and 1 deletions

View File

@ -219,7 +219,11 @@ func (s *Syslog) getSyslogMessageBytesWithFraming(msg *rfc5424.SyslogMessage) ([
return append([]byte(strconv.Itoa(len(msgBytes))+" "), msgBytes...), nil
}
// Non-transparent framing
return append(msgBytes, byte(s.Trailer)), nil
trailer, err := s.Trailer.Value()
if err != nil {
return nil, err
}
return append(msgBytes, byte(trailer)), nil
}
func (s *Syslog) initializeSyslogMapper() {

View File

@ -8,6 +8,7 @@ import (
"github.com/stretchr/testify/require"
"github.com/influxdata/go-syslog/v3/nontransparent"
"github.com/influxdata/telegraf"
framing "github.com/influxdata/telegraf/internal/syslog"
"github.com/influxdata/telegraf/metric"
@ -58,6 +59,31 @@ func TestGetSyslogMessageWithFramingNonTransparent(t *testing.T) {
messageBytesWithFraming, err := s.getSyslogMessageBytesWithFraming(syslogMessage)
require.NoError(t, err)
require.Equal(t, "<13>1 2010-11-10T23:00:00Z testhost Telegraf - testmetric -\n", string(messageBytesWithFraming), "Incorrect Octect counting framing")
}
func TestGetSyslogMessageWithFramingNonTransparentNul(t *testing.T) {
// Init plugin
s := newSyslog()
s.initializeSyslogMapper()
s.Framing = framing.NonTransparent
s.Trailer = nontransparent.NUL
// Init metrics
m1 := metric.New(
"testmetric",
map[string]string{
"hostname": "testhost",
},
map[string]interface{}{},
time.Date(2010, time.November, 10, 23, 0, 0, 0, time.UTC),
)
syslogMessage, err := s.mapper.MapMetricToSyslogMessage(m1)
require.NoError(t, err)
messageBytesWithFraming, err := s.getSyslogMessageBytesWithFraming(syslogMessage)
require.NoError(t, err)
require.Equal(t, "<13>1 2010-11-10T23:00:00Z testhost Telegraf - testmetric -\x00", string(messageBytesWithFraming), "Incorrect Octect counting framing")
}