181 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
			
		
		
	
	
			181 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
# SNMP Plugin
 | 
						|
 | 
						|
The SNMP input plugin gathers metrics from SNMP agents.
 | 
						|
 | 
						|
## Configuration:
 | 
						|
 | 
						|
See additional SNMP plugin configuration examples [here](./CONFIG-EXAMPLES.md).
 | 
						|
 | 
						|
### Example:
 | 
						|
 | 
						|
SNMP data:
 | 
						|
```
 | 
						|
.1.0.0.0.1.1.0 octet_str "foo"
 | 
						|
.1.0.0.0.1.1.1 octet_str "bar"
 | 
						|
.1.0.0.0.1.102 octet_str "bad"
 | 
						|
.1.0.0.0.1.2.0 integer 1
 | 
						|
.1.0.0.0.1.2.1 integer 2
 | 
						|
.1.0.0.0.1.3.0 octet_str "0.123"
 | 
						|
.1.0.0.0.1.3.1 octet_str "0.456"
 | 
						|
.1.0.0.0.1.3.2 octet_str "9.999"
 | 
						|
.1.0.0.1.1 octet_str "baz"
 | 
						|
.1.0.0.1.2 uinteger 54321
 | 
						|
.1.0.0.1.3 uinteger 234
 | 
						|
```
 | 
						|
 | 
						|
Telegraf config:
 | 
						|
```toml
 | 
						|
[[inputs.snmp]]
 | 
						|
  agents = [ "127.0.0.1:161" ]
 | 
						|
  version = 2
 | 
						|
  community = "public"
 | 
						|
 | 
						|
  name = "system"
 | 
						|
  [[inputs.snmp.field]]
 | 
						|
    name = "hostname"
 | 
						|
    oid = ".1.0.0.1.1"
 | 
						|
    is_tag = true
 | 
						|
  [[inputs.snmp.field]]
 | 
						|
    name = "uptime"
 | 
						|
    oid = ".1.0.0.1.2"
 | 
						|
  [[inputs.snmp.field]]
 | 
						|
    name = "loadavg"
 | 
						|
    oid = ".1.0.0.1.3"
 | 
						|
    conversion = "float(2)"
 | 
						|
 | 
						|
  [[inputs.snmp.table]]
 | 
						|
    name = "remote_servers"
 | 
						|
    inherit_tags = [ "hostname" ]
 | 
						|
    [[inputs.snmp.table.field]]
 | 
						|
      name = "server"
 | 
						|
      oid = ".1.0.0.0.1.1"
 | 
						|
      is_tag = true
 | 
						|
    [[inputs.snmp.table.field]]
 | 
						|
      name = "connections"
 | 
						|
      oid = ".1.0.0.0.1.2"
 | 
						|
    [[inputs.snmp.table.field]]
 | 
						|
      name = "latency"
 | 
						|
      oid = ".1.0.0.0.1.3"
 | 
						|
      conversion = "float"
 | 
						|
```
 | 
						|
 | 
						|
Resulting output:
 | 
						|
```
 | 
						|
* Plugin: snmp, Collection 1
 | 
						|
> system,agent_host=127.0.0.1,host=mylocalhost,hostname=baz loadavg=2.34,uptime=54321i 1468953135000000000
 | 
						|
> remote_servers,agent_host=127.0.0.1,host=mylocalhost,hostname=baz,server=foo connections=1i,latency=0.123 1468953135000000000
 | 
						|
> remote_servers,agent_host=127.0.0.1,host=mylocalhost,hostname=baz,server=bar connections=2i,latency=0.456 1468953135000000000
 | 
						|
```
 | 
						|
 | 
						|
#### Configuration via MIB:
 | 
						|
 | 
						|
This example uses the SNMP data above, but is configured via the MIB.
 | 
						|
