{ "info": { "author": "Uber Technologies, Inc.", "author_email": "dev@uber.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Web Environment", "Intended Audience :: System Administrators", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: System :: Monitoring", "Topic :: System :: Systems Administration" ], "description": "[![Build Status](https://travis-ci.org/uber/mutornadomon.png)](https://travis-ci.org/uber/mutornadomon)\n[![Coverage Status](https://coveralls.io/repos/uber/mutornadomon/badge.svg?branch=master&service=github)](https://coveralls.io/github/uber/mutornadomon?branch=master)\n\n# mutornadomon\n\n**\u00b5tornadomon** is a library designed to be used with Tornado web applications. It adds an endpoint\n(`/mutornadomon`) to HTTP servers which outputs application statistics for use with standard metric\ncollectors.\n\n# Usage\n\nThe monitor is initialized using `mutornadomon.config.initialize_mutornadomon`.\n\n## Exposing an HTTP endpoint\n\nIf you only pass a tornado web application, it will include request/response statistics,\nand expose an HTTP endpoint for polling by external processes:\n\n```\nfrom mutornadomon.config import initialize_mutornadomon\nimport signal\n\n[...]\n\napplication = tornado.web.Application(...)\nmonitor = initialize_mutornadomon(application)\n\ndef shut_down(*args):\n monitor.stop()\n some_other_application_stop_function()\n tornado.ioloop.IOLoop.current().stop()\n\nfor sig in (signal.SIGQUIT, signal.SIGINT, signal.SIGTERM):\n signal.signal(sig, shut_down)\n```\n\nThis will add a `/mutornadomon` endpoint to the web application.\n\nHere is an example request to that endpoint:\n\n```\n$ curl http://localhost:8080/mutornadomon\n{\"process\": {\"uptime\": 38.98995113372803, \"num_fds\": 8, \"meminfo\": {\"rss_bytes\": 14020608, \"vsz_bytes\": 2530562048}, \"cpu\": {\"num_threads\": 1, \"system_time\": 0.049356776, \"user_time\": 0.182635456}}, \"max_gauges\": {\"ioloop_pending_callbacks\": 0, \"ioloop_handlers\": 2, \"ioloop_excess_callback_latency\": 0.0006290912628173773}, \"min_gauges\": {\"ioloop_pending_callbacks\": 0, \"ioloop_handlers\": 2, \"ioloop_excess_callback_latency\": -0.004179096221923834}, \"gauges\": {\"ioloop_pending_callbacks\": 0, \"ioloop_handlers\": 2, \"ioloop_excess_callback_latency\": 0.0006290912628173773}, \"counters\": {\"callbacks\": 388, \"requests\": 6, \"localhost_requests\": 6, \"private_requests\": 6}}\n```\n\nIf you want to add your own metrics, you can do so by calling the `.kv()` or\n`.count()` methods on the monitor object at any time.\n\nThe HTTP endpoint is restricted to only respond to request from loopback.\n\n## Providing a publishing callback\n\nAlternatively, instead of polling the HTTP interface, you can pass in a `publisher` callback:\n\n```\nimport pprint\n\ndef publisher(metrics):\n pprint.pprint(metrics)\n\nmonitor = initialize_mutornadomon(application, publisher=publisher)\n```\n\nBy default, this will call the publisher callback every 10 seconds.\nTo override this pass the `publish_interval` parameter (in miliseconds).\n\n## Monitoring non-web applications\n\nIf you don't pass an application object, other stats can still be collected:\n\n```\nimport pprint\n\ndef publisher(metrics):\n pprint.pprint(metrics)\n\nmonitor = initialize_mutornadomon(publisher=publisher)\n```\n\nThis only works with the publisher callback interface.", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/uber/mutornadomon", "keywords": "monitoring,tornado", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "mutornadomon", "package_url": "https://pypi.org/project/mutornadomon/", "platform": "", "project_url": "https://pypi.org/project/mutornadomon/", "project_urls": { "Homepage": "https://github.com/uber/mutornadomon" }, "release_url": "https://pypi.org/project/mutornadomon/0.5.1/", "requires_dist": null, "requires_python": "", "summary": "Library of standard monitoring hooks for the Tornado framework", "version": "0.5.1", "yanked": false, "yanked_reason": null }, "last_serial": 6015414, "releases": { "0.1.5": [ { "comment_text": "", "digests": { "md5": "80ad20cb1dcac710d30753092f197ef9", "sha256": "1f362f91415dd7fa05b1ba921e6c3c48e23e69687d65adfa729c1f7eef3cedf7" }, "downloads": -1, "filename": "mutornadomon-0.1.5.tar.gz", "has_sig": false, "md5_digest": "80ad20cb1dcac710d30753092f197ef9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5415, "upload_time": "2014-06-02T23:36:16", "upload_time_iso_8601": "2014-06-02T23:36:16.791272Z", "url": "https://files.pythonhosted.org/packages/0c/cb/bdd994cee76eb6c04667d41d373f30fdd97e6730c96958e89d800080567b/mutornadomon-0.1.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "ac3ef4c1e7f9e486905cf8f694a186d9", "sha256": "30adde83bc41ef77fb1258fc5ce1cb8ad0700dd4648c375011bfd6a6d533f63b" }, "downloads": -1, "filename": "mutornadomon-0.1.6.tar.gz", "has_sig": false, "md5_digest": "ac3ef4c1e7f9e486905cf8f694a186d9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5432, "upload_time": "2014-06-02T23:48:54", "upload_time_iso_8601": "2014-06-02T23:48:54.263158Z", "url": "https://files.pythonhosted.org/packages/1c/a5/8daeed5813c9a114cf0a5ac89daf12769e6ac92e48f78e4481156a2a1caf/mutornadomon-0.1.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "5e4c430ad0e07df3f7df7474f7e456d3", "sha256": "f1c4d9f5abba210e990ae92c963853bba38722566f63d633864df12b63b0b29e" }, "downloads": -1, "filename": "mutornadomon-0.1.7.tar.gz", "has_sig": false, "md5_digest": "5e4c430ad0e07df3f7df7474f7e456d3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5407, "upload_time": "2014-06-27T00:17:49", "upload_time_iso_8601": "2014-06-27T00:17:49.272959Z", "url": "https://files.pythonhosted.org/packages/ad/ac/9a26ef50f777ca7a5e30f0303a5f0f4c52ef241f33faccec12715590510f/mutornadomon-0.1.7.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "bfa14cdf2c7d9d57f119b3b6d970cc32", "sha256": "21d54ba0331f057beff5015819ddd070fb9409230bf4fbb44c242df1ec025239" }, "downloads": -1, "filename": "mutornadomon-0.1.8.tar.gz", "has_sig": false, "md5_digest": "bfa14cdf2c7d9d57f119b3b6d970cc32", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5700, "upload_time": "2015-01-14T20:20:50", "upload_time_iso_8601": "2015-01-14T20:20:50.834693Z", "url": "https://files.pythonhosted.org/packages/80/fe/6209e540a3b0b596dd55a0a561c8a04a0ca69dbf50fcd5682ac13c33583b/mutornadomon-0.1.8.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "32c7793dc4a9f85406ec666ce56f4929", "sha256": "12ac41d9d51b2d4679f8ac65e520f5cb51a73b1e914e7a4278fb5516eb8011be" }, "downloads": -1, "filename": "mutornadomon-0.1.9.tar.gz", "has_sig": false, "md5_digest": "32c7793dc4a9f85406ec666ce56f4929", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5748, "upload_time": "2015-01-22T03:39:35", "upload_time_iso_8601": "2015-01-22T03:39:35.659241Z", "url": "https://files.pythonhosted.org/packages/0a/f4/f7ef2857fd94b004f11880c6ce7a3ae870a9d7881769eb5f9e3a503c533c/mutornadomon-0.1.9.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "3adb48e8610dd72e615124950fb490f7", "sha256": "60aae31fe320da8d8c3fec848526c7ced45d3df786721f3667178b947fdd6f99" }, "downloads": -1, "filename": "mutornadomon-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3adb48e8610dd72e615124950fb490f7", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 10748, "upload_time": "2015-09-18T14:46:18", "upload_time_iso_8601": "2015-09-18T14:46:18.883383Z", "url": "https://files.pythonhosted.org/packages/22/6b/256d1bb176d61fd29efd05ebe605335bf8850ca014e93a363ad452eaa7c8/mutornadomon-0.2.0-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "d766bc6acb897abd8c957ecbb0205694", "sha256": "253aa2219049f3316ffc89288032fdea360dec6ce677c8ef7a2132312cdffe8b" }, "downloads": -1, "filename": "mutornadomon-0.2.0.tar.gz", "has_sig": false, "md5_digest": "d766bc6acb897abd8c957ecbb0205694", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7357, "upload_time": "2015-09-18T14:46:15", "upload_time_iso_8601": "2015-09-18T14:46:15.082101Z", "url": "https://files.pythonhosted.org/packages/f5/c4/e159283eb4a539ab577a858ffd3c4d2fca4f2b1f9590bf12d4577f7869e4/mutornadomon-0.2.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "97c5b7ea983db44abafb8c59f0934b44", "sha256": "9c81c73db32c32654e1d38132e9463ca35d9a9c594056e5f0cec6e0f94a46858" }, "downloads": -1, "filename": "mutornadomon-0.3.3-py2-none-any.whl", "has_sig": false, "md5_digest": "97c5b7ea983db44abafb8c59f0934b44", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 11606, "upload_time": "2015-10-29T12:05:18", "upload_time_iso_8601": "2015-10-29T12:05:18.541418Z", "url": "https://files.pythonhosted.org/packages/47/34/cd73d2d8175eb5a569a67637ff30151776cce3ee0750f90498a54435dcea/mutornadomon-0.3.3-py2-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "fd44e4517fab9fdd57fa50ad7dbbc7ed", "sha256": "f217ad1345de58f184fc16ab168ffe25eaf544edc4a5dd0bee683fca08277c6c" }, "downloads": -1, "filename": "mutornadomon-0.3.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fd44e4517fab9fdd57fa50ad7dbbc7ed", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11610, "upload_time": "2015-10-29T12:06:55", "upload_time_iso_8601": "2015-10-29T12:06:55.793388Z", "url": "https://files.pythonhosted.org/packages/23/ed/27dcacfdc986756287796fd26862e19fe46c62668a41fed13c0645265d7c/mutornadomon-0.3.3-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "1f0070154df561d51c4aed08d2a054c6", "sha256": "4cb5a2c707f8159150f9ff0ffb6b6186f150972ad07ef01ee5a1d2fa15da573c" }, "downloads": -1, "filename": "mutornadomon-0.4.2-py2-none-any.whl", "has_sig": false, "md5_digest": "1f0070154df561d51c4aed08d2a054c6", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 12406, "upload_time": "2016-07-28T20:25:13", "upload_time_iso_8601": "2016-07-28T20:25:13.301306Z", "url": "https://files.pythonhosted.org/packages/87/60/bf2c29d3540b403644f616bc20b72ed3cb25cfcfcb143efcd61ce85231f0/mutornadomon-0.4.2-py2-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "29d6df2e4df0b9e9aa43a934083e211e", "sha256": "1ab68045210179b5b556e0fb2a2816079024480b56650d6fdc1671a396a16e23" }, "downloads": -1, "filename": "mutornadomon-0.4.2.tar.gz", "has_sig": false, "md5_digest": "29d6df2e4df0b9e9aa43a934083e211e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8497, "upload_time": "2016-07-29T02:21:10", "upload_time_iso_8601": "2016-07-29T02:21:10.617065Z", "url": "https://files.pythonhosted.org/packages/1d/7e/f8e97f7b210984f6a0d6ed1ecd7199fc216aaef5201ffceef27de7ad7a12/mutornadomon-0.4.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "9ee80681752287629c2c18a638c94e54", "sha256": "e98c8e790a0da2b240e84723ac94e51e121dc325b560cd34f30411b0da152bd2" }, "downloads": -1, "filename": "mutornadomon-0.4.3-py2-none-any.whl", "has_sig": false, "md5_digest": "9ee80681752287629c2c18a638c94e54", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 12571, "upload_time": "2016-08-02T22:05:58", "upload_time_iso_8601": "2016-08-02T22:05:58.183129Z", "url": "https://files.pythonhosted.org/packages/64/46/5fe395e6439ce6eb5cb224d939869eac1dc933005a3651b507ac85454cc9/mutornadomon-0.4.3-py2-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "5234437db2f26384be783f484a825fcc", "sha256": "2d8b62e1b8155e4c32181f32abdbdb11097c863f3b55c992d6ef17fa632574fd" }, "downloads": -1, "filename": "mutornadomon-0.4.3.tar.gz", "has_sig": false, "md5_digest": "5234437db2f26384be783f484a825fcc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8652, "upload_time": "2016-08-02T22:06:00", "upload_time_iso_8601": "2016-08-02T22:06:00.507862Z", "url": "https://files.pythonhosted.org/packages/2e/3c/79cd94a11ec44032b7302ea4f43e6a4b2d2bb281f5b4b405fb8e5892284e/mutornadomon-0.4.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.4": [ { "comment_text": "", "digests": { "md5": "16f178a80fbfd33dbd57936e33c3fd62", "sha256": "f0a8d9a3f1452c32e2d085f6513a2b1c5ddaf41be662a9f15f3e7bf0603a601f" }, "downloads": -1, "filename": "mutornadomon-0.4.4-py2-none-any.whl", "has_sig": false, "md5_digest": "16f178a80fbfd33dbd57936e33c3fd62", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 13216, "upload_time": "2016-09-08T00:27:58", "upload_time_iso_8601": "2016-09-08T00:27:58.973422Z", "url": "https://files.pythonhosted.org/packages/ba/8f/73716e700a3a2680956d05233aa01e556d1f86272dd081ef79ef4ccf68cd/mutornadomon-0.4.4-py2-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "ba0815c19fa13a86f036598bf8e4e679", "sha256": "b202a38c178fad7181fc3b744c55ebbfd638174481a7cf357a406ab64423837e" }, "downloads": -1, "filename": "mutornadomon-0.4.4.tar.gz", "has_sig": false, "md5_digest": "ba0815c19fa13a86f036598bf8e4e679", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9336, "upload_time": "2016-09-08T00:28:01", "upload_time_iso_8601": "2016-09-08T00:28:01.207185Z", "url": "https://files.pythonhosted.org/packages/e1/18/055921d97a834866dbddf581ae6f702c972dcdca95fed2e5cf74e6f1199f/mutornadomon-0.4.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "0237b198ed9996bb5338a1b7ce72bd47", "sha256": "442b24178924a510525e25bc17d2222e849ee4fbe6edc592b631173103e7fa19" }, "downloads": -1, "filename": "mutornadomon-0.5.1.tar.gz", "has_sig": false, "md5_digest": "0237b198ed9996bb5338a1b7ce72bd47", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9241, "upload_time": "2019-10-22T21:47:09", "upload_time_iso_8601": "2019-10-22T21:47:09.204624Z", "url": "https://files.pythonhosted.org/packages/c8/f3/7e2f6ffe00344faa9744f9e7aefc19a8f3633e39a3baecb70b60e1ca3983/mutornadomon-0.5.1.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0237b198ed9996bb5338a1b7ce72bd47", "sha256": "442b24178924a510525e25bc17d2222e849ee4fbe6edc592b631173103e7fa19" }, "downloads": -1, "filename": "mutornadomon-0.5.1.tar.gz", "has_sig": false, "md5_digest": "0237b198ed9996bb5338a1b7ce72bd47", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9241, "upload_time": "2019-10-22T21:47:09", "upload_time_iso_8601": "2019-10-22T21:47:09.204624Z", "url": "https://files.pythonhosted.org/packages/c8/f3/7e2f6ffe00344faa9744f9e7aefc19a8f3633e39a3baecb70b60e1ca3983/mutornadomon-0.5.1.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }