{ "info": { "author": "S\u0142awek Lis", "author_email": "lis.slawek@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.1", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Topic :: System :: Monitoring", "Topic :: Utilities" ], "description": "=====================\r\nSimple Stat Generator\r\n=====================\r\n\r\n\r\nWhat's this?\r\n============\r\n\r\nSistagen (Simple Stat Generator) is console tool that simplifies graph\r\nplotting. It's main job is to parse configuration and call rrdtool to generate\r\ndesired graphs.\r\n\r\nThis app is kind of higher layer on rrdtool, allowing anything rrdtool allows,\r\nbut in easier to manage form.\r\n\r\n\r\nWhy?\r\n====\r\n\r\nRRDTool itself is great tool, but it's quite time consuming task to prepare\r\ngraph with it directly. On the other side, there are many bigger or lesser\r\n(often all-in-one, and mostly web-oriented) applications, but they're\r\nenforcing theirs philosophy, and having annoying \"features\".\r\n\r\n\r\nHow it works?\r\n=============\r\n\r\nAt first, take a look on graph definition:\r\n\r\n::\r\n\r\n echo \"include templates.conf\r\n Graph test\r\n use disk-usage\r\n input-dir df-root\" | sistagen\r\n\r\nThat would output file graph_400x100.png in current directory, containing\r\ndisk space utilization graph. Of course, you have to have df-root/ directory\r\nwith rrd files (generated with collectd - df plugin).\r\n\r\nIn this example, sistagen reads configuration from stdin. Thats because\r\nno input files was given. You can pass as many files as you want, just by\r\ngiving they names of absolute path (TODO: describe more about pathes).\r\n\r\nsistagen config1.conf config2.conf [...]\r\n\r\n\r\n\r\nInstallation\r\n============\r\n\r\nJust type:\r\n::\r\n\r\n easy_install sistagen\r\n \r\n\r\n\r\n\r\nConfiguration\r\n=============\r\n\r\nSistagen configuration consists of list of declarations and attributes.\r\n\r\nAvailable declarations:\r\n - include ARG - load and parse configuration from another file, given\r\n as ARG\r\n - template NAME - create new template (named NAME)\r\n - graph NAME - create new graph\r\n - theme NAME - color theme definition\r\n\r\nBoth graph and template means almost the same, with one difference:\r\ntemplate isn't graphed, it's only 'virtual' declaration, while all graph\r\ndeclarations causes sistagen to plot them out.\r\n\r\nGraph (and template) declarations should have some attributes. An attribute\r\nin sistagen configuration is line, starting with at last one whitespace and \r\nbeginning with keyword, followed by number of named values.\r\nIt's important that attribute must always refer to declaration, so:\r\n1. all attributes that follows a declaration, belongs to that declaration\r\n2. it's an error to pass attributes before any declaration\r\n\r\nIn its simplest case it looks like following:\r\n\r\n::\r\n\r\n GRAPH|TEMPLATE name\r\n attribute1 name=val ...\r\n attribute2 ...\r\n ...\r\n\r\nMost of attributes should have named values (except of 'use', 'merge' and 'size').\r\nEach value should be in form: \"name value\" or \"name=value\" (the equation \r\nsymbol is optional).\r\n\r\n\r\nList of allowed attributes\r\n--------------------------\r\n\r\n - use template-name - use template as current declaration base\r\n - merge template-name [separator=S] - merge this declaration with the one given (see: difference between merge and use)\r\n\r\n - colors theme-name - use theme-name as base for auto-colors\r\n - title \"Some title\" - set graph title (same effect as: option title \"Some title\")\r\n \r\n - input name=NAME file=FRRDFILE ds=DS cf=CF - create new input named NAME from file RRDFILE using DS and CF\r\n There could be as many inputs as needed.\r\n\r\n - output dir=PATH file=FILE prefix=PREFIX suffix=SUFFIX mask=MASK format=FORMAT\r\n When using output FILE then dir, mask and format are updated automatically, but prefix and suffix are cleared\r\n\r\n - option option-name option-value\r\n - option ...\r\n - ...\r\n any option that may be passed into rrdtool graph,\r\n for example: lower-limit, zoom, start, etc..\r\n\r\n\r\n - size SIZE [SIZE, ...]\r\n any number of dimensions of graphs to be generated\r\n each size would be used in output file name. Each SIZE have to be in \r\n form: WxH where W - graph width, H - graph height\r\n \r\n - date DATE [DATE, ...]\r\n like SIZE above, allows to define several number of time periods, for which\r\n the graphs would be generated. See \"Date period definition\" below to learn more.\r\n\r\n\r\n - line1|line2|line3|area (with EXPR | use NAME) [color COLOR] [text LEGEND] [stack]\r\n - gprint text TEXT (with EXPR | use NAME) get AGGR\r\n currently supported graphing methods\r\n for lines and areas there should be at last one of 'with' or 'use'\r\n keyword with corresponding value\r\n EXPR means any rpn expression (http://oss.oetiker.ch/rrdtool/doc/rrdgraph_rpn.en.html)\r\n NAME means any input name defined earlier\r\n AGGR means an aggregation function (one of CF)\r\n - comment text TEXT \r\n \r\n\r\nGraph and template declarations may be inherited. It means that when\r\none declaration inherits another then all attributes of parent would\r\nbe copied into child.\r\n\r\nExample:\r\n::\r\n\r\n Template A:\r\n attribute a\r\n\r\n Template B:\r\n use A # use A as base\r\n # attribue a is defined already\r\n\r\n \r\nMerge vs Use attributes\r\n-----------------------\r\n\r\nUse is generally used in the terms of inheritance. That means, it'll cause to copy \r\nall attributes from 'parent'. Also, 'use' will override any existing values.\r\nMerge on the other side, will NOT override any values, and will copy only\r\ninput and graph declarations. \r\n\r\nIn summary: use is used in inheritance, merge is used in combining graphs.\r\n\r\n\r\n\r\nOutput filename\r\n---------------\r\nDestination filename is created from several parts:\r\nOUTPUT-DIR + OUTPUT-PREFIX + OUTPUT-MASK + OUTPUT-SUFFIX + OUTPUT-FORMAT\r\n\r\nOUTPUT-MASK may contain several keywords, that would be replaced during graph \r\ngeneration. They are:\r\n\r\n - %(width)i - will be replaced with current graph width\r\n - %(height)i - as above, but height\r\n - %(name)s - current graph (declaration) name\r\n - %(date_[from|to]_[full|date|time|year|month|day|hour|minute|second|days|hours|minutes|seconds])s\r\n the date of graphing period start (from) or end (to) which contains YYYYMMDDHHmmss (full)\r\n YYYYMMDD (date), HHmmss (time), or one of those components.\r\n days, hours, minutes and seconds meands time delta between given date and now\r\n\r\nDefault output mask looks like: _%(width)ix%(height)i\r\n\r\n\r\nColor theme\r\n-----------\r\n\r\nIt is possible to define a \"color theme\" that defines colors per \r\neach graph element. Each one by default uses color=auto declaration,\r\nand in such situation sistagen pulls next available color from color \r\ntheme (if number of graph elements outnumbers colors in color definition\r\n- random color is generated).\r\n\r\nIn general, color theme definition looks like\r\n\r\n::\r\n\r\n Theme THEME_NAME\r\n color value=RGBVAL [alpha=AA] [for=any|line|line123|area]\r\n color ...\r\n ...\r\n \r\nColor defines new color definition, that would be used by graph elements when \r\ncolor=auto is set. It is possible to define any number of colors in theme declaration.\r\n\r\nAvailable values:\r\n - value - color RGB or RGBA value\r\n - alpha - alpha value (overrides alpha part from RGBA value)\r\n - for - use this color only for mathing graph element (default=all)\r\n \r\n\r\n \r\nDate period definition\r\n----------------------\r\n\r\nIt's possible to plot several graphs at once, each containing data from different\r\nperiods. It is done by defining desired DATEs' in graph definition.\r\n\r\nEach DATE entry have form: FROM-TO\r\nThe 'TO' part may be left, so it would be assigned as 'now'.\r\nand each FROM and TO can be relative or absolute date definition.\r\nRelative date definitions are in form: NU - N - number, U - unit, for example:\r\n10h, 5m, 3d, and so. Available units: s, m, h, d\r\n\r\nAbsolute date definitions are in form: [[YY]YYMMDD]HHmm[ss]\r\nyear may be set as full year (2014) or shortened (14).\r\nThe date part may be omitted, only time part left (HHmmss), also, seconds are \r\nnot necessary.\r\n\r\n\r\nExamples:\r\n date 7d # plot graph from last week\r\n date 2d-1d # and from yesterday\r\n date 30d-20140331 # show stats from march\r\n \r\n\r\n\r\n\r\n \r\nTemplates\r\n=========\r\n\r\nThere are some templates already prepared and shipped with applications, that \r\nlets fast and easy graph creation. \r\nRight now they are mostly focused on rrd files created by collectd, so with \r\nthose files you may just create graph with only input-dir attribute.\r\n\r\nTemplates dir and current dir are added to config path (-C) by default.\r\n\r\n\r\nCollectd\r\n--------\r\n\r\nRight now, all of the templates defined are prepared for stats generated by \r\ncollectd daemon.\r\n\r\n\r\n\r\nExamples\r\n========\r\n\r\nHere are some example graph definitions:\r\n\r\n::\r\n \r\n include templates.conf\r\n Graph cpu\r\n # this would graph cpu-0 usage\r\n use cpu\r\n input dir=/var/lib/collectd/rrd/localhost/cpu-0\r\n\r\n \r\n::\r\n\r\n include templates.conf\r\n Graph load\r\n # cpu load average for 1, 5 and 15 min\r\n use load\r\n input dir=/var/lib/collectd/rrd/localhost/load\r\n\r\n \r\n::\r\n\r\n include templates.conf\r\n Graph bandwidth-eth0\r\n # bandwidth utilization\r\n use bandwidth\r\n input dir=/var/lib/collectd/rrd/localhost/interface-eth0/\r\n output prefix=bw-eth0\r\n\r\n\r\n \r\nPredefine own template\r\n----------------------\r\n\r\n::\r\n \r\n Template mybase\r\n # each graph in following dimensions\r\n size 400x50 1000x200\r\n # plot 1day, 7days and one month\r\n date 1d 7d 30d\r\n \r\n include templates.conf\r\n Graph cpu\r\n # this would graph cpu-0 usage\r\n use cpu\r\n use mybase\r\n input dir=/var/lib/collectd/rrd/localhost/cpu-0\r\n \r\n\r\n \r\nSee \"examples/\" directory for more.\r\n\r\n \r\n\r\n.. hint::\r\n Please send me any reports and opinions as well. It would be nice to know\r\n if this tool is useful for someone, so I may still work on this. You'll \r\n find my mail address in --help.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://launchpad.net/sistagen", "keywords": null, "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "sistagen", "package_url": "https://pypi.org/project/sistagen/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/sistagen/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://launchpad.net/sistagen" }, "release_url": "https://pypi.org/project/sistagen/1.0.47/", "requires_dist": null, "requires_python": null, "summary": "Simple Stat Generator", "version": "1.0.47" }, "last_serial": 1046621, "releases": { "1.0.10": [ { "comment_text": "", "digests": { "md5": "632c140fa6c2b42dc6d5a2192d1372ed", "sha256": "cf8294a5061ca0c58dfba5031416201535edf3e2c6e3379e353bd7559941b3d2" }, "downloads": -1, "filename": "sistagen-1.0.10.tar.gz", "has_sig": false, "md5_digest": "632c140fa6c2b42dc6d5a2192d1372ed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12637, "upload_time": "2013-10-05T21:06:06", "url": "https://files.pythonhosted.org/packages/5f/e4/1c585c8e6deb0c64621c9033e1bcbfdb49c3c017a24dc4418f8aed5e1d47/sistagen-1.0.10.tar.gz" } ], "1.0.13": [ { "comment_text": "", "digests": { "md5": "19a0563582ad0bbbe663e51078aede60", "sha256": "7f7cbdf765bd6475b3a6c6c883e399675c97d876d35d6713dff6ae5c471a986a" }, "downloads": -1, "filename": "sistagen-1.0.13.tar.gz", "has_sig": false, "md5_digest": "19a0563582ad0bbbe663e51078aede60", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13335, "upload_time": "2013-10-07T07:21:26", "url": "https://files.pythonhosted.org/packages/f8/7f/c078328f851ded2a0124487ccfd7aba4fcc25f6d2a98f727fd7a09314f16/sistagen-1.0.13.tar.gz" } ], "1.0.17": [ { "comment_text": "", "digests": { "md5": "6523a5b9617a18acc6d0cf809079438c", "sha256": "e378d7c807e95d7d29ab6f446b7dff0f3e97cfd88340e5de6f0abde6fcf17b52" }, "downloads": -1, "filename": "sistagen-1.0.17.tar.gz", "has_sig": false, "md5_digest": "6523a5b9617a18acc6d0cf809079438c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13754, "upload_time": "2013-10-10T11:14:36", "url": "https://files.pythonhosted.org/packages/b4/83/3bb3521f358df3cb2a7bb6f0dcda33ccd6160670aa5910adc54606622372/sistagen-1.0.17.tar.gz" } ], "1.0.21": [ { "comment_text": "", "digests": { "md5": "8a09d9bbf8fb7592948dfd56523563f4", "sha256": "83497422a4801e97af96ce5bc83db66f8a169cd05c19d3a63ce9048b34e7c51f" }, "downloads": -1, "filename": "sistagen-1.0.21.tar.gz", "has_sig": false, "md5_digest": "8a09d9bbf8fb7592948dfd56523563f4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13935, "upload_time": "2013-10-11T06:19:42", "url": "https://files.pythonhosted.org/packages/d0/ea/020f6504dbe7125d21925136beed19f87019303afa15c38de95b0070e4e6/sistagen-1.0.21.tar.gz" } ], "1.0.25": [ { "comment_text": "", "digests": { "md5": "d8b7d7280b9a0288933d6576ee28d79b", "sha256": "a4a2dc820402d8bfaa926cdc9caf5a87e51c617a5e0ce9c7a58b75373b6f1f0e" }, "downloads": -1, "filename": "sistagen-1.0.25.tar.gz", "has_sig": false, "md5_digest": "d8b7d7280b9a0288933d6576ee28d79b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14353, "upload_time": "2013-10-22T08:24:08", "url": "https://files.pythonhosted.org/packages/a9/f6/1cd1c62c653a6bd3debb8d08d3be3b574c60743707c7d52b2fdfa6020713/sistagen-1.0.25.tar.gz" } ], "1.0.27": [ { "comment_text": "", "digests": { "md5": "2304793e599bddbf2d703678293ee3ad", "sha256": "75246e71383c41d8335fe6bc044f429bc7918e607a6a5af418e38ff8356342ca" }, "downloads": -1, "filename": "sistagen-1.0.27.tar.gz", "has_sig": false, "md5_digest": "2304793e599bddbf2d703678293ee3ad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14823, "upload_time": "2013-10-23T10:06:12", "url": "https://files.pythonhosted.org/packages/7f/67/ff838051a99319b6c713f91246fdadccef008bd2732b70e68ea8bcc1de98/sistagen-1.0.27.tar.gz" } ], "1.0.29": [ { "comment_text": "", "digests": { "md5": "8380f306e21fafc2936f071b88e19af1", "sha256": "5913df4f94e0b5690ee8207611adfef283c5c250383b7252c749b3c9a330ec61" }, "downloads": -1, "filename": "sistagen-1.0.29.tar.gz", "has_sig": false, "md5_digest": "8380f306e21fafc2936f071b88e19af1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15492, "upload_time": "2013-10-23T12:50:43", "url": "https://files.pythonhosted.org/packages/e0/18/559c0284858ebdee673415f3a867fc1bec56bdd882b3632c5c4e1e548aa8/sistagen-1.0.29.tar.gz" } ], "1.0.30": [ { "comment_text": "", "digests": { "md5": "d54e19cede2495e651446a4b275ab31e", "sha256": "dcbdf83b05e01707a7f18136c0f82e9c49b8e50d227132adb5208197b9780517" }, "downloads": -1, "filename": "sistagen-1.0.30.tar.gz", "has_sig": false, "md5_digest": "d54e19cede2495e651446a4b275ab31e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16930, "upload_time": "2013-10-25T06:18:36", "url": "https://files.pythonhosted.org/packages/4e/f0/215a50d1f43260b742e76064f2bc23a3dc041d4942b689828b6c71ee63ff/sistagen-1.0.30.tar.gz" } ], "1.0.31": [ { "comment_text": "", "digests": { "md5": "1a454f8d4ae2625e31c6b367b08cc44d", "sha256": "5942f74fe71af0e01c52721c8b16913dc5a03d1c2b0f10e1e057a1c73a05e4dc" }, "downloads": -1, "filename": "sistagen-1.0.31.tar.gz", "has_sig": false, "md5_digest": "1a454f8d4ae2625e31c6b367b08cc44d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16946, "upload_time": "2013-10-25T07:08:25", "url": "https://files.pythonhosted.org/packages/88/ce/cc9894bb24624235042b5bc68a99c631e699c8938ee9eef4ed13d3c998a5/sistagen-1.0.31.tar.gz" } ], "1.0.36": [ { "comment_text": "", "digests": { "md5": "e735563f66769643fde5e254012eae1f", "sha256": "64884e80a8accbc90716e08257385c48d74c3f990e3181f74e8babb55a0ffed0" }, "downloads": -1, "filename": "sistagen-1.0.36.tar.gz", "has_sig": false, "md5_digest": "e735563f66769643fde5e254012eae1f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17954, "upload_time": "2014-03-28T09:22:33", "url": "https://files.pythonhosted.org/packages/e7/71/a0be55b583939ecdccd7f2778497186d1d17553ec518f0d2cb7ef7224ea8/sistagen-1.0.36.tar.gz" } ], "1.0.39": [ { "comment_text": "", "digests": { "md5": "c667e27bdeec8ff3c61eaf0e540fc785", "sha256": "006d81bd4ad8f3bc38de41da232358df936108a6c2a7edaae74d234d8744cca4" }, "downloads": -1, "filename": "sistagen-1.0.39.tar.gz", "has_sig": false, "md5_digest": "c667e27bdeec8ff3c61eaf0e540fc785", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18587, "upload_time": "2014-03-28T12:27:09", "url": "https://files.pythonhosted.org/packages/a9/ec/76b9469dadaca609a7599e65c3a4241b022823dce263fe8eac8b55f94165/sistagen-1.0.39.tar.gz" } ], "1.0.44": [ { "comment_text": "", "digests": { "md5": "44f2118eac4a55af75a8c8b6a88d334b", "sha256": "4f04fce49c8989380d42031d06cdd098e4b8631638ff9b4c0a727bf365a0d6bb" }, "downloads": -1, "filename": "sistagen-1.0.44.tar.gz", "has_sig": false, "md5_digest": "44f2118eac4a55af75a8c8b6a88d334b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21843, "upload_time": "2014-03-31T09:46:32", "url": "https://files.pythonhosted.org/packages/06/45/1867a3b23d04e40d7c3a9df9a91f0799cfe88cb9d4a1dfc6b28d37d9e997/sistagen-1.0.44.tar.gz" } ], "1.0.47": [ { "comment_text": "", "digests": { "md5": "ddb0a97e36dfb07e934b64b9511e3f17", "sha256": "653f991690d0fe27c4717b506792694731063d529ceb910e061803a0b64b4dea" }, "downloads": -1, "filename": "sistagen-1.0.47.tar.gz", "has_sig": false, "md5_digest": "ddb0a97e36dfb07e934b64b9511e3f17", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21885, "upload_time": "2014-03-31T11:35:44", "url": "https://files.pythonhosted.org/packages/9a/73/e7497b0325af9fee97f9ac04a80ff992c96edaac68f800f82cddfe8daaa9/sistagen-1.0.47.tar.gz" } ], "1.0.6": [] }, "urls": [ { "comment_text": "", "digests": { "md5": "ddb0a97e36dfb07e934b64b9511e3f17", "sha256": "653f991690d0fe27c4717b506792694731063d529ceb910e061803a0b64b4dea" }, "downloads": -1, "filename": "sistagen-1.0.47.tar.gz", "has_sig": false, "md5_digest": "ddb0a97e36dfb07e934b64b9511e3f17", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21885, "upload_time": "2014-03-31T11:35:44", "url": "https://files.pythonhosted.org/packages/9a/73/e7497b0325af9fee97f9ac04a80ff992c96edaac68f800f82cddfe8daaa9/sistagen-1.0.47.tar.gz" } ] }