{ "info": { "author": "Peter Odding", "author_email": "peter@peterodding.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: Information Technology", "Intended Audience :: System Administrators", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Internet :: WWW/HTTP :: HTTP Servers", "Topic :: Software Development", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: System :: Systems Administration", "Topic :: Terminals", "Topic :: Utilities" ], "description": "apache-manager: Monitor and control Apache web server workers from Python\n=========================================================================\n\n.. image:: https://travis-ci.org/xolox/python-apache-manager.svg?branch=master\n :target: https://travis-ci.org/xolox/python-apache-manager\n\n.. image:: https://coveralls.io/repos/xolox/python-apache-manager/badge.svg?branch=master\n :target: https://coveralls.io/r/xolox/python-apache-manager?branch=master\n\nThe `apache-manager` package helps to collect monitoring metrics_ about the\n`Apache web server`_ and kill worker processes that exceed resource thresholds.\nIt works by parsing the plain text and HTML status pages generated by Apache's\nmod_status_ module. It's currently tested on Python 2.6, 2.7, 3.4, 3.5, 3.6,\n3.7 and PyPy.\n\n.. contents::\n :local:\n\nStatus\n------\n\nOn the one hand the `apache-manager` package was developed based on quite a few\nyears of experience interfacing with (and monitoring) the `Apache web server`_\nusing the interfaces provided by Apache itself (mod_status_) as well as the\nLinux operating system interfaces (``/proc``).\n\nOn the other hand the Python package itself is quite new: it was developed\nbetween June and September of 2015.\n\nThen again, I'm religious about test coverage, so there's that :-).\n\nDespite the complete package being covered by automated tests I'm not (yet)\ncommitting to backwards compatibility because I first want to run this package\nin a production (like) environment for some time, to get a feeling for how\nrobust it is. I also need to evaluate how easy it is to integrate the current\nsolution into monitoring systems (that was a goal, but I don't always achieve\nmy goals on the first attempt :-).\n\nInstallation\n------------\n\nThe `apache-manager` package is available on PyPI_ which means installation\nshould be as simple as:\n\n.. code-block:: sh\n\n $ pip install apache-manager\n\nThere's actually a multitude of ways to install Python packages (e.g. the `per\nuser site-packages directory`_, `virtual environments`_ or just installing\nsystem wide) and I have no intention of getting into that discussion here, so\nif this intimidates you then read up on your options before returning to these\ninstructions ;-).\n\nUsage\n-----\n\nThere are two ways to use the `apache-manager` package: As the command line\nprogram ``apache-manager`` and as a Python API. For details about the Python\nAPI please refer to the API documentation available on `Read the Docs`_. The\ncommand line interface is described below.\n\nCommand line\n~~~~~~~~~~~~\n\n.. A DRY solution to avoid duplication of the `apache-manager --help' text:\n..\n.. [[[cog\n.. from humanfriendly.usage import inject_usage\n.. inject_usage('apache_manager.cli')\n.. ]]]\n\n**Usage:** `apache-manager [OPTIONS]`\n\nCommand line interface to monitor the Apache web server and kill worker\nprocesses that exceed resource thresholds. When no options are given the\nserver metrics and memory usage of workers are printed to the terminal.\n\n**Supported options:**\n\n.. csv-table::\n :header: Option, Description\n :widths: 30, 70\n\n\n \"``-w``, ``--watch``\",\"This option causes the Apache manager to redraw the collected metrics once\n every 10 seconds in a \"\"top\"\" like interface until interrupted using \"\"q\"\" (for\n quite) or Control-C.\"\n \"``-a``, ``--max-memory-active=SIZE``\",\"Kill active Apache workers that are using more memory than specified by the\n ``SIZE`` argument. ``SIZE`` is expected to be a human readable memory size like 50K\n (50 kilobytes), 42M (42 megabytes), 2G (2 gigabytes), etc.\"\n \"``-i``, ``--max-memory-idle=SIZE``\",\"Kill Apache workers that are using more memory than specified by the ``SIZE``\n argument (see ``--max-memory-active`` for acceptable values of ``SIZE``).\"\n \"``-t``, ``--max-ss``, ``--max-time=TIMESPAN``\",\"Kill Apache workers whose \"\"time since the beginning of the most recent\n request\"\" is greater than specified by the ``TIMESPAN`` argument. ``TIMESPAN`` is\n expected to be a human readable timespan like 2s (2 seconds), 3m (3\n minutes), 5h (5 hours), 2d (2 days), etc.\"\n \"``-f``, ``--data-file=PATH``\",\"Change the pathname of the file where the Apache manager stores monitoring\n metrics after every run. Defaults to \"\"/tmp/apache-manager.txt\"\".\"\n \"``-z``, ``--zabbix-discovery``\",\"Generate a JSON fragment that's compatible with the low-level discovery\n support in the Zabbix monitoring system. With the right template in place\n this enables the Zabbix server to discover the names of the WSGI process\n groups that are active on any given server. This makes it possible to\n collect and analyze the memory usage of specific WSGI process groups.\"\n \"``-n``, ``--dry-run``, ``--simulate``\",Don't actually kill any Apache workers.\n \"``-v``, ``--verbose``\",Increase verbosity (can be repeated).\n \"``-q``, ``--quiet``\",Decrease verbosity (can be repeated).\n \"``-h``, ``--help``\",Show this message and exit.\n\n.. [[[end]]]\n\nContact\n-------\n\nThe latest version of `apache-manager` is available on PyPI_ and GitHub_. The\ndocumentation is hosted on `Read the Docs`_ and includes a changelog_. For bug\nreports please create an issue on GitHub_. If you have questions, suggestions,\netc. feel free to send me an e-mail at `peter@peterodding.com`_.\n\nLicense\n-------\n\nThis software is licensed under the `MIT license`_.\n\n\u00a9 2019 Peter Odding.\n\n\n.. External references:\n.. _Apache web server: https://en.wikipedia.org/wiki/Apache_HTTP_Server\n.. _changelog: https://apache-manager.readthedocs.io/en/latest/changelog.html\n.. _documentation: https://apache-manager.readthedocs.io\n.. _GitHub: https://github.com/xolox/python-apache-manager\n.. _metrics: https://en.wikipedia.org/wiki/System_monitoring\n.. _MIT license: http://en.wikipedia.org/wiki/MIT_License\n.. _mod_status: http://httpd.apache.org/docs/current/mod/mod_status.html\n.. _per user site-packages directory: https://www.python.org/dev/peps/pep-0370/\n.. _peter@peterodding.com: peter@peterodding.com\n.. _PyPI: https://pypi.python.org/pypi/apache-manager\n.. _Read the Docs: https://apache-manager.readthedocs.io\n.. _virtual environments: http://docs.python-guide.org/en/latest/dev/virtualenvs/\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://apache-manager.readthedocs.io", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "apache-manager", "package_url": "https://pypi.org/project/apache-manager/", "platform": "", "project_url": "https://pypi.org/project/apache-manager/", "project_urls": { "Homepage": "https://apache-manager.readthedocs.io" }, "release_url": "https://pypi.org/project/apache-manager/1.2/", "requires_dist": [ "beautifulsoup4 (>=4.3.2)", "coloredlogs (>=5.2)", "humanfriendly (>=2.4)", "proc (>=0.12)", "property-manager (>=2.1)", "six (>=1.9.0)" ], "requires_python": "", "summary": "Monitor and control Apache web server workers from Python", "version": "1.2" }, "last_serial": 4998110, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "3bba7c068a4eba1abb0c0376622dbb5d", "sha256": "eb0855d5ba3e34349b6913ffa3f8689d83d5d4738627d655b8533506f97368f8" }, "downloads": -1, "filename": "apache-manager-0.1.tar.gz", "has_sig": false, "md5_digest": "3bba7c068a4eba1abb0c0376622dbb5d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22133, "upload_time": "2015-09-26T13:09:18", "url": "https://files.pythonhosted.org/packages/d1/87/abb25ad7477ff439a558ac5dd8d43ef2cc2b125c22326c68acd8fcb9437c/apache-manager-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "c74e9da38bcc9062df4488edb95cb5e3", "sha256": "a159132df0c5ba694b8055f3280d527a248f9f3248d0b4355cf495015a9e0328" }, "downloads": -1, "filename": "apache-manager-0.1.1.tar.gz", "has_sig": false, "md5_digest": "c74e9da38bcc9062df4488edb95cb5e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22149, "upload_time": "2015-09-27T16:41:23", "url": "https://files.pythonhosted.org/packages/27/81/735bdaa66f2dca430a43226761f2dee1ecad689b7752ad69b378286f7f79/apache-manager-0.1.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "d3e4be87e15208ebfa52157198fea99b", "sha256": "6b089b440b10339218ecfe7918fc048a0bae3cd1f935501c5bbd15b4314d2c4a" }, "downloads": -1, "filename": "apache-manager-0.2.tar.gz", "has_sig": false, "md5_digest": "d3e4be87e15208ebfa52157198fea99b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22257, "upload_time": "2015-10-04T16:48:45", "url": "https://files.pythonhosted.org/packages/f8/a9/4724fc72ade19b09c3c8ef313bb35c090c4172850ca65b80e356d615b026/apache-manager-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "5e9a61128e29500a3f3671fd6a7ecf02", "sha256": "4b4e5a6398ebd9478750c29854298149a7f597e434d7b76c6237bd76441853e0" }, "downloads": -1, "filename": "apache-manager-0.3.tar.gz", "has_sig": false, "md5_digest": "5e9a61128e29500a3f3671fd6a7ecf02", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22950, "upload_time": "2016-05-27T01:17:44", "url": "https://files.pythonhosted.org/packages/80/91/fc6f574334631e06703bab76b6e842d1fe47b67da80031198371f03a8459/apache-manager-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "a410922db905953a05dc205bc8d71516", "sha256": "d4b0c730a6745233e25790b3f814941841b60641f6504aa18a7d7cdde0ed0a24" }, "downloads": -1, "filename": "apache-manager-0.4.tar.gz", "has_sig": false, "md5_digest": "a410922db905953a05dc205bc8d71516", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23445, "upload_time": "2016-05-27T01:18:10", "url": "https://files.pythonhosted.org/packages/52/9a/275d74981651971f8808f10f96794bf91c72b3a1d301f26961adac6b1761/apache-manager-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "e67e2792f87afdbae6df3c32905f0293", "sha256": "535d493a9f4add39b9a1e98ddda96417160aa3b3a8025d5010165658b39d3c50" }, "downloads": -1, "filename": "apache-manager-0.5.tar.gz", "has_sig": false, "md5_digest": "e67e2792f87afdbae6df3c32905f0293", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23774, "upload_time": "2016-05-27T01:54:59", "url": "https://files.pythonhosted.org/packages/0f/8a/b4e83c0878e967af319232f755313431927aaa9e47bc8f34679b7d5180a3/apache-manager-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "dc60da3cee56582978d6521a8f335bad", "sha256": "1950f61539522021919e8da4d7b2fb836165e6f11021bf3d9281a1edc0bf78a0" }, "downloads": -1, "filename": "apache-manager-0.6.tar.gz", "has_sig": false, "md5_digest": "dc60da3cee56582978d6521a8f335bad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23791, "upload_time": "2016-05-27T02:24:28", "url": "https://files.pythonhosted.org/packages/05/68/ae5917f31e87b428e48070238073a52bcae1e43994a806136cf997b1e857/apache-manager-0.6.tar.gz" } ], "1.0": [ { "comment_text": "", "digests": { "md5": "3d511cf66601446db7af30f6cc9d69ee", "sha256": "72123967161a4d604b1c9142c591d3ffe7e06ae79cb43c4109eb35c9e9437782" }, "downloads": -1, "filename": "apache_manager-1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3d511cf66601446db7af30f6cc9d69ee", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 29400, "upload_time": "2017-02-15T00:58:59", "url": "https://files.pythonhosted.org/packages/42/2b/885cc6629586fbbd68e6bbbfc07c298f95ba984e825900f152b33cb6a780/apache_manager-1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "72bad082dc598025c5033a359d695191", "sha256": "f6f289939a2a5f76e3a9efe19edf6bb2b21f3bea0774f8404aeceefc80217759" }, "downloads": -1, "filename": "apache-manager-1.0.tar.gz", "has_sig": false, "md5_digest": "72bad082dc598025c5033a359d695191", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24716, "upload_time": "2017-02-15T00:59:01", "url": "https://files.pythonhosted.org/packages/95/a9/8344366796863a6970a19ae483a0b6649494e52745fd1bf7c3c4499ff09d/apache-manager-1.0.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "3aaff3f7a9210a2cb35dc9cb74281479", "sha256": "5e96da0be6b4cc0b110c887a631ad111449bf3d69f0caddfd55fd63449d54fd5" }, "downloads": -1, "filename": "apache_manager-1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3aaff3f7a9210a2cb35dc9cb74281479", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 29878, "upload_time": "2017-03-06T22:52:28", "url": "https://files.pythonhosted.org/packages/f0/6b/7321caafa1cc3388099df6c485e948e32f7634fbaa0330a19f040f2f98c6/apache_manager-1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b746d09fcde075aed184d117beb4b028", "sha256": "594183b788f245523a29f757f3474e98bd264d84d2c4a62cc840d2f4a3b23c03" }, "downloads": -1, "filename": "apache-manager-1.1.tar.gz", "has_sig": false, "md5_digest": "b746d09fcde075aed184d117beb4b028", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25031, "upload_time": "2017-03-06T22:52:30", "url": "https://files.pythonhosted.org/packages/c7/5d/5f4d64d35aa5adf4f83908e52128b5c222244b461f6addbb93f51dfcc521/apache-manager-1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "9af9d35032db703152e219309372737d", "sha256": "3fbbec52ed8f190eed8f0f3a35e4a1b166c30afca6c9e9c8c4ce26915374ad7a" }, "downloads": -1, "filename": "apache_manager-1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9af9d35032db703152e219309372737d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 27217, "upload_time": "2019-03-28T14:52:22", "url": "https://files.pythonhosted.org/packages/51/f6/511d7f40c43e602be1d6fdd680f1a64b225fab45d46abcd820965ff9860a/apache_manager-1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "07f591cf5a12115f10ced17490d3928c", "sha256": "dc32a620902e6dc2b11c6fe12832cc22a8244e5a2866dc391bba6181e79e6612" }, "downloads": -1, "filename": "apache-manager-1.2.tar.gz", "has_sig": false, "md5_digest": "07f591cf5a12115f10ced17490d3928c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29323, "upload_time": "2019-03-28T14:52:24", "url": "https://files.pythonhosted.org/packages/2c/42/7585b20c31c1f04330832ade725c60e4617ffdd0665a76b5a76836fee14c/apache-manager-1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9af9d35032db703152e219309372737d", "sha256": "3fbbec52ed8f190eed8f0f3a35e4a1b166c30afca6c9e9c8c4ce26915374ad7a" }, "downloads": -1, "filename": "apache_manager-1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9af9d35032db703152e219309372737d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 27217, "upload_time": "2019-03-28T14:52:22", "url": "https://files.pythonhosted.org/packages/51/f6/511d7f40c43e602be1d6fdd680f1a64b225fab45d46abcd820965ff9860a/apache_manager-1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "07f591cf5a12115f10ced17490d3928c", "sha256": "dc32a620902e6dc2b11c6fe12832cc22a8244e5a2866dc391bba6181e79e6612" }, "downloads": -1, "filename": "apache-manager-1.2.tar.gz", "has_sig": false, "md5_digest": "07f591cf5a12115f10ced17490d3928c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29323, "upload_time": "2019-03-28T14:52:24", "url": "https://files.pythonhosted.org/packages/2c/42/7585b20c31c1f04330832ade725c60e4617ffdd0665a76b5a76836fee14c/apache-manager-1.2.tar.gz" } ] }