Skip to content

frogmaster/opentsdb-snmp

multiprocess
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Coverage Status

opentsdb-snmp

Simple program to push metrics from snmp to opentsdb

installation

requirements:

  • python-netsnmp
  • pyyaml
  • python 2.7

Personally i like to install distro's python-netsnmp and virtualenv everything else... Commands should be something like this, i may be forgetting something

$ virtualenv --system-site-packages snmpenv
$ . snmpenv/bin/activate
$ pip install pyyaml
$ python setup.py install

running

$ opentsdb-snmp --config=bar/conf.yml --interval=300 --readers=50 --loglevel=info --hostlist=foo/hostlist.yml

configuration

Configuration is stored in YAML format and has four values: tsd, hosts_file, metrics_dir and metrics. metrics from main config and from yml files in metrics_dir are merged using dict.update(), no errors are thrown on duplicates, so take care.

Example configuration file:

hosts_file: "misc/sample_hostlist.yml"
tsd: #list of tsd-s
  -
    host: "localhost" #host
    port: 5431 #port
  -
    host: "localhost"
metrics_dir: "path/to/yml/files/containing/metrics" #see misc/example_metrics/complex_metric1.yml
metrics: #it's cleaner to use metrics dir, but you can put metrics here

[example_metrics_file] (misc/example_metrics/complex_metric1.yml)

hosts_file example:

- 
  hostname: "foo"
  community: "bar"
  snmp_version: 2
  metrics: 
    - "ifInHCOutUcastPkts"
- 
  hostname: "bar"
  community: "foo"
  snmp_version: 2
  #snmp_timeout: 2000000
  #snmp_retries: 0
  #snmp_max_repetitions: 49
  metrics: 
    - "ifInUcastPkts"
    - ""ifOutOctets"

resolvers

Resolver takes raw data and returns extra tags. Things passed to resolver resolve() method are: index, device object index in this context is snmp returned oid - metrics oid For example:

When metrics oid is

1.2.3.4

and walk returns

1.2.3.4.1.1
1.2.3.4.1.2
1.2.3.4.2.1
...

then indexes will be

1.1
1.2
2.1

Adding resolvers

Add the following files:

REPO/src/opentsdb/snmp/resolvers/myresolver.py
REPO/test/resolver_myresolver_tests.py

Add appropriate code...

Add entry point to resolvers in:

REPO/setup.py

Run:

> python setup.py develop
> python setup.py test

And make sure the tests pass...

Add documentation to this file in next section

Implemented resolvers

default

index x will be translated to index=x index x.y...n will be translated to index1=x index2=y indexn=n

ifname

Ifname is walked and cached in memory and index will be translated to interface=ifname

after_index

index x.1 will be tranlated to index=x direction=in index x.2 will be translated to index=x direction=out

d500_xdsl

index [x]xyy will be translated to interface [x]x/yy (first x is not mandatory)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages