{ "info": { "author": "Sylvain Pascou", "author_email": "sylvain@pascou.net", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.7" ], "description": "# cwlogs-rqid-filter.py\n_Ever wanted to filter AWS CloudWatch logs and not only keep the matching events, but also all events that have the same Request ID that the matching event(s)?_\n\nThis python script fetches all log events messages related to requests (by AWS Request ID) that in any message of any event match a custom python regex pattern.\nIt fetches all events for the period, searching their messages with the custom regex pattern and filters only events that have the request IDs that have at least one message matching.\n\nChanges are described in CHANGELOG.md.\n\n## Installation\n`pip install cwlogs-rqid-filter`\n\n## Usage\nDo not forget to perform AWS Credentials configuration for boto3 beforehand (https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html).\n\n### Console\nInstall the library as described above, and run it, either with `cwlogs-rqid-filter` or `python -m cwlogs_rqid_filter`\n\n\n```\n python -m cwlogs_rqid_filter [-h] --group GROUP_NAME --filter FILTER\n [--streams [STREAM_NAMES [STREAM_NAMES ...]]]\n [--stream-prefix STREAM_NAME_PREFIX]\n [--start-ts START_TIMESTAMP] [--start START]\n [--stop-ts STOP_TIMESTAMP] [--stop STOP] [--limit LIMIT]\n [--prefix-timestamp | --prefix-iso] [--debug]\n\n\nFilter AWS CloudWatch logs while keeping all events that have the same Request\nID as events that match the filter.\n\noptional arguments:\n -h, --help show this help message and exit\n --group GROUP_NAME Log group name\n --filter FILTER Python regular expression pattern that will match\n events messages\n --streams [STREAM_NAMES [STREAM_NAMES ...]]\n Log stream names\n --stream-prefix STREAM_NAME_PREFIX\n Log stream name prefix\n --start-ts START_TIMESTAMP\n Start timestamp in milliseconds, UTC timezone\n --start START Start date and time, ISO8601 format, UTC timezone\n --stop-ts STOP_TIMESTAMP\n Stop timestamp in milliseconds, UTC timezone\n --stop STOP Stop date and time, ISO8601 format, UTC timezone\n --limit LIMIT Event limit count\n --prefix-timestamp Prefix the logs with event timestamp between\n parentheses\n --prefix-iso Prefix the logs with ISO8601 formatted event timestamp\n between parentheses\n --debug Print debug information\n```\n\n### Script import\n```\nfrom cwlogs_rqid_filter import fetch_events, filter_events\n\n# Any parameters set accepted by the Boto3 logs client filter_log_events() function\nrequest_parameters = {\n 'logGroupName': 'xxx',\n 'logStreamNames': ['yyy', 'zzz', ...],\n 'logStreamNamePrefix': 'xyz',\n 'startTime': 123, # Unix timestamp\n 'endTime': 456, # Unix timestamp\n ...\n}\n\nfilter_regex_pattern = r'*'\n\nall_events = fetch_events(request_parameters)\nfiltered_events = filter_events(all_events, filter_regex_pattern)\n```\n\n## Examples\nTo get all log events of lambda requests that took at least 1000ms, prefixed by ISO8601-formatted timestamps:\n`python -m cwlogs_rqid_filter --group /aws/lambda/someLambdaName --start 2018-11-30T05:04:00Z --stop 2018-11-30T05:05:00Z --filter 'Billed Duration: [0-9]{4,}' --prefix-iso`\n\nYou can also specify start and stop timestamps in any timezone, formatted following ISO8601: `--start 2018-11-30T14:04:00+09:00 --stop 2018-11-30T14:05:00+09:00`\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/spascou/cwlogs-rqid-filter", "keywords": "", "license": "MIT", "maintainer": "Sylvain Pascou", "maintainer_email": "sylvain@pascou.net", "name": "cwlogs-rqid-filter", "package_url": "https://pypi.org/project/cwlogs-rqid-filter/", "platform": "", "project_url": "https://pypi.org/project/cwlogs-rqid-filter/", "project_urls": { "Homepage": "https://github.com/spascou/cwlogs-rqid-filter" }, "release_url": "https://pypi.org/project/cwlogs-rqid-filter/0.2.1/", "requires_dist": [ "boto3 (>=1.9,<2.0)", "ciso8601 (>=2.1,<3.0)" ], "requires_python": ">=3.7,<4.0", "summary": "Fetch all log events messages related to requests (by AWS Request ID) that in any message of any event match a custom python regex pattern", "version": "0.2.1" }, "last_serial": 5543590, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "5e24a7495355fdb74cce30b317305d59", "sha256": "7450aeddc41eb0ac03421e6cd0fbc8fd9d03fa9aaf48ff6472e3601df1b04d60" }, "downloads": -1, "filename": "cwlogs_rqid_filter-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "5e24a7495355fdb74cce30b317305d59", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 6108, "upload_time": "2019-07-16T09:43:13", "url": "https://files.pythonhosted.org/packages/88/6b/544096953a9e0a3b117a6d8273a4a48e4b2291bf551026cf48e6678db684/cwlogs_rqid_filter-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "284e5f3ae302aa92903a8397135f2c20", "sha256": "71e71ec24f36919e4d70b2dd0cc7ec12bb51c74bcb76bec7e89cf9591e44e580" }, "downloads": -1, "filename": "cwlogs_rqid_filter-0.1.1.tar.gz", "has_sig": false, "md5_digest": "284e5f3ae302aa92903a8397135f2c20", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 5390, "upload_time": "2019-07-16T09:43:15", "url": "https://files.pythonhosted.org/packages/0f/5e/c915e1222d64b92c4d70381e551f9edac68d360817d6ebd5b84372fb56bb/cwlogs_rqid_filter-0.1.1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "ccb161726edbd33e0bea8b5de1e37cff", "sha256": "f52caec5cf4724467e197e588d18476e37daca525e8a2d1ca8ee715285a86c50" }, "downloads": -1, "filename": "cwlogs_rqid_filter-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "ccb161726edbd33e0bea8b5de1e37cff", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 6662, "upload_time": "2019-07-17T01:54:46", "url": "https://files.pythonhosted.org/packages/39/94/67307ee62cbce6987b0d1e471d2dfb4797a747e432cd3302595a3e8f1bc1/cwlogs_rqid_filter-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "91103c16216ca3cf2937fa35e6271544", "sha256": "0ce9dba9fb2ffaab891da12da908fb42cdcff4ff4abaea0a421c8b1e77951a4f" }, "downloads": -1, "filename": "cwlogs_rqid_filter-0.2.0.tar.gz", "has_sig": false, "md5_digest": "91103c16216ca3cf2937fa35e6271544", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 5553, "upload_time": "2019-07-17T01:54:47", "url": "https://files.pythonhosted.org/packages/3b/58/57e9aecb969fd749b6e2ab7b1700644f571741f25dc76bf80e2a370476ab/cwlogs_rqid_filter-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "59f00e5ac290f99dbf31a8c0aff77215", "sha256": "09e527785062e84f008280ad8d9e241f563170e4e151f286990b60a450f3ea93" }, "downloads": -1, "filename": "cwlogs_rqid_filter-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "59f00e5ac290f99dbf31a8c0aff77215", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 6655, "upload_time": "2019-07-17T02:00:31", "url": "https://files.pythonhosted.org/packages/4e/c7/483f59b3ab6b18bf74ad7a91c3cac47851936f7156e925b2b6e449398601/cwlogs_rqid_filter-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3cf921ea717f6de7dce07c29f90a1aa9", "sha256": "e337d7a7db19e72cc07876d7b705dfc08de615448c8f4dc310d123e4e0649c2c" }, "downloads": -1, "filename": "cwlogs_rqid_filter-0.2.1.tar.gz", "has_sig": false, "md5_digest": "3cf921ea717f6de7dce07c29f90a1aa9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 5537, "upload_time": "2019-07-17T02:00:33", "url": "https://files.pythonhosted.org/packages/66/f3/3ba68fa6b45441d69f3cdab85828163c43b754a9cc127ef667e3e55f5d80/cwlogs_rqid_filter-0.2.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "59f00e5ac290f99dbf31a8c0aff77215", "sha256": "09e527785062e84f008280ad8d9e241f563170e4e151f286990b60a450f3ea93" }, "downloads": -1, "filename": "cwlogs_rqid_filter-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "59f00e5ac290f99dbf31a8c0aff77215", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 6655, "upload_time": "2019-07-17T02:00:31", "url": "https://files.pythonhosted.org/packages/4e/c7/483f59b3ab6b18bf74ad7a91c3cac47851936f7156e925b2b6e449398601/cwlogs_rqid_filter-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3cf921ea717f6de7dce07c29f90a1aa9", "sha256": "e337d7a7db19e72cc07876d7b705dfc08de615448c8f4dc310d123e4e0649c2c" }, "downloads": -1, "filename": "cwlogs_rqid_filter-0.2.1.tar.gz", "has_sig": false, "md5_digest": "3cf921ea717f6de7dce07c29f90a1aa9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 5537, "upload_time": "2019-07-17T02:00:33", "url": "https://files.pythonhosted.org/packages/66/f3/3ba68fa6b45441d69f3cdab85828163c43b754a9cc127ef667e3e55f5d80/cwlogs_rqid_filter-0.2.1.tar.gz" } ] }