Skip to content

Commit d0662bd

Browse files
committed
Expand readme
1 parent a074e4f commit d0662bd

File tree

2 files changed

+99
-10
lines changed

2 files changed

+99
-10
lines changed

README.md

Lines changed: 98 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,110 @@ pip install prometheus_client
1010

1111
This package can be found on [PyPI](https://pypi.python.org/pypi/prometheus_client).
1212

13-
## Example Usage
13+
## Instrumenting
14+
15+
Three types of metric are offered: Counter, Gauge, and Summary.
16+
See the documentation on [metric types](http://prometheus.io/docs/concepts/metric_types/)
17+
and [instrumentation best practices](http://prometheus.io/docs/practices/instrumentation/#counter-vs.-gauge-vs.-summary)
18+
on how to use them.
19+
20+
### Counter
21+
22+
Counters go up, and reset when the process restarts.
23+
1424

1525
```python
16-
from prometheus_client import *
17-
from prometheus_client import MetricsHandler
26+
from prometheus_client import Counter
27+
c = Counter('my_failures_total', 'Description of counter')
28+
c.inc() # Increment by 1
29+
c.inc(10) # Increment by given value
30+
```
31+
32+
There are utilities to count exceptions raised:
33+
34+
```python
35+
@c.countExceptions()
36+
def f():
37+
pass
38+
39+
with c.countExceptions():
40+
pass
41+
42+
with c.countExceptions(ValueError):
43+
pass
44+
```
45+
46+
### Gauge
47+
48+
Gauges can go up and down.
49+
50+
51+
```python
52+
from prometheus_client import Gauge
53+
g = Gauge('my_inprogress_requests', 'Description of gauge')
54+
g.inc() # Increment by 1
55+
g.dev(10) # Decrement by given value
56+
g.set(7) # Set to a given value
57+
```
58+
59+
There are utilities for common use cases:
60+
61+
```python
62+
g.setToCurrentTime() # Set to current unixtime
1863

19-
c = Counter('cc', 'A counter')
20-
c.inc()
64+
# Increment when entered, decrement when exited.
65+
@g.trackInprogress()
66+
def f():
67+
pass
2168

22-
g = Gauge('gg', 'A gauge')
23-
g.set(17)
69+
with g.trackInprogress():
70+
pass
71+
```
72+
73+
### Summaries
74+
75+
Summaries track the size and number of events.
76+
77+
```python
78+
from prometheus_client import Summary
79+
s = Summary('request_latency_seconds', 'Description of summary')
80+
s.observe(5) # Observe 5 (seconds)
81+
```
82+
83+
There are utilities for common use cases:
84+
85+
```python
86+
# Increment when entered, decrement when exited.
87+
@g.time()
88+
def f():
89+
pass
90+
91+
with g.time():
92+
pass
93+
```
2494

25-
s = Summary('ss', 'A summary', ['a', 'b'])
26-
s.labels('c', 'd').observe(17)
95+
### Labels
2796

97+
All metrics can have labels, allowing grouping of related time series.
98+
99+
See the best practices on [naming](http://prometheus.io/docs/practices/naming/)
100+
and [labels](http://prometheus.io/docs/practices/instrumentation/#use-labels).
101+
102+
Taking a counter as an example:
103+
104+
```python
105+
from prometheus_client import Counter
106+
c = Counter('my_requests_total', 'HTTP Failures', ['method', 'endpoint'])
107+
c.labels('get', '/').inc()
108+
c.labels('post', '/submit').inc()
109+
```
110+
111+
## Exporting
112+
113+
Metrics are exposed over HTTP, to be read by the Prometheus server. For example:
114+
115+
```python
116+
from prometheus_client import MetricsHandler
28117
from BaseHTTPServer import HTTPServer
29118
server_address = ('', 8000)
30119
httpd = HTTPServer(server_address, MetricsHandler)

prometheus_client/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from functools import wraps
99
from threading import Lock
1010

11-
__all__ = ['Counter', 'Gauge', 'Summary']
11+
__all__ = ['Counter', 'Gauge', 'Summary', 'CollectorRegistry']
1212

1313
_METRIC_NAME_RE = re.compile(r'^[a-zA-Z_:][a-zA-Z0-9_:]*$')
1414
_METRIC_LABEL_NAME_RE = re.compile(r'^[a-zA-Z_:][a-zA-Z0-9_:]*$')

0 commit comments

Comments
 (0)