Skip to main content
potsdb
======

Python client to OpenTSDB

This was designed with a long running parent program in mind, where sending metrics was something that happens on the side.
Implemented such that sending the metric "put" message to the Time Series Database API does not block the calling application. This is achieved by creating a background worker thread which takes metrics off the Queue, then sending them on a TCP socket to HOST. The client.log method simply sets up and puts the metric on the Queue, then returns.

When the client object is instantiated, a temporary socket is created to the target HOST, PORT combination to check for connectivity. This may fail with a timeout error. However if the background thread encounters socket communication problems like timeout further down the line (in the sending metrics loop) then it will silently keep trying to reconnect forever.

Keep in mind that if you send a bunch of metrics through .log then immediately quit, the background thread will also terminate, without having had enough time to send your metrics properly.

Rate limiting for sending metrics over TCP is by default set to 100 Metrics Per Second. This can be overwritten upon instantiation.

Installation
===
Clone this repo, then
```
cd potsdb
python setup.py install
```
or
```
pip install potsdb
```

Usage
===
```
import potsdb

# minimum is hostname. port is defaulted to 4242:
metrics = potsdb.Client('hostname.local')
# all options:
metrics = potsdb.Client('hostname.local', port=4242, qsize=1000, host_tag=True, mps=100, check_host=True)

# qsize: Max Size of Queue. Note: if Queue reaches qsize, old metrics will be dropped. 0 = unlimited. Default is 100k
# host_tag: True for automatic, string value for override, None for nothing
# mps: Metrics Per Second rate limiting. Default is 0 (unlimited)
# check_host: change to false to skip startup connectivity checking

# Bare minimum is metric name, metric value
metrics.send('test.metric2', 100)
# tags can also be specified
metrics.send('test.metric5', 100, extratag1='tagvalue', extratag2='tagvalue')
# host tag is set automatically, but can be overwritten
metrics.send('test.metric6', 34, host='app1.local')

# waits for all outstanding metrics to be sent and background thread closes
metrics.wait()

```

Contributers
===

Potsdb was created by OrionVM as an internal project which was subsequently open sourced. Current contributors:

1. Alex Sharp (alex.sharp@orionvm.com) who originally developed the project
2. Chris McClymont (chris.mcclymont@orionvm.com), current developer and maintainer
3. Sam Marks (http://linkedin.com/in/samuelmarks)
4. You! Pull requests and comments welcome.

Metadata

Release files for potsdb 1.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for potsdb 1.0.3
File Size Uploaded
potsdb-1.0.3.tar.gz 12.7 kB Details

Release files / potsdb-1.0.3.tar.gz

Download URL potsdb-1.0.3.tar.gz
Size 12.7 kB
Tags Source
SHA-256 checksum
How to use checksums
ef8317e45758552c6fe15a5246f93afee6f40c1c7e08dc0469e70adf463ed447
BLAKE2b-256 checksum
How to use checksums
14ddc7c618f87cb6005adf86eafa08e33f2e807dbd2128d992e53d5ee1a87cbc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

1.0.3 This release

1 release file

1.0.2

1 release file

1.0.1

1 release file

1.0.0

1 release file

0.0.8

1 release file

0.0.7

1 release file

0.0.6

1 release file

0.0.1

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page