-
Notifications
You must be signed in to change notification settings - Fork 169
Postgresql discovery config - add OTel native receiver #3957
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 8 commits
84f2d77
0fa2afb
edba6de
f082aca
702ad46
16db21e
a53318f
c0ec51d
38293b7
133061d
e63cd1e
dfb1f13
3167875
23370bc
10369d1
65ef8dc
4a15e95
0e22df7
09ea3a6
c12d747
299fe78
33e0bd6
f71ee95
307e68a
0389e2d
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -38,6 +38,41 @@ import ( | |
"github.com/signalfx/splunk-otel-collector/tests/testutils/kubeutils/manifests" | ||
) | ||
|
||
func TestPostgresqlDockerObserver(t *testing.T) { | ||
greatestusername-splunk marked this conversation as resolved.
Show resolved
Hide resolved
|
||
testutils.SkipIfNotContainerTest(t) | ||
if runtime.GOOS == "darwin" { | ||
t.Skip("unable to share sockets between mac and d4m vm: https://github.com/docker/for-mac/issues/483#issuecomment-758836836") | ||
} | ||
|
||
testutils.AssertAllMetricsReceived(t, "bundled.yaml", "otlp_exporter.yaml", | ||
postgresqldb, []testutils.CollectorBuilder{ | ||
func(c testutils.Collector) testutils.Collector { | ||
cc := c.(*testutils.CollectorContainer) | ||
cc.Container = cc.Container.WithBinds("/var/run/docker.sock:/var/run/docker.sock:ro") | ||
cc.Container = cc.Container.WillWaitForLogs("Discovering for next") | ||
cc.Container = cc.Container.WithUser(fmt.Sprintf("999:%d", testutils.GetDockerGID(t))) | ||
return cc | ||
}, | ||
func(collector testutils.Collector) testutils.Collector { | ||
return collector.WithEnv(map[string]string{ | ||
"SPLUNK_DISCOVERY_DURATION": "10s", | ||
// confirm that debug logging doesn't affect runtime | ||
"SPLUNK_DISCOVERY_LOG_LEVEL": "debug", | ||
}).WithArgs( | ||
"--discovery", | ||
"--set", "splunk.discovery.receivers.postgresql.config.username=otelu", | ||
"--set", "splunk.discovery.receivers.postgresql.config.password=otelp", | ||
"--set", "splunk.discovery.receivers.postgresql.config.tls::insecure=true", | ||
//Disabling postgresql.backends metric that doesn't dependably show up in metrics during testing | ||
"--set", "splunk.discovery.receivers.postgresql.config.metrics::postgresql.backends::enabled=false", | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This was strange. During testing I'd have a 50/50 shot of this Open to ideas if it is imperative we have this enabled for testing. |
||
"--set", `splunk.discovery.extensions.k8s_observer.enabled=false`, | ||
"--set", `splunk.discovery.extensions.host_observer.enabled=false`, | ||
) | ||
}, | ||
}, | ||
) | ||
} | ||
|
||
func TestK8sObserver(t *testing.T) { | ||
testutils.SkipIfNotContainerTest(t) | ||
tc := testutils.NewTestcase(t, testutils.OTLPReceiverSinkAllInterfaces) | ||
|
@@ -76,30 +111,30 @@ func TestK8sObserver(t *testing.T) { | |
sout, serr, err = cluster.Apply(manifests.RenderAll(t, configMap, ds)) | ||
require.NoError(t, err, "stdout: %s, stderr: %s", sout, serr) | ||
|
||
pods := cluster.WaitForPods(ds.Name, namespace.Name, 5*time.Minute) | ||
pods := cluster.WaitForPods(ds.Name, namespace.Name, 10*time.Minute) | ||
require.Len(t, pods, 1) | ||
collectorName := pods[0].Name | ||
|
||
expectedMetrics := tc.ResourceMetrics("all.yaml") | ||
expectedMetrics := tc.ResourceMetrics("all_k8s.yaml") | ||
require.NoError(t, tc.OTLPReceiverSink.AssertAllMetricsReceived(t, *expectedMetrics, 30*time.Second)) | ||
|
||
stdOut, stdErr, err := cluster.Kubectl("logs", "-n", namespace.Name, collectorName) | ||
require.NoError(t, err) | ||
require.Contains( | ||
t, stdOut.String(), | ||
fmt.Sprintf(`Successfully discovered "smartagent/postgresql" using "k8s_observer" endpoint "k8s_observer/%s/(5432)`, postgresUID), | ||
fmt.Sprintf(`Successfully discovered "postgresql" using "k8s_observer" endpoint "k8s_observer/%s/(5432)`, postgresUID), | ||
stdErr.String(), | ||
) | ||
} | ||
|
||
type testCluster struct{ *kubeutils.KindCluster } | ||
|
||
func (cluster testCluster) createPostgres(name, namespace, serviceAccount string) string { | ||
dbsql, err := os.ReadFile(filepath.Join(".", "testdata", "server", "initdb.d", "db.sql")) | ||
dbsql, err := os.ReadFile(filepath.Join(".", "testdata", "server_k8s", "initdb.d", "db.sql")) | ||
require.NoError(cluster.Testcase, err) | ||
cmContent := map[string]any{"db.sql": string(dbsql)} | ||
|
||
initsh, err := os.ReadFile(filepath.Join(".", "testdata", "server", "initdb.d", "init.sh")) | ||
initsh, err := os.ReadFile(filepath.Join(".", "testdata", "server_k8s", "initdb.d", "init.sh")) | ||
require.NoError(cluster.Testcase, err) | ||
cmContent["init.sh"] = string(initsh) | ||
|
||
|
@@ -231,7 +266,7 @@ func (cluster testCluster) createPostgres(name, namespace, serviceAccount string | |
) | ||
require.NoError(cluster.Testcase, err) | ||
|
||
cluster.WaitForPods(postgres.Name, namespace, 5*time.Minute) | ||
cluster.WaitForPods(postgres.Name, namespace, 10*time.Minute) | ||
return string(postgres.UID) | ||
} | ||
|
||
|
@@ -332,10 +367,11 @@ func (cluster testCluster) daemonSet(namespace, serviceAccount, configMap string | |
Image: testutils.GetCollectorImageOrSkipTest(cluster.Testcase), | ||
Command: []string{ | ||
"/otelcol", "--config=/config/config.yaml", "--discovery", | ||
"--set", "splunk.discovery.receivers.smartagent/postgresql.config.params::username='${env:PG_USERNAME}'", | ||
"--set", "splunk.discovery.receivers.smartagent/postgresql.config.params::password='${env:PG_PASSWORD}'", | ||
"--set", "splunk.discovery.receivers.smartagent/postgresql.config.masterDBName=test_db", | ||
"--set", `splunk.discovery.receivers.smartagent/postgresql.config.extraMetrics=["*"]`, | ||
"--set", "splunk.discovery.receivers.postgresql.config.username='${env:PG_USERNAME}'", | ||
"--set", "splunk.discovery.receivers.postgresql.config.password='${env:PG_PASSWORD}'", | ||
"--set", "splunk.discovery.receivers.postgresql.config.tls::insecure=true", | ||
//Disabling postgresql.backends metric that doesn't dependably show up in metrics during testing | ||
"--set", "splunk.discovery.receivers.postgresql.config.metrics::postgresql.backends::enabled=false", | ||
}, | ||
Env: []corev1.EnvVar{ | ||
{Name: "PG_USERNAME", Value: "test_user"}, | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
ARG POSTGRES_VERSION=13-alpine | ||
greatestusername-splunk marked this conversation as resolved.
Show resolved
Hide resolved
|
||
FROM postgres:${POSTGRES_VERSION} | ||
|
||
COPY requests.sh /usr/local/bin/requests.sh | ||
|
||
CMD ["requests.sh"] |
Uh oh!
There was an error while loading. Please reload this page.