Skip to content

Commit bcb7292

Browse files
authored
Merge branch 'main' into remove_mongodb_collectd_plugin
2 parents 6f0173a + 4a8436a commit bcb7292

File tree

18 files changed

+302
-69
lines changed

18 files changed

+302
-69
lines changed

.github/workflows/vuln-scans.yml

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,23 @@ jobs:
8181
name: otelcol-${{ matrix.ARCH }}
8282
path: ./dist
8383

84+
binaries-windows_amd64:
85+
runs-on: ubuntu-20.04
86+
steps:
87+
- name: Check out the codebase.
88+
uses: actions/checkout@v4
89+
- name: Set up Go
90+
uses: actions/setup-go@v5
91+
with:
92+
go-version: ${{ env.GO_VERSION }}
93+
cache-dependency-path: '**/go.sum'
94+
- run: make binaries-windows_amd64
95+
- uses: actions/upload-artifact@v4
96+
with:
97+
name: binaries-windows_amd64
98+
path: |
99+
./bin/*
100+
84101
trivy-image-scan:
85102
# Use 20.04.5 until https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/16450 is resolved
86103
runs-on: ubuntu-20.04
@@ -140,6 +157,35 @@ jobs:
140157
output-format: "table"
141158
image: "otelcol:latest"
142159

160+
anchore-win-image-scan:
161+
runs-on: windows-2022
162+
needs: [ "binaries-windows_amd64" ]
163+
env:
164+
PIP_CACHE_DIR: ${{ github.workspace }}/.cache/pip
165+
steps:
166+
- name: Check out the codebase.
167+
uses: actions/checkout@v4
168+
- name: Downloading binaries-windows_amd64
169+
uses: actions/download-artifact@v4
170+
with:
171+
name: binaries-windows_amd64
172+
path: ./bin
173+
- uses: actions/cache@v4
174+
with:
175+
path: ${{ env.PIP_CACHE_DIR }}
176+
key: agent-bundle-windows-pip-${{ hashFiles('internal/signalfx-agent/bundle/collectd-plugins.yaml', 'internal/signalfx-agent/bundle/scripts/requirements.txt') }}
177+
- run: ./internal/signalfx-agent/bundle/scripts/windows/make.ps1 bundle
178+
- name: Build docker image
179+
run: |
180+
$ErrorActionPreference = 'Stop'
181+
Copy-Item .\bin\otelcol_windows_amd64.exe .\cmd\otelcol\otelcol.exe
182+
Copy-Item .\dist\agent-bundle_windows_amd64.zip .\cmd\otelcol\agent-bundle_windows_amd64.zip
183+
docker build -t otelcol-windows --build-arg BASE_IMAGE=mcr.microsoft.com/windows/servercore:ltsc2022 --build-arg JMX_METRIC_GATHERER_RELEASE=$(Get-Content internal\buildscripts\packaging\jmx-metric-gatherer-release.txt) -f .\cmd\otelcol\Dockerfile.windows .\cmd\otelcol\
184+
Remove-Item .\cmd\otelcol\otelcol.exe
185+
Remove-Item .\cmd\otelcol\agent-bundle_windows_amd64.zip
186+
- run: choco install -y grype
187+
- run: grype --fail-on high --only-fixed -o table otelcol-windows:latest
188+
143189
snyk-fs-scan:
144190
runs-on: ubuntu-latest
145191
steps:

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@
1414

1515
- (Splunk) `collectd-mongodb`: Monitor has been removed to resolve CVE-2024-21506
1616

17+
### 🚀 New components 🚀
18+
19+
- (Splunk) Add ack extension ([#4724](https://github.com/signalfx/splunk-otel-collector/pull/4724))
20+
1721
### 💡 Enhancements 💡
1822

1923
- (Splunk) Include [`splunk-otel-dotnet`](https://github.com/signalfx/splunk-otel-dotnet) in the `splunk-otel-auto-instrumentation` deb/rpm packages (x86_64/amd64 only) ([#4679](https://github.com/signalfx/splunk-otel-collector/pull/4679))
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
#####################################################################################
2+
# This file is generated by the Splunk Distribution of the OpenTelemetry Collector. #
3+
# #
4+
# It reflects the default configuration bundled in the Collector executable for use #
5+
# in discovery mode (--discovery) and is provided for reference or customization. #
6+
# Please note that any changes made to this file will need to be reconciled during #
7+
# upgrades of the Collector. #
8+
#####################################################################################
9+
# mongodb:
10+
# enabled: true
11+
# rule:
12+
# docker_observer: type == "container" and any([name, image, command], {# matches "(?i)mongo"}) and not (command matches "splunk.discovery")
13+
# host_observer: type == "hostport" and command matches "(?i)mongo" and not (command matches "splunk.discovery")
14+
# k8s_observer: type == "port" and pod.name matches "(?i)mongo"
15+
# config:
16+
# default:
17+
# username: splunk.discovery.default
18+
# password: splunk.discovery.default
19+
# tls:
20+
# insecure: true
21+
# insecure_skip_verify: true
22+
# status:
23+
# metrics:
24+
# - status: successful
25+
# strict: mongodb.database.count
26+
# log_record:
27+
# body: mongodb receiver is working!
28+
# statements:
29+
# - status: failed
30+
# regexp: 'connect: network is unreachable'
31+
# log_record:
32+
# append_pattern: true
33+
# body: The container cannot be reached by the Collector. Make sure they're in the same network.
34+
# - status: failed
35+
# regexp: 'connect: connection refused'
36+
# log_record:
37+
# append_pattern: true
38+
# body: The container is refusing mongodb connections.
39+
# - status: partial
40+
# regexp: '.* unable to authenticate using mechanism .*'
41+
# log_record:
42+
# append_pattern: true
43+
# body: >-
44+
# Please ensure your user credentials are correctly specified with
45+
# `--set splunk.discovery.receivers.mongodb.config.username="<username>"` and
46+
# `--set splunk.discovery.receivers.mongodb.config.password="<password>"` or
47+
# `SPLUNK_DISCOVERY_RECEIVERS_mongodb_CONFIG_username="<username>"` and
48+
# `SPLUNK_DISCOVERY_RECEIVERS_mongodb_CONFIG_password="<password>"` environment variables.
49+
# - status: partial
50+
# regexp: '.* failed to fetch index stats metrics: (Unauthorized) not authorized on admin to execute command .*'
51+
# log_record:
52+
# append_pattern: true
53+
# body: >-
54+
# Make sure the account used to access Mongodb has been given a clusterMonitor role in order to collect metrics.
55+
# `db.grantRolesToUser('someUser', [{ role: 'clusterMonitor', db: 'admin' }])`

docs/components.md

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ The distribution offers support for the following components.
5050
| [solace](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/solacereceiver) | [beta] |
5151
| [splunk_hec](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/splunkhecreceiver) | [beta] |
5252
| [sqlquery](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/sqlqueryreceiver) | [alpha] |
53-
| [sshcheck](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/sshcheckreceiver) | alpha |
53+
| [sqlserver](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/sqlserverreceiver) | [beta] |
54+
| [sshcheck](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/sshcheckreceiver) | [alpha] |
5455
| [statsd](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/statsdreceiver) | [beta] |
5556
| [syslog](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/syslogreceiver) | [alpha] |
5657
| [tcplog](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/tcplogreceiver) | [alpha] |
@@ -109,21 +110,22 @@ The distribution offers support for the following components.
109110

110111
<div>
111112

112-
| Extensions | Stability |
113-
|:------------------------------------------------------------------------------------------------------------------------------------|:-----------|
114-
| [basicauth](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/basicauthextension) | [beta] |
115-
| [docker_observer](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/observer/dockerobserver) | [beta] |
116-
| [ecs_observer](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/observer/ecsobserver) | [beta] |
117-
| [ecs_task_observer](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/observer/ecstaskobserver) | [beta] |
118-
| [healthcheck](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/healthcheckextension) | [beta] |
119-
| [httpforwarder](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/httpforwarderextension) | [beta] |
120-
| [host_observer](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/observer/hostobserver) | [beta] |
121-
| [k8s_observer](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/observer/k8sobserver) | [beta] |
122-
| [pprof](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/pprofextension) | [beta] |
123-
| [smartagent](../pkg/extension/smartagentextension) | [beta] |
124-
| [zpages](https://github.com/open-telemetry/opentelemetry-collector/tree/main/extension/zpagesextension) | [beta] |
125-
| [file_storage](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/storage/filestorage) | [beta] |
126-
| [ballast](https://github.com/open-telemetry/opentelemetry-collector/tree/main/extension/ballastextension) | [beta] |
113+
| Extensions | Stability |
114+
|:------------------------------------------------------------------------------------------------------------------------------------|:----------|
115+
| [ack](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/ackextension) | [alpha] |
116+
| [basicauth](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/basicauthextension) | [beta] |
117+
| [docker_observer](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/observer/dockerobserver) | [beta] |
118+
| [ecs_observer](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/observer/ecsobserver) | [beta] |
119+
| [ecs_task_observer](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/observer/ecstaskobserver) | [beta] |
120+
| [healthcheck](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/healthcheckextension) | [beta] |
121+
| [httpforwarder](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/httpforwarderextension) | [beta] |
122+
| [host_observer](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/observer/hostobserver) | [beta] |
123+
| [k8s_observer](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/observer/k8sobserver) | [beta] |
124+
| [pprof](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/pprofextension) | [beta] |
125+
| [smartagent](../pkg/extension/smartagentextension) | [beta] |
126+
| [zpages](https://github.com/open-telemetry/opentelemetry-collector/tree/main/extension/zpagesextension) | [beta] |
127+
| [file_storage](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/storage/filestorage) | [beta] |
128+
| [ballast](https://github.com/open-telemetry/opentelemetry-collector/tree/main/extension/ballastextension) | [beta] |
127129

128130
</div>
129131

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ require (
2626
github.com/open-telemetry/opentelemetry-collector-contrib/exporter/sapmexporter v0.99.0
2727
github.com/open-telemetry/opentelemetry-collector-contrib/exporter/signalfxexporter v0.99.0
2828
github.com/open-telemetry/opentelemetry-collector-contrib/exporter/splunkhecexporter v0.99.0
29+
github.com/open-telemetry/opentelemetry-collector-contrib/extension/ackextension v0.99.0
2930
github.com/open-telemetry/opentelemetry-collector-contrib/extension/basicauthextension v0.99.0
3031
github.com/open-telemetry/opentelemetry-collector-contrib/extension/healthcheckextension v0.99.0
3132
github.com/open-telemetry/opentelemetry-collector-contrib/extension/httpforwarderextension v0.99.0
@@ -240,7 +241,6 @@ require (
240241
github.com/montanaflynn/stats v0.7.1 // indirect
241242
github.com/mrunalp/fileutils v0.5.1 // indirect
242243
github.com/okta/okta-sdk-golang/v2 v2.20.0 // indirect
243-
github.com/open-telemetry/opentelemetry-collector-contrib/extension/ackextension v0.99.0 // indirect
244244
github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/awsutil v0.99.0 // indirect
245245
github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/containerinsight v0.99.0 // indirect
246246
github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/k8s v0.99.0 // indirect

internal/components/components.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
"github.com/open-telemetry/opentelemetry-collector-contrib/exporter/sapmexporter"
2828
"github.com/open-telemetry/opentelemetry-collector-contrib/exporter/signalfxexporter"
2929
"github.com/open-telemetry/opentelemetry-collector-contrib/exporter/splunkhecexporter"
30+
"github.com/open-telemetry/opentelemetry-collector-contrib/extension/ackextension"
3031
"github.com/open-telemetry/opentelemetry-collector-contrib/extension/basicauthextension"
3132
"github.com/open-telemetry/opentelemetry-collector-contrib/extension/healthcheckextension"
3233
"github.com/open-telemetry/opentelemetry-collector-contrib/extension/httpforwarderextension"
@@ -126,6 +127,7 @@ import (
126127
func Get() (otelcol.Factories, error) {
127128
var errs []error
128129
extensions, err := extension.MakeFactoryMap(
130+
ackextension.NewFactory(),
129131
ballastextension.NewFactory(),
130132
basicauthextension.NewFactory(),
131133
ecsobserver.NewFactory(),

internal/components/components_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626

2727
func TestDefaultComponents(t *testing.T) {
2828
expectedExtensions := []string{
29+
"ack",
2930
"basicauth",
3031
"ecs_observer",
3132
"ecs_task_observer",

internal/confmapprovider/discovery/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ By default, the discovery mode is provided with pre-made discovery config compon
136136
The following components have bundled discovery configurations in the last Splunk OpenTelemetry Collector release:
137137

138138
I. Receivers
139+
* `mongodb` ([Linux and Windows](./bundle/bundle.d/receivers/mongodb.discovery.yaml))
139140
* `mysql` ([Linux and Windows](./bundle/bundle.d/receivers/mysql.discovery.yaml))
140141
* `oracledb` ([Linux and Windows](./bundle/bundle.d/receivers/oracledb.discovery.yaml))
141142
* `postgresql` ([Linux and Windows](./bundle/bundle.d/receivers/postgresql.discovery.yaml))
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
#####################################################################################
2+
# Do not edit manually! #
3+
# All changes must be made to associated .tmpl file before running 'make bundle.d'. #
4+
#####################################################################################
5+
mongodb:
6+
enabled: true
7+
rule:
8+
docker_observer: type == "container" and any([name, image, command], {# matches "(?i)mongo"}) and not (command matches "splunk.discovery")
9+
host_observer: type == "hostport" and command matches "(?i)mongo" and not (command matches "splunk.discovery")
10+
k8s_observer: type == "port" and pod.name matches "(?i)mongo"
11+
config:
12+
default:
13+
username: splunk.discovery.default
14+
password: splunk.discovery.default
15+
tls:
16+
insecure: true
17+
insecure_skip_verify: true
18+
status:
19+
metrics:
20+
- status: successful
21+
strict: mongodb.database.count
22+
log_record:
23+
body: mongodb receiver is working!
24+
statements:
25+
- status: failed
26+
regexp: 'connect: network is unreachable'
27+
log_record:
28+
append_pattern: true
29+
body: The container cannot be reached by the Collector. Make sure they're in the same network.
30+
- status: failed
31+
regexp: 'connect: connection refused'
32+
log_record:
33+
append_pattern: true
34+
body: The container is refusing mongodb connections.
35+
- status: partial
36+
regexp: '.* unable to authenticate using mechanism .*'
37+
log_record:
38+
append_pattern: true
39+
body: >-
40+
Please ensure your user credentials are correctly specified with
41+
`--set splunk.discovery.receivers.mongodb.config.username="<username>"` and
42+
`--set splunk.discovery.receivers.mongodb.config.password="<password>"` or
43+
`SPLUNK_DISCOVERY_RECEIVERS_mongodb_CONFIG_username="<username>"` and
44+
`SPLUNK_DISCOVERY_RECEIVERS_mongodb_CONFIG_password="<password>"` environment variables.
45+
- status: partial
46+
regexp: '.* failed to fetch index stats metrics: (Unauthorized) not authorized on admin to execute command .*'
47+
log_record:
48+
append_pattern: true
49+
body: >-
50+
Make sure the account used to access Mongodb has been given a clusterMonitor role in order to collect metrics.
51+
`db.grantRolesToUser('someUser', [{ role: 'clusterMonitor', db: 'admin' }])`
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
{{ receiver "mongodb" }}:
2+
enabled: true
3+
rule:
4+
docker_observer: type == "container" and any([name, image, command], {# matches "(?i)mongo"}) and not (command matches "splunk.discovery")
5+
host_observer: type == "hostport" and command matches "(?i)mongo" and not (command matches "splunk.discovery")
6+
k8s_observer: type == "port" and pod.name matches "(?i)mongo"
7+
config:
8+
default:
9+
username: {{ defaultValue }}
10+
password: {{ defaultValue }}
11+
tls:
12+
insecure: true
13+
insecure_skip_verify: true
14+
status:
15+
metrics:
16+
- status: successful
17+
strict: mongodb.database.count
18+
log_record:
19+
body: mongodb receiver is working!
20+
statements:
21+
- status: failed
22+
regexp: 'connect: network is unreachable'
23+
log_record:
24+
append_pattern: true
25+
body: The container cannot be reached by the Collector. Make sure they're in the same network.
26+
- status: failed
27+
regexp: 'connect: connection refused'
28+
log_record:
29+
append_pattern: true
30+
body: The container is refusing mongodb connections.
31+
- status: partial
32+
regexp: '.* unable to authenticate using mechanism .*'
33+
log_record:
34+
append_pattern: true
35+
body: >-
36+
Please ensure your user credentials are correctly specified with
37+
`--set {{ configProperty "username" "<username>" }}` and
38+
`--set {{ configProperty "password" "<password>" }}` or
39+
`{{ configPropertyEnvVar "username" "<username>" }}` and
40+
`{{ configPropertyEnvVar "password" "<password>" }}` environment variables.
41+
- status: partial
42+
regexp: '.* failed to fetch index stats metrics: (Unauthorized) not authorized on admin to execute command .*'
43+
log_record:
44+
append_pattern: true
45+
body: >-
46+
Make sure the account used to access Mongodb has been given a clusterMonitor role in order to collect metrics.
47+
`db.grantRolesToUser('someUser', [{ role: 'clusterMonitor', db: 'admin' }])`

0 commit comments

Comments
 (0)