Sha256: beefb98b13a8a5d7c37d0a01da0c01f4cebf0f634a9487e1402b14c33d2af6f9

Contents?: true

Size: 1.51 KB

Versions: 3

Compression:

Stored size: 1.51 KB

Contents

#!/usr/bin/env ruby

#############################################################################
# This example script shows custom parsing of API requests from a log file.
#############################################################################

$:.unshift(File.dirname(__FILE__) + '/../lib')

require 'log_stats'
require "log_stats/config"
require "json"
require "uri"

parse_time = Proc.new { |line| line[/\b20\d\d-\d\d-\d\dT\d\d:\d\d:\d\d/] }
custom_config = {
  events: LogStats::Config.default_config[:events].merge({
    api_calls: {
      # 2017-02-19T06:21:25.522274+00:00 app[worker.2]: [WARN] [Vac::Request] Slow response time for url=http://sumore02.cmore.dk/api/tve_web/search/categories/160145/assets/ method=get status=304 size= response_time=141
      line_pattern: /\s\[Vac::Request\] Slow response time\s/,
      fields: [
        {name: :time, parse: parse_time},
        {name: :url},
        {name: :method},
        {name: :response_time, numeric: true, events: true}
      ],
      group_by: {
        hostname: {
          id: Proc.new { |api_call| URI(api_call[:url]).host }
        },
        method: {
          id: Proc.new { |api_call| URI(api_call[:method]) }
        }
      }
    }
  }),
  verbose: false
}
config = LogStats::Config.default_config.
          merge(custom_config).
          merge(LogStats::Config.env_config)

log_file_data = ARGF.read
data = LogStats.get_data(log_file_data, config)
data[:requests] = data[:requests][:kpi] # Only output KPI from requests data
puts JSON.pretty_generate(data)

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
log_stats-0.4.2 example/log_stats
log_stats-0.4.1 example/log_stats
log_stats-0.4.0 example/log_stats