OIM Configuration Object v2

Defines the schema for the v2 configuration of OIM settings.

OIM v2 Config Object

The OIM v2 Configuration object schema includes the following attributes:

ParameterDescriptionType
additional_attributesArray of payload mapping rules for additional tags.

See the additional_attributes table for more information.
Object
array_sourceDefines which payload property contains the tag values if is_array=trueString
is_arrayWhether the payloads sent to the integration should be treated as single alerts, or multipleBoolean
map_remainingWhether to create tags from fields not included in the mapping rulesBoolean
primary_propertyMapping rule for the primary property

Attributes:
name - (Optional) Set a name for the tag in BigPanda
Object
secondary_propertyMapping rule for the secondary property

Attributes:
name - (Optional) Set a name for the tag in BigPanda
Object
statusLookup rule to set the event status

Attributes:
default_to - The value to populate if no matches are found
source - Array of payload fields to match
status_map - Array of value matches for each BigPanda status
Object
bp_timestampDefines an optional tag to add a human-readable timestamp.

Attributes:
is_selected - true or false
Object
event_filterA BPQL statement that dictates which events should be dropped upon initial ingestion (using Source Tags)String
timestampObject that defines mapping rules for the timestamp property

Attributes:
source - Which payload fields should populate the value
Object
incident_identifierOptional override for the incident identifierArray
versionThe version of the OIM API.String

additional_attributes Object

The additional_attributes object contains the following parameters:

ParameterDescriptionType
isDestinationAccepted(Optional) Whether the destination tag was acceptedBoolean
isSourceAccepted(Optional) Whether the source tag was acceptedBoolean
isSuggestion(Optional) Whether the tag was suggested by BigPanda Tag NormalizationBoolean
name(Optional) Set a name for the tag in BigPandaString
sourceArray of payload fields to match.Array of strings
suggestedDestinationSuggested Destination tag nameString
suggestedSourcesArray of payload fields to match, for suggested tagsObject
flatten(Optional) Whether or not to flatten a nested object for improved mappingBoolean

❗️

Default Change

As of October 2024, new OIM integrations will not flatten arrays by default. Existing integrations will not be affected by this change. If you would like to turn off array flattening for an integration created before October 2024, please reach out to support to update the array flattening setting.

Example Config Object

    {
      "config": {
        "additional_attributes": [
          {
            "isDestinationAccepted": true,
            "isSourceAccepted": true,
            "isSuggestion": true,
            "name": "check",
            "source": [
             "@alert.labels.alertname",
             "@alert.labels.check",
             "@alert.labels.alert",
             "@alert.labels.sdesc",
             "@alert.labels.short_desc",
             "@alert.labels.title"
            ],
            "suggestedDestination": "check",
            "suggestedSources": [
             "@alert.labels.alertname",
             "@alert.labels.check",
             "@alert.labels.alert",
             "@alert.labels.sdesc",
             "@alert.labels.short_desc",
             "@alert.labels.title"
            ]
           },
           {
            "isDestinationAccepted": true,
            "isSourceAccepted": true,
            "isSuggestion": true,
            "name": "application",
            "source": [
             "@alert.labels.app_name",
             "@alert.labels.application",
             "@alert.labels.app",
             "@alert.labels.impacted_app"
            ],
            "suggestedDestination": "application",
            "suggestedSources": [
             "@alert.labels.app_name",
             "@alert.labels.application",
             "@alert.labels.app",
             "@alert.labels.impacted_app"
            ]
           }
         ],
        "array_source": "alerts",
        "is_array": true,
        "map_remaining": false,
        "primary_property": [
         {
          "name": "host"
         },
         {
          "name": "application"
         },
         {
          "name": "service"
         }
        ],
        "secondary_property": [
         {
          "name": "check"
         },
         {
          "name": "description"
         }
        ],
        "status": {
         "default_to": "critical",
         "source": [
          "@alert.status",
          "@alert.labels.severity"
         ],
         "status_map": {
          "acknowledged": [
           "acknowledged"
          ],
          "critical": [
           "page",
           "critical"
          ],
          "ok": [
           "resolved"
          ],
          "warning": [
           "warn",
           "warning"
          ]
         }
        },
        "bp_timestamp": {
            "is_selected": true
        },
         "timestamp": {
         "source": [
          "@alert.annotations.timestamp",
          "@alert.startsat",
          "@alert.endsat"
         ]
        },
        "event_filter": "@alert.search_name = \"OSS -- MINT Core -- *\"",
        "incident_identifier": [
                "application",
                "cluster"
            ],
    "version": "2.0"
       },

Sample Payload Object

For field validation, BigPanda checks against an existing sample JSON payload from the integration. For all create and update calls to the API, a sample must be included in the body of all calls.

All payload fields referenced in configuration settings must be included in the sample.

To generate a sample payload:

  • Send a test or sample event to BigPanda after integration installation, but before configuration
  • Generate an event preview in your tool
  • Manually enter payload field values into the interactive code generator on the BigPanda docs site

When included in the API body, the sample payload should be JSON formatted with double quotes. The payload can include nested objects.

Example Sample Payload

"sample_payload": {
        "alerts": [
            {
                "generatorURL": "https://some-url.io",
                "fingerprint": "123456789",
                "annotations": {
                    "description": "This alert is used to check the CPU utilization of this non-existent server",
                    "runbook_url": "https://runbook.io/cpu-check"
                },
                "startsAt": "2022-07-05T19:59:25.661Z",
                "endsAt": "0001-01-01T00:00:00Z",
                "status": "firing",
                "labels": {
                    "severity": "page",
                    "instance": "bigpanda-server",
                    "alertname": "BigPanda Test",
                    "team": "metrics",
                    "env": "test",
                    "job": "CPU Check",
                    "locale": "ca",
                    "timestamp": "1.657051103137505e+09"
                }
            }
        ],
        "commonLabels": {
            "instance": "bigpanda-server",
            "alertname": "BigPanda Test",
            "team": "metrics",
            "env": "test",
            "job": "CPU Check",
            "locale": "ca",
            "timestamp": "1.657051103137505e+09"
        },
        "externalURL": "https://external-url.io",
        "groupLabels": {
            "instance": "bigpanda-server",
            "alertname": "BigPanda Test",
            "team": "metrics",
            "env": "test",
            "job": "CPU Check",
            "locale": "ca",
            "timestamp": "1.657051103137505e+09"
        },
        "receiver": "bigpanda",
        "version": "4",
        "commonAnnotations": {
            "description": "This alert is used to check the CPU utilization of this non-existent server",
            "runbook_url": "https://runbook.io/cpu-check"
        },
        "status": "firing"
    }