{ "info": { "author": "Amine Ben Asker", "author_email": "ben.asker.amine@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Build Tools" ], "description": "[![Latest version on](https://badge.fury.io/py/log-analyzer.svg)](https://badge.fury.io/py/log-analyzer)\n[![Supported Python versions](https://img.shields.io/pypi/pyversions/log-analyzer.svg)](https://pypi.org/project/log-analyzer/)\n[![Travis Pipelines build status](https://img.shields.io/travis/com/yurilaaziz/log-analyzer.svg)](https://travis-ci.com/yurilaaziz/log-analyzer/)\n[![codecov](https://codecov.io/gh/yurilaaziz/log-analyzer/branch/master/graph/badge.svg)](https://codecov.io/gh/yurilaaziz/log-analyzer)\n\n# Description\nLog-analyzer is a human and straightforward log analyzer for rapid troubleshooting.\n\n*Note*:\n\nThis project starts to be an interview project. Now I am using it to monitor my website traffic.\n\n# Get started \n\n## Install from github \n```\npip install git+http://github.com/yurilaaziz/log-analyzer.git\n\n```\n\n## Install from PyPi \n```\npip install log-analyzer\n\n```\n\n## Run log analyzer\n````commandline\nlog-analyzer \n````\nBy default, the log-analyzer reads the log from /var/log/access.log\n\n![screen shot log-analyzer](artwork/screenshot.png)\n\n\n## Run log analyzer with external configuration\n````commandline\nLOGANALYZER_CONFIG_FILE=sample.config.yml log-analyzer \n````\n\n## Run log analyzer with another log file\n````commandline\nLOGANALYZER_PARSER_INPUT=/tmp/test.log log-analyzer \n````\n\n## Design \n![Design log-analyzer](artwork/design.png)\n\n\nLog Analyzer containers on three components : \n* Parser Process : \n * Reads the log file \n * Process lines following a pattern class\n * Push data to the Persistence driver\n* Consumer Process (Console Display):\n * Reads data from the persistence driver\n * Display an array ordered by hits \n* Alert Manager:\n * Compute rules defined in the pattern alert's class\n * Push notification to persistence driver to be displayed on the console \n\n* Persistence Driver:\n * Define interfaces between producer and consumer.\n * Allow persisting data to different data-store \n\n## Configuration \n\nLog Analyzer uses Config42 to manage its configuration. that means every variable present in the configuration file could be overloaded from \nEnvironment variables, Configuration file, external data store (ETCD)\n\nHere an example of default configuration in YAML format:\n[configuration file](sample.config.yml)\n\n\n## TO DO \n- [x] Rework the Alert Manager process to Delete Alert Class and read Alerting rules from the configuration \n- [ ] Rework the __main__ for a better CLI with 'docopt' \n- [ ] Write a persistence driver to support ElasticSearch/InfluxDB data-store\n- [ ] Support multiple log files/sources\n- [ ] Support multiple Persistence drivers\n\n\n\n\n\n\n\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "https://github.com/yurilaaziz/log_anaylzer/releases/tag/0.1", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/yurilaaziz/log-analyzer", "keywords": "Log Analyzer,W3 log,Log Parser", "license": "GPLv3+", "maintainer": "", "maintainer_email": "", "name": "log-analyzer", "package_url": "https://pypi.org/project/log-analyzer/", "platform": "", "project_url": "https://pypi.org/project/log-analyzer/", "project_urls": { "Download": "https://github.com/yurilaaziz/log_anaylzer/releases/tag/0.1", "Homepage": "https://github.com/yurilaaziz/log-analyzer" }, "release_url": "https://pypi.org/project/log-analyzer/0.0.2/", "requires_dist": [ "blessings (==1.7)", "config42 (==0.3.1)", "prettytable (==0.7.2)", "pyyaml (==5.1)" ], "requires_python": "", "summary": "Log analyzer", "version": "0.0.2" }, "last_serial": 5316599, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "785d29546eeca651b08b80f45b0b8a3d", "sha256": "74d6cf1f54e34f5d1df22d6b68673f27747f016d23196c3bf789fede7e4a0576" }, "downloads": -1, "filename": "log_analyzer-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "785d29546eeca651b08b80f45b0b8a3d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12818, "upload_time": "2019-05-23T13:34:19", "url": "https://files.pythonhosted.org/packages/02/79/61d1bb3d5921a3184bc478613fa489a5c443afb31a04d72d4f293f398952/log_analyzer-0.0.1-py3-none-any.whl" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "7d182b80559cf1f5cc4c2a320d3637fa", "sha256": "b9c305a91236045b0c1cf01bf43208b95d0b63bf1df844ee93a2aa90b33fda27" }, "downloads": -1, "filename": "log_analyzer-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "7d182b80559cf1f5cc4c2a320d3637fa", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14257, "upload_time": "2019-05-25T14:55:28", "url": "https://files.pythonhosted.org/packages/3b/ca/722d7e1fa83edba314f4cced013a4d1b8dc6537a940d0fbc129c6d81142d/log_analyzer-0.0.2-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7d182b80559cf1f5cc4c2a320d3637fa", "sha256": "b9c305a91236045b0c1cf01bf43208b95d0b63bf1df844ee93a2aa90b33fda27" }, "downloads": -1, "filename": "log_analyzer-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "7d182b80559cf1f5cc4c2a320d3637fa", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14257, "upload_time": "2019-05-25T14:55:28", "url": "https://files.pythonhosted.org/packages/3b/ca/722d7e1fa83edba314f4cced013a4d1b8dc6537a940d0fbc129c6d81142d/log_analyzer-0.0.2-py3-none-any.whl" } ] }