tensor.sources

tensor.sources.network

class tensor.sources.network.HTTP(config, queueBack, tensor)[source]

Bases: tensor.objects.Source

Performs an HTTP request

Configuration arguments:

Parameters:
  • url (str.) – HTTP URL
  • method (str.) – HTTP request method to use (default GET)
  • match (str.) – A text string to match in the document when it is correct
  • useragent (str.) – User-Agent header to use
  • timeout (int.) – Timeout for connection (default 60s)

Metrics:

(service name).latency:
 Time to complete request
class tensor.sources.network.Ping(config, queueBack, tensor)[source]

Bases: tensor.objects.Source

Performs an Ping checks against a destination

This is a horrible implementation which forks to ping

Configuration arguments:

Parameters:destination (str.) – Host name or IP address to ping

Metrics:

(service name).latency:
 Ping latency
(service name).loss:
 Packet loss

You can also override the hostname argument to make it match metrics from that host.

tensor.sources.nginx

class tensor.sources.nginx.Nginx(config, queueBack, tensor)[source]

Bases: tensor.objects.Source

Reads Nginx stub_status

Configuration arguments:

Parameters:stats_url (str.) – URL to fetch stub_status from

Metrics:

(service name).active:
 Active connections at this time
(service name).accepts:
 Accepted connections
(service name).handled:
 Handled connections
(service name).requests:
 Total client requests
(service name).reading:
 Reading requests
(service name).writing:
 Writing responses
(service name).waiting:
 Waiting connections
class tensor.sources.nginx.NginxLogMetrics(*a)[source]

Bases: tensor.objects.Source

Tails Nginx log files, parses them and returns metrics for data usage and requests against other fields.

Configuration arguments:

Parameters:
  • log_format (str.) – Log format passed to parser, same as the config definition
  • file (str.) – Log file
  • max_lines (int.) – Maximum number of log lines to read per interval to prevent overwhelming Tensor when reading large logs (default 2000)
  • resolution (int.) – Aggregate bucket resolution in seconds (default 10)
  • history (bool.) – Read the entire file from scratch if we’ve never seen it (default false)

Metrics:

(service name).total_bytes:
 Bytes total for all requests
(service name).total_requests:
 Total request count
(service name).stats.(code).(requests|bytes):
 Metrics by status code
(service name).user-agent.(agent).(requests|bytes):
 Metrics by user agent
(service name).client.(ip).(requests|bytes):
 Metrics by client IP
(service name).request.(request path).(requests|bytes):
 Metrics by request path

tensor.sources.munin

class tensor.sources.munin.MuninNode(*a, **kw)[source]

Bases: tensor.objects.Source

Connects to munin-node and retrieves all metrics

Configuration arguments:

Parameters:
  • host (str.) – munin-node hostname (probably localhost)
  • port (int.) – munin-node port (probably 4949)

Metrics:

(service name).(plugin name).(keys...):
 A dot separated tree of munin plugin keys
class tensor.sources.munin.MuninProtocol[source]

Bases: twisted.protocols.basic.LineReceiver

MuninProtocol - provides a line receiver protocol for making requests to munin-node

Requests must be made sequentially

tensor.sources.riak

class tensor.sources.riak.RiakStats(config, queueBack, tensor)[source]

Bases: tensor.objects.Source

Returns GET/PUT rates for a Riak node

Configuration arguments:

Parameters:
  • url (str.) – Riak stats URL
  • useragent (str.) – User-Agent header to use

Metrics:

(service name).latency:
 Time to complete request

tensor.sources.riemann

class tensor.sources.riemann.RiemannTCP(config, queueBack, tensor)[source]

Bases: tensor.objects.Source

Provides a listening server which accepts Riemann metrics and proxies them to our queue.

Configuration arguments:

Parameters:port (int.) – Port to listen on (default 5555)
startTimer()[source]

Creates a Riemann TCP server instead of a timer

class tensor.sources.riemann.RiemannTCPServer(source)[source]

Bases: tensor.protocol.riemann.RiemannProtocol

Server implementation of the Riemann protocol

tensor.sources.rabbitmq

class tensor.sources.rabbitmq.Queues(*a, **kw)[source]

Bases: tensor.objects.Source

Returns Queue information for a particular vhost

Configuration arguments:

Parameters:vhost (str.) – Vhost name

Metrics:

(service_name).(queue).ready:
 Ready messages for queue
(service_name).(queue).unack:
 Unacknowledged messages for queue
(service_name).(queue).ready_rate:
 Ready rate of change per second
