Skip to main content

SNMP integration

Supported Versions

Type

Authentication Type

SNMP v1, v2c, and v3

Agent

Org Bearer Token (agent) and user API key (configuration)

BigPanda receives SNMP traps through the On-Prem Event Collector, an agent that runs on your network and forwards each trap to the BigPanda SNMP service. The service decodes the trap against the MIBs you upload, matches it to a trap configuration, and creates an alert on your SNMP integration.

Beta integration

This integration is currently in beta release status.

Beta integrations are still being tested. Core connectivity is stable, but the integration may receive updates based on user feedback.

Replaces the BigPanda Daemon (SNMP)

This integration replaces the BigPanda Daemon (SNMP) and the legacy BigPanda Agent. From version 1.0.1, the On-Prem Event Collector installs alongside the legacy bigpanda-agent package, so you can remove the legacy agent when you're ready.

Key features

  • Single agent: The On-Prem Event Collector, a single binary, replaces the BigPanda Agent, the SNMP daemon, and the SNMP tools packages.

  • SNMP v3 stays local: SNMP v3 authentication and privacy end at the agent. Credentials never leave your network.

  • Cloud MIB compiling: Upload vendor MIB files to BigPanda instead of compiling them on the agent host.

  • Drafted trap configurations: Generate a configuration for every notification a compiled MIB declares, then review and enable them.

  • Per-device routing: Route traps from one agent to several SNMP integrations by source IP, trap OID, or enterprise.

Data model

A trap configuration turns each trap into one BigPanda alert. Every field the configuration produces becomes an alert tag, except status.

Source

Tags

Varbinds

Every varbind declared in the configuration, including varbinds no other setting uses.

SNMP system fields

snmp_source_ip, snmp_trap_oid, snmp_version, snmp_pdu_type, snmp_agent_id, and snmp_received_at. When the trap carries them: snmp_source_port, snmp_uptime, snmp_enterprise, snmp_agent_address, snmp_generic_trap, and snmp_specific_trap.

copy and rename

copy adds a field and keeps the source. rename replaces the source.

Trap source

The MIB name, trap name, and timestamp.

set

Fields built from {field} templates, for example "set": {"incident_identifier": "{alarmId}"}.

drop

Removes fields, so they don't become tags.

  • Empty values: Null or missing values are left out. They never appear as the text null.

  • primary and secondary: Name the fields that identify the alert. The named fields also appear as tags. If the primary field is empty or missing, BigPanda quarantines the trap, because an empty key would merge every trap into one incident. A missing secondary field doesn't block the alert.

The alert status must be ok, warning, critical, or unknown.

Configuration

Alert status

status set to one of the four values

That value.

status set from a varbind, with map_status

The map_status entry that exactly matches the varbind value.

The trap is configured as a resolution (resolve_mapping set to clear)

ok, and the alert resolves, whatever the device sent.

No status

unknown.

A value that isn't one of the four, or has no map_status entry

BigPanda quarantines the trap.

Before you start

Gather these items before you install the integration.

Item

Where to find it

The vendor's MIB file

The device vendor. A .txt file, a .mib file, or a zip of several.

The integration app key

The integration page in BigPanda, after you create the integration.

Your org token

BigPanda org settings.

A user API key

BigPanda API key settings.

A Linux host on the same network as your devices

RPM-based or Debian-based. Debian 12 and 13 need On-Prem Event Collector 1.0.1 or later.

The SNMP service host depends on your BigPanda region.

Region

Host

US

https://api.bigpanda.io

EU

Not available yet.

Use the API host

The SNMP service isn't available on integrations.bigpanda.io. Requests to that host return a Page Not Found error.

Install the integration

Setup has three parts: install and configure the On-Prem Event Collector, teach BigPanda your traps, and send a test trap.

Create the integration

A dedicated SNMP integration isn't available yet. Use an Open Integration Manager (OIM) integration to get an app key.

  1. In BigPanda, create an Open Integration Manager integration.

  2. Copy the app key from the integration page.

OIM settings such as tag mapping and status mapping don't apply to SNMP alerts yet.

Install the On-Prem Event Collector

  1. If the legacy BigPanda Agent is installed on the host and you no longer need it, remove it. From version 1.0.1, both can run on the same host.

    On Debian-based hosts:

    sudo apt remove bigpanda-agent

    On RPM-based hosts:

    sudo yum remove bigpanda-agent
  2. Run the install script.

    curl -fsSL https://bigpandaio.jfrog.io/artifactory/int-archive/bigpanda-forager/install.sh | sudo sh

    The script also handles later upgrades and downgrades. On RPM-based hosts, you can install a pinned version with your package manager instead, for example sudo yum install bigpanda-forager-1.0.2-1.

  3. Confirm the installed version.

    bigpanda-forager --version

    The output shows the version and a commit hash, for example bigpanda-forager 1.0.0 (cba6a8e).

Configure the On-Prem Event Collector

