{ "info": { "author": "Mike Bayer", "author_email": "mike@zzzcomputing.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Database :: Front-Ends" ], "description": "=======\nconnmon\n=======\n\nA \"top\"-like tool that monitors database connections across many processes\nand servers. The initial use case is that of tracking the large numbers\nof Python processes and database connections used by Openstack, however\nthe system works with any SQLAlchemy application.\n\n\nSetup\n=====\n\nFirst, install connmon with pip.\n\nConnmon has a config file which by default is in ``/etc/connmon.cfg``.\nA simple file looks like::\n\n\t# sample config, listen on 0.0.0.0:5800 and clients\n\t# will connect to 192.168.1.205:5800\n\t[connmon_service_default]\n\tname: default\n\n\tnodes:\n\t node1 hostname=192.168.1.205:5800\n\nThis file is consulted by the connmon daemon as well as all client connections\nin order to establish in what location(s) the daemon is running.\n\nIf testing only on a single host, connmon can be used without a config file;\nif the file isn't present, a default config that looks like the following\nis used::\n\n\t# default config if no /etc/connmon.cfg and no\n\t# --config option is passed\n\t[connmon_service_default]\n\tname: default\n\n\tnodes:\n\t node1 hostname=localhost:5800 bind=0.0.0.0\n\nThen, the connmon daemon may be started::\n\n\tconnmond\n\nThis daemon listens for clients which will give it information about how many\nconnections they're using. It stores this state in memory and can then report\non it. If the daemon is stopped or becomes unavailable to clients, each client\nkeeps track of its state locally and will continue to try and reconnect\nto the daemon. When it does, it will bring the daemon up to date with its\nconnection status.\n\nTo configure a stats client, connmon provides a plugin to the SQLAlchemy\nengine. To enable usage of the plugin in an application that talks\nto the database, use a URL like this::\n\n\tmysql+pymysql_connmon://root:sa@127.0.0.1/neutron?charset=utf8&connmon_service=default\n\nThe URL format above will get a little simpler in SQLAlchemy 1.1 where we'll\nadd some more portable ways to bundle \"plugins\" with a database URL.\n\nFinally, we can view current connections using the console::\n\n\tconnmon\n\nThen start up the applications that use the database.\nEveryone with the config will establish a TCP\nconnection to the console at \"192.168.1.205:5800\".\n\nSee the screenshot.png included.\n\nConnecting without Config\n=========================\n\nThe URL can also specify a specific host/port::\n\n\tmysql+pymysql_connmon://root:sa@127.0.0.1/neutron?charset=utf8&connmon_addr=192.168.1.205:5800\n\nConfiguring an HA Cluster\n=========================\n\nMultiple nodes can be configured to each run ``connmon listen`` such that\nthey form a cluster; start up a server on each node with\n``connmond --node ``::\n\n\n\t[connmon_service_default]\n\tname: default\n\n\tnodes:\n\t node1 hostname=192.168.1.205:5800\n\t node2 hostname=192.168.1.206:5800\n\t node3 hostname=192.168.1.207:5800\n\nIn the above model, all nodes contact each other and share all events. Connecting\nto the \"default\" servicename without a node name will cause the client to connect\nto a random node in the cloud. It will try each node until it finds one\nthat connects.\n\nUsing With Devstack\n===================\n\nHere are the magic incantations to add connmon to a devstack setup. First\ninstall connmon globally. Then in local.conf (note the double slash escapes)::\n\n\t[[post-config|$NOVA_CONF]]\n\n\t[database]\n\tconnection = mysql+pymysql_connmon://root:sa@127.0.0.1/nova?charset=utf8\\\\&connmon_service=default\n\n\t[api_database]\n\tconnection = mysql+pymysql_connmon://root:sa@127.0.0.1/nova_api?charset=utf8\\\\&connmon_service=default\n\n\t[[post-config|$NEUTRON_CONF]]\n\n\t[database]\n\tconnection = mysql+pymysql_connmon://root:sa@127.0.0.1/neutron?charset=utf8\\\\&connmon_service=default\n\n\t[[post-config|$KEYSTONE_CONF]]\n\n\t[database]\n\tconnection = mysql+pymysql_connmon://root:sa@127.0.0.1/keystone?charset=utf8\\\\&connmon_service=default\n\n\n\t[[post-config|$CINDER_CONF]]\n\n\t[database]\n\tconnection = mysql+pymysql_connmon://root:sa@127.0.0.1/cinder?charset=utf8\\\\&connmon_service=default\n\n\t[[post-config|$GLANCE_API_CONF]]\n\n\t[database]\n\tconnection = mysql+pymysql_connmon://root:sa@127.0.0.1/glance?charset=utf8\\\\&connmon_service=default", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://bitbucket.org/zzzeek/connmon", "keywords": "SQLAlchemy", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "connmon", "package_url": "https://pypi.org/project/connmon/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/connmon/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://bitbucket.org/zzzeek/connmon" }, "release_url": "https://pypi.org/project/connmon/0.3.6/", "requires_dist": null, "requires_python": null, "summary": "Analyze database connection usage", "version": "0.3.6" }, "last_serial": 1893872, "releases": { "0.2": [ { "comment_text": "", "digests": { "md5": "65fbdda222a0f2f2b8b4e8951821f895", "sha256": "9f82a24bca21d0051e65695095b966817a08a926362c69abaf4108df6c9b00f4" }, "downloads": -1, "filename": "connmon-0.2.tar.gz", "has_sig": false, "md5_digest": "65fbdda222a0f2f2b8b4e8951821f895", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10734, "upload_time": "2015-10-04T17:35:15", "url": "https://files.pythonhosted.org/packages/d4/b1/89933d916b99ebe38a316b251cac6c02e93d80144fa03429c03548f20d9a/connmon-0.2.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "8a39fbe2a0c6e13308199cfa12fe805d", "sha256": "4e68b1d3e44071a72868f17ff8fe7e18823f1a5bdfbcc721bb4311ccbf069044" }, "downloads": -1, "filename": "connmon-0.2.1.tar.gz", "has_sig": false, "md5_digest": "8a39fbe2a0c6e13308199cfa12fe805d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11416, "upload_time": "2015-10-05T19:12:29", "url": "https://files.pythonhosted.org/packages/c0/2c/c0a5fa58d219d6293826a4c70aba5625b15a7b645ff9d38210818744e9ff/connmon-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "b8c8392062026f8ab72d58e6a3be071b", "sha256": "2f17da50c27ce251256f62268e977b8844f01f2559219a2d6685721beef7d0d9" }, "downloads": -1, "filename": "connmon-0.2.2.tar.gz", "has_sig": false, "md5_digest": "b8c8392062026f8ab72d58e6a3be071b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11502, "upload_time": "2015-10-12T17:33:10", "url": "https://files.pythonhosted.org/packages/c1/90/4c5e82b910d2ffc1b76d6165d3a4e2e91fe0c6ebc9525109371f7bb1f17c/connmon-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "d55e64be69e7d432333ca7e51571ebc6", "sha256": "33687289f7d3999a5e73004329527dedde12864d77b9f532ac7bb64bee4868a0" }, "downloads": -1, "filename": "connmon-0.2.3.tar.gz", "has_sig": false, "md5_digest": "d55e64be69e7d432333ca7e51571ebc6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11807, "upload_time": "2015-10-12T21:38:50", "url": "https://files.pythonhosted.org/packages/d4/71/3024ca5f7718eb94ad52b8b6df34df6cc8c036cb6b935f8bf7433eac0861/connmon-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "03150e792e8a660cc13dfa8ba0384d4f", "sha256": "e15eeb6ab8c5c79c57e71be8ff34e8dc6c949398c358d6f7a94a04e6cc0c05d8" }, "downloads": -1, "filename": "connmon-0.2.4.tar.gz", "has_sig": false, "md5_digest": "03150e792e8a660cc13dfa8ba0384d4f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11840, "upload_time": "2015-10-13T15:25:21", "url": "https://files.pythonhosted.org/packages/18/bf/c1c676b26e276b8c7720ef1a0e488287ef99b1f44cd13383d2a4b32a147e/connmon-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "eec289c3ab2f30744b3fb52a1d42b2fb", "sha256": "08f9d1370d1225b4db64fdabb72e19e8d963e3d08929264b9eb1ece1a78c9c2c" }, "downloads": -1, "filename": "connmon-0.2.5.tar.gz", "has_sig": false, "md5_digest": "eec289c3ab2f30744b3fb52a1d42b2fb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11845, "upload_time": "2015-10-13T16:36:29", "url": "https://files.pythonhosted.org/packages/c9/41/2d5ba4439d3cf846736cdba4183abba120de2de67075df95dd91fdae5c48/connmon-0.2.5.tar.gz" } ], "0.2.dev0": [ { "comment_text": "", "digests": { "md5": "f96ad8741f3fa66e8df9690914c84ae9", "sha256": "168695fdbc6bd0511ebc22e83715c0d4c678c51f3aa38586a91976866f5440a0" }, "downloads": -1, "filename": "connmon-0.2.dev0.tar.gz", "has_sig": true, "md5_digest": "f96ad8741f3fa66e8df9690914c84ae9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10781, "upload_time": "2015-10-04T17:34:22", "url": "https://files.pythonhosted.org/packages/1e/fc/bd7f08f60a4bccdd068450ed8a093e7ab7d50b311156f75fce45311a6b0d/connmon-0.2.dev0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "a9e27817501ec44e644411f7fc107293", "sha256": "e5cfe8b04fb23af896e8c8d7f41b138ec1a24c17400148dcc13ee7964611de13" }, "downloads": -1, "filename": "connmon-0.3.0.tar.gz", "has_sig": false, "md5_digest": "a9e27817501ec44e644411f7fc107293", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13622, "upload_time": "2015-10-15T14:27:00", "url": "https://files.pythonhosted.org/packages/e1/d5/f29b7da7dac306f8e28ab9af65313f0e7c7fe6167abd5cf08d73c487d685/connmon-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "9c017fb7c4200465bcd53535870ec2ff", "sha256": "26e16acd8f3ffa848419dc457da02b52103a02abab18b78c7d766293e94ae98f" }, "downloads": -1, "filename": "connmon-0.3.1.tar.gz", "has_sig": false, "md5_digest": "9c017fb7c4200465bcd53535870ec2ff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13632, "upload_time": "2015-10-15T16:43:56", "url": "https://files.pythonhosted.org/packages/e8/70/b628f1d832e18bd450320f505e29ce4a2a839ee6154687f203a7ceaa1f55/connmon-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "2d60495d7885fd378f2f88e9b4078e78", "sha256": "75d72c8f33a4ac0776e6f1b2fb0baab884ce0f759550e55107f534f114285118" }, "downloads": -1, "filename": "connmon-0.3.2.tar.gz", "has_sig": false, "md5_digest": "2d60495d7885fd378f2f88e9b4078e78", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14294, "upload_time": "2015-10-15T21:50:02", "url": "https://files.pythonhosted.org/packages/9a/2d/c9eff2613638a56d933d2bd3d8b3f4a2bde768b9506acee3629dc7c55e58/connmon-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "cc1e13835f00a86c33faf91fc86992ed", "sha256": "ec334056c7f53065fecea67a0e474e8251f141be56b403c96a399557a7542044" }, "downloads": -1, "filename": "connmon-0.3.3.tar.gz", "has_sig": false, "md5_digest": "cc1e13835f00a86c33faf91fc86992ed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14302, "upload_time": "2015-10-15T21:59:54", "url": "https://files.pythonhosted.org/packages/c0/89/14c669a6d77590123361cd355986b31a1da918d78734d480a9a5d7597343/connmon-0.3.3.tar.gz" } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "509ea587d14279c9752dc03c777c9dfb", "sha256": "4c75be969e51a7aaa7bb822b48409b876bbe35985bbb5cce3b193f5d2a9f0246" }, "downloads": -1, "filename": "connmon-0.3.4.tar.gz", "has_sig": false, "md5_digest": "509ea587d14279c9752dc03c777c9dfb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14359, "upload_time": "2015-10-19T16:24:05", "url": "https://files.pythonhosted.org/packages/17/9b/9c544e7bf990df3e41be7126217329d6dd66445310781f6dcbcafea18bfc/connmon-0.3.4.tar.gz" } ], "0.3.5": [ { "comment_text": "", "digests": { "md5": "b6aaa106a96b3d29ac5116cb418cc39a", "sha256": "7266996b72f4100cca4294bcf5b48a13a8b79db8e2a225703e0290c503965309" }, "downloads": -1, "filename": "connmon-0.3.5.tar.gz", "has_sig": false, "md5_digest": "b6aaa106a96b3d29ac5116cb418cc39a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14531, "upload_time": "2015-12-17T17:27:20", "url": "https://files.pythonhosted.org/packages/97/c3/cd6ab1cf4450ce5c219b76df483cdce0028c5a2199ce8202fd9bc93fb48a/connmon-0.3.5.tar.gz" } ], "0.3.6": [ { "comment_text": "", "digests": { "md5": "59c40d5a8dca38103ddadad93eba0dc4", "sha256": "248911e987fcacd0b361696b2a366acbb6b5ef073349d42ebb1606fa784be6cb" }, "downloads": -1, "filename": "connmon-0.3.6.tar.gz", "has_sig": false, "md5_digest": "59c40d5a8dca38103ddadad93eba0dc4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14572, "upload_time": "2016-01-07T21:33:32", "url": "https://files.pythonhosted.org/packages/34/3e/355468c845637e0480ccf744115668c01e35d80f163f4d8ef8cafd8a322a/connmon-0.3.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "59c40d5a8dca38103ddadad93eba0dc4", "sha256": "248911e987fcacd0b361696b2a366acbb6b5ef073349d42ebb1606fa784be6cb" }, "downloads": -1, "filename": "connmon-0.3.6.tar.gz", "has_sig": false, "md5_digest": "59c40d5a8dca38103ddadad93eba0dc4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14572, "upload_time": "2016-01-07T21:33:32", "url": "https://files.pythonhosted.org/packages/34/3e/355468c845637e0480ccf744115668c01e35d80f163f4d8ef8cafd8a322a/connmon-0.3.6.tar.gz" } ] }