Tango is a command-line tool for analyzing access logs 💃

Overview

Tango

Tango

Tool to get insights from the server access logs


Tango License Gitter

Tango is a dependency-free command-line tool for analyzing access logs 💃

Currently, work on this project is in progress. However, a few pre-releases are ready available to use 🎉

Table of Contents

Installation

macOS

Tango can be installed on macOS via Homebrew:

brew tap roma-glushko/tango
brew install roma-glushko/tango/tango

To upgrade, try to run:

brew upgrade tango

Linux

Tango is available on Linux via Snapcraft. This means that Tango can be installed on:

To upgrade, try to run:

snap refresh tango

Windows

Tango can be installed on Windows via Scoop:

scoop bucket add tango https://github.com/roma-glushko/scoop-tango.git
scoop install tango

To upgrade, try to run:

scoop update tango

Usage

List of available commands:

tango help

Tango Version:

tango -v

Global Options

Filters

// IP filters
tango --ip-filter "127.0.0.1" custom -l access-log.log -r custom.csv
tango --keep-ip-filter "8.8.8.8" custom -l access-log.log -r custom.csv
// URI filters
tango --uri-filter "/test-page" custom -l access-log.log -r custom.csv
tango --keep-uri-filter "/admin/" custom -l access-log.log -r custom.csv
// Time Frame filter
tango --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
// User Agent filters
tango --ua-filter "iPhone OS 12_3_1 like Mac OS X" custom -l access-log.log -r custom.csv
tango --keep-ua-filter "iPhone OS 12_3_1 like Mac OS X" custom -l access-log.log -r custom.csv
// Asset filter
tango --asset-filter "/pub/static/" --asset-filter "/pub/media/" custom -l access-log.log -r custom.csv
// System IP filter
tango --system-ips "127.0.0.1"  --system-ips "1.2.3.4" custom -l access-log.log -r custom.csv

Other

// Base URL info
tango --base-url "https://example.com/" custom -l access-log.log -r custom.csv

Report Commands

Custom Reports

tango --keep-uri-filter "/newsletter/subscriber/new/" custom -l access-log.log -r custom.csv

Use cases:

  • generate a report with all requests from a certain IP
  • generate a report with all requests to a certain URL

Geo Reports

tango geo -l access-log.log -r custom.csv

Geo Report uses MaxMind Geo lib to get Geo information. See Geo Lib command for more info.

Use cases:

  • collects geo information about all IPs that requested the website
  • get request distribution by IP with geo information
  • see all IPs sorted by countries/continents/cities

Example of the report:

Example of the report
IP Country City Continent Sample Request Browser Agent Count of Requests
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
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
178.154.171.62 Russia Europe / Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots) 34

Browser Reports

tango browser -l access-log.log -r custom.csv

Use cases:

  • check how many requests were sent by crawlers
  • check what kind of browsers requested the website
  • check bandwith that was transmitted to all kind of browsers
  • check what crawlers requested the website