The On-Prem Event Collector reads two files:

  • /etc/bigpanda/forager/forager.yaml: The agent configuration, including the SNMP listener and the connection to BigPanda.

  • /etc/bigpanda/forager/rules.yaml: Routing rules and operations, including which integration receives each trap.

  1. Open /etc/bigpanda/forager/forager.yaml and add an snmp section.

    snmp:
      listen: 0.0.0.0:162
      communities: ["<community_string>"]
      cloud_url: https://api.bigpanda.io
      cloud_token: <org_token>
      v3_users:
        - username: <v3_username>
          auth_protocol: SHA
          auth_passphrase: <auth_passphrase>
          priv_protocol: AES
          priv_passphrase: <priv_passphrase>
    • cloud_url: The SNMP service host for your region.

    • cloud_token: Your org token. The collector sends it as a Bearer token.

    • v3_users: Needed only for SNMP v3 devices.

  2. In the same file, point the collector at the rules file with a top-level rules_file key.

    rules_file: /etc/bigpanda/forager/rules.yaml
  3. Open /etc/bigpanda/forager/rules.yaml and add an snmp_rules entry with the integration app key.

    snmp_rules:
      - app_key: <app_key>
        priority: 10

    A rule with no match block applies to every trap.

  4. Restart the On-Prem Event Collector.

    sudo systemctl restart bigpanda-forager

Keep every key under its section

YAML relies on indentation. If forager.yaml already holds an HTTP listener, indent listen, communities, and the other SNMP keys under snmp:. Otherwise the collector fails to start with mapping key "listen" already defined.

The app key rule is required

The collector doesn't add an app key to a trap unless a rule in rules.yaml matches it. A trap with no app key can't match a trap configuration scoped to your integration, so it never becomes an alert.

Route traps to several integrations

One On-Prem Event Collector can feed several SNMP integrations. Rules run in priority order, lowest number first, and the first match wins. Each match condition is a regular expression on a trap field such as source_ip, trap_oid, or enterprise.

snmp_rules:
  - app_key: <integration_a_app_key>
    priority: 10
    match:
      - all:
          source_ip: '^10\.20\.3\.'
  - app_key: <integration_b_app_key>
    priority: 99

The last rule has no match block, so it catches every trap the first rule doesn't. The collector applies the app key when it sends a trap, so traps already buffered on the host pick up a rule change after a restart.

Upload your MIB

The configuration API authenticates with your user API key and reads your org from the key.

  1. Upload the MIB file as raw bytes.

    curl -X POST "https://api.bigpanda.io/v1/mibs" \
      -H "Authorization: Bearer <user_api_key>" \
      -H 'Content-Type: application/octet-stream' \
      -H 'X-Filename: <mib_file_name>' \
      --data-binary @<mib_file_name>

    The response returns 202 and a job ID.

  2. Poll the job until state is succeeded or partial.

    curl -s "https://api.bigpanda.io/v1/mibs/jobs/<job_id>" \
      -H "Authorization: Bearer <user_api_key>"
  3. If missingModules lists any modules, upload those MIB files the same way.

  4. Confirm the module compiled.

    curl -s "https://api.bigpanda.io/v1/mibs" \
      -H "Authorization: Bearer <user_api_key>"

    Find your module by originalFilename and check that compileState is compiled.

The module count can read low

Standard modules such as SNMPv2-SMI, SNMPv2-TC, and SNMPv2-CONF are built in. When a zip includes them, modulesDone counts only the vendor modules, so a successful job can show modulesDone: 1 against modulesTotal: 4. Use GET /v1/mibs to confirm what compiled.

Create trap configurations

A trap configuration sets what a trap becomes in BigPanda. Draft them from the compiled MIB, then review and enable the ones you need.

  1. Draft configurations for every notification in the module. Send "persist": false first to preview the drafts without saving them.

    curl -X POST "https://api.bigpanda.io/v1/trap-configs/scaffold" \
      -H "Authorization: Bearer <user_api_key>" \
      -H 'Content-Type: application/json' \
      -d '{"mib": "<module_name>"}'
  2. Review each draft. Drafts marked needsReview contain inferred values.

  3. Set app_key to your integration's app key on each configuration to keep.

  4. Enable each configuration to keep.

    curl -X PATCH "https://api.bigpanda.io/v1/trap-configs/<config_id>" \
      -H "Authorization: Bearer <user_api_key>" \
      -H 'Content-Type: application/json' \
      -d '{"enabled": true}'

    BigPanda validates the whole configuration before it saves the change, so a draft with an invalid spec can't be enabled.

Enable the drafts you keep

Drafts are saved with enabled: false. A trap whose configuration is disabled is dropped without an error. Enable the drafts you need, and leave the rest disabled until you review them.

Send a test trap

  1. Point one device at the collector host on port 162, and trigger a configured trap.

  2. Open the integration in BigPanda and confirm the alert appears.

To test a trap configuration without a device, post a trap straight to the SNMP service with your org token. The body is a JSON array, even for one trap.

