|
|
|
@ -1,8 +1,11 @@ |
|
|
|
|
package syslog |
|
|
|
|
|
|
|
|
|
import ( |
|
|
|
|
"crypto/tls" |
|
|
|
|
"crypto/x509" |
|
|
|
|
"fmt" |
|
|
|
|
"io" |
|
|
|
|
"io/ioutil" |
|
|
|
|
"net" |
|
|
|
|
"os" |
|
|
|
|
"testing" |
|
|
|
@ -22,213 +25,270 @@ import ( |
|
|
|
|
"github.com/grafana/loki/clients/pkg/promtail/targets/syslog/syslogparser" |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
//var (
|
|
|
|
|
// caCert = []byte(`
|
|
|
|
|
//-----BEGIN CERTIFICATE-----
|
|
|
|
|
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
|
|
|
|
|
//ig==
|
|
|
|
|
//-----END CERTIFICATE-----
|
|
|
|
|
//`)
|
|
|
|
|
//
|
|
|
|
|
// serverCert = []byte(`
|
|
|
|
|
//-----BEGIN CERTIFICATE-----
|
|
|
|
|
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
|
|
|
|
|
//-----END CERTIFICATE-----
|
|
|
|
|
//`)
|
|
|
|
|
//
|
|
|
|
|
// serverKey = []byte(`
|
|
|
|
|
//-----BEGIN RSA PRIVATE KEY-----
|
|
|
|
|
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
|
|
|
|
|
//-----END RSA PRIVATE KEY-----
|
|
|
|
|
//`)
|
|
|
|
|
// clientCert = []byte(`
|
|
|
|
|
//-----BEGIN CERTIFICATE-----
|
|
|
|
|
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
|
|
|
|
|
//-----END CERTIFICATE-----
|
|
|
|
|
//`)
|
|
|
|
|
// clientKey = []byte(`
|
|
|
|
|
//-----BEGIN RSA PRIVATE KEY-----
|
|
|
|
|
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
|
|
|
|
|
//-----END RSA PRIVATE KEY-----
|
|
|
|
|
//`)
|
|
|
|
|
//)
|
|
|
|
|
var ( |
|
|
|
|
caCert = []byte(` |
|
|
|
|
-----BEGIN CERTIFICATE----- |
|
|
|
|
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 |
|
|
|
|
ig== |
|
|
|
|
-----END CERTIFICATE----- |
|
|
|
|
`) |
|
|
|
|
|
|
|
|
|
// Unused, but can be useful to (re)generate some certificates
|
|
|
|
|
// nolint:deadcode,unused,varcheck
|
|
|
|
|
caKey = []byte(` |
|
|
|
|
-----BEGIN RSA PRIVATE KEY----- |
|
|
|
|
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 |
|
|
|
|
-----END RSA PRIVATE KEY----- |
|
|
|
|
`) |
|
|
|
|
|
|
|
|
|
serverCert = []byte(` |
|
|
|
|
-----BEGIN CERTIFICATE----- |
|
|
|
|
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 |
|
|
|
|
j1ieRNjgNYyG/7wJmilCsnpjbWza85/JzxE1cA== |
|
|
|
|
-----END CERTIFICATE----- |
|
|
|
|
`) |
|
|
|
|
|
|
|
|
|
serverKey = []byte(` |
|
|
|
|
-----BEGIN RSA PRIVATE KEY----- |
|
|
|
|
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 |
|
|
|
|
-----END RSA PRIVATE KEY----- |
|
|
|
|
`) |
|
|
|
|
|
|
|
|
|
clientCert = []byte(` |
|
|
|
|
-----BEGIN CERTIFICATE----- |
|
|
|
|
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 |
|
|
|
|
-----END CERTIFICATE----- |
|
|
|
|
`) |
|
|
|
|
clientKey = []byte(` |
|
|
|
|
-----BEGIN RSA PRIVATE KEY----- |
|
|
|
|
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 |
|
|
|
|
-----END RSA PRIVATE KEY----- |
|
|
|
|
`) |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
type formatFunc func(string) string |
|
|
|
|
|
|
|
|
@ -503,243 +563,239 @@ func TestSyslogTarget_TLSConfigWithoutServerKey(t *testing.T) { |
|
|
|
|
require.Error(t, err, "error setting up syslog target: certificate and key files are required") |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// TODO re-enable after someone creates new certificates, the certs in this file are expired
|
|
|
|
|
// x509: certificate has expired or is not yet valid: current time 2022-06-27T17:25:51-04:00 is after 2022-06-27T16:56:55Z
|
|
|
|
|
//func TestSyslogTarget_TLSConfig(t *testing.T) {
|
|
|
|
|
// t.Run("NewlineSeparatedMessages", func(t *testing.T) {
|
|
|
|
|
// testSyslogTargetWithTLS(t, fmtNewline)
|
|
|
|
|
// })
|
|
|
|
|
// t.Run("OctetCounting", func(t *testing.T) {
|
|
|
|
|
// testSyslogTargetWithTLS(t, fmtOctetCounting)
|
|
|
|
|
// })
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
//func testSyslogTargetWithTLS(t *testing.T, fmtFunc formatFunc) {
|
|
|
|
|
// caCertPool := x509.NewCertPool()
|
|
|
|
|
// caCertPool.AppendCertsFromPEM(caCert)
|
|
|
|
|
//
|
|
|
|
|
// serverCertFile, err := createTempFile(serverCert)
|
|
|
|
|
// if err != nil {
|
|
|
|
|
// t.Fatalf("Unable to create server certificate temporary file: %s", err)
|
|
|
|
|
// }
|
|
|
|
|
// defer os.Remove(serverCertFile.Name())
|
|
|
|
|
//
|
|
|
|
|
// serverKeyFile, err := createTempFile(serverKey)
|
|
|
|
|
// if err != nil {
|
|
|
|
|
// t.Fatalf("Unable to create server key temporary file: %s", err)
|
|
|
|
|
// }
|
|
|
|
|
// defer os.Remove(serverKeyFile.Name())
|
|
|
|
|
//
|
|
|
|
|
// w := log.NewSyncWriter(os.Stderr)
|
|
|
|
|
// logger := log.NewLogfmtLogger(w)
|
|
|
|
|
// client := fake.New(func() {})
|
|
|
|
|
//
|
|
|
|
|
// metrics := NewMetrics(nil)
|
|
|
|
|
// tgt, err := NewSyslogTarget(metrics, logger, client, relabelConfig(t), &scrapeconfig.SyslogTargetConfig{
|
|
|
|
|
// ListenAddress: "127.0.0.1:0",
|
|
|
|
|
// LabelStructuredData: true,
|
|
|
|
|
// Labels: model.LabelSet{
|
|
|
|
|
// "test": "syslog_target",
|
|
|
|
|
// },
|
|
|
|
|
// TLSConfig: promconfig.TLSConfig{
|
|
|
|
|
// CertFile: serverCertFile.Name(),
|
|
|
|
|
// KeyFile: serverKeyFile.Name(),
|
|
|
|
|
// },
|
|
|
|
|
// })
|
|
|
|
|
// require.NoError(t, err)
|
|
|
|
|
// defer func() {
|
|
|
|
|
// require.NoError(t, tgt.Stop())
|
|
|
|
|
// }()
|
|
|
|
|
//
|
|
|
|
|
// tlsConfig := tls.Config{
|
|
|
|
|
// RootCAs: caCertPool,
|
|
|
|
|
// ServerName: "promtail.example.com",
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// addr := tgt.ListenAddress().String()
|
|
|
|
|
// c, err := tls.Dial("tcp", addr, &tlsConfig)
|
|
|
|
|
// require.NoError(t, err)
|
|
|
|
|
//
|
|
|
|
|
// validMessages := []string{
|
|
|
|
|
// `<165>1 2018-10-11T22:14:15.003Z host5 e - id1 [custom@32473 exkey="1"] An application event log entry...`,
|
|
|
|
|
// `<165>1 2018-10-11T22:14:15.005Z host5 e - id2 [custom@32473 exkey="2"] An application event log entry...`,
|
|
|
|
|
// `<165>1 2018-10-11T22:14:15.007Z host5 e - id3 [custom@32473 exkey="3"] An application event log entry...`,
|
|
|
|
|
// }
|
|
|
|
|
// // Messages that are malformed but still valid.
|
|
|
|
|
// // This causes error messages being written, but the parser does not stop and close the connection.
|
|
|
|
|
// malformeddMessages := []string{
|
|
|
|
|
// `<165>1 - An application event log entry...`,
|
|
|
|
|
// `<165>1 2018-10-11T22:14:15.007Z host5 e - An application event log entry...`,
|
|
|
|
|
// }
|
|
|
|
|
// messages := append(malformeddMessages, validMessages...)
|
|
|
|
|
//
|
|
|
|
|
// err = writeMessagesToStream(c, messages, fmtFunc)
|
|
|
|
|
// require.NoError(t, err)
|
|
|
|
|
// require.NoError(t, c.Close())
|
|
|
|
|
//
|
|
|
|
|
// require.Eventuallyf(t, func() bool {
|
|
|
|
|
// return len(client.Received()) == len(validMessages)
|
|
|
|
|
// }, time.Second, time.Millisecond, "Expected to receive %d messages, got %d.", len(validMessages), len(client.Received()))
|
|
|
|
|
//
|
|
|
|
|
// require.Equal(t, model.LabelSet{
|
|
|
|
|
// "test": "syslog_target",
|
|
|
|
|
//
|
|
|
|
|
// "severity": "notice",
|
|
|
|
|
// "facility": "local4",
|
|
|
|
|
// "hostname": "host5",
|
|
|
|
|
// "app_name": "e",
|
|
|
|
|
// "msg_id": "id1",
|
|
|
|
|
//
|
|
|
|
|
// "sd_custom_exkey": "1",
|
|
|
|
|
// }, client.Received()[0].Labels)
|
|
|
|
|
// require.Equal(t, "An application event log entry...", client.Received()[0].Line)
|
|
|
|
|
//
|
|
|
|
|
// require.NotZero(t, client.Received()[0].Timestamp)
|
|
|
|
|
//}
|
|
|
|
|
//
|
|
|
|
|
//func createTempFile(data []byte) (*os.File, error) {
|
|
|
|
|
// tmpFile, err := ioutil.TempFile("", "")
|
|
|
|
|
// if err != nil {
|
|
|
|
|
// return nil, fmt.Errorf("failed to create temporary file: %s", err)
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// if _, err := tmpFile.Write(data); err != nil {
|
|
|
|
|
// return nil, fmt.Errorf("failed to write data to temporary file: %s", err)
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// if err := tmpFile.Close(); err != nil {
|
|
|
|
|
// return nil, err
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// return tmpFile, nil
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
// TODO re-enable after someone creates new certificates, the certs in this file are expired
|
|
|
|
|
// x509: certificate has expired or is not yet valid: current time 2022-06-27T17:25:51-04:00 is after 2022-06-27T16:56:55Z
|
|
|
|
|
//func TestSyslogTarget_TLSConfigVerifyClientCertificate(t *testing.T) {
|
|
|
|
|
// t.Run("NewlineSeparatedMessages", func(t *testing.T) {
|
|
|
|
|
// testSyslogTargetWithTLSVerifyClientCertificate(t, fmtNewline)
|
|
|
|
|
// })
|
|
|
|
|
// t.Run("OctetCounting", func(t *testing.T) {
|
|
|
|
|
// testSyslogTargetWithTLSVerifyClientCertificate(t, fmtOctetCounting)
|
|
|
|
|
// })
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
//func testSyslogTargetWithTLSVerifyClientCertificate(t *testing.T, fmtFunc formatFunc) {
|
|
|
|
|
// caCertFile, err := createTempFile(caCert)
|
|
|
|
|
// if err != nil {
|
|
|
|
|
// t.Fatalf("Unable to create CA certificate temporary file: %s", err)
|
|
|
|
|
// }
|
|
|
|
|
// defer os.Remove(caCertFile.Name())
|
|
|
|
|
//
|
|
|
|
|
// caCertPool := x509.NewCertPool()
|
|
|
|
|
// caCertPool.AppendCertsFromPEM(caCert)
|
|
|
|
|
//
|
|
|
|
|
// serverCertFile, err := createTempFile(serverCert)
|
|
|
|
|
// if err != nil {
|
|
|
|
|
// t.Fatalf("Unable to create server certificate temporary file: %s", err)
|
|
|
|
|
// }
|
|
|
|
|
// defer os.Remove(serverCertFile.Name())
|
|
|
|
|
//
|
|
|
|
|
// serverKeyFile, err := createTempFile(serverKey)
|
|
|
|
|
// if err != nil {
|
|
|
|
|
// t.Fatalf("Unable to create server key temporary file: %s", err)
|
|
|
|
|
// }
|
|
|
|
|
// defer os.Remove(serverKeyFile.Name())
|
|
|
|
|
//
|
|
|
|
|
// clientCertFile, err := createTempFile(clientCert)
|
|
|
|
|
// if err != nil {
|
|
|
|
|
// t.Fatalf("Unable to create client certificate temporary file: %s", err)
|
|
|
|
|
// }
|
|
|
|
|
// defer os.Remove(clientCertFile.Name())
|
|
|
|
|
//
|
|
|
|
|
// clientKeyFile, err := createTempFile(clientKey)
|
|
|
|
|
// if err != nil {
|
|
|
|
|
// t.Fatalf("Unable to create client key temporary file: %s", err)
|
|
|
|
|
// }
|
|
|
|
|
// defer os.Remove(clientKeyFile.Name())
|
|
|
|
|
//
|
|
|
|
|
// clientCerts, err := tls.LoadX509KeyPair(clientCertFile.Name(), clientKeyFile.Name())
|
|
|
|
|
// if err != nil {
|
|
|
|
|
// t.Fatalf("Unable to load client certificate or key: %s", err)
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// w := log.NewSyncWriter(os.Stderr)
|
|
|
|
|
// logger := log.NewLogfmtLogger(w)
|
|
|
|
|
// client := fake.New(func() {})
|
|
|
|
|
//
|
|
|
|
|
// metrics := NewMetrics(nil)
|
|
|
|
|
// tgt, err := NewSyslogTarget(metrics, logger, client, relabelConfig(t), &scrapeconfig.SyslogTargetConfig{
|
|
|
|
|
// ListenAddress: "127.0.0.1:0",
|
|
|
|
|
// LabelStructuredData: true,
|
|
|
|
|
// Labels: model.LabelSet{
|
|
|
|
|
// "test": "syslog_target",
|
|
|
|
|
// },
|
|
|
|
|
// TLSConfig: promconfig.TLSConfig{
|
|
|
|
|
// CAFile: caCertFile.Name(),
|
|
|
|
|
// CertFile: serverCertFile.Name(),
|
|
|
|
|
// KeyFile: serverKeyFile.Name(),
|
|
|
|
|
// },
|
|
|
|
|
// })
|
|
|
|
|
// require.NoError(t, err)
|
|
|
|
|
// defer func() {
|
|
|
|
|
// require.NoError(t, tgt.Stop())
|
|
|
|
|
// }()
|
|
|
|
|
//
|
|
|
|
|
// tlsConfig := tls.Config{
|
|
|
|
|
// RootCAs: caCertPool,
|
|
|
|
|
// ServerName: "promtail.example.com",
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// addr := tgt.ListenAddress().String()
|
|
|
|
|
//
|
|
|
|
|
// t.Run("WithoutClientCertificate", func(t *testing.T) {
|
|
|
|
|
// c, err := tls.Dial("tcp", addr, &tlsConfig)
|
|
|
|
|
// require.NoError(t, err)
|
|
|
|
|
//
|
|
|
|
|
// err = c.SetDeadline(time.Now().Add(time.Second))
|
|
|
|
|
// require.NoError(t, err)
|
|
|
|
|
//
|
|
|
|
|
// buf := make([]byte, 1)
|
|
|
|
|
// _, err = c.Read(buf)
|
|
|
|
|
// require.EqualError(t, err, "remote error: tls: bad certificate")
|
|
|
|
|
// })
|
|
|
|
|
//
|
|
|
|
|
// t.Run("WithClientCertificate", func(t *testing.T) {
|
|
|
|
|
// tlsConfig.Certificates = []tls.Certificate{clientCerts}
|
|
|
|
|
// c, err := tls.Dial("tcp", addr, &tlsConfig)
|
|
|
|
|
// require.NoError(t, err)
|
|
|
|
|
//
|
|
|
|
|
// messages := []string{
|
|
|
|
|
// `<165>1 2018-10-11T22:14:15.003Z host5 e - id1 [custom@32473 exkey="1"] An application event log entry...`,
|
|
|
|
|
// `<165>1 2018-10-11T22:14:15.005Z host5 e - id2 [custom@32473 exkey="2"] An application event log entry...`,
|
|
|
|
|
// `<165>1 2018-10-11T22:14:15.007Z host5 e - id3 [custom@32473 exkey="3"] An application event log entry...`,
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// err = writeMessagesToStream(c, messages, fmtFunc)
|
|
|
|
|
// require.NoError(t, err)
|
|
|
|
|
// require.NoError(t, c.Close())
|
|
|
|
|
//
|
|
|
|
|
// require.Eventuallyf(t, func() bool {
|
|
|
|
|
// return len(client.Received()) == len(messages)
|
|
|
|
|
// }, time.Second, time.Millisecond, "Expected to receive %d messages, got %d.", len(messages), len(client.Received()))
|
|
|
|
|
//
|
|
|
|
|
// require.Equal(t, model.LabelSet{
|
|
|
|
|
// "test": "syslog_target",
|
|
|
|
|
//
|
|
|
|
|
// "severity": "notice",
|
|
|
|
|
// "facility": "local4",
|
|
|
|
|
// "hostname": "host5",
|
|
|
|
|
// "app_name": "e",
|
|
|
|
|
// "msg_id": "id1",
|
|
|
|
|
//
|
|
|
|
|
// "sd_custom_exkey": "1",
|
|
|
|
|
// }, client.Received()[0].Labels)
|
|
|
|
|
// require.Equal(t, "An application event log entry...", client.Received()[0].Line)
|
|
|
|
|
//
|
|
|
|
|
// require.NotZero(t, client.Received()[0].Timestamp)
|
|
|
|
|
// })
|
|
|
|
|
//}
|
|
|
|
|
func TestSyslogTarget_TLSConfig(t *testing.T) { |
|
|
|
|
t.Run("NewlineSeparatedMessages", func(t *testing.T) { |
|
|
|
|
testSyslogTargetWithTLS(t, fmtNewline) |
|
|
|
|
}) |
|
|
|
|
t.Run("OctetCounting", func(t *testing.T) { |
|
|
|
|
testSyslogTargetWithTLS(t, fmtOctetCounting) |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func testSyslogTargetWithTLS(t *testing.T, fmtFunc formatFunc) { |
|
|
|
|
caCertPool := x509.NewCertPool() |
|
|
|
|
caCertPool.AppendCertsFromPEM(caCert) |
|
|
|
|
|
|
|
|
|
serverCertFile, err := createTempFile(serverCert) |
|
|
|
|
if err != nil { |
|
|
|
|
t.Fatalf("Unable to create server certificate temporary file: %s", err) |
|
|
|
|
} |
|
|
|
|
defer os.Remove(serverCertFile.Name()) |
|
|
|
|
|
|
|
|
|
serverKeyFile, err := createTempFile(serverKey) |
|
|
|
|
if err != nil { |
|
|
|
|
t.Fatalf("Unable to create server key temporary file: %s", err) |
|
|
|
|
} |
|
|
|
|
defer os.Remove(serverKeyFile.Name()) |
|
|
|
|
|
|
|
|
|
w := log.NewSyncWriter(os.Stderr) |
|
|
|
|
logger := log.NewLogfmtLogger(w) |
|
|
|
|
client := fake.New(func() {}) |
|
|
|
|
|
|
|
|
|
metrics := NewMetrics(nil) |
|
|
|
|
tgt, err := NewSyslogTarget(metrics, logger, client, relabelConfig(t), &scrapeconfig.SyslogTargetConfig{ |
|
|
|
|
ListenAddress: "127.0.0.1:0", |
|
|
|
|
LabelStructuredData: true, |
|
|
|
|
Labels: model.LabelSet{ |
|
|
|
|
"test": "syslog_target", |
|
|
|
|
}, |
|
|
|
|
TLSConfig: promconfig.TLSConfig{ |
|
|
|
|
CertFile: serverCertFile.Name(), |
|
|
|
|
KeyFile: serverKeyFile.Name(), |
|
|
|
|
}, |
|
|
|
|
}) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
defer func() { |
|
|
|
|
require.NoError(t, tgt.Stop()) |
|
|
|
|
}() |
|
|
|
|
|
|
|
|
|
tlsConfig := tls.Config{ |
|
|
|
|
RootCAs: caCertPool, |
|
|
|
|
ServerName: "promtail.example.com", |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
addr := tgt.ListenAddress().String() |
|
|
|
|
c, err := tls.Dial("tcp", addr, &tlsConfig) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
|
|
|
|
|
validMessages := []string{ |
|
|
|
|
`<165>1 2018-10-11T22:14:15.003Z host5 e - id1 [custom@32473 exkey="1"] An application event log entry...`, |
|
|
|
|
`<165>1 2018-10-11T22:14:15.005Z host5 e - id2 [custom@32473 exkey="2"] An application event log entry...`, |
|
|
|
|
`<165>1 2018-10-11T22:14:15.007Z host5 e - id3 [custom@32473 exkey="3"] An application event log entry...`, |
|
|
|
|
} |
|
|
|
|
// Messages that are malformed but still valid.
|
|
|
|
|
// This causes error messages being written, but the parser does not stop and close the connection.
|
|
|
|
|
malformeddMessages := []string{ |
|
|
|
|
`<165>1 - An application event log entry...`, |
|
|
|
|
`<165>1 2018-10-11T22:14:15.007Z host5 e - An application event log entry...`, |
|
|
|
|
} |
|
|
|
|
messages := append(malformeddMessages, validMessages...) |
|
|
|
|
|
|
|
|
|
err = writeMessagesToStream(c, messages, fmtFunc) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
require.NoError(t, c.Close()) |
|
|
|
|
|
|
|
|
|
require.Eventuallyf(t, func() bool { |
|
|
|
|
return len(client.Received()) == len(validMessages) |
|
|
|
|
}, time.Second, time.Millisecond, "Expected to receive %d messages, got %d.", len(validMessages), len(client.Received())) |
|
|
|
|
|
|
|
|
|
require.Equal(t, model.LabelSet{ |
|
|
|
|
"test": "syslog_target", |
|
|
|
|
|
|
|
|
|
"severity": "notice", |
|
|
|
|
"facility": "local4", |
|
|
|
|
"hostname": "host5", |
|
|
|
|
"app_name": "e", |
|
|
|
|
"msg_id": "id1", |
|
|
|
|
|
|
|
|
|
"sd_custom_exkey": "1", |
|
|
|
|
}, client.Received()[0].Labels) |
|
|
|
|
require.Equal(t, "An application event log entry...", client.Received()[0].Line) |
|
|
|
|
|
|
|
|
|
require.NotZero(t, client.Received()[0].Timestamp) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func createTempFile(data []byte) (*os.File, error) { |
|
|
|
|
tmpFile, err := ioutil.TempFile("", "") |
|
|
|
|
if err != nil { |
|
|
|
|
return nil, fmt.Errorf("failed to create temporary file: %s", err) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if _, err := tmpFile.Write(data); err != nil { |
|
|
|
|
return nil, fmt.Errorf("failed to write data to temporary file: %s", err) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if err := tmpFile.Close(); err != nil { |
|
|
|
|
return nil, err |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return tmpFile, nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func TestSyslogTarget_TLSConfigVerifyClientCertificate(t *testing.T) { |
|
|
|
|
t.Run("NewlineSeparatedMessages", func(t *testing.T) { |
|
|
|
|
testSyslogTargetWithTLSVerifyClientCertificate(t, fmtNewline) |
|
|
|
|
}) |
|
|
|
|
t.Run("OctetCounting", func(t *testing.T) { |
|
|
|
|
testSyslogTargetWithTLSVerifyClientCertificate(t, fmtOctetCounting) |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func testSyslogTargetWithTLSVerifyClientCertificate(t *testing.T, fmtFunc formatFunc) { |
|
|
|
|
caCertFile, err := createTempFile(caCert) |
|
|
|
|
if err != nil { |
|
|
|
|
t.Fatalf("Unable to create CA certificate temporary file: %s", err) |
|
|
|
|
} |
|
|
|
|
defer os.Remove(caCertFile.Name()) |
|
|
|
|
|
|
|
|
|
caCertPool := x509.NewCertPool() |
|
|
|
|
caCertPool.AppendCertsFromPEM(caCert) |
|
|
|
|
|
|
|
|
|
serverCertFile, err := createTempFile(serverCert) |
|
|
|
|
if err != nil { |
|
|
|
|
t.Fatalf("Unable to create server certificate temporary file: %s", err) |
|
|
|
|
} |
|
|
|
|
defer os.Remove(serverCertFile.Name()) |
|
|
|
|
|
|
|
|
|
serverKeyFile, err := createTempFile(serverKey) |
|
|
|
|
if err != nil { |
|
|
|
|
t.Fatalf("Unable to create server key temporary file: %s", err) |
|
|
|
|
} |
|
|
|
|
defer os.Remove(serverKeyFile.Name()) |
|
|
|
|
|
|
|
|
|
clientCertFile, err := createTempFile(clientCert) |
|
|
|
|
if err != nil { |
|
|
|
|
t.Fatalf("Unable to create client certificate temporary file: %s", err) |
|
|
|
|
} |
|
|
|
|
defer os.Remove(clientCertFile.Name()) |
|
|
|
|
|
|
|
|
|
clientKeyFile, err := createTempFile(clientKey) |
|
|
|
|
if err != nil { |
|
|
|
|
t.Fatalf("Unable to create client key temporary file: %s", err) |
|
|
|
|
} |
|
|
|
|
defer os.Remove(clientKeyFile.Name()) |
|
|
|
|
|
|
|
|
|
clientCerts, err := tls.LoadX509KeyPair(clientCertFile.Name(), clientKeyFile.Name()) |
|
|
|
|
if err != nil { |
|
|
|
|
t.Fatalf("Unable to load client certificate or key: %s", err) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
w := log.NewSyncWriter(os.Stderr) |
|
|
|
|
logger := log.NewLogfmtLogger(w) |
|
|
|
|
client := fake.New(func() {}) |
|
|
|
|
|
|
|
|
|
metrics := NewMetrics(nil) |
|
|
|
|
tgt, err := NewSyslogTarget(metrics, logger, client, relabelConfig(t), &scrapeconfig.SyslogTargetConfig{ |
|
|
|
|
ListenAddress: "127.0.0.1:0", |
|
|
|
|
LabelStructuredData: true, |
|
|
|
|
Labels: model.LabelSet{ |
|
|
|
|
"test": "syslog_target", |
|
|
|
|
}, |
|
|
|
|
TLSConfig: promconfig.TLSConfig{ |
|
|
|
|
CAFile: caCertFile.Name(), |
|
|
|
|
CertFile: serverCertFile.Name(), |
|
|
|
|
KeyFile: serverKeyFile.Name(), |
|
|
|
|
}, |
|
|
|
|
}) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
defer func() { |
|
|
|
|
require.NoError(t, tgt.Stop()) |
|
|
|
|
}() |
|
|
|
|
|
|
|
|
|
tlsConfig := tls.Config{ |
|
|
|
|
RootCAs: caCertPool, |
|
|
|
|
ServerName: "promtail.example.com", |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
addr := tgt.ListenAddress().String() |
|
|
|
|
|
|
|
|
|
t.Run("WithoutClientCertificate", func(t *testing.T) { |
|
|
|
|
c, err := tls.Dial("tcp", addr, &tlsConfig) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
|
|
|
|
|
err = c.SetDeadline(time.Now().Add(time.Second)) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
|
|
|
|
|
buf := make([]byte, 1) |
|
|
|
|
_, err = c.Read(buf) |
|
|
|
|
require.EqualError(t, err, "remote error: tls: bad certificate") |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
t.Run("WithClientCertificate", func(t *testing.T) { |
|
|
|
|
tlsConfig.Certificates = []tls.Certificate{clientCerts} |
|
|
|
|
c, err := tls.Dial("tcp", addr, &tlsConfig) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
|
|
|
|
|
messages := []string{ |
|
|
|
|
`<165>1 2018-10-11T22:14:15.003Z host5 e - id1 [custom@32473 exkey="1"] An application event log entry...`, |
|
|
|
|
`<165>1 2018-10-11T22:14:15.005Z host5 e - id2 [custom@32473 exkey="2"] An application event log entry...`, |
|
|
|
|
`<165>1 2018-10-11T22:14:15.007Z host5 e - id3 [custom@32473 exkey="3"] An application event log entry...`, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
err = writeMessagesToStream(c, messages, fmtFunc) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
require.NoError(t, c.Close()) |
|
|
|
|
|
|
|
|
|
require.Eventuallyf(t, func() bool { |
|
|
|
|
return len(client.Received()) == len(messages) |
|
|
|
|
}, time.Second, time.Millisecond, "Expected to receive %d messages, got %d.", len(messages), len(client.Received())) |
|
|
|
|
|
|
|
|
|
require.Equal(t, model.LabelSet{ |
|
|
|
|
"test": "syslog_target", |
|
|
|
|
|
|
|
|
|
"severity": "notice", |
|
|
|
|
"facility": "local4", |
|
|
|
|
"hostname": "host5", |
|
|
|
|
"app_name": "e", |
|
|
|
|
"msg_id": "id1", |
|
|
|
|
|
|
|
|
|
"sd_custom_exkey": "1", |
|
|
|
|
}, client.Received()[0].Labels) |
|
|
|
|
require.Equal(t, "An application event log entry...", client.Received()[0].Line) |
|
|
|
|
|
|
|
|
|
require.NotZero(t, client.Received()[0].Timestamp) |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func TestSyslogTarget_InvalidData(t *testing.T) { |
|
|
|
|
w := log.NewSyncWriter(os.Stderr) |
|
|
|
|