(service_name).(queue).unack_rate:
 Unacknowledge rate of change per second

tensor.sources.linux

tensor.sources.linux.basic

class tensor.sources.linux.basic.CPU(*a)[source]

Bases: tensor.objects.Source

Reports system CPU utilisation as a percentage/100

Metrics:

(service name):Percentage CPU utilisation
(service name).(type):
 Percentage CPU utilisation by type
class tensor.sources.linux.basic.DiskFree(config, queueBack, tensor)[source]

Bases: tensor.objects.Source

Returns the free space for all mounted filesystems

Metrics:

(service name).(device):
 Used space (%)
(service name).(device).bytes:
 Used space (kbytes)
(service name).(device).free:
 Free space (kbytes)
class tensor.sources.linux.basic.LoadAverage(config, queueBack, tensor)[source]

Bases: tensor.objects.Source

Reports system load average for the current host

Metrics:

(service name):Load average
class tensor.sources.linux.basic.Memory(config, queueBack, tensor)[source]

Bases: tensor.objects.Source

Reports system memory utilisation as a percentage/100

Metrics:

(service name):Percentage memory utilisation
class tensor.sources.linux.basic.Network(config, queueBack, tensor)[source]

Bases: tensor.objects.Source

Returns all network interface statistics

Metrics:

(service name).(device).tx_bytes:
 Bytes transmitted
(service name).(device).tx_packets:
 Packets transmitted
(service name).(device).tx_errors:
 Errors
(service name).(device).rx_bytes:
 Bytes received
(service name).(device).rx_packets:
 Packets received
(service name).(device).rx_errors:
 Errors

tensor.sources.linux.process

class tensor.sources.linux.process.ProcessCount(config, queueBack, tensor)[source]

Bases: tensor.objects.Source

Returns the ps count on the system

Metrics:

(service name):Number of processes
class tensor.sources.linux.process.ProcessStats(config, queueBack, tensor)[source]

Bases: tensor.objects.Source

Returns memory used by each active parent process

Metrics:

(service name).proc.(process name).cpu:
 Per process CPU usage
(service name).proc.(process name).memory:
 Per process memory use
(service name).proc.(process name).age:
 Per process age
(service name).user.(user name).cpu:
 Per user CPU usage
(service name).user.(user name).memory:
 Per user memory use

tensor.sources.media

tensor.sources.media.libav

class tensor.sources.media.libav.DarwinRTSP(config, queueBack, tensor)[source]

Bases: tensor.objects.Source

Makes avprobe requests of a Darwin RTSP sample stream (sample_100kbit.mp4)

Configuration arguments:

Parameters:destination – Host name or IP address to check

Metrics: :(service name): Time to complete request

You can also override the hostname argument to make it match metrics from that host.

tensor.sources.sflow

class tensor.sources.sflow.sFlow(config, queueBack, tensor)[source]

Bases: tensor.objects.Source

Provides an sFlow server Source

Configuration arguments:

Parameters:
  • port (int.) – UDP port to listen on
  • dnslookup (bool.) – Enable reverse DNS lookup for device IPs (default: True)

Metrics:

Metrics are published using the key patterns (device).(service name).(interface).(in|out)Octets (device).(service name).(interface).ip (device).(service name).(interface).port

startTimer()[source]

Creates a sFlow datagram server

class tensor.sources.sflow.sFlowReceiver(source)[source]

Bases: tensor.protocol.sflow.server.DatagramReceiver

sFlow datagram protocol

tensor.sources.snmp

class tensor.sources.snmp.SNMP(*a, **kw)[source]

Bases: tensor.objects.Source

Connects to an SNMP agent and retrieves OIDs

Configuration arguments:

Parameters:
  • ip (str.) – SNMP agent host (default: 127.0.0.1)
  • port (int.) – SNMP port (default: 161)
  • community (str.) – SNMP read community
class tensor.sources.snmp.SNMPCisco837(*a, **kw)[source]

Bases: tensor.sources.snmp.SNMP

Connects to a Cisco 837 and makes metrics

Configuration arguments:

Parameters:
  • ip (str.) – SNMP agent host (default: 127.0.0.1)
  • port (int.) – SNMP port (default: 161)
  • community (str.) – SNMP read community
class tensor.sources.snmp.SNMPConnection(host, port, community)[source]

Bases: object

A wrapper class for PySNMP functions

Parameters:
  • host (str.) – SNMP agent host
  • port (int.) – SNMP port
  • community (str.) – SNMP read community

(This is not a source and you shouldn’t try to use it as one)