{ "info": { "author": "SignalFx, Inc", "author_email": "info@signalfx.com", "bugtrack_url": null, "classifiers": [ "Operating System :: OS Independent", "Programming Language :: Python" ], "description": "Sync utility for SignalFx detectors\n===================================\n\n`sfx-sync-detectors` is a command-line tool that helps keep SignalFx detectors\nin version control and sync them with SignalFx. It operates over a directory\ntree of detector files, each representing a detector, and makes sure that what\nis in SignalFx is up-to-date.\n\nInstallation\n~~~~~~~~~~~~\n\n.. code::\n\n $ pip install signalfx-detector-syncer\n\nUsage\n~~~~~\n\n.. code::\n\n $ sfx-sync-detectors --token=$SFX_AUTH_TOKEN /path/to/detectors/\n\nFor full usage information, run with ``-h`` or ``--help``.\n\nHow it works\n~~~~~~~~~~~~\n\nThe syncer works by file path under the given base directory. Each detector is\nwritten in its own file, either in JSON or YAML format and named as an easily\nidentifiable ``dash-separated-slug`` (``.json`` or ``.yaml``). The relative\nfile path from the given base directory identifies the detector: updates to the\nsame file will update the existing detector. Creating a new file creates a new\ndetector; removing a file removes the corresponding detector from SignalFx.\n\nDetectors managed by the syncer are identified within SignalFx by multiple tags:\n\n* a ``signalfx-detector-syncer`` tag, present on all detectors created and\n managed by the detector syncer;\n* a ``from:`` tag, specific to a particular detector, which ties the\n detector to the file path it came from in the synced directory tree;\n* optionally, an additional ``scope:`` identifier tag that further\n scopes the detector (see below *Scoping*).\n\nJSON\n^^^^\n\nWhen the file contains JSON, it is expected to contain the direct JSON\ndetector model that would be pushed to SignalFx's detector API.\n\nYAML layout\n^^^^^^^^^^^\n\nFor YAML (more human readable!), each file contains two YAML documents\nseparated by the expected ``---`` line. The first document, the *front\nmatter*, defines the configuration of the detector and its rules and\nnotifications. The second document is the SignalFlow 2.0 program text of\nthe detector.\n\n.. code-block:: yaml\n\n ---\n name: The detector name\n description: The detector description\n tags: [latency, demo]\n rules:\n my label:\n severity: Critical\n description: Something's wrong!\n notifications:\n - type: Email\n email: test@test.com\n ---\n\n detect(when(data('demo.trans.latency') > 220, lasting='5s')).publish('my label')\n\nSpecification\n^^^^^^^^^^^^^\n\n.. _detector API: https://developers.signalfx.com/docs/detector\n.. _detector Model: https://developers.signalfx.com/docs/detector-model\n\nThe specification of the *front matter* that configures the detector is\npretty much what the `detector API`_ expects. The only expection is that rules\nmay directly keyed by the detect label they map to if you want to.\n\nYou will also want to look at the `detector Model`_ for additional details\naround notifications, rules and visualization options.\n\nScoping\n~~~~~~~\n\nIf you want, you can limit the scope of detectors that the syncer will consider\nby specifying the ``--scope`` option with an identifier. This will be used as an\nadditional piece of information that the syncer looks for when considering\nwhich detectors should be updated or removed.\n\nThis allows for multiple distinct sets of detectors to be synced from different\nbase locations into the same SignalFx organization, even if one of them uses no\nscope.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/signalfx/signalfx-detector-syncer", "keywords": "", "license": "Apache Software License v2", "maintainer": "", "maintainer_email": "", "name": "signalfx-detector-syncer", "package_url": "https://pypi.org/project/signalfx-detector-syncer/", "platform": "", "project_url": "https://pypi.org/project/signalfx-detector-syncer/", "project_urls": { "Homepage": "https://github.com/signalfx/signalfx-detector-syncer" }, "release_url": "https://pypi.org/project/signalfx-detector-syncer/0.9/", "requires_dist": [ "PyYAML", "signalfx (>=1.0.13)" ], "requires_python": "", "summary": "SignalFx detector sync utility", "version": "0.9" }, "last_serial": 3807651, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "7a6b3f89d739bb5462f83c4e2cf6e0a8", "sha256": "742b323bc47364283e2a27c18114ec69c860ad5826f2b104f89cfce6a5781b5f" }, "downloads": -1, "filename": "signalfx_detector_syncer-0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7a6b3f89d739bb5462f83c4e2cf6e0a8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9235, "upload_time": "2016-11-29T02:17:33", "url": "https://files.pythonhosted.org/packages/4a/ce/d325ab9d70b8a28cd397adff325ecaba9f6e16d3a6ac50b316f5c01c39ba/signalfx_detector_syncer-0.1-py2.py3-none-any.whl" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "2a7fa2aa7a3cd55a0eba23bb8fc7a3e9", "sha256": "50c4a601139b399b1a54708e26ff537940d2bb5bf57670d07440bf8dc0364a5f" }, "downloads": -1, "filename": "signalfx_detector_syncer-0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2a7fa2aa7a3cd55a0eba23bb8fc7a3e9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9262, "upload_time": "2016-11-29T02:23:08", "url": "https://files.pythonhosted.org/packages/b3/99/9adf051a8cb7e1d8ffb176444eaed3de6aedc975b38c15e7506600b8adf7/signalfx_detector_syncer-0.2-py2.py3-none-any.whl" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "c618327ab4c97bf70eadfd4f1327dcdb", "sha256": "b52c724d4105022a43f4f95dbade2e959433c8921edf0973709a28cbe5444298" }, "downloads": -1, "filename": "signalfx_detector_syncer-0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c618327ab4c97bf70eadfd4f1327dcdb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9293, "upload_time": "2016-11-29T02:32:37", "url": "https://files.pythonhosted.org/packages/58/b7/96d2cf287dace389e2238848714d08302bc9886264e67704ee48b6ec4d30/signalfx_detector_syncer-0.3-py2.py3-none-any.whl" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "d50bab7afae42494d4201025b9ced7f2", "sha256": "cf163e2f235c5396d5d5aa710efaa2e4121b86332119412c218f1aa2418719c1" }, "downloads": -1, "filename": "signalfx_detector_syncer-0.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d50bab7afae42494d4201025b9ced7f2", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9312, "upload_time": "2016-11-29T03:59:42", "url": "https://files.pythonhosted.org/packages/9a/df/a0a37acb6161cf3461e355bc8daa924e23bf6b3f237cb542ad6c9ea02987/signalfx_detector_syncer-0.4-py2.py3-none-any.whl" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "34455af130e14d21b9c26b54ace82239", "sha256": "0b93977da666d9ec7147612ab5c27d64b4fcc9b576e9979c94262f7b00b39b40" }, "downloads": -1, "filename": "signalfx_detector_syncer-0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "34455af130e14d21b9c26b54ace82239", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9486, "upload_time": "2016-12-02T23:00:34", "url": "https://files.pythonhosted.org/packages/b3/74/546332acac8fb2c27d2f8863c467e123230f7ba9e32fe36db5195534a6ce/signalfx_detector_syncer-0.5-py2.py3-none-any.whl" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "c05f9f3320dbf8d825dd2b12bc44b212", "sha256": "1779646976a94e21a7109d295cf72a20a2ad4d42fa3eccb6dcb9c5c371934e5d" }, "downloads": -1, "filename": "signalfx_detector_syncer-0.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c05f9f3320dbf8d825dd2b12bc44b212", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9548, "upload_time": "2016-12-03T00:46:51", "url": "https://files.pythonhosted.org/packages/af/eb/0b9ad2acd29c5fe8a55ae3abd7a88dffd67119d7ef1da96bb55b04af2f3f/signalfx_detector_syncer-0.6-py2.py3-none-any.whl" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "eb4efcebaea2b0d327e33f05f911b07e", "sha256": "297034dae29bdce28361892247841ab2ffee613fee6b53516c7eae2b466e8cf5" }, "downloads": -1, "filename": "signalfx_detector_syncer-0.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "eb4efcebaea2b0d327e33f05f911b07e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9889, "upload_time": "2016-12-06T18:52:18", "url": "https://files.pythonhosted.org/packages/75/f8/b8fb96a8397eaa91a87675066d3ec1d9700f9f4ed7f9009ee84fee42cba0/signalfx_detector_syncer-0.7-py2.py3-none-any.whl" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "777a1aad1f900aa1cc4a6c7c270cf445", "sha256": "c749948864802663adeb6738b5ec93f2ea53dfb41b10a11c3782a2a8074c62f3" }, "downloads": -1, "filename": "signalfx_detector_syncer-0.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "777a1aad1f900aa1cc4a6c7c270cf445", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10130, "upload_time": "2017-04-11T21:37:14", "url": "https://files.pythonhosted.org/packages/e3/0a/09e837b2a6fa72d12afd770b717de7fea06d86832edd2f524e9d5e3fa51b/signalfx_detector_syncer-0.8-py2.py3-none-any.whl" } ], "0.9": [ { "comment_text": "", "digests": { "md5": "3700b0adb0e0e98e267d62bca164e45b", "sha256": "b09d1297930f9de85fda2707e3e035b7ea1ddf8ce3e756544c30c1136e991d53" }, "downloads": -1, "filename": "signalfx_detector_syncer-0.9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3700b0adb0e0e98e267d62bca164e45b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10160, "upload_time": "2018-04-25T17:35:05", "url": "https://files.pythonhosted.org/packages/d4/cc/73809757145ae431824580a7a6b5e0e824a526a044b54790587f5911880c/signalfx_detector_syncer-0.9-py2.py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3700b0adb0e0e98e267d62bca164e45b", "sha256": "b09d1297930f9de85fda2707e3e035b7ea1ddf8ce3e756544c30c1136e991d53" }, "downloads": -1, "filename": "signalfx_detector_syncer-0.9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3700b0adb0e0e98e267d62bca164e45b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10160, "upload_time": "2018-04-25T17:35:05", "url": "https://files.pythonhosted.org/packages/d4/cc/73809757145ae431824580a7a6b5e0e824a526a044b54790587f5911880c/signalfx_detector_syncer-0.9-py2.py3-none-any.whl" } ] }