{ "info": { "author": "Georgi Valkov", "author_email": "georgi.t.valkov@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.3" ], "description": "harstats-graphite\n=================\n\nThis is a python module/script for parsing and summarizing `HTTP Archive (HAR)`_\nfiles. Its output can be fed directly to `carbon`_'s line and pickle receivers.\n\n\nExample Graphs\n--------------\n\n.. image:: https://github.com/gvalkov/screenshots/raw/master/thumb/harstats-graphite-01.png\n :target: https://github.com/gvalkov/screenshots/raw/master/full/harstats-graphite-01.png\n\n.. image:: https://github.com/gvalkov/screenshots/raw/master/thumb/harstats-graphite-02.png\n :target: https://github.com/gvalkov/screenshots/raw/master/full/harstats-graphite-02.png\n\n.. image:: https://github.com/gvalkov/screenshots/raw/master/thumb/harstats-graphite-03.png\n :target: https://github.com/gvalkov/screenshots/raw/master/full/harstats-graphite-03.png\n\n.. image:: https://github.com/gvalkov/screenshots/raw/master/thumb/harstats-graphite-04.png\n :target: https://github.com/gvalkov/screenshots/raw/master/full/harstats-graphite-04.png\n\n\nExample Output\n--------------\n\n::\n\n $ python -m harstatsgraphite /path/to/har.json \n har.summary.page.time.onContentLoad 1917 1353082153\n har.summary.page.time.onLoad 3550 1353082153\n har.summary.requests.count.media 90 1353082153\n har.summary.requests.count.text 30 1353082153\n har.summary.requests.count.total 120 1353082153\n har.summary.requests.domains.count 22 1353082153\n har.summary.requests.media.content 1569613 1353082153\n har.summary.requests.media.request.bodies 0 1353082153\n har.summary.requests.media.request.headers 30509 1353082153\n har.summary.requests.media.response.bodies 1569613 1353082153\n har.summary.requests.media.response.headers 30360 1353082153\n har.summary.requests.text.content 838946 1353082153\n har.summary.requests.text.request.bodies 0 1353082153\n har.summary.requests.text.request.headers 11811 1353082153\n har.summary.requests.text.response.bodies 239329 1353082153\n har.summary.requests.text.response.headers 7040 1353082153\n har.summary.requests.time.blocked 9445 1353082153\n har.summary.requests.time.connect 1400 1353082153\n har.summary.requests.time.dns 19 1353082153\n har.summary.requests.time.firstrequest 123 1353082153\n har.summary.requests.time.receive 1367 1353082153\n har.summary.requests.time.send 0 1353082153\n har.summary.requests.time.transfer 1367 1353082153\n har.summary.requests.time.wait 5259 1353082153\n har.summary.status.bad 0 1353082153\n har.summary.status.redirect 0 1353082153\n har.summary.transfer.content 2408559 1353082153\n har.summary.transfer.request.bodies 0 1353082153\n har.summary.transfer.request.headers 42320 1353082153\n har.summary.transfer.response.bodies 1808942 1353082153\n har.summary.transfer.response.headers 37400 1353082153\n \n $ harstatsgraphite.py -l local.domain -p h -t 100 /path/to/har.json \n h.page.time.onContentLoad 1917 100\n h.page.time.onLoad 3550 100\n h.requests.count.media 90 100\n h.requests.count.text 30 100\n h.requests.count.total 120 100\n h.requests.domains.count 22 100\n h.requests.external.count.media 88 100\n h.requests.external.count.text 4 100\n h.requests.external.count.total 92 100\n h.requests.external.time.blocked 8037 100\n h.requests.external.time.connect 150 100\n h.requests.external.time.dns 6 100\n h.requests.external.time.receive 1220 100\n h.requests.external.time.send 0 100\n h.requests.external.time.transfer 1220 100\n h.requests.external.time.wait 3210 100\n h.requests.local.count.media 2 100\n h.requests.local.count.text 26 100\n h.requests.local.count.total 28 100\n h.requests.local.time.blocked 1408 100\n h.requests.local.time.connect 1250 100\n h.requests.local.time.dns 13 100\n h.requests.local.time.receive 147 100\n h.requests.local.time.send 0 100\n h.requests.local.time.transfer 147 100\n h.requests.local.time.wait 2049 100\n h.requests.media.content 1569613 100\n h.requests.media.request.bodies 0 100\n h.requests.media.request.headers 30509 100\n h.requests.media.response.bodies 1569613 100\n h.requests.media.response.headers 30360 100\n h.requests.text.content 838946 100\n h.requests.text.request.bodies 0 100\n h.requests.text.request.headers 11811 100\n h.requests.text.response.bodies 239329 100\n h.requests.text.response.headers 7040 100\n h.requests.time.blocked 9445 100\n h.requests.time.connect 1400 100\n h.requests.time.dns 19 100\n h.requests.time.firstrequest 123 100\n h.requests.time.receive 1367 100\n h.requests.time.send 0 100\n h.requests.time.transfer 1367 100\n h.requests.time.wait 5259 100\n h.status.bad 0 100\n h.status.redirect 0 100\n h.transfer.content 2408559 100\n h.transfer.request.bodies 0 100\n h.transfer.request.headers 42320 100\n h.transfer.response.bodies 1808942 100\n h.transfer.response.headers 37400 100\n\n\nUsage\n-----\n\n*harstatsgraphite.py* can be used programmatically or as a script::\n\n import harstatsgraphite as hs\n\n raw = hs.parsehar('path/to/harfile.json')\n data = hs.summarize(raw)\n print(hs.serialize(data))\n\n::\n\n Usage: python -m harstatsgraphite [options] \n\n Arguments:\n harfile path to HAR file (gzipped or plain)\n\n Options:\n -h, --help show this help message and exit\n -l, --local local domain name\n -t, --timestamp timestamp to use (default: date +%s)\n -f, --format plain or pickle (default: plain)\n -p, --prefix metric prefix (default: har.summary)\n\n If the '-l --local' option is given, the script will split request\n statistics into three groups - requests to the local domain, all\n other domains and all requests. Example for 'requests.count':\n\n har.summary.requests.extern.count 92 1352934738\n har.summary.requests.local.count 28 1352934738\n har.summary.requests.count 120 1352934738'''\n\nInstallation\n------------\n\n*harstatsgraphite.py* has no dependencies outside of the Python\nSTL. It should work on Python `>=2.5 \u222a >=3.2`. Install with `pip` or\nsimply download it::\n\n $ pip install harstats-graphite\n $ curl -OL https://raw.github.com/gvalkov/harstats-graphite/master/harstatsgraphite.py\n\nLicense\n-------\n\n*har-stats-graphite.py* is released under the terms of the New BSD License.\n\n\n.. _`HTTP Archive (HAR)`: http://dvcs.w3.org/hg/webperf/raw-file/tip/specs/HAR/Overview.html\n.. _`carbon`: https://graphite.readthedocs.org/en/latest/index.html", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/gvalkov/harstats-graphite", "keywords": "har graphite carbon", "license": "New BSD License", "maintainer": null, "maintainer_email": null, "name": "harstats-graphite", "package_url": "https://pypi.org/project/harstats-graphite/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/harstats-graphite/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/gvalkov/harstats-graphite" }, "release_url": "https://pypi.org/project/harstats-graphite/0.1.1/", "requires_dist": null, "requires_python": null, "summary": "Summarize HAR files and feed them to carbon", "version": "0.1.1" }, "last_serial": 746026, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "1c6f1738607a08768539915dd6e47e28", "sha256": "ab55882e95eecb2c66684388616c6d9621de5a3c6e9cc3e276d08b3f3d1b7769" }, "downloads": -1, "filename": "harstats-graphite-0.1.0.tar.gz", "has_sig": false, "md5_digest": "1c6f1738607a08768539915dd6e47e28", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3549, "upload_time": "2012-11-16T16:20:28", "url": "https://files.pythonhosted.org/packages/5f/13/700716b088217ed13b581a4203b8e8e4d4a9ac6be70d83638f5f0fbfec20/harstats-graphite-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "2b8a0e5ef527efbff7f7eb2dff89f276", "sha256": "a026c731fc73a131b2bda2e95fe064d325cacbd791f1630c9db7fdc249e62e59" }, "downloads": -1, "filename": "harstats-graphite-0.1.1.tar.gz", "has_sig": false, "md5_digest": "2b8a0e5ef527efbff7f7eb2dff89f276", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5716, "upload_time": "2013-03-02T18:31:57", "url": "https://files.pythonhosted.org/packages/6d/9e/ee247d0c11a231618e6c6e24f1260068416910ac59df7f2877adf5faa7af/harstats-graphite-0.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2b8a0e5ef527efbff7f7eb2dff89f276", "sha256": "a026c731fc73a131b2bda2e95fe064d325cacbd791f1630c9db7fdc249e62e59" }, "downloads": -1, "filename": "harstats-graphite-0.1.1.tar.gz", "has_sig": false, "md5_digest": "2b8a0e5ef527efbff7f7eb2dff89f276", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5716, "upload_time": "2013-03-02T18:31:57", "url": "https://files.pythonhosted.org/packages/6d/9e/ee247d0c11a231618e6c6e24f1260068416910ac59df7f2877adf5faa7af/harstats-graphite-0.1.1.tar.gz" } ] }