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