- Repository
- Munin (contrib)
- Last change
- 2020-11-28
- Graph Categories
- Family
- auto contrib
- Capabilities
- Keywords
- Language
- Python (3.x)
- Authors
transmission
Name
transmission - Munin plugin to monitor Transmission bittorrent daemon
Description
This plugin implements the multigraph protocol and provides the following graphs transmission_throughput - monitor traffic volumes of Transmission torrents transmission_activity - plugin to monitor traffic speed of Transmission torrents
This plugin requires python and the transmissionrpc python module. See http://pypi.python.org/pypi/transmissionrpc/
Configuration
[transmission]
env.host 10.0.0.1
env.port 9093
env.user transmission
env.pass secret
[transmission_*]
env.host 10.0.0.1
env.port 9093
env.user transmission
env.pass secret
Author
Thomas Léveil
License
Permission to use, copy, and modify this software with or without fee is hereby granted, provided that this entire notice is included in all source code copies of any software which is or includes a copy or modification of this software.
THIS SOFTWARE IS BEING PROVIDED “AS IS”, WITHOUT ANY EXPRESS OR IMPLIED WARRANTY. IN PARTICULAR, NONE OF THE AUTHORS MAKES ANY REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
Contribute
find this plugin on github at http://github.com/VolatileMesh/munin-plugins
Magic Markers
#%# family=auto contrib
#%# capabilities=autoconf
Version
1.1
Changelog
1.0 - 2010/11/12
first release
1.1 - 2011/05/29
fix transmission error handling
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
: << =cut
=head1 NAME
transmission - Munin plugin to monitor Transmission bittorrent daemon
=head1 DESCRIPTION
This plugin implements the multigraph protocol and provides the following graphs
transmission_throughput - monitor traffic volumes of Transmission torrents
transmission_activity - plugin to monitor traffic speed of Transmission torrents
This plugin requires python and the transmissionrpc python module.
See http://pypi.python.org/pypi/transmissionrpc/
=head1 CONFIGURATION
[transmission]
env.host 10.0.0.1
env.port 9093
env.user transmission
env.pass secret
[transmission_*]
env.host 10.0.0.1
env.port 9093
env.user transmission
env.pass secret
=head1 AUTHOR
Thomas Léveil
=head1 LICENSE
Permission to use, copy, and modify this software with or without fee
is hereby granted, provided that this entire notice is included in
all source code copies of any software which is or includes a copy or
modification of this software.
THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR
IMPLIED WARRANTY. IN PARTICULAR, NONE OF THE AUTHORS MAKES ANY
REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE
MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR
PURPOSE.
=head1 CONTRIBUTE
find this plugin on github at http://github.com/VolatileMesh/munin-plugins
=head1 MAGIC MARKERS
#%# family=auto contrib
#%# capabilities=autoconf
=head1 VERSION
1.1
=head1 CHANGELOG
=head2 1.0 - 2010/11/12
first release
=head2 1.1 - 2011/05/29
fix transmission error handling
=cut
"""
__version__ = '1.1'
import os
import sys
from string import Template
plugin_name = list(os.path.split(sys.argv[0]))[1]
host = os.getenv('host', 'localhost')
port = os.getenv('port', 9091)
user = os.getenv('user')
passwd = os.getenv('pass')
title_host = '' if host in ['localhost', '127.0.0.1', '::1'] else ' on ' + host
def config():
conf = Template("""multigraph ${plugin_name}_throughput
graph_title Transmission throughput${title_host}
graph_vlabel bytes/${graph_period} in (-) / out (+)
graph_args --base 1000
graph_category network
graph_info This graph shows the throughput for Transmission torrents on ${host}
down.label throughput
down.type COUNTER
down.draw AREA
down.min 0
down.graph no
up.label Bps
up.negative down
up.type COUNTER
up.draw AREA
up.min 0
multigraph ${plugin_name}_activity
graph_title Transmission activity${title_host}
graph_vlabel torrents
graph_args --base 1000
graph_category network
graph_info This graph shows the number of Transmission torrents on ${host}
active.label active
active.draw AREA
active.min 0
active.colour COLOUR0
paused.label paused
paused.draw STACK
paused.min 0
paused.colour COLOUR8
""")
print(conf.safe_substitute(plugin_name=plugin_name, host=host, title_host=title_host))
sys.exit(0)
def autoconf():
try:
import transmissionrpc
print('yes')
except ImportError:
print('no python module \'transmissionrpc\' missing')
def fetch():
import transmissionrpc
try:
client = transmissionrpc.Client(host, port=port, user=user, password=passwd)
except transmissionrpc.TransmissionError as err:
print(err)
sys.exit(1)
stats = client.session_stats(10)
print_values_throughput(stats)
print_values_activity(stats)
def print_values_activity(stats):
print("multigraph {plugin_name}_activity".format(plugin_name=plugin_name))
try:
print("active.value %s" % stats.activeTorrentCount)
except:
print("active.value U")
try:
print("paused.value %s" % stats.pausedTorrentCount)
except:
print("paused.value U")
def print_values_throughput(stats):
print("multigraph {plugin_name}_throughput".format(plugin_name=plugin_name))
try:
print("down.value %s" % stats.cumulative_stats['downloadedBytes'])
except:
print("down.value U")
try:
print("up.value %s" % stats.cumulative_stats['uploadedBytes'])
except:
print("up.value U")
def dumpstats():
import transmissionrpc
try:
client = transmissionrpc.Client(host, port=port, user=user, password=passwd)
except transmissionrpc.transmission.TransmissionError as err:
print(err)
sys.exit(1)
stats = client.session_stats(10)
print(stats)
if __name__ == '__main__':
if len(sys.argv) > 1 :
if sys.argv[1] == "dumpstats" :
dumpstats()
elif sys.argv[1] == "config" :
config()
elif sys.argv[1] == "autoconf" :
autoconf()
elif sys.argv[1] != "":
raise ValueError("unknown parameter '%s'" % sys.argv[1])
fetch()
sys.exit(0)