The example MIB file can be found in the `testdata` directory. See the [MIB lookups](#mib-lookups) section for more information.
 | 
						|
 | 
						|
Telegraf config:
 | 
						|
```toml
 | 
						|
[[inputs.snmp]]
 | 
						|
  agents = [ "127.0.0.1:161" ]
 | 
						|
  version = 2
 | 
						|
  community = "public"
 | 
						|
 | 
						|
  [[inputs.snmp.field]]
 | 
						|
    oid = "TEST::hostname"
 | 
						|
    is_tag = true
 | 
						|
 | 
						|
  [[inputs.snmp.table]]
 | 
						|
    oid = "TEST::testTable"
 | 
						|
    inherit_tags = [ "hostname" ]
 | 
						|
```
 | 
						|
 | 
						|
Resulting output:
 | 
						|
```
 | 
						|
* Plugin: snmp, Collection 1
 | 
						|
> testTable,agent_host=127.0.0.1,host=mylocalhost,hostname=baz,server=foo connections=1i,latency="0.123" 1468953135000000000
 | 
						|
> testTable,agent_host=127.0.0.1,host=mylocalhost,hostname=baz,server=bar connections=2i,latency="0.456" 1468953135000000000
 | 
						|
```
 | 
						|
 | 
						|
### Config parameters
 | 
						|
 | 
						|
* `agents`: Default: `[]`
 | 
						|
List of SNMP agents to connect to in the form of `IP[:PORT]`. If `:PORT` is unspecified, it defaults to `161`.
 | 
						|
 | 
						|
* `version`: Default: `2`
 | 
						|
SNMP protocol version to use.
 | 
						|
 | 
						|
* `community`: Default: `"public"`
 | 
						|
SNMP community to use.
 | 
						|
 | 
						|
* `max_repetitions`: Default: `50`
 | 
						|
Maximum number of iterations for repeating variables.
 | 
						|
 | 
						|
* `sec_name`:
 | 
						|
Security name for authenticated SNMPv3 requests.
 | 
						|
 | 
						|
* `auth_protocol`: Values: `"MD5"`,`"SHA"`,`""`. Default: `""`
 | 
						|
Authentication protocol for authenticated SNMPv3 requests.
 | 
						|
 | 
						|
* `auth_password`:
 | 
						|
Authentication password for authenticated SNMPv3 requests.
 | 
						|
 | 
						|
* `sec_level`: Values: `"noAuthNoPriv"`,`"authNoPriv"`,`"authPriv"`. Default: `"noAuthNoPriv"`
 | 
						|
Security level used for SNMPv3 messages.
 | 
						|
 | 
						|
* `context_name`:
 | 
						|
Context name used for SNMPv3 requests.
 | 
						|
 | 
						|
* `priv_protocol`: Values: `"DES"`,`"AES"`,`""`. Default: `""`
 | 
						|
Privacy protocol used for encrypted SNMPv3 messages.
 | 
						|
 | 
						|
* `priv_password`:
 | 
						|
Privacy password used for encrypted SNMPv3 messages.
 | 
						|
 | 
						|
 | 
						|
* `name`:
 | 
						|
Output measurement name.
 | 
						|
 | 
						|
#### Field parameters:
 | 
						|
* `oid`:
 | 
						|
OID to get. May be a numeric or textual OID.
 | 
						|
 | 
						|
* `oid_index_suffix`:
 | 
						|
The OID sub-identifier to strip off so that the index can be matched against other fields in the table.
 | 
						|
 | 
						|
* `oid_index_length`:
 | 
						|
Specifies the length of the index after the supplied table OID (in OID path segments). Truncates the index after this point to remove non-fixed value or length index suffixes.
 | 
						|
 | 
						|
* `name`:
 | 
						|
Output field/tag name.
 | 
						|
If not specified, it defaults to the value of `oid`. If `oid` is numeric, an attempt to translate the numeric OID into a texual OID will be made.
 | 
						|
 | 
						|
* `is_tag`:
 | 
						|
Output this field as a tag.
 | 
						|
 | 
						|
* `conversion`: Values: `"float(X)"`,`"float"`,`"int"`,`""`. Default: `""`
 | 
						|
Converts the value according to the given specification.
 | 
						|
 | 
						|
    - `float(X)`: Converts the input value into a float and divides by the Xth power of 10. Efficively just moves the decimal left X places. For example a value of `123` with `float(2)` will result in `1.23`.
 | 
						|
    - `float`: Converts the value into a float with no adjustment. Same as `float(0)`.
 | 
						|
    - `int`: Convertes the value into an integer.
 | 
						|
    - `hwaddr`: Converts the value to a MAC address.
 | 
						|
    - `ipaddr`: Converts the value to an IP address.
 | 
						|
 | 
						|
#### Table parameters:
 | 
						|
* `oid`:
 | 
						|
Automatically populates the table's fields using data from the MIB.
 | 
						|
 | 
						|
* `name`:
 | 
						|
Output measurement name.
 | 
						|
If not specified, it defaults to the value of `oid`.  If `oid` is numeric, an attempt to translate the numeric OID into a texual OID will be made.
 | 
						|
 | 
						|
* `inherit_tags`:
 | 
						|
Which tags to inherit from the top-level config and to use in the output of this table's measurement.
 | 
						|
 | 
						|
* `index_as_tag`:
 | 
						|
Adds each row's index within the table as a tag.  
 | 
						|
 | 
						|
### MIB lookups
 | 
						|
If the plugin is configured such that it needs to perform lookups from the MIB, it will use the net-snmp utilities `snmptranslate` and `snmptable`.
 | 
						|
 | 
						|
When performing the lookups, the plugin will load all available MIBs. If your MIB files are in a custom path, you may add the path using the `MIBDIRS` environment variable. See [`man 1 snmpcmd`](http://net-snmp.sourceforge.net/docs/man/snmpcmd.html#lbAK) for more information on the variable.
 |