The uWSGI Stats Server
In addition to SNMP, uWSGI also supports a Stats Server mechanism which exports the uWSGI state as a JSON object to a socket.
Simply use the stats
option followed by a valid socket address. If you want the stats served over HTTP you will need to also add the stats-http
option.
- --stats 127.0.0.1:1717
- --stats /tmp/statsock
- --stats :5050
- --stats @foobar
- # Any of the above socket types can also return stats using HTTP
- --stats 127.0.0.1:1717 --stats-http
If a client connects to the specified socket it will get a JSON object containing uWSGI internal statistics before the connection ends.
- uwsgi --socket :3031 --stats :1717 --module welcome --master --processes 8
then
- nc 127.0.0.1 1717
- # or for convenience...
- uwsgi --connect-and-read 127.0.0.1:1717
will return something like this:
- {
- "workers": [{
- "id": 1,
- "pid": 31759,
- "requests": 0,
- "exceptions": 0,
- "status": "idle",
- "rss": 0,
- "vsz": 0,
- "running_time": 0,
- "last_spawn": 1317235041,
- "respawn_count": 1,
- "tx": 0,
- "avg_rt": 0,
- "apps": [{
- "id": 0,
- "modifier1": 0,
- "mountpoint": "",
- "requests": 0,
- "exceptions": 0,
- "chdir": ""
- }]
- }, {
- "id": 2,
- "pid": 31760,
- "requests": 0,
- "exceptions": 0,
- "status": "idle",
- "rss": 0,
- "vsz": 0,
- "running_time": 0,
- "last_spawn": 1317235041,
- "respawn_count": 1,
- "tx": 0,
- "avg_rt": 0,
- "apps": [{
- "id": 0,
- "modifier1": 0,
- "mountpoint": "",
- "requests": 0,
- "exceptions": 0,
- "chdir": ""
- }]
- }, {
- "id": 3,
- "pid": 31761,
- "requests": 0,
- "exceptions": 0,
- "status": "idle",
- "rss": 0,
- "vsz": 0,
- "running_time": 0,
- "last_spawn": 1317235041,
- "respawn_count": 1,
- "tx": 0,
- "avg_rt": 0,
- "apps": [{
- "id": 0,
- "modifier1": 0,
- "mountpoint": "",
- "requests": 0,
- "exceptions": 0,
- "chdir": ""
- }]
- }, {
- "id": 4,
- "pid": 31762,
- "requests": 0,
- "exceptions": 0,
- "status": "idle",
- "rss": 0,
- "vsz": 0,
- "running_time": 0,
- "last_spawn": 1317235041,
- "respawn_count": 1,
- "tx": 0,
- "avg_rt": 0,
- "apps": [{
- "id": 0,
- "modifier1": 0,
- "mountpoint": "",
- "requests": 0,
- "exceptions": 0,
- "chdir": ""
- }]
- }, {
- "id": 5,
- "pid": 31763,
- "requests": 0,
- "exceptions": 0,
- "status": "idle",
- "rss": 0,
- "vsz": 0,
- "running_time": 0,
- "last_spawn": 1317235041,
- "respawn_count": 1,
- "tx": 0,
- "avg_rt": 0,
- "apps": [{
- "id": 0,
- "modifier1": 0,
- "mountpoint": "",
- "requests": 0,
- "exceptions": 0,
- "chdir": ""
- }]
- }, {
- "id": 6,
- "pid": 31764,
- "requests": 0,
- "exceptions": 0,
- "status": "idle",
- "rss": 0,
- "vsz": 0,
- "running_time": 0,
- "last_spawn": 1317235041,
- "respawn_count": 1,
- "tx": 0,
- "avg_rt": 0,
- "apps": [{
- "id": 0,
- "modifier1": 0,
- "mountpoint": "",
- "requests": 0,
- "exceptions": 0,
- "chdir": ""
- }]
- }, {
- "id": 7,
- "pid": 31765,
- "requests": 0,
- "exceptions": 0,
- "status": "idle",
- "rss": 0,
- "vsz": 0,
- "running_time": 0,
- "last_spawn": 1317235041,
- "respawn_count": 1,
- "tx": 0,
- "avg_rt": 0,
- "apps": [{
- "id": 0,
- "modifier1": 0,
- "mountpoint": "",
- "requests": 0,
- "exceptions": 0,
- "chdir": ""
- }]
- }, {
- "id": 8,
- "pid": 31766,
- "requests": 0,
- "exceptions": 0,
- "status": "idle",
- "rss": 0,
- "vsz": 0,
- "running_time": 0,
- "last_spawn": 1317235041,
- "respawn_count": 1,
- "tx": 0,
- "avg_rt": 0,
- "apps": [{
- "id": 0,
- "modifier1": 0,
- "mountpoint": "",
- "requests": 0,
- "exceptions": 0,
- "chdir": ""
- }]
- }]
- }
uwsgitop
uwsgitop
is a top-like command that uses the stats server. It is available on PyPI, so use easy_install
or pip
to install it (package name uwsgitop
, naturally).
The sources are available on Github. https://github.com/unbit/uwsgitop