{"id":13527765,"url":"https://github.com/roma-glushko/tango","last_synced_at":"2026-02-17T19:10:15.832Z","repository":{"id":36626624,"uuid":"198282902","full_name":"roma-glushko/tango","owner":"roma-glushko","description":"Tango is a command-line tool for analyzing access logs 💃","archived":false,"fork":false,"pushed_at":"2026-02-17T17:45:00.000Z","size":6832,"stargazers_count":113,"open_issues_count":26,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-02-17T17:47:37.217Z","etag":null,"topics":["access-logs","analysis","analytics","analyzer","apache-log","apache-log-analysis","devops","devops-tools","go","golang","monitoring","tango-logs","user-agent"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/roma-glushko.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-07-22T18:43:52.000Z","updated_at":"2026-02-17T17:44:01.000Z","dependencies_parsed_at":"2023-02-15T19:15:58.573Z","dependency_job_id":null,"html_url":"https://github.com/roma-glushko/tango","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/roma-glushko/tango","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roma-glushko%2Ftango","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roma-glushko%2Ftango/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roma-glushko%2Ftango/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roma-glushko%2Ftango/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/roma-glushko","download_url":"https://codeload.github.com/roma-glushko/tango/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roma-glushko%2Ftango/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29554513,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-17T18:16:07.221Z","status":"ssl_error","status_checked_at":"2026-02-17T18:16:04.782Z","response_time":100,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["access-logs","analysis","analytics","analyzer","apache-log","apache-log-analysis","devops","devops-tools","go","golang","monitoring","tango-logs","user-agent"],"created_at":"2024-08-01T06:02:00.561Z","updated_at":"2026-02-17T19:10:11.744Z","avatar_url":"https://github.com/roma-glushko.png","language":"Go","funding_links":[],"categories":["Go","Tools"],"sub_categories":["Meet Magento"],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"Tango\" src=\"https://raw.githubusercontent.com/roma-glushko/tango/master/doc/tango-logo.png\" height=\"90\" /\u003e\n  \u003ch3 align=\"center\"\u003eTango\u003c/h3\u003e\n  \u003cp align=\"center\"\u003eTool to get insights from the server access logs\u003c/p\u003e\n\u003c/p\u003e\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://travis-ci.org/roma-glushko/tango\" alt=\"Build Status\"\u003e\u003cimg alt=\"Tango\" src=\"https://travis-ci.org/roma-glushko/tango.svg?branch=master\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/roma-glushko/tango/blob/master/LICENSE\" alt=\"License\"\u003e\u003cimg alt=\"License\" src=\"https://img.shields.io/github/license/roma-glushko/tango\" /\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/WIP-Work%20In%20Progress-yellow.svg\" /\u003e\n   \u003ca href=\"https://gitter.im/roma-glushko-tango/community?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\" alt=\"Gitter\"\u003e\u003cimg alt=\"Gitter\" src=\"https://badges.gitter.im/roma-glushko-tango/community.svg\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/roma-glushko/tango/master/doc/tango.gif\" width=\"500px\" /\u003e\n\u003c/p\u003e\n\nTango is a dependency-free command-line tool for analyzing access logs 💃\n\nCurrently, work on this project is in progress. \nHowever, a few pre-releases are ready available to use 🎉\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [Filters](#filters)\n- [Report Commands](#report-commands)\n- [Misc Commands](#misc-commands)\n- [Config File](#misc-commands)\n\n## Installation\n\n### macOS\n\n\u003cp align=\"center\"\u003e\t\n  \u003cimg src=\"https://raw.githubusercontent.com/roma-glushko/tango/master/doc/tango-install-homebrew.gif\" width=\"500px\" /\u003e\n\u003c/p\u003e\n\nTango can be installed on macOS via \u003ca href=\"https://brew.sh/\"\u003eHomebrew\u003c/a\u003e:\n\n```bash\nbrew tap roma-glushko/tango\nbrew install roma-glushko/tango/tango\n```\n\nTo upgrade, try to run:\n\n```bash\nbrew upgrade tango\n```\n\n### Linux\n\nTango is available on Linux via \u003ca href=\"https://snapcraft.io/tango\"\u003eSnapcraft\u003c/a\u003e.\nThis means that Tango can be installed on:\n\n- \u003ca href=\"https://snapcraft.io/install/tango/ubuntu\"\u003eUbuntu\u003c/a\u003e\n- \u003ca href=\"https://snapcraft.io/install/tango/debian\"\u003eDebian\u003c/a\u003e\n- \u003ca href=\"https://snapcraft.io/install/tango/centos\"\u003eCentOS\u003c/a\u003e\n- \u003ca href=\"https://snapcraft.io/install/tango/opensuse\"\u003eopenSUSE\u003c/a\u003e\n- \u003ca href=\"https://snapcraft.io/install/tango/mint\"\u003eLinux Mint\u003c/a\u003e\n- \u003ca href=\"https://snapcraft.io/install/tango/fedora\"\u003eFedora\u003c/a\u003e\n- \u003ca href=\"https://snapcraft.io/install/tango/kubuntu\"\u003eKubuntu\u003c/a\u003e\n- \u003ca href=\"https://snapcraft.io/install/tango/elementary\"\u003eelementary OS\u003c/a\u003e\n- \u003ca href=\"https://snapcraft.io/install/tango/arch\"\u003eArch Linux\u003c/a\u003e\n- \u003ca href=\"https://snapcraft.io/install/tango/kde-neon\"\u003eKDE Neon\u003c/a\u003e\n- \u003ca href=\"https://snapcraft.io/install/tango/manjaro\"\u003eManjaro\u003c/a\u003e\n\nTo upgrade, try to run:\n\n```bash\nsnap refresh tango\n```\n\n### Windows\n\nTango can be installed on Windows via \u003ca href=\"https://scoop.sh/\"\u003eScoop\u003c/a\u003e:\n\n```bash\nscoop bucket add tango https://github.com/roma-glushko/scoop-tango.git\nscoop install tango\n```\n\nTo upgrade, try to run:\n\n```bash\nscoop update tango\n```\n\n## Usage\n\nList of available commands:\n\n```bash\ntango help\n```\n\nTango Version:\n\n```bash\ntango -v\n```\n\n### Global Options\n\n#### Filters\n\n```bash\n// IP filters\ntango --ip-filter \"127.0.0.1\" custom -l access-log.log -r custom.csv\ntango --keep-ip-filter \"8.8.8.8\" custom -l access-log.log -r custom.csv\n```\n\n```bash\n// URI filters\ntango --uri-filter \"/test-page\" custom -l access-log.log -r custom.csv\ntango --keep-uri-filter \"/admin/\" custom -l access-log.log -r custom.csv\n```\n\n```bash\n// Time Frame filter\ntango --keep-time-filter \"2019-09-15 04:16:00 -0400\" --keep-time-filter \"2019-09-15 04:35:00 -0400\" custom -l access-log.log -r custom.csv\n```\n\n```bash\n// User Agent filters\ntango --ua-filter \"iPhone OS 12_3_1 like Mac OS X\" custom -l access-log.log -r custom.csv\ntango --keep-ua-filter \"iPhone OS 12_3_1 like Mac OS X\" custom -l access-log.log -r custom.csv\n```\n\n```bash\n// Asset filter\ntango --asset-filter \"/pub/static/\" --asset-filter \"/pub/media/\" custom -l access-log.log -r custom.csv\n```\n\n```bash\n// System IP filter\ntango --system-ips \"127.0.0.1\"  --system-ips \"1.2.3.4\" custom -l access-log.log -r custom.csv\n```\n\n#### Other\n\n```bash\n// Base URL info\ntango --base-url \"https://example.com/\" custom -l access-log.log -r custom.csv\n```\n\n### Report Commands\n\n#### Custom Reports\n\n```bash\ntango --keep-uri-filter \"/newsletter/subscriber/new/\" custom -l access-log.log -r custom.csv\n```\n\nUse cases:\n\n- generate a report with all requests from a certain IP\n- generate a report with all requests to a certain URL\n\n#### Geo Reports\n\n```bash\ntango geo -l access-log.log -r custom.csv\n```\n\nGeo Report uses MaxMind Geo lib to get Geo information. \nSee \u003ca href=\"#geo-lib\"\u003eGeo Lib command\u003c/a\u003e for more info.\n\nUse cases:\n\n- collects geo information about all IPs that requested the website\n- get request distribution by IP with geo information\n- see all IPs sorted by countries/continents/cities  \n\nExample of the report:\n\n\u003cdetails\u003e\n  \u003csummary\u003eExample of the report\u003c/summary\u003e\n  \n  | IP             | Country       | City    | Continent     | Sample Request | Browser Agent                                                            | Count of Requests |\n|----------------|---------------|---------|---------------|----------------|--------------------------------------------------------------------------|-------------------|\n| 46.229.173.68  | United States | Ashburn | North America | /robots.txt    | Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) | 362               |\n| 40.77.167.91   | United States | Boydton | North America | /contact-us    | Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)  | 3                 |\n| 178.154.171.62 | Russia        |         | Europe        | /              | Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)         | 34                |\n  \n\u003c/details\u003e\n\n#### Browser Reports\n\n```bash\ntango browser -l access-log.log -r custom.csv\n```\n\nUse cases:\n\n- check how many requests were sent by crawlers\n- check what kind of browsers requested the website\n- check bandwith that was transmitted to all kind of browsers\n- check what crawlers requested the website\n\n\u003cdetails\u003e\n  \u003csummary\u003eExample of the report\u003c/summary\u003e\n  \n  | Category | Browser | Requests | Bandwith | Sample URL | User Agents |\n|----------|---------|----------|----------|--------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Crawlers | bingbot | 629 | 28.8 MB | /black-bag-product | Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm) |\n| Chrome | Chrome | 131998 | 1.3 GB | /gears/bags?p=3 | Mozilla/5.0 (Linux; Android 8.0.0; G8441) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.136 Mobile Safari/537.36\u003cbr\u003eMozilla/5.0 (Linux; Android 9; SM-G960F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.136 MobileSafari/537.36\u003cbr\u003eMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36\u003cbr\u003eMozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.85 Safari/537.36 |\n  \n\u003c/details\u003e\n\n#### Request Reports\n\n```bash\ntango request -l access-log.log -r custom.csv\n```\n\nUse cases:\n\n- check how many requests were sent to a certain URL\n- check all URLs that were responded with 404/50X code\n- find requests from security scanners (sort by response codes and look at 404/50X codes which were requested only 1 time)\n\n\u003cdetails\u003e\n  \u003csummary\u003eExample of the report\u003c/summary\u003e\n  \n  | Path | Requests | Response Code | Referer URLs |\n|---------------------------------------|----------|---------------|---------------------------------------|\n| /media/catalog/product/black-bag.jpg | 20 | 200 | /black-bag |\n| /admin/sales/order/view/order_id/1234 | 4 | 200 | /admin/sales/order/index/order_id/123 |\n| /test321 | 1 | 404 | / |\n  \n\u003c/details\u003e\n\n#### Pace Reports [Experimental]\n\n```bash\ntango pace -l access-log.log -r custom.csv\n```\n\nUse cases:\n\n- check which IPs and how many requests they made during a certain time frame\n- check count of requests per minutes/hours\n\n\u003cdetails\u003e\n  \u003csummary\u003eExample of the report\u003c/summary\u003e\n  \n  | Hour Group | Minute Group | IP | Browser | Pace (req/min) | Pace (req/hour) |\n|-----------------|------------------|---------------|--------------------------------------------------------------------|----------------|-----------------|\n| 2020-02-10 04 h |  |  |  |  | 35 |\n|  | 2020-02-10 04:06 |  |  | 15 |  |\n|  |  | 51.15.191.180 | Barkrowler/0.9 (+https://babbar.tech/crawler) | 10 |  |\n|  |  | 54.36.150.167 | Mozilla/5.0 (compatible; AhrefsBot/6.1; +http://ahrefs.com/robot/) | 5 |  |\n|  | 2020-02-10 04:06 |  |  | 15 |  |\n|  | 2020-02-10 04:07 |  |  | 20 |  |\n|  |  | 66.249.76.89 | Googlebot-Image/1.0 | 20 |  |\n|  | 2020-02-10 04:07 |  |  | 20 |  |\n| 2020-02-10 04 h |  |  |  |  | 35 |\n  \n\u003c/details\u003e\n\n#### Journey Reports [Experimental]\n\n```bash\ntango journey -l access-log.log -r custom.csv\n```\n\n### Misc Commands\n\n#### Geo Lib\n\n```bash\n// Install geo library to be able to generate geo reports\ntango geo-lib\n```\n\nTango uses the MaxMind GeoLite2-City database and stores it under:\n\n- macOS - `/Users/[username]/.tango/GeoLite2-City.mmdb`\n\nTo be able to manage the Geo lib, you need to generate acceses under \u003ca href=\"https://www.maxmind.com/en/accounts/current/license-key\"\u003eMaxMind Account\u003c/a\u003e page\n\n### Config File\n\nPut the similar content to a `.tango.yaml` file under your working directory where you analyze logs: \n\n```yaml\n\"asset-filter\":\n  - \"/pub/static/\"\n  - \"/pub/media/\"\n  - \"/media/\"\n  - \"/static/\"\n\"ip-filter\":\n  - \"127.0.0.1\"\n\"system-ips\":\n  # Fastly IPs\n  - \"23.235.32.0/20\"\n  - \"43.249.72.0/22\"\n  - \"103.244.50.0/24\"\n  - \"103.245.222.0/23\"\n  - \"103.245.224.0/24\"\n  - \"104.156.80.0/20\"\n  - \"151.101.0.0/16\"\n  - \"157.52.64.0/18\"\n  - \"167.82.0.0/17\"\n  - \"167.82.128.0/20\"\n  - \"167.82.160.0/20\"\n  - \"167.82.224.0/20\"\n  - \"172.111.64.0/18\"\n  - \"185.31.16.0/22\"\n  - \"199.27.72.0/21\"\n  - \"199.232.0.0/16\"\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froma-glushko%2Ftango","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Froma-glushko%2Ftango","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froma-glushko%2Ftango/lists"}