Example of the report
Category Browser Requests Bandwith Sample URL User Agents
Crawlers bingbot 629 28.8 MB /black-bag-product Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)
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
Mozilla/5.0 (Linux; Android 9; SM-G960F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.136 MobileSafari/537.36
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36
Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.85 Safari/537.36

Request Reports

tango request -l access-log.log -r custom.csv

Use cases:

  • check how many requests were sent to a certain URL
  • check all URLs that were responded with 404/50X code
  • find requests from security scanners (sort by response codes and look at 404/50X codes which were requested only 1 time)
Example of the report
Path Requests Response Code Referer URLs
/media/catalog/product/black-bag.jpg 20 200 /black-bag
/admin/sales/order/view/order_id/1234 4 200 /admin/sales/order/index/order_id/123
/test321 1 404 /

Pace Reports [Experimental]

tango pace -l access-log.log -r custom.csv

Use cases:

  • check which IPs and how many requests they made during a certain time frame
  • check count of requests per minutes/hours
Example of the report
Hour Group Minute Group IP Browser Pace (req/min) Pace (req/hour)
2020-02-10 04 h 35
2020-02-10 04:06 15
51.15.191.180 Barkrowler/0.9 (+https://babbar.tech/crawler) 10
54.36.150.167 Mozilla/5.0 (compatible; AhrefsBot/6.1; +http://ahrefs.com/robot/) 5
2020-02-10 04:06 15
2020-02-10 04:07 20
66.249.76.89 Googlebot-Image/1.0 20
2020-02-10 04:07 20
2020-02-10 04 h 35

Journey Reports [Experimental]

tango journey -l access-log.log -r custom.csv

Misc Commands

Geo Lib

// Install geo library to be able to generate geo reports
tango geo-lib

Tango uses the MaxMind GeoLite2-City database and stores it under:

  • macOS - /Users/[username]/.tango/GeoLite2-City.mmdb

To be able to manage the Geo lib, you need to generate acceses under MaxMind Account page

Config File

Put the similar content to a .tango.yaml file under your working directory where you analyze logs:

"asset-filter":
  - "/pub/static/"
  - "/pub/media/"
  - "/media/"
  - "/static/"
"ip-filter":
  - "127.0.0.1"
"system-ips":
  # Fastly IPs
  - "23.235.32.0/20"
  - "43.249.72.0/22"
  - "103.244.50.0/24"
  - "103.245.222.0/23"
  - "103.245.224.0/24"
  - "104.156.80.0/20"
  - "151.101.0.0/16"
  - "157.52.64.0/18"
  - "167.82.0.0/17"
  - "167.82.128.0/20"
  - "167.82.160.0/20"
  - "167.82.224.0/20"
  - "172.111.64.0/18"
  - "185.31.16.0/22"
  - "199.27.72.0/21"
  - "199.232.0.0/16"
Comments
  • [Geo] MaxMind changed a way to access Geo DB

    [Geo] MaxMind changed a way to access Geo DB

    Steps to reproduce

    1. Geo Lib installing test is executed on the TravisCI: https://travis-ci.org/roma-glushko/tango/builds/645156066

    Expected result

    All tests are executed without errors.

    Actual results

    2020-02-02_21-34-56 There is an error during execution

    This post might be helpful:

    • https://blog.maxmind.com/2019/12/18/significant-changes-to-accessing-and-using-geolite2-databases/
    • https://github.com/maxmind/geoipupdate
    type:bug component:report:geo type:test-coverage scope:medium 
    opened by roma-glushko 3
  • [Bug] Geo Report can throw an error on saving

    [Bug] Geo Report can throw an error on saving

    There can be an issue during Geo report generation.

    Preconditions

    • The latest version of Tango
    • Any OS (reproduced on macOS)

    Steps to reproduce

    • Run the latest version of Tango like this:
    tango geo -l 2019-10-13-transfer.log -r 10-13-geo-report.csv
    

    Expected result

    Geo report is generated in any case and saved correctly to the file system.

    Actual results

    There is an error in the console:

    💃 Tango is on the scene!
    💃 started to generate a geo report...
    💃 reading access logs...
     433.17 MiB / 433.97 MiB [============================================================]  99.81% 1m7s
    💃 saving the geo report...
    2019/10/14 12:03:05 ipAddress passed to Lookup cannot be nil
    

    No reports are saved.

    type:bug component:report:geo 
    opened by roma-glushko 2
  • [CI] Upload new snaps on Snapcraft

    [CI] Upload new snaps on Snapcraft

    We need to add an ability to release Tango's builds on Snapcraft to let Ubuntu users use the tool.

    References:

    • https://goreleaser.com/snapcraft/
    • https://snapcraft.io/first-snap/golang/macos/package
    component:ci os:linux 
    opened by roma-glushko 2
  • [Bug] Request report is broken

    [Bug] Request report is broken

    Preconditions

    Log File - transfer-ssl-2019-11-21.log

    Steps to reproduce

    Run Report report:

    tango request -l transfer-ssl-2019-11-21.log -r 11-21.request.csv
    

    Expected result

    Request Report is generated successfully.

    Actual results

    Error is thrown, no report is generated:

    💃 Tango is on the scene!
    💃 started to generate a request report...
    💃 reading access logs...
     71.73 MiB / 71.91 MiB [===============================================================]  99.74% 17s
    💃 saving the request report...
    panic: parse %.: invalid URL escape "%."
    
    goroutine 1 [running]:
    tango/internal/usecase/report.(*RequestReportUsecase).GenerateReport(0xc0001437d0, 0x7ffeefbff600, 0x11, 0xc00b42c000, 0x233a9, 0x2771c)
    	/Users/glushko/Documents/Projects/etc/tango/internal/usecase/report/request-report-usecase.go:65 +0x655
    tango/internal/cli/command.RequestReportCommand(0xc0000d0b00, 0x0, 0xc0000e2b60)
    	/Users/glushko/Documents/Projects/etc/tango/internal/cli/command/request-report-command.go:26 +0x3c0
    github.com/urfave/cli.HandleAction(0x14469e0, 0x151dc80, 0xc0000d0b00, 0xc0000d0b00, 0x0)
    	/Users/glushko/go/pkg/mod/github.com/urfave/[email protected]/app.go:514 +0xbe
    github.com/urfave/cli.Command.Run(0x14e7643, 0x7, 0x0, 0x0, 0xc0000ada60, 0x1, 0x1, 0x14f7118, 0x28, 0x0, ...)
    	/Users/glushko/go/pkg/mod/github.com/urfave/[email protected]/command.go:171 +0x4cd
    github.com/urfave/cli.(*App).Run(0xc00011a1c0, 0xc0000b8120, 0x6, 0x6, 0x0, 0x0)
    	/Users/glushko/go/pkg/mod/github.com/urfave/[email protected]/app.go:265 +0x72f
    tango/internal/cli.(*TangoCli).Run(0xc000143f48, 0xc0000b8120, 0x6, 0x6)
    	/Users/glushko/Documents/Projects/etc/tango/internal/cli/tango-cli.go:208 +0x50
    main.main()
    	/Users/glushko/Documents/Projects/etc/tango/main.go:11 +0x5d
    
    type:bug component:report:request 
    opened by roma-glushko 1
  • [Log] Nginx Log has spaces in the end of the log record

    [Log] Nginx Log has spaces in the end of the log record

    Preconditions

    1. Nginx Log in the combined format like this:
    servername.com 1.1.1.1 - - [19/Nov/2019:02:55:46 +0100] "GET /server-status HTTP/1.1" 200 216081 "-" "libwww-perl/6.15" 
    10.10.10.10 2.2.2.2 - - [19/Nov/2019:02:56:46 +0100] "GET /administrator HTTP/1.1" 301 245 "-" "Mozilla/5.0 (Linux; rv:55.0) Gecko/20100101 Firefox/55.0" 
    10.10.10.10 3.3.3.3 - - [19/Nov/2019:02:56:46 +0100] "GET /administrator/ HTTP/1.1" 200 3314 "-" "Mozilla/5.0 (Linux; rv:55.0) Gecko/20100101 Firefox/55.0" 
    servername.com 4.4.4.4 - - [19/Nov/2019:03:00:46 +0100] "GET /server-status HTTP/1.1" 200 216194 "-" "libwww-perl/6.15" 
    

    Steps to reproduce

    1. Run any report with any params on the log

    Expected result

    Log file is parsed and processed

    Actual results

    Nothing is parsed, all information is empty. However, regex pattern is still actual

    type:bug component:log-file 
    opened by roma-glushko 1
  • [Journey] Journey Report miss template while distributing Tango as a binary file

    [Journey] Journey Report miss template while distributing Tango as a binary file

    Preconditions

    1. Any version of Tango
    2. Any OS

    Steps to reproduce

    1. Run journey report

    Expected result

    1. Journey report is generated without errors

    Actual results

    There is an error on saving the report:

    Error on reading journey report template: open template/journey-report.tmpl: no such file or directory
    
    2019-09-15_16-33-19 type:bug component:ci component:report:journey 
    opened by roma-glushko 1
  • [Config] Tango requires creation of .tango.yaml file

    [Config] Tango requires creation of .tango.yaml file

    Description Tango requires the creation of .tango.yaml file to be able to generate reports.

    Expected Result This should be optional and only for those who want to optimize and don't remember useful repeatable configs.

    Actual Result Tango requires .tango.yaml to be able to execute commands even if the file is empty

    type:bug component:config-file type:user-experience 
    opened by roma-glushko 1
  • [Geo] Automatically install MaxMind Geo library

    [Geo] Automatically install MaxMind Geo library

    We need to make usage of Tango geo reports zero configured and don't require people to install and use MaxMind Geo library.

    Reference:

    • https://dev.maxmind.com/geoip/geoip2/geolite2/ - list of zipped libraries
    type:feature component:report:geo 
    opened by roma-glushko 1
  • [Docs] Document usage of the current functionality

    [Docs] Document usage of the current functionality

    The following parts of the Tango CLI should be documented:

    • usage of filters
    • report types
    • examples of report outputs
    • usage of .tango.yaml config file
    type:docs type:enhancement 
    opened by roma-glushko 1
  • [CI] Travis Deployment is failed on Win OS

    [CI] Travis Deployment is failed on Win OS

    Travis Deployment seems to be failed on Win OS only. Deployment Log:

    travis_fold:start:worker_info
    Worker information
    hostname: ec569576-5a39-4651-b763-075e1e5f1061@1.worker-com-6dfdbf9699-mgckx.gce-production-2
    version: v6.2.1 https://github.com/travis-ci/worker/tree/4e3246c044eb4915c2378ffacd0b3d3ed0136bba
    instance: travis-job-7916f5f6-ffc3-4ad2-a694-e898577ea52f travis-ci-onion-1803-containers-1542208204-ad01dca (via amqp)
    startup: 7.394070823s
    travis_fold:end:worker_info
    Secret environment variables are not obfuscated on Windows, please refer to our documentation: https://docs.travis-ci.com/user/best-practices-security
    travis_time:start:0bd629e8
    travis_time:end:0bd629e8:start=1568011450964546800,finish=1568011451005869300,duration=41322500,event=check_unsupported
    travis_time:start:0049e318
    travis_time:end:0049e318:start=1568011451051118100,finish=1568011451090383000,duration=39264900,event=apt_get_update
    travis_time:start:068886f0
    Disabling Windows Defender
    $ powershell -Command Set-MpPreference -DisableArchiveScanning \$true
    $ powershell -Command Set-MpPreference -DisableRealtimeMonitoring \$true
    $ powershell -Command Set-MpPreference -DisableBehaviorMonitoring \$true
    travis_time:end:068886f0:start=1568011451136593500,finish=1568011454032883700,duration=2896290200,event=disable_windows_defender
    Updating gimme
    travis_time:start:001e260c
    
    travis_fold:start:git.checkout
    travis_time:start:0d1a397c
    $ git clone --depth=1 --branch=0.0.0-rc10 https://github.com/roma-glushko/tango.git roma-glushko/tango
    Cloning into 'roma-glushko/tango'...
    travis_time:end:0d1a397c:start=1568011483080530200,finish=1568011484843065800,duration=1762535600,event=checkout
    $ cd roma-glushko/tango
    $ git checkout -qf 0.0.0-rc10
    travis_fold:end:git.checkout
    
    travis_time:end:0d1a397c:start=1568011483080530200,finish=1568011485091393600,duration=2010863400,event=checkout
    $ travis_export_go 1.12.x github.com/roma-glushko/tango
    travis_time:start:106f5b02
    
    Setting environment variables from .travis.yml
    $ export PATH=/snap/bin:$PATH
    $ export GO111MODULE=on
    
    travis_time:end:106f5b02:start=1568011485185325200,finish=1568011485308841100,duration=123515900,event=env
    travis_time:start:1a884014
    $ travis_setup_go
    Note: checking out 'e13541b555075c431e1215cac670f0f322540627'.
    
    You are in 'detached HEAD' state. You can look around, make experimental
    changes and commit them, and you can discard any commits you make in this
    state without impacting any branches by performing another checkout.
    
    If you want to create a new branch to retain commits you create, you may
    do so (now or later) by using -b with the checkout command again. Example:
    
      git checkout -b <new-branch-name>
    
    $ export GOPATH="/c/Users/travis/gopath"
    $ export PATH="/c/Users/travis/gopath/bin:/c/Users/travis/.gimme/versions/go1.12.9.windows.amd64/bin:/snap/bin:/c/Users/travis/bin:/bin:/usr/bin:/c/tools/ruby25/bin:/c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0:/c/Windows/System32/OpenSSH:/c/ProgramData/GooGet:/c/Program Files/Google/Compute Engine/metadata_scripts:/c/Program Files (x86)/Google/Cloud SDK/google-cloud-sdk/bin:/c/Program Files/Google/Compute Engine/sysprep:/c/Program Files/Docker:/c/ProgramData/chocolatey/bin:/c/Program Files/CMake/bin:/c/Program Files/Git/cmd:/c/Program Files/LLVM/bin:/c/Program Files/dotnet:/c/Users/travis/AppData/Local/Microsoft/WindowsApps:/c/ProgramData/chocolatey/lib/mingw/tools/install/mingw64/bin"
    $ export GO111MODULE="on"
    go version go1.12.9 windows/amd64
    travis_time:end:1a884014:start=1568011485359253600,finish=1568011518400310300,duration=33041056700,event=
    $ gimme version
    v1.5.3
    $ go version
    go version go1.12.9 windows/amd64
    travis_fold:start:go.env
    $ go env
    set GOARCH=amd64
    set GOBIN=
    set GOCACHE=C:\Users\travis\AppData\Local\go-build
    set GOEXE=.exe
    set GOFLAGS=
    set GOHOSTARCH=amd64
    set GOHOSTOS=windows
    set GOOS=windows
    set GOPATH=C:/Users/travis/gopath
    set GOPROXY=
    set GORACE=
    set GOROOT=C:\Users\travis\.gimme\versions\go1.12.9.windows.amd64
    set GOTMPDIR=
    set GOTOOLDIR=C:\Users\travis\.gimme\versions\go1.12.9.windows.amd64\pkg\tool\windows_amd64
    set GCCGO=gccgo
    set CC=gcc
    set CXX=g++
    set CGO_ENABLED=1
    set GOMOD=C:\Users\travis\gopath\src\github.com\roma-glushko\tango\go.mod
    set CGO_CFLAGS=-g -O2
    set CGO_CPPFLAGS=
    set CGO_CXXFLAGS=-g -O2
    set CGO_FFLAGS=-g -O2
    set CGO_LDFLAGS=-g -O2
    set PKG_CONFIG=pkg-config
    set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0 -fdebug-prefix-map=C:\Users\travis\AppData\Local\Temp\go-build318432194=/tmp/go-build -gno-record-gcc-switches
    travis_fold:end:go.env
    travis_fold:start:install
    travis_time:start:0fbdf0c9
    $ travis_install_go_dependencies 1.12.x -v
    go get: -t flag is a no-op when using modules
    Fetching https://golang.org/x/sys?go-get=1
    Parsing meta tags from https://golang.org/x/sys?go-get=1 (status code 200)
    get "golang.org/x/sys": found meta tag get.metaImport{Prefix:"golang.org/x/sys", VCS:"git", RepoRoot:"https://go.googlesource.com/sys"} at https://golang.org/x/sys?go-get=1
    go: finding github.com/oschwald/geoip2-golang v1.3.0
    go: finding github.com/urfave/cli v1.21.0
    go: finding github.com/stretchr/testify v1.3.0
    go: finding github.com/cheggaaa/pb v0.0.0-20190702094313-40231cf7fa00
    go: finding github.com/oschwald/maxminddb-golang v1.3.1
    go: finding golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7
    Fetching https://gopkg.in/yaml.v2?go-get=1
    go: finding github.com/BurntSushi/toml v0.3.1
    Parsing meta tags from https://gopkg.in/yaml.v2?go-get=1 (status code 200)
    get "gopkg.in/yaml.v2": found meta tag get.metaImport{Prefix:"gopkg.in/yaml.v2", VCS:"git", RepoRoot:"https://gopkg.in/yaml.v2"} at https://gopkg.in/yaml.v2?go-get=1
    go: finding golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb
    go: finding gopkg.in/yaml.v2 v2.2.2
    go: finding github.com/pmezard/go-difflib v1.0.0
    go: finding github.com/davecgh/go-spew v1.1.0
    go: finding github.com/fatih/color v1.7.0
    go: finding github.com/mattn/go-colorable v0.1.2
    go: finding github.com/mattn/go-runewidth v0.0.4
    go: finding github.com/stretchr/objx v0.1.0
    Fetching https://gopkg.in/check.v1?go-get=1
    Parsing meta tags from https://gopkg.in/check.v1?go-get=1 (status code 200)
    get "gopkg.in/check.v1": found meta tag get.metaImport{Prefix:"gopkg.in/check.v1", VCS:"git", RepoRoot:"https://gopkg.in/check.v1"} at https://gopkg.in/check.v1?go-get=1
    go: finding gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405
    go: finding github.com/mattn/go-isatty v0.0.8
    go: finding golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223
    go: downloading github.com/urfave/cli v1.21.0
    go: downloading github.com/oschwald/geoip2-golang v1.3.0
    go: downloading github.com/cheggaaa/pb v0.0.0-20190702094313-40231cf7fa00
    go: extracting github.com/cheggaaa/pb v0.0.0-20190702094313-40231cf7fa00
    go: downloading github.com/mattn/go-runewidth v0.0.4
    go: extracting github.com/urfave/cli v1.21.0
    go: extracting github.com/oschwald/geoip2-golang v1.3.0
    go: downloading github.com/oschwald/maxminddb-golang v1.3.1
    go: downloading github.com/BurntSushi/toml v0.3.1
    go: downloading gopkg.in/yaml.v2 v2.2.2
    go: extracting github.com/mattn/go-runewidth v0.0.4
    go: extracting github.com/oschwald/maxminddb-golang v1.3.1
    go: extracting github.com/BurntSushi/toml v0.3.1
    go: downloading golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7
    go: extracting gopkg.in/yaml.v2 v2.2.2
    go: extracting golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7
    tango/internal/usecase/config
    github.com/urfave/cli
    github.com/BurntSushi/toml
    gopkg.in/yaml.v2
    github.com/mattn/go-runewidth
    github.com/cheggaaa/pb
    tango/internal/domain/entity
    github.com/urfave/cli/altsrc
    tango/internal/usecase/mapper
    tango/internal/usecase/processor
    tango/internal/cli/factory
    tango/internal/usecase
    golang.org/x/sys/windows
    tango/internal/infrastructure/reader
    tango/internal/cli/component
    tango/internal/usecase/filter
    github.com/oschwald/maxminddb-golang
    github.com/oschwald/geoip2-golang
    tango/internal/usecase/report
    tango/internal/infrastructure/writer
    tango/internal/di
    tango/internal/cli/command
    tango/internal/cli
    tango
    travis_time:end:0fbdf0c9:start=1568011519825266700,finish=1568011549226993700,duration=29401727000,event=install
    travis_fold:end:install
    travis_fold:start:before_script
    travis_time:start:0840730e
    $ go get -t -v ./...
    go get: -t flag is a no-op when using modules
    travis_time:end:0840730e:start=1568011549281840200,finish=1568011550391542600,duration=1109702400,event=before_script
    travis_fold:end:before_script
    travis_time:start:01d1a41c
    $ go build
    travis_time:end:01d1a41c:start=1568011550442358800,finish=1568011553653541700,duration=3211182900,event=script
    The command "go build" exited with 0.
    travis_time:start:2dd6fcf2
    $ go test
    ?   	tango	[no test files]
    travis_time:end:2dd6fcf2:start=1568011553704821000,finish=1568011567879185200,duration=14174364200,event=script
    The command "go test" exited with 0.
    
    travis_fold:start:dpl_0
    travis_time:start:2713b210
    $ ruby -S gem install dpl
    Successfully installed dpl-1.10.12
    Parsing documentation for dpl-1.10.12
    Installing ri documentation for dpl-1.10.12
    Done installing documentation for dpl after 0 seconds
    1 gem installed
    travis_time:end:2713b210:start=1568011568571112900,finish=1568011571759897300,duration=3188784400,event=after_success
    travis_fold:end:dpl_0
    travis_time:start:24551688
    Successfully installed dpl-script-1.10.12
    Parsing documentation for dpl-script-1.10.12
    Installing ri documentation for dpl-script-1.10.12
    Done installing documentation for dpl-script after 0 seconds
    1 gem installed
    The system cannot find the path specified.
    The system cannot find the path specified.
    main: line 10: rev: command not found
    main: line 12: rev: command not found
    travis_fold:start:dpl.1
    Installing deploy dependencies
    
    travis_fold:end:dpl.1
    travis_fold:start:dpl.2
    Preparing deploy
    
    travis_fold:end:dpl.2
    travis_fold:start:dpl.3
    Deploying application
    
    travis_fold:end:dpl.3
    failed to deploy
    Script failed with status 127
    

    Error:

    Parsing documentation for dpl-script-1.10.12
    Installing ri documentation for dpl-script-1.10.12
    Done installing documentation for dpl-script after 0 seconds
    1 gem installed
    The system cannot find the path specified.
    The system cannot find the path specified.
    main: line 10: rev: command not found
    main: line 12: rev: command not found
    travis_fold:start:dpl.1
    
    type:bug component:ci os:win 
    opened by roma-glushko 1
  • [WIP] Upgrading Tango to go1.18 💃

    [WIP] Upgrading Tango to go1.18 💃

    Finally, I was able to dedicate a bit of time to fix a few blocking issues:

    • https://github.com/roma-glushko/tango/issues/49 - first of all, Homebrew has deprecated some directives in their taps which broke Tango installation on macOS. A few people reported that to me but I guess, unfortunately, many more got affected.
    • https://github.com/roma-glushko/homebrew-tango/issues/2 - since the last release, Apple released a new M1 processor architecture. In order to include it into Tango buillds, I have updated the project Golang version from 1.13 to the latest 1.18.

    Changeset

    • updated the Tango Brew Tag to remove deprecated directives
    • brought support for Apple M1 processors
    • updated project golang version to 1.18
    • moved from TravisCI to Github Actions
    • updated the GoReleaser config file to support all release destinations just like before
    opened by roma-glushko 0
  • [Docs] The gif in the `README.md` isn't very helpfull

    [Docs] The gif in the `README.md` isn't very helpfull

    Description

    The first gif in the readme directly caught my attention. I've been staring at it for 30 sec, to wait for the "demo" to start. But instead, it just starts over. An animation of a progress bar isn't really helpful.

    I think it would be more awesome if it could show the output. Provide a glimpse of what this project provides. What happens once the logs have been "read"?

    Additional information

    tango

    type:docs type:enhancement 
    opened by smeijer 1
  • [Browser] Add an ability to specify browser classification from the config file

    [Browser] Add an ability to specify browser classification from the config file

    Description

    It's good to have a way to specify a custom browser classification from the config file.

    Expected behavior

    It's possible to specify that SuperCustomChCrawler2.0 is a part of the Crawler group.

    Benefits

    Let users better control their browser reports

    type:enhancement type:feature component:config-file type:user-experience component:report:browser 
    opened by roma-glushko 0
  • [Logs] Multithread access log analyze

    [Logs] Multithread access log analyze

    Description

    It should be possible to analyze access logs in multiple threads to speed up the tool.

    Benefits

    Better user experience and less time to wait during huge log analysis

    type:enhancement type:user-experience component:report component:log-file scope:large 
    opened by roma-glushko 0
  • [Logs] Support reading access log data from the stream

    [Logs] Support reading access log data from the stream

    Description

    It should be possible to read access logs not only from files but also from streams like

    zcat access.log.gz | tango custom -r custom.csv
    

    Benefits

    It would be possible to analyze compressed logs on the fly without unarchiving them.

    type:enhancement type:feature component:log-file scope:medium 
    opened by roma-glushko 0
  • [Logs] Support huge access log analysis

    [Logs] Support huge access log analysis

    Description

    Currently, Tango is only working with memory during log analysis. On the large scale projects, it may be an issue to analyze access logs as they Gb-sized.

    Expected behavior

    It's possible to use disk space to store information during access log analysis.

    Benefits

    Better support of large-scale projects with a demand to analyze huge access logs

    Additional information

    B+Tree can be used here.

    type:enhancement type:feature component:log-file scope:large 
    opened by roma-glushko 0
  • [Logs] Support multiple logs parsing at the same time

    [Logs] Support multiple logs parsing at the same time

    Description

    This may be helpful to support analyzing a group of logs at the same time to include their data to the same report.

    Benefits

    Streamline analyzing of big amount of access logs

    type:enhancement type:feature component:report scope:medium 
    opened by roma-glushko 0
Releases(1.1.1)
Owner
Roman Glushko
ML/DL and Software Engineer, R&D @DataRobot
Roman Glushko
The swiss army knife for Magento developers, sysadmins and devops. The tool provides a huge set of well tested command line commands which save hours of work time. All commands are extendable by a module API.

netz98 magerun CLI tools for Magento 2 The n98 magerun cli tools provides some handy tools to work with Magento from command line. Build Status Latest

netz98 758 Dec 28, 2022
m4b-tool is a command line utility to merge, split and chapterize audiobook files such as mp3, ogg, flac, m4a or m4b

m4b-tool m4b-tool is a is a wrapper for ffmpeg and mp4v2 to merge, split or and manipulate audiobook files with chapters. Although m4b-tool is designe

Andreas 798 Jan 8, 2023
🎮 A simple command line tool for installing and interacting with your leaf apps

Leaf CLI 2 A simple command line tool for creating and interacting with your leaf projects. You can do stuff like installing packages, interacting wit

Leaf Framework 7 Aug 24, 2022
Demo of symfony/console features to build rich command line utilities

Symfony Console Demo This project is a demonstration of symfony/console features. To run the project with Docker. With bash: docker build -t myconsole

Jérôme Tamarelle 3 Jun 16, 2022
TrovCMS command line installer.

Trov CMS Installer TrovCMS is a start kit for websites, built on Filament and Laravel. This install allows you to quickly spin up new sites to hit the

TrovCMS 12 Dec 26, 2022
Rugby schedules on the command-line

Rugby Schedule Rugby Schedule is a command-line tool that keeps you up to date with rugby tournament schedules. Install Requires PHP 8.0 or later Via

Owen Voke 0 Mar 17, 2022
Command line of the website.

Deutsch English Svenska Command 0.8.42 Command line of the website. How to use the command line Open a terminal window. Go to your installation folder

Anna 2 Dec 15, 2022
A collection of command-line utilities to aid in debugging browser engines.

Browser debug utilities This project contains several scripts that make the process of debugging browser engines much easier (some special cases excep

Clay Freeman 5 May 29, 2023
Rafel is Remote Access Tool Used to Control Victims Using WebPanel With More Advance Features..

Rafel is Remote Access Tool Used to Control Victims Using WebPanel With More Advance Features..

swagkarna 690 Dec 28, 2022
A tool for managing SSH key access to any number of servers.

Revons - SSH Key Authority Features Easily manage SSH key access for all accounts on your servers. Manage user access and server-to-server access rule

Revons Community 1 Mar 14, 2022
Dispatcher is a Laravel artisan command scheduling tool used to schedule artisan commands within your project so you don't need to touch your crontab when deploying.

Dispatcher Dispatcher allows you to schedule your artisan commands within your Laravel project, eliminating the need to touch the crontab when deployi

Indatus 1.1k Dec 21, 2022
Easily add logs anywhere in your Magento 2 code

Magento 2 Simple Log Easily add logs anywhere in the code (like Magento 1). Requirements Requires Magento 2 in any version. Installation Add the Log.p

Matthieu Vion 19 Dec 27, 2021
The package provides the ability to write logs into the database synchronously or asynchronously, along with other logging channels.

Laravel database log channel The package provides the ability to write logs into the database synchronously or asynchronously, along with other loggin

Jarosław Goszowski 18 Nov 28, 2022
Provides the ability to notify developers of error logs via email or SMS.

?? Dev Notify Plugin ?? Requires OctoberCMS 2.0 ✨ What does this plugin do? Provides the ability to notify developers of error logs via email or SMS.

Albright Labs 1 Mar 28, 2022
Unterstützung bei der DSGVO-konformen Umsetzung von ein oder mehreren REDAXO-Websites, indem Logs und Daten nach festgelegten Regeln gelöscht werden.

Auto-Delete-Addon für REDAXO 5.x Löscht alte Logs und Datensätze via Cronjob. Features YForm-Feld datestamp_auto_delete Ein Feld für YForm, das wie da

alex+ Informationsdesign 4 May 18, 2022
PHP_Depend is an adaptation of the established Java development tool JDepend. This tool shows you the quality of your design in terms of extensibility, reusability and maintainability.

PHP Depend Documentation PHP Depend for enterprise Available as part of the Tidelift Subscription. The maintainers of PHP Depend and thousands of othe

PHP_Depend 837 Dec 14, 2022
Biblioteca para busca (on-line) de estados e os seus respectivos municípios via API disponibilizada pelo IBGE.

LocalidadeX Biblioteca para busca (on-line) e listagem de estados e seus respectivos municípios, efetua a consulta via API do IBGE, disponibilizando o

Estênio Mariano 3 Feb 12, 2022
Disclaimer: The documentation of this plugin is English at the moment, but I might go for Latin later down the line, just for the fun of it.

Quiritibus Plugin This repository is storing the custom plugin developed for the Quiritibus Latin Magazine website, currently being developed at: http

Alkor András 1 Jan 19, 2022