src/go/plugin/go.d/modules/snmp/config_schema.json
{
"jsonSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"update_every": {
"title": "Update every",
"description": "Data collection interval, measured in seconds.",
"type": "integer",
"minimum": 1,
"default": 10
},
"hostname": {
"title": "Hostname",
"description": "The hostname or IP address of the SNMP-enabled device.",
"type": "string"
},
"community": {
"title": "SNMPv1/2 community",
"description": "The SNMP community string for SNMPv1/v2c authentication.",
"type": "string",
"default": "public"
},
"create_vnode": {
"title": "Create",
"description": "If set, the collector will create a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes) for this SNMP device, which will appear as a separate Node in Netdata.",
"type": "boolean"
},
"vnode": {
"title": "Configuration",
"description": "",
"type": [
"object",
"null"
],
"properties": {
"guid": {
"title": "GUID",
"description": "A unique identifier for the Virtual Node. If not set, a GUID will be automatically generated from the device's IP address.",
"type": "string"
},
"hostname": {
"title": "Hostname",
"description": "The hostname that will be used for the Virtual Node. If not set, the device's hostname will be used.",
"type": "string"
},
"labels": {
"title": "Labels",
"description": "Additional key-value pairs to associate with the Virtual Node.",
"type": [
"object",
"null"
],
"additionalProperties": {
"type": "string"
}
}
}
},
"network_interface_filter": {
"title": "Network interface filter",
"description": "Configuration for filtering specific network interfaces. If left empty, no interfaces will be filtered. You can filter interfaces by name or type using [simple patterns](/src/libnetdata/simple_pattern/README.md#simple-patterns).",
"type": [
"object",
"null"
],
"properties": {
"by_name": {
"title": "By Name",
"description": "Specify the interface name or a pattern to match against the [ifName](https://cric.grenoble.cnrs.fr/Administrateurs/Outils/MIBS/?oid=1.3.6.1.2.1.31.1.1.1.1) label.",
"type": "string"
},
"by_type": {
"title": "By Type",
"description": "Specify the interface type or a pattern to match against the [ifType](https://cric.grenoble.cnrs.fr/Administrateurs/Outils/MIBS/?oid=1.3.6.1.2.1.2.2.1.3) label.",
"type": "string"
}
}
},
"options": {
"title": "Options",
"description": "Configuration options for SNMP monitoring.",
"type": [
"object",
"null"
],
"properties": {
"version": {
"title": "SNMP version",
"type": "string",
"enum": [
"1",
"2c",
"3"
],
"default": "2c"
},
"port": {
"title": "Port",
"description": "The port number on which the SNMP service is running.",
"type": "integer",
"exclusiveMinimum": 0,
"default": 161
},
"timeout": {
"title": "Timeout",
"description": "The timeout duration in seconds for SNMP requests.",
"type": "integer",
"minimum": 1,
"default": 5
},
"retries": {
"title": "Retries",
"description": "The number of retries to attempt for SNMP requests.",
"type": "integer",
"minimum": 0,
"default": 1
},
"max_repetitions": {
"title": "Max repetitions",
"description": "Controls how many SNMP variables to retrieve in a single GETBULK request.",
"type": "integer",
"minimum": 1,
"default": 25
},
"max_request_size": {
"title": "Max OIDs",
"description": "The maximum number of OIDs allowed in a single GET request.",
"type": "integer",
"minimum": 1,
"default": 60
}
},
"required": [
"version",
"port",
"retries",
"timeout",
"max_request_size"
]
},
"user": {
"title": "SNMPv3 configuration",
"description": "Configuration options for SNMPv3 authentication and encryption.",
"type": [
"object",
"null"
],
"properties": {
"name": {
"title": "Username",
"description": "The username for SNMPv3 authentication.",
"type": "string"
},
"level": {
"title": "Security level",
"description": "Controls the security aspects of SNMPv3 communication, including authentication and encryption.",
"type": "string",
"enum": [
"none",
"authNoPriv",
"authPriv"
],
"default": "authPriv"
},
"auth_proto": {
"title": "Authentication protocol",
"type": "string",
"enum": [
"none",
"md5",
"sha",
"sha224",
"sha256",
"sha384",
"sha512"
],
"default": "sha512"
},
"auth_key": {
"title": "Authentication passphrase",
"type": "string"
},
"priv_proto": {
"title": "Privacy protocol",
"type": "string",
"enum": [
"none",
"des",
"aes",
"aes192",
"aes256",
"aes192c"
],
"default": "aes192c"
},
"priv_key": {
"title": "Privacy passphrase",
"type": "string"
}
}
},
"charts": {
"title": "Charts configuration",
"type": [
"array",
"null"
],
"uniqueItems": true,
"items": {
"title": "Chart",
"type": [
"object",
"null"
],
"properties": {
"id": {
"title": "ID",
"description": "Unique identifier for the chart.",
"type": "string"
},
"title": {
"title": "Title",
"description": "Title of the chart.",
"type": "string"
},
"units": {
"title": "Units",
"description": "Unit label for the vertical axis on charts.",
"type": "string"
},
"family": {
"title": "Family",
"description": "Subsection on the dashboard where the chart will be displayed.",
"type": "string"
},
"type": {
"title": "Type",
"type": "string",
"enum": [
"line",
"area",
"stacked"
],
"default": "line"
},
"priority": {
"title": "Priority",
"description": "Rendering priority of the chart on the dashboard. Lower priority values will cause the chart to appear before those with higher priority values.",
"type": "integer",
"minimum": 1,
"default": 90000
},
"multiply_range": {
"title": "OID index range",
"description": "Specifies the range of indexes used to create multiple charts. If set, a chart will be created for each index in the specified range. Each chart will have the index appended to the OID dimension.",
"type": [
"array",
"null"
],
"items": {
"title": "Index",
"type": "integer",
"minimum": 0
},
"uniqueItems": true,
"maxItems": 2
},
"dimensions": {
"title": "Dimensions",
"description": "Configuration for dimensions of the chart.",
"type": [
"array",
"null"
],
"uniqueItems": true,
"minItems": 1,
"items": {
"title": "Dimension configuration",
"type": [
"object",
"null"
],
"properties": {
"oid": {
"title": "OID",
"description": "SNMP OID.",
"type": "string"
},
"name": {
"title": "Dimension",
"description": "Name of the dimension.",
"type": "string"
},
"algorithm": {
"title": "Algorithm",
"description": "Algorithm of the dimension.",
"type": "string",
"enum": [
"absolute",
"incremental"
],
"default": "absolute"
},
"multiplier": {
"title": "Multiplier",
"description": "Value to multiply the collected value.",
"type": "integer",
"not": {
"const": 0
},
"default": 1
},
"divisor": {
"title": "Divisor",
"description": "Value to divide the collected value.",
"type": "integer",
"not": {
"const": 0
},
"default": 1
}
},
"required": [
"oid",
"name",
"algorithm",
"multiplier",
"divisor"
]
}
}
},
"required": [
"id",
"title",
"units",
"family",
"type",
"priority",
"dimensions"
]
}
}
},
"required": [
"hostname",
"community",
"options"
],
"additionalProperties": false,
"patternProperties": {
"^name$": {}
}
},
"uiSchema": {
"uiOptions": {
"fullPage": true
},
"network_interface_filter": {
"ui:collapsible": true
},
"community": {
"ui:widget": "password"
},
"options": {
"version": {
"ui:widget": "radio",
"ui:options": {
"inline": true
}
},
"max_repetitions": {
"ui:help": "A higher value retrieves more data in fewer round trips, potentially improving efficiency. This reduces network overhead compared to sending multiple individual requests. **Important**: Setting a value too high might cause the target device to return no data."
}
},
"user": {
"name": {
"ui:widget": "password"
},
"level": {
"ui:widget": "radio",
"ui:options": {
"inline": true
}
},
"auth_proto": {
"ui:widget": "radio",
"ui:options": {
"inline": true
}
},
"priv_proto": {
"ui:widget": "radio",
"ui:options": {
"inline": true
}
}
},
"charts": {
"items": {
"ui:collapsible": true,
"type": {
"ui:widget": "radio",
"ui:options": {
"inline": true
}
},
"multiply_range": {
"ui:listFlavour": "list"
},
"dimensions": {
"items": {
"ui:collapsible": true,
"algorithm": {
"ui:widget": "radio",
"ui:options": {
"inline": true
}
}
}
}
}
},
"ui:flavour": "tabs",
"ui:options": {
"tabs": [
{
"title": "Base",
"fields": [
"update_every",
"hostname",
"community"
]
},
{
"title": "Vnode",
"fields": [
"create_vnode",
"vnode"
]
},
{
"title": "Options",
"fields": [
"network_interface_filter",
"options"
]
},
{
"title": "SNMPv3",
"fields": [
"user"
]
},
{
"title": "Charts",
"fields": [
"charts"
]
}
]
}
}
}