Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
e8cb2a4
feat: mTLS for Splunk 10 (#1197)
ikheifets-splunk Jun 10, 2025
e15d414
chore(release): 1.13.0-beta.1
srv-rr-github-token Jun 10, 2025
0324bbb
chore(deps): update docker/login-action action to v3.4.0 (#1166)
renovate[bot] Jun 10, 2025
dd39338
fix: python and dependency update (#1200)
ajasnosz Jun 10, 2025
463e4ea
chore(release): 1.13.0-beta.2
srv-rr-github-token Jun 10, 2025
c911e7a
chore: add missing sudo in integration test script (#1207)
omrozowicz-splunk Jun 23, 2025
b9a0294
chore: update microk8s (#1206)
omrozowicz-splunk Jun 24, 2025
c3dd6c3
chore(deps): update dependency urllib3 to v2 [security] (#1205)
renovate[bot] Jun 25, 2025
cd44b56
fix: replace - with _ for metrics (#1213)
omrozowicz-splunk Jul 9, 2025
582a553
chore(release): 1.13.0-beta.3
srv-rr-github-token Jul 9, 2025
0e1f32f
feat: add partial walk (#1215)
ajasnosz Jul 22, 2025
9219959
chore(release): 1.13.0-beta.4
srv-rr-github-token Jul 22, 2025
e98c98a
test: parallelised integration tests (#1220)
omrozowicz-splunk Jul 28, 2025
80818aa
fix: problem with casting strings of scientific notation (#1219)
omrozowicz-splunk Jul 30, 2025
859c84d
chore(release): 1.13.0-beta.5
srv-rr-github-token Jul 30, 2025
57d44ae
fix: add ipv6 flag for worker poller (#1218)
ajasnosz Jul 31, 2025
41f237c
chore(release): 1.13.0-beta.6
srv-rr-github-token Jul 31, 2025
be59765
chore(deps): update dependency mkdocs-material to v9.6.16 (#1211)
renovate[bot] Aug 1, 2025
ac7b1e1
chore(deps): update docker/login-action action to v3.5.0
renovate[bot] Aug 5, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/cd-pages.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ jobs:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to GitHub Packages Docker Registry
uses: docker/login-action@v3.3.0
uses: docker/login-action@v3.5.0
with:
registry: ghcr.io
username: ${{ github.actor }}
Expand Down
12 changes: 9 additions & 3 deletions .github/workflows/ci-main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,9 @@ jobs:
runs-on: ubuntu-latest
if: "contains(needs.integration-tests-check.outputs.commit_message, '[run-int-tests]') || github.ref_name == 'develop'"
timeout-minutes: 120
strategy:
matrix:
index: [1, 2, 3, 4, 5, 6]
steps:
- name: Checkout Project
uses: actions/checkout@v4
Expand All @@ -168,15 +171,15 @@ jobs:
python-version: "3.10"
- name: run install_microk8s.sh
run: |
sudo snap install microk8s --classic --channel=1.30/stable
sudo snap install microk8s --classic --channel=1.33/stable
sudo apt-get install snmp -y
sudo apt-get install python3-dev -y
- name: run automatic_setup_microk8s.sh
run: integration_tests/automatic_setup_microk8s.sh integration
- name: run tests
working-directory: integration_tests
run: |
poetry run pytest --splunk_host="localhost" --splunk_password="changeme2" --trap_external_ip="$(hostname -I | cut -d " " -f1)" --sc4snmp_deployment="microk8s"
poetry run pytest --splunk_host="localhost" --splunk_password="changeme2" --trap_external_ip="$(hostname -I | cut -d " " -f1)" --sc4snmp_deployment="microk8s" -m part${{ matrix.index }}

test-integration-compose:
name: Run integration tests in docker compose deployment
Expand All @@ -185,6 +188,9 @@ jobs:
runs-on: ubuntu-latest
if: "contains(needs.integration-tests-check.outputs.commit_message, '[run-int-tests]') || github.ref_name == 'develop'"
timeout-minutes: 120
strategy:
matrix:
index: [ 1, 2, 3, 4, 5, 6 ]
steps:
- name: Checkout Project
uses: actions/checkout@v4
Expand Down Expand Up @@ -213,4 +219,4 @@ jobs:
- name: run tests
working-directory: integration_tests
run: |
poetry run pytest --splunk_host="localhost" --splunk_password="changeme2" --trap_external_ip="$(hostname -I | cut -d " " -f1)" --sc4snmp_deployment="docker-compose"
poetry run pytest --splunk_host="localhost" --splunk_password="changeme2" --trap_external_ip="$(hostname -I | cut -d " " -f1)" --sc4snmp_deployment="docker-compose" -m part${{ matrix.index }}
2 changes: 1 addition & 1 deletion .github/workflows/ci-release-pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ jobs:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to GitHub Packages Docker Registry
uses: docker/login-action@v3.3.0
uses: docker/login-action@v3.5.0
with:
registry: ghcr.io
username: ${{ github.actor }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ci-release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ jobs:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to GitHub Packages Docker Registry
uses: docker/login-action@v3.3.0
uses: docker/login-action@v3.5.0
with:
registry: ghcr.io
username: ${{ github.actor }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ci-ui-tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ jobs:

- name: install microk8s
run: |
sudo snap install microk8s --classic --channel=1.30/stable
sudo snap install microk8s --classic --channel=1.33/stable
sudo apt-get install snmp -y
sudo apt-get install python3-dev -y

Expand Down
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,14 @@
## Unreleased

### Changed
- implemented mTLS for Splunk 10
- update default microk8s to 1.33
- introduce `splunkMetricNameHyphenToUnderscore` parameter to make metric names follow Splunk schema
- change default walk to get only SNMPv2-MIB

### Fixed
- fix text SNMP values with numbers and 'E' being interpreted as scientific notation
- added missing `ipv6Enabled` flag in poller


## [1.12.3]
Expand Down
4 changes: 2 additions & 2 deletions charts/splunk-connect-for-snmp/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ type: application
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)

version: 1.12.3
version: 1.13.0-beta.6
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
appVersion: "1.12.3"
appVersion: "1.13.0-beta.6"
#
dependencies:
- name: mongodb
Expand Down
4 changes: 2 additions & 2 deletions charts/splunk-connect-for-snmp/templates/NOTES.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
Walk profiles no longer include IF-MIB family by default.
If you've used this functionality before, please update the walk profile with ['IF-MIB'] varBind.
Default walk no longer calls full oid tree, instead it is collecting only 'SNMPv2-MIB'.
If you want to call full oid for the devices, you have to set enableFullWalk flag to true.
2 changes: 2 additions & 0 deletions charts/splunk-connect-for-snmp/templates/inventory/job.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ spec:
value: {{ .Values.scheduler.tasksExpiryTime | quote }}
- name: CONFIG_FROM_MONGO
value: {{ quote .Values.UI.enable | default "false" }}
- name: ENABLE_FULL_WALK
value: {{ .Values.poller.enableFullWalk | default "false" | quote }}
volumeMounts:
- name: config
mountPath: "/app/config"
Expand Down
2 changes: 2 additions & 0 deletions charts/splunk-connect-for-snmp/templates/ui/_helpers.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ spec:
value: {{ .Values.scheduler.logLevel | default "INFO" }}
- name: CONFIG_FROM_MONGO
value: {{ quote .Values.UI.enable | default "false" }}
- name: ENABLE_FULL_WALK
value: {{ .Values.poller.enableFullWalk | default "false" | quote }}
volumeMounts:
- name: config
mountPath: "/app/config"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,8 @@ Common labels
value: {{ .Values.splunk.insecureSSL | default "false" | quote }}
- name: SPLUNK_AGGREGATE_TRAPS_EVENTS
value: {{ .Values.traps.aggregateTrapsEvents | default "false" | quote }}
- name: SPLUNK_METRIC_NAME_HYPHEN_TO_UNDERSCORE
value: {{ .Values.poller.splunkMetricNameHyphenToUnderscore | default "false" | quote }}
- name: SPLUNK_HEC_TOKEN
valueFrom:
secretKeyRef:
Expand Down Expand Up @@ -179,6 +181,8 @@ Common labels
value: {{ .Values.worker.poller.concurrency | default "4" | quote }}
- name: PREFETCH_COUNT
value: {{ .Values.worker.poller.prefetch | default "1" | quote }}
- name: IPv6_ENABLED
value: {{ .Values.poller.ipv6Enabled | default "false" | quote }}
{{- end }}

{{- define "environmental-variables-sender" -}}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,14 @@ spec:
env:
{{- include "environmental-variables" . | nindent 12 }}
{{- include "environmental-variables-sender" . | nindent 12 }}
{{- if .Values.splunk.mtls.enabled }}
- name: SPLUNK_HEC_MTLS_CLIENT_CERT
value: /app/hec-mtls/tls.crt
- name: SPLUNK_HEC_MTLS_CLIENT_KEY
value: /app/hec-mtls/tls.key
- name: SPLUNK_HEC_MTLS_CA_CERT
value: /app/hec-mtls/cacert.pem
{{- end }}
{{- if .Values.worker.livenessProbe.enabled }}
livenessProbe:
exec:
Expand All @@ -63,6 +71,11 @@ spec:
periodSeconds: {{ .Values.worker.readinessProbe.periodSeconds }}
{{- end }}
volumeMounts:
{{- if .Values.splunk.mtls.enabled }}
- name: hec-mtls
mountPath: "/app/hec-mtls"
readOnly: true
{{- end }}
- name: config
mountPath: "/app/config"
readOnly: true
Expand Down Expand Up @@ -102,6 +115,11 @@ spec:
{{- toYaml . | nindent 8 }}
{{- end }}
volumes:
{{- if .Values.splunk.mtls.enabled }}
- name: hec-mtls
secret:
secretName: {{ .Values.splunk.mtls.secretRef }}
{{- end }}
# You set volumes at the Pod level, then mount them into containers inside that Pod
- name: config
configMap:
Expand Down
21 changes: 21 additions & 0 deletions charts/splunk-connect-for-snmp/values.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,18 @@
},
"metricsIndex": {
"type": "string"
},
"mtls": {
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": {
"type": "boolean"
},
"secretRef": {
"type": "string"
}
}
}
}
},
Expand Down Expand Up @@ -341,6 +353,9 @@
"metricsIndexingEnabled": {
"type": "boolean"
},
"splunkMetricNameHyphenToUnderscore": {
"type": "boolean"
},
"pollBaseProfiles": {
"type": "boolean"
},
Expand All @@ -355,6 +370,12 @@
},
"logLevel": {
"type": "string"
},
"ipv6Enabled": {
"type": "boolean"
},
"enableFullWalk": {
"type": "boolean"
}
}
},
Expand Down
14 changes: 14 additions & 0 deletions charts/splunk-connect-for-snmp/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,12 @@ splunk:
# name of the metrics index
metricsIndex: "netmetrics"

# new encryption appeared in Splunk 10
mtls:
enabled: false
# name of existing secret (should be created manully), that will store certs for mTLS
secretRef: ""

################################################################################
# Splunk Observability configuration
################################################################################
Expand Down Expand Up @@ -225,6 +231,10 @@ poller:
# https://splunk.github.io/splunk-connect-for-snmp/main/microk8s/configuration/poller-configuration/#append-oid-index-part-to-the-metrics
metricsIndexingEnabled: false

# Replace "-" in a mib name to "_" to make it compatible to Splunk metric schema
# https://help.splunk.com/en/splunk-enterprise/get-data-in/metrics/9.4/introduction-to-metrics/overview-of-metrics
splunkMetricNameHyphenToUnderscore: false

# Enable polling base profiles (with IF-MIB and SNMPv2-MIB) from
# https://github:com/splunk/splunk-connect-for-snmp/blob/main/splunk_connect_for_snmp/profiles/base.yaml
pollBaseProfiles: true
Expand All @@ -237,6 +247,9 @@ poller:
# https://splunk.github.io/splunk-connect-for-snmp/main/microk8s/configuration/poller-configuration/#define-usernamesecrets
usernameSecrets: []

# flag to enable polling full walk tree for devices
enableFullWalk: false

# Here is where polling happens. Learn more on how to configure it here:
# https://splunk.github.io/splunk-connect-for-snmp/main/microk8s/configuration/poller-configuration/

Expand All @@ -245,6 +258,7 @@ poller:
# example_group_1,,2c,public,,,3000,static_profile,t,
logLevel: "INFO"

ipv6Enabled: false
worker:
# workers are responsible for the actual execution of polling, processing trap messages, and sending data to Splunk.
# More: https://splunk.github.io/splunk-connect-for-snmp/main/microk8s/configuration/worker-configuration/
Expand Down
6 changes: 4 additions & 2 deletions docker_compose/.env
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Deployment configuration
SC4SNMP_IMAGE=ghcr.io/splunk/splunk-connect-for-snmp/container
SC4SNMP_TAG="1.12.3"
SC4SNMP_TAG="1.13.0-beta.6"
SCHEDULER_CONFIG_FILE_ABSOLUTE_PATH=
TRAPS_CONFIG_FILE_ABSOLUTE_PATH=
INVENTORY_FILE_ABSOLUTE_PATH=
COREFILE_ABS_PATH=
SC4SNMP_VERSION="1.12.3"
SC4SNMP_VERSION="1.13.0-beta.6"

# Network configuration
COREDNS_ADDRESS=172.28.0.255
Expand Down Expand Up @@ -39,6 +39,7 @@ SPLUNK_HEC_INDEX_EVENTS=netops
SPLUNK_HEC_INDEX_METRICS=netmetrics
SPLUNK_HEC_PATH=/services/collector
SPLUNK_AGGREGATE_TRAPS_EVENTS=false
SPLUNK_METRIC_NAME_HYPHEN_TO_UNDERSCORE=false
IGNORE_EMPTY_VARBINDS=false
SPLUNK_LOG_INDEX=

Expand Down Expand Up @@ -85,6 +86,7 @@ WORKER_TRAP_MEMORY_RESERVATIONS=250M
# Inventory configuration
INVENTORY_LOG_LEVEL=INFO
CHAIN_OF_TASKS_EXPIRY_TIME=500
ENABLE_FULL_WALK=false

# Traps configuration
SNMP_V3_SECURITY_ENGINE_ID=80003a8c04
Expand Down
2 changes: 2 additions & 0 deletions docker_compose/docker-compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ x-splunk_extended_setup: &splunk_extended_setup
SPLUNK_HEC_INDEX_EVENTS: ${SPLUNK_HEC_INDEX_EVENTS:-netops}
SPLUNK_HEC_INDEX_METRICS: ${SPLUNK_HEC_INDEX_METRICS:-netmetrics}
SPLUNK_AGGREGATE_TRAPS_EVENTS: ${SPLUNK_AGGREGATE_TRAPS_EVENTS:-false}
SPLUNK_METRIC_NAME_HYPHEN_TO_UNDERSCORE: ${SPLUNK_METRIC_NAME_HYPHEN_TO_UNDERSCORE:-false}

x-workers_general_setup: &workers_general_setup
SC4SNMP_VERSION: ${SC4SNMP_VERSION:-latest}
Expand Down Expand Up @@ -116,6 +117,7 @@ services:
LOG_LEVEL: ${INVENTORY_LOG_LEVEL:-INFO}
CHAIN_OF_TASKS_EXPIRY_TIME: ${CHAIN_OF_TASKS_EXPIRY_TIME:-500}
CONFIG_FROM_MONGO: ${CONFIG_FROM_MONGO:-false}
ENABLE_FULL_WALK: ${ENABLE_FULL_WALK:-false}
volumes:
- ${SCHEDULER_CONFIG_FILE_ABSOLUTE_PATH}:/app/config/config.yaml:ro
- ${INVENTORY_FILE_ABSOLUTE_PATH}:/app/inventory/inventory.csv:ro
Expand Down
2 changes: 1 addition & 1 deletion docs/dockercompose/5-traps-configuration.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

Scheduler configuration is stored in the `traps-config.yaml` file. This file has the following sections:
Traps configuration is stored in the `traps-config.yaml` file. This file has the following sections:

```yaml
communities:
Expand Down
Loading
Loading