Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dropbox/trapperkeeper
A suite of tools for ingesting and displaying SNMP traps.
https://github.com/dropbox/trapperkeeper
Last synced: about 1 month ago
JSON representation
A suite of tools for ingesting and displaying SNMP traps.
- Host: GitHub
- URL: https://github.com/dropbox/trapperkeeper
- Owner: dropbox
- License: other
- Created: 2014-03-18T16:38:19.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2018-02-08T21:16:54.000Z (almost 7 years ago)
- Last Synced: 2024-04-14T06:03:44.982Z (8 months ago)
- Language: Python
- Homepage:
- Size: 230 KB
- Stars: 80
- Watchers: 35
- Forks: 26
- Open Issues: 11
-
Metadata Files:
- Readme: README
- License: LICENSE
Awesome Lists containing this project
- awesome-snmp - trapperkeeper - A suite of tools for ingesting and displaying SNMP traps. This is designed as a replacement for snmptrapd and to supplement existing stateful monitoring solutions. (Tools / CLIs)
README
TrapperKeeper
=============Description
-----------TrapperKeeper is a suite of tools for ingesting and displaying SNMP
traps. This is designed as a replacement for snmptrapd and to supplement
existing stateful monitoring solutions.Normally traps are stateless in nature which makes it difficult to
monitor with a system like nagios which requires polling a source.
TrapperKeeper will store traps in an active state for a configured
amount of time before expiring. This makes it possible to poll the
service for active traps and alert off of those traps.One example might be a humidity alert. If you cross over the humidity
threshold and it clears immediately you might not want to be paged at
3am. But if it continues to send a trap every 5 minutes while it's over
that threshold the combination of (host, oid, severity) will remain in
an active state as long as that trap's expiration duration is longer
than 5 minutes. This allows something like nagios to alarm when a single
trap remains active for greater than some period of time.Another benefit is allowing aggregation of pages. Previously we'd just
had an e-mail to a pager per trap but now we're only paged based on the
alert interval regardless of how many traps we receive. This also allows
us to schedule downtime for a device during scheduled maintenance to
avoid trap storms.Requirements
------------Ubuntu
~~~~~~.. code:: bash
$ sudo apt-get install libmysqlclient-dev libsnmp-dev
Installation
------------New versions will be updated to PyPI pretty regularly so it should be as
easy as:.. code:: bash
$ pip install trapperkeeper
Once you've created a configuration file with your database information
you can run the following to create the database schema... code:: bash
$ python -m trapperkeeper.cmds.sync_db -c /path/to/trapperkeeper.yaml
Tools
-----trapperkeeper
~~~~~~~~~~~~~The trapperkeeper command receives SNMP traps and handles e-mailing and
writing to the database. An example configuration file with
documentation is available `here. `__trapdoor
~~~~~~~~trapdoor is a webserver that provides a view into the existing traps as
well as an API for viewing the state of traps. An example configuration
file with documentation is available `here. `__.. figure:: https://raw.githubusercontent.com/dropbox/trapperkeeper/master/images/trapdoor.png
:alt: ScreenshotScreenshot
API
^^^/api/activetraps
''''''''''''''''**Optional Parameters:** \* host \* oid \* severity
**Returns:**
.. code:: javascript
[
(, , )
]/api/varbinds/
''''''''''''''**Returns:**
.. code:: javascript
[
{
"notification_id": ,
"name": ,
"pretty_value": ,
"oid": ,
"value": ,
"value_type":
}
]MIB Configuration
-----------------``trapperkeeper`` and ``trapdoor`` use the default mibs via netsnmp. You
can see the default path for your system by running
``net-snmp-config --default-mibdirs``. You can use the following
environment variables usually documented in the ``snmpcmd`` man pageMIBS - The list of MIBs to load. Defaults to
SNMPv2-TC:SNMPv2-MIB:IF-MIB:IP-MIB:TCP-MIB:UDP-MIB:SNMP-VACM-MIB.MIBDIRS - The list of directories to search for MIBs. Defaults to
/usr/share/snmp/mibs.For example I run both the ``trapperkeeper`` and ``trapdoor`` commands
with the following environment to add a directory to the path and load
all mibs.``MIBS=ALL MIBDIRS=+/usr/share/mibs/local/``
TODO
----- Allow Custom E-mail templates for TrapperKeeper
- cdnjs prefix for local cdnjs mirrors
- User ACLs for resolution
- Logging resolving userKnown Issues
------------- Doesn't currently support SNMPv3
- Doesn't currently support inform
- Certain devices have been known to send negative TimeTicks. pyasn1
fails to handle this.