Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
6f6b4d0
feat: merged the improved polling changes to main build (#1239)
cwadhwani-splunk Sep 17, 2025
176adb7
chore(release): 1.14.0-beta.1
srv-rr-github-token Sep 17, 2025
0de679b
fix: migrating bitnami to bitnamilegacy for redis and mongodb (#1245)
cwadhwani-splunk Sep 23, 2025
df18dfe
chore: update CHANGELOG (#1246)
omrozowicz-splunk Sep 24, 2025
ebba2d2
chore(release): 1.14.0-beta.2
srv-rr-github-token Sep 24, 2025
ee52aef
chore: update develop (#1251)
omrozowicz-splunk Sep 25, 2025
74f1016
feat: replace the pysnmplib with lextudio's pysmp
gmaiyani-crest Sep 25, 2025
354c35c
Merge branch 'develop' of github.com:splunk/splunk-connect-for-snmp i…
Sep 25, 2025
ef70416
Merge branch 'develop' of github.com:splunk/splunk-connect-for-snmp i…
gmaiyani-crest Sep 25, 2025
9a09c09
chore: refactor & udpated the integration test cases
gmaiyani-crest Sep 26, 2025
358ce0e
chore: empty commit to run integration tests [run-int-tests]
gmaiyani-crest Sep 29, 2025
b9ddc8d
test: test with python v3.12
gmaiyani-crest Sep 29, 2025
f6c2527
chore: empty commit to run integration tests [run-int-tests]
gmaiyani-crest Sep 29, 2025
52feaf0
chore: empty commit to run integration tests [run-int-tests]
gmaiyani-crest Sep 29, 2025
ca9f37f
Merge branch 'feat/replace-the-pysnmplib-to-lextudio-pysnmp' of githu…
gmaiyani-crest Sep 29, 2025
9e537e2
chore: empty commit to run integration tests [run-int-tests]
gmaiyani-crest Sep 29, 2025
55c5a43
chore: empty commit to run integration tests [run-int-tests]
gmaiyani-crest Sep 29, 2025
c86ab84
Merge branch 'feat/replace-the-pysnmplib-to-lextudio-pysnmp' of githu…
gmaiyani-crest Oct 1, 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/ci-docker-deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
strategy:
matrix:
python-version:
- 3.10
- 3.12
steps:
- name: Check out code
uses: actions/checkout@v4
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/ci-main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ jobs:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.10"
python-version: "3.12"
- uses: pre-commit/[email protected]

trivy-scan:
Expand Down Expand Up @@ -102,7 +102,7 @@ jobs:
strategy:
matrix:
python-version:
- "3.10"
- "3.12"
steps:
- uses: actions/checkout@v4
- name: Setup python
Expand Down Expand Up @@ -168,7 +168,7 @@ jobs:
- name: Setup python
uses: actions/setup-python@v5
with:
python-version: "3.10"
python-version: "3.12"
- name: run install_microk8s.sh
run: |
sudo snap install microk8s --classic --channel=1.33/stable
Expand Down Expand Up @@ -197,7 +197,7 @@ jobs:
- name: Setup python
uses: actions/setup-python@v5
with:
python-version: "3.10"
python-version: "3.12"
- name: Install docker compose
run: |
# Add Docker's official GPG key:
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 @@ -54,7 +54,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
python-version: "3.12"

- name: remove not used docker images
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/mike.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ jobs:
token: "${{ secrets.PAT_CLATOOL }}"
- uses: actions/setup-python@v5
with:
python-version: "3.10"
python-version: "3.12"
- name: Upload Docs
run: |
sudo apt update
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/offline-installation.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
strategy:
matrix:
python-version:
- "3.10"
- "3.12"
steps:
- name: Check out code
uses: actions/checkout@v4
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM python:3.10-alpine AS base
FROM python:3.12-alpine AS base

ENV PYTHONFAULTHANDLER=1 \
PYTHONHASHSEED=random \
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,8 @@ Common labels
value: {{ .Values.poller.maxOidToProcess | default "70" | quote }}
- name: MAX_REPETITIONS
value: {{ .Values.poller.maxRepetitions | default "10" | quote }}
- name: MAX_SNMP_BULK_WALK_CONCURRENCY
value: {{ .Values.poller.maxSnmpBulkWalkConcurrency | default "5" | quote }}
- name: PYSNMP_DEBUG
value: {{ .Values.pysnmpDebug | default "" | quote }}
- name: PROFILES_RELOAD_DELAY
Expand Down
3 changes: 3 additions & 0 deletions charts/splunk-connect-for-snmp/values.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -365,6 +365,9 @@
"maxRepetitions": {
"type": "integer"
},
"maxSnmpBulkWalkConcurrency": {
"type": "integer"
},
"usernameSecrets": {
"type": "array"
},
Expand Down
5 changes: 5 additions & 0 deletions charts/splunk-connect-for-snmp/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -247,6 +247,11 @@ poller:
# If this number is too high it can cause issues with SNMP response especially for old SNMP devices.
maxRepetitions: 10

# The maximum number of concurrent SNMP bulk walks (bulk_walk_cmd) that can be executed at the same time.
# Setting this control determines the number of OIDsubtrees are walked in parallel and helps prevent overwhelming the target device or network.
# Default is 5.
maxSnmpBulkWalkConcurrency: 5

# list of kubernetes secrets name that will be used for polling
# https://splunk.github.io/splunk-connect-for-snmp/main/microk8s/configuration/poller-configuration/#define-usernamesecrets
usernameSecrets: []
Expand Down
1 change: 1 addition & 0 deletions docker_compose/.env
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ WORKER_DISABLE_MONGO_DEBUG_LOGGING=true
UDP_CONNECTION_TIMEOUT=3
MAX_OID_TO_PROCESS=70
MAX_REPETITIONS=10
MAX_SNMP_BULK_WALK_CONCURRENCY=5

# Worker Poller
WORKER_POLLER_CONCURRENCY=4
Expand Down
1 change: 1 addition & 0 deletions docker_compose/docker-compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ x-workers_general_setup: &workers_general_setup
UDP_CONNECTION_TIMEOUT: ${UDP_CONNECTION_TIMEOUT:-3}
MAX_OID_TO_PROCESS: ${MAX_OID_TO_PROCESS:-70}
MAX_REPETITIONS: ${MAX_REPETITIONS:-10}
MAX_SNMP_BULK_WALK_CONCURRENCY: ${MAX_SNMP_BULK_WALK_CONCURRENCY:-5}
PROFILES_RELOAD_DELAY: ${PROFILES_RELOAD_DELAY:-60}

x-ipv6: &ipv6
Expand Down
5 changes: 4 additions & 1 deletion docs/dockercompose/6-env-file-configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ Inside the directory with the docker compose files, there is a `.env`. Variables

### General
| Variable | Description |
|------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------|
|------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------|
| `WALK_RETRY_MAX_INTERVAL` | Maximum time interval between walk attempts |
| `WALK_MAX_RETRIES` | Maximum number of walk retries |
| `METRICS_INDEXING_ENABLED` | Details can be found in [append oid index part to the metrics](../microk8s/configuration/poller-configuration.md#append-oid-index-part-to-the-metrics) |
Expand All @@ -75,6 +75,9 @@ Inside the directory with the docker compose files, there is a `.env`. Variables
| `WORKER_LOG_LEVEL` | Logging level of the workers, possible options: DEBUG, INFO, WARNING, ERROR, CRITICAL, or FATAL |
| `UDP_CONNECTION_TIMEOUT` | Timeout in seconds for SNMP operations |
| `MAX_OID_TO_PROCESS` | Sometimes SNMP Agent cannot accept more than X OIDs per once, so if the error "TooBig" is visible in logs, decrease the number of MAX_OID_TO_PROCESS |
| `MAX_REPETITIONS` | The amount of requested next oids in response for each of varbinds in one request sent |
| `MAX_SNMP_BULK_WALK_CONCURRENCY` | The maximum number of concurrent SNMP bulk walks (bulk_walk_cmd) that can be executed at the same time. Default is 5. Setting this control determines the number of OID subtrees are walked in parallel and helps prevent overwhelming the target device or network. |
|
| `MAX_REPETITIONS` | The amount of requested next oids in response for each of varbinds in one request sent |

### Worker Poller
Expand Down
17 changes: 16 additions & 1 deletion docs/microk8s/configuration/poller-configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,20 @@ When IPv6 is enabled and device is dual stack, the hostname resolution will try
The log level for poller can be set by changing the value for the key `logLevel`. The allowed values are: `DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL` or `FATAL`.
The default value is `INFO`.

### Define maxSnmpBulkWalkConcurrency
The maximum number of concurrent SNMP bulk walks (bulk_walk_cmd) that can be executed at the same time.
Default is 5.

`maxSnmpBulkWalkConcurrency` Setting this control determines the number of OID subtrees are walked in parallel and helps prevent overwhelming the target device or network.

For example:

The configured variables:
```yaml
poller:
maxSnmpBulkWalkConcurrency: 2
```

### Define maxRepetitions
The maxRepetitions is a parameter used in SNMP GetBulk call. It is responsible for controlling the
amount of variables in one request.
Expand All @@ -58,7 +72,8 @@ The configured variables:
poller:
maxRepetitions: 2
```
The requested varbinds in one getBulk call:

The requested varbinds in one get_bulk call:
```
IP-MIB.ipNetToMediaNetAddress
```
Expand Down
3 changes: 2 additions & 1 deletion integration_tests/automatic_setup_compose.sh
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ deploy_poetry() {
poetry install
poetry add --group dev splunk-sdk
poetry add --group dev splunklib
poetry add --group dev pysnmplib
poetry add --group dev pysnmp
poetry add --group dev pytest-asyncio
}

wait_for_containers_to_be_up() {
Expand Down
3 changes: 2 additions & 1 deletion integration_tests/automatic_setup_microk8s.sh
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ deploy_poetry() {
poetry install
poetry add --group dev splunk-sdk
poetry add --group dev splunklib
poetry add --group dev pysnmplib
poetry add --group dev pysnmp
poetry add --group dev pytest-asyncio
}

wait_for_pod_initialization() {
Expand Down
5 changes: 3 additions & 2 deletions integration_tests/deploy_and_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,8 @@ deploy_poetry() {
poetry install
poetry add -D splunk-sdk
poetry add -D splunklib
poetry add -D pysnmplib
poetry add -D pysnmp
poetry add -D pytest-asyncio
}

run_integration_tests() {
Expand All @@ -102,7 +103,7 @@ run_integration_tests() {
tail -1 | sed -e 's/[[:space:]]\+/\t/g' | cut -f4)

deploy_poetry
poetry run pytest --splunk_host="$splunk_ip" --splunk_password="$splunk_password" \
poetry run pytest --asyncio-mode=auto --splunk_host="$splunk_ip" --splunk_password="$splunk_password" \
--trap_external_ip="${trap_external_ip}"
}

Expand Down
2 changes: 0 additions & 2 deletions integration_tests/test_poller_integration.py
Original file line number Diff line number Diff line change
Expand Up @@ -1839,7 +1839,6 @@ def setup_misconfigured_profiles(request):


@pytest.mark.usefixtures("setup_misconfigured_profiles")
@pytest.mark.part6
class TestMisconfiguredProfiles:
def test_wrong_profiles(self, request, setup_splunk):
time.sleep(20)
Expand Down Expand Up @@ -1923,7 +1922,6 @@ def setup_misconfigured_groups(request):


@pytest.mark.usefixtures("setup_misconfigured_groups")
@pytest.mark.part6
class TestMisconfiguredGroups:
def test_wrong_groups(self, request, setup_splunk):
time.sleep(20)
Expand Down
Loading
Loading