Project

log_stats

0.0
No commit activity in last 3 years
No release in over 3 years
Extract request statistics from Heroku logs
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

~> 1.13
~> 5.0
~> 10.0
 Project Readme

Log Stats

A rubygem for extracting response time and error stats based on log files such as the Heroku router log. Example usage with Heroku addon papertrail:

gem install papertrail
PAPERTRAIL_API_TOKEN=... papertrail --min-time "yesterday 22:00" --max-time "yesterday 22:30" > tmp/papertrail.log
gem install log_stats
log_stats /tmp/papertrail.log

To download longer timeperiods, like a whole day, download and gunzip a Papertrail log archive file, see examples/papertrail_download.

You can extract not only web requests but any events you are interested in from your logs. Here is the API call stats output from the examples/log_stats script:

"requests": {
  "request_count": 265325,
  "response_time_avg": 694.01984,
  "response_time_95p": 2647,
  "apdex": 0.7886,
  "error_rate": 0.00024,
  "timeout_rate": 0.00017
}
"api_calls": {
    "count": 410207,
    "fields": {
      "response_time": {
        "min": 9,
        "max": 17016,
        "avg": 151.11675324896942,
        "median": 136,
        "percentiles": {
          "0.05": 100,
          "0.1": 104,
          "0.15": 108,
          "0.2": 111,
          "0.25": 115,
          "0.3": 119,
          "0.35": 122,
          "0.4": 127,
          "0.45": 131,
          "0.5": 136,
          "0.55": 140,
          "0.6": 145,
          "0.65": 149,
          "0.7": 154,
          "0.75": 162,
          "0.8": 172,
          "0.85": 188,
          "0.9": 211,
          "0.95": 244,
          "0.99": 394,
          "0.999": 1116
        },
        "events": [
          {
            "time": "2017-02-27T14:49:12",
            "url": "https://account.example.se/operators?client=web&country_code=se",
            "method": "get",
            "response_time": 17016
          },
          {
            "time": "2017-02-27T18:56:48",
            "url": "http://sumore02.example.se/api/tve_web/user",
            "method": "get",
            "response_time": 15164
          },
          ...

Example Heroku success log line:

768004272804798492	2017-02-14T03:41:49	2017-02-14T03:41:49Z	505641143	example-web-prod	54.144.85.82	Local3	Info	heroku/router	at=info method=GET path="/filmer/med/glenn-erland-tosterud" host=www.example.se request_id=29cb0a66-23f9-4ef4-999a-65f8de089208 fwd="216.244.66.238,23.54.19.54" dyno=web.5 connect=0ms service=210ms status=200 bytes=52867

Example Heroku error log line:

768277650920906757	2017-02-14T21:48:07	2017-02-14T21:48:08Z	505641143	example-web-prod	54.196.126.116	Local3	Info	heroku/router	at=error code=H12 desc="Request timeout" method=GET path="/serie/74763-alvinnn-og-gjengen-tv-serien/sesong-1/episode-2/3282212-alvinnn-og-gjengen-tv-serien-forelsket-i-rektor-norsk-tale" host=www.example.no request_id=f5c2921a-3974-4522-8fdf-d9bfff8b1db9 fwd="163.172.66.89,80.239.216.108" dyno=web.5 connect=0ms service=30001ms status=503 bytes=0

License

The gem is available as open source under the terms of the MIT License.

Resources: