You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Brian Brazil f0ad4551a5 Release 0.17.0 15 hours ago
.circleci Bump golang 1.13 (#449) 5 months ago
.github ISSUE_TEMPLATE.md: (Hopefully) improve issue information 2 years ago
config Add EnumAsInfo and EnumAsStateSet type overrides. (#378) 1 year ago
generator Update example snmp.yml (#482) 3 days ago
testdata Extract numeric time series from string values (#212) 2 years ago
vendor Update vendoring (#483) 3 days ago
.dockerignore Build ARM container images (#430) 7 months ago
.gitignore Add MIB downloader to generator (#332) 1 year ago
.golangci.yml Add .golangci.yml 9 months ago
.promu.yml Bump golang 1.13 (#449) 5 months ago
.travis.yml Bump golang 1.13 (#449) 5 months ago
CONTRIBUTING.md Replace AUTHORS.md by an updated MAINTAINERS.md (#125) 3 years ago
Dockerfile Build ARM container images (#430) 7 months ago
LICENSE Add in package infrastructure. 4 years ago
MAINTAINERS.md Replace AUTHORS.md by an updated MAINTAINERS.md (#125) 3 years ago
Makefile Build ARM container images (#430) 7 months ago
Makefile.common makefile: update Makefile.common with newer version (#445) 5 months ago
NOTICE Initial Go work on parsing config and walking. 3 years ago
README.md Fix codespell issues. (#360) 1 year ago
VERSION Release 0.17.0 15 hours ago
collector.go Use contexts with SNMP. (#481) 3 days ago
collector_test.go Support BITS values. (#465) 2 months ago
config_test.go Fix codespell issues. (#360) 1 year ago
go.mod Update vendoring (#483) 3 days ago
go.sum Update vendoring (#483) 3 days ago
main.go Use contexts with SNMP. (#481) 3 days ago
snmp.yml Update example snmp.yml (#482) 3 days ago

README.md

Prometheus SNMP Exporter

This is an exporter that exposes information gathered from SNMP for use by the Prometheus monitoring system.

There are two components. An exporter that does the actual scraping, and a generator (which depends on NetSNMP) that creates the configuration for use by the exporter.

Installation

Binaries can be downloaded from the Github releases page.

Usage

./snmp_exporter

Visit http://localhost:9116/snmp?target=1.2.3.4 where 1.2.3.4 is the IP of the SNMP device to get metrics from. You can also specify a module parameter, to choose which module to use from the config file.

Configuration

The snmp exporter reads from a snmp.yml config file by default. This file is not intended to be written by hand, rather use the generator to generate it for you.

The default snmp.yml covers a variety of common hardware for which MIBs are available to the public, walking them using SNMP v2 GETBULK.

You'll need to use the generator in all but the simplest of setups. It is needed to customize which objects are walked, use non-public MIBs or specify authentication parameters.

Prometheus Configuration

The snmp exporter needs to be passed the address as a parameter, this can be done with relabelling.

Example config:

scrape_configs:
  - job_name: 'snmp'
    static_configs:
      - targets:
        - 192.168.1.2  # SNMP device.
    metrics_path: /snmp
    params:
      module: [if_mib]
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 127.0.0.1:9116  # The SNMP exporter's real hostname:port.

This setup allows Prometheus to provide scheduling and service discovery, as unlike all other exporters running an exporter on the machine from which we are getting the metrics from is not possible.

Large counter value handling

In order to provide accurate counters for large Counter64 values, the exporter will automatically wrap the value every 2^53 to avoid 64-bit float rounding.

To disable this feature, use the command line flag --no-snmp.wrap-large-counters.