curl -X POST "https://api.bigpanda.io/v1/snmp/traps" \
  -H "Authorization: Bearer <org_token>" \
  -H 'Content-Type: application/json' \
  -d '[
    {
      "agent_id": "my-test",
      "sequence": 1,
      "timestamp": "2026-10-07T12:00:00Z",
      "source_ip": "192.0.2.10",
      "snmp_version": "v2c",
      "pdu_type": "trap",
      "trap_oid": "<trap_oid>",
      "app_key": "<app_key>",
      "varbinds": [
        { "oid": "<varbind_oid>", "type": "OctetString", "value": "<value>" }
      ]
    }
  ]'
  • Required fields: agent_id, sequence, timestamp (RFC 3339), source_ip, snmp_version (v1, v2c, or v3), pdu_type (trap or inform), and trap_oid. Unknown fields are rejected.

  • sequence: Increase it on each test. BigPanda deduplicates traps with the same agent_id, stream, and sequence.

A 202 response doesn't mean the trap is valid

BigPanda accepts any JSON array and quarantines traps it can't process. Confirm the alert in BigPanda.

Validate the integration

Check these on the collector host if no alert appears:

  • Service log: Run journalctl -u bigpanda-forager and look for errors.

  • Health endpoint: Run curl http://localhost:9090/health. The collector serves /health and /metrics on port 9090 by default. To change the port, set observability_listen in forager.yaml.

  • Forward metrics: Read forager_snmp_forward_total from /metrics. A rising success count means BigPanda accepted the traps. A rising deadlettered_4xx count usually means the cloud_url host is wrong. Other outcomes are credential_rejected, retryable_5xx, rate_limited, and transport.

An accepted trap isn't always an alert

BigPanda accepts traps it can't process so that the collector doesn't discard a whole batch. A success count with no alert usually means the trap didn't match an enabled configuration. Check the snmp_rules app key first, then the configuration's trap OID, app key, and enabled value.

Troubleshoot the integration

Symptom

Cause

Fix

The On-Prem Event Collector fails to start with mapping key "listen" already defined

SNMP keys aren't indented under snmp:

Indent every SNMP key under snmp: and restart the collector.

Every forward is dead-lettered with status 404

cloud_url points at a host that doesn't serve SNMP

Set cloud_url to the API host for your region.

Traps forward successfully but no alert appears

No snmp_rules entry stamps the app key

Add an snmp_rules entry with your app key and restart the collector.

Traps forward successfully but no alert appears

The trap configuration is disabled or scoped to another app key

Enable the configuration and confirm its app_key.

A MIB upload job fails with no detail

Compile diagnostics aren't exposed yet

Contact BigPanda support with the job ID.

Repository install fails on Debian 12 or 13

Version 1.0.0 has no package index for these releases

Install version 1.0.1 or later.

Install fails with conflicts with bigpanda-agent

Version 1.0.0 conflicts with the legacy BigPanda Agent package

Install version 1.0.1 or later, or remove bigpanda-agent and rerun the install.

Known limitations

  • Traps that match no configuration are held by BigPanda but aren't visible to you yet, and they can't be replayed.

  • Traps whose configuration is disabled are dropped and leave no record.

  • SNMP alerts don't pass through Open Integration Manager yet, so OIM tag mapping, status mapping, and filtering don't apply.

  • The On-Prem Event Collector doesn't send a heartbeat to BigPanda. Use its health endpoint and logs to confirm the agent is running.

  • The collector rejects traps with a community string that isn't in communities. There's no wildcard.

  • MIB compile diagnostics aren't returned by the API yet.

Delete the integration

Deleting the integration requires that you stop the On-Prem Event Collector from sending traps to it and delete it in BigPanda. Stop sending traps first, so that BigPanda doesn't reject traps after the app key no longer exists.

Caution during replacement

When you replace an existing integration with a new tool or system, configure the new integration first so that no data is lost.

Deactivate the integration

To stop receiving alerts without deleting the integration, deactivate it.

  1. In BigPanda, go to the Integrations tab and select the integration from the list.

  2. At the top of the integration details, click the Active/Inactive toggle next to the integration name.

Inactive integrations are marked with a gray bar in the integrations list.

Stop sending traps to BigPanda

  1. On the collector host, remove the snmp_rules entry with the integration's app key from /etc/bigpanda/forager/rules.yaml.

  2. Restart the On-Prem Event Collector.

    sudo systemctl restart bigpanda-forager

Manually resolve open alerts

Manually resolve any open alerts from the integration to remove the related incidents from your incident feed. These incidents don't resolve automatically without an ok status from the integration.

Delete the integration in BigPanda

  1. In BigPanda, go to the Integrations tab and select the integration from the list.

  2. In the integration details, click the trash icon, then confirm that you want to delete the integration. The integration is removed immediately.

Automatic alert resolution for deleted integrations

All active alerts from the integration are resolved after deletion.

Data removal

This procedure doesn't remove any data from your devices or the collector host.

Next steps