pghero_logs 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 8f8b5d851faf229e427810b291ef3a2068216d92
4
- data.tar.gz: fb636212dda98475282259a8db5c41508157e0c6
2
+ SHA256:
3
+ metadata.gz: 88cdc44ddd7ab736d806fce6f11f9cd3546a4f044494a6b30997f48527fe4100
4
+ data.tar.gz: f7e1c289a5218b31c0e24c318cc22c90f3f7917a517d5cfd94b7aac542859d5a
5
5
  SHA512:
6
- metadata.gz: 705475d75a5d635b3b6c2f9884b20b1a2cc06c46d2a24b167cc374e887de6c267a85692537498d625cfb53cb22178e283035b198c4245410885c1308666b96a6
7
- data.tar.gz: 7550be72e4b8b4f924c37236a438911c056b78f3d39be0e5f761e0355bd5b37ef8c811777c4793b772e0bcd64d4522628e57d5865abc9019013fdcc8bf57e7ae
6
+ metadata.gz: 05c2420f1175517bc91134c01813e156ab9368e7daf66b87fa06db0c2dbc3fe11c28f85a54648b55f79c33dec05e73e5b576af78b67232b91dc293fc7c24bc5d
7
+ data.tar.gz: 48b1b35bf3af830c21b66c2337af15b3646d71555abcc8d37db4eb95b3c645bbd9166f8a7703f5ba000edd093b1b424a20eb94672a461086e8f1471fba603a70
data/CHANGELOG.md ADDED
@@ -0,0 +1,10 @@
1
+ ## 0.2.0 (2022-01-14)
2
+
3
+ - Added support for Ruby 3+
4
+ - Improved error messages
5
+ - Improved log parsing
6
+ - Dropped support for Ruby < 2.5
7
+
8
+ ## 0.1.0 (2017-09-27)
9
+
10
+ - Started changelog
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2014 Andrew Kane
1
+ Copyright (c) 2014-2022 Andrew Kane
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -16,7 +16,7 @@ Total Avg Count Query
16
16
  gem install pghero_logs
17
17
  ```
18
18
 
19
- It can take 10 minutes or more to compile the [query parser](https://pganalyze.com/blog/parse-postgresql-queries-in-ruby.html) :clock2:
19
+ It can take a few minutes to compile the [query parser](https://pganalyze.com/blog/parse-postgresql-queries-in-ruby.html) :clock2:
20
20
 
21
21
  Tell Postgres to log slow queries in `postgresql.conf`
22
22
 
@@ -27,26 +27,26 @@ log_min_duration_statement = 20 # ms
27
27
  Analyze the logs
28
28
 
29
29
  ```sh
30
- cat /usr/local/var/postgres/server.log | pghero_logs
30
+ cat /usr/local/var/log/postgres.log | pghero_logs
31
31
  ```
32
32
 
33
33
  ## Amazon RDS
34
34
 
35
35
  First, download the logs. Create an IAM user with the policy below
36
36
 
37
- ```sh
37
+ ```json
38
38
  {
39
- "Statement": [
40
- {
41
- "Sid": "Stmt1410669817271",
42
- "Action": [
43
- "rds:DescribeDBLogFiles",
44
- "rds:DownloadDBLogFilePortion"
45
- ],
46
- "Effect": "Allow",
47
- "Resource": "*"
48
- }
49
- ]
39
+ "Version": "2012-10-17",
40
+ "Statement": [
41
+ {
42
+ "Action": [
43
+ "rds:DescribeDBLogFiles",
44
+ "rds:DownloadDBLogFilePortion"
45
+ ],
46
+ "Effect": "Allow",
47
+ "Resource": "*"
48
+ }
49
+ ]
50
50
  }
51
51
  ```
52
52
 
@@ -72,7 +72,8 @@ brew install pgbadger
72
72
  And run
73
73
 
74
74
  ```sh
75
- pgbadger --prefix "%t:%r:%u@%d:[%p]:" --outfile pgbadger.html postgresql.log* && open pgbadger.html
75
+ pgbadger --prefix "%t:%r:%u@%d:[%p]:" --outfile pgbadger.html postgresql.log*
76
+ open pgbadger.html
76
77
  ```
77
78
 
78
79
  Thanks to [RDS PgBadger](https://github.com/sportngin/rds-pgbadger) for the prefix.
File without changes
@@ -1,3 +1,3 @@
1
1
  module PgheroLogs
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
data/lib/pghero_logs.rb CHANGED
@@ -1,10 +1,13 @@
1
- require "pghero_logs/version"
1
+ # dependencies
2
+ require "aws-sdk-rds"
2
3
  require "pg_query"
3
- require "aws-sdk"
4
+
5
+ # modules
6
+ require "pghero_logs/version"
4
7
 
5
8
  module PgHeroLogs
6
9
  class << self
7
- REGEX = /duration: (\d+\.\d+) ms execute <unnamed>: (.+)?/i
10
+ REGEX = /duration: (\d+\.\d+) ms (?:statement|execute [^:]+): (.+)/
8
11
 
9
12
  def run(args)
10
13
  command = args[0]
@@ -16,14 +19,16 @@ module PgHeroLogs
16
19
  else
17
20
  abort "Unknown command: #{command}"
18
21
  end
22
+ rescue Aws::RDS::Errors::AccessDenied, Aws::RDS::Errors::DBInstanceNotFound => e
23
+ abort e.message
19
24
  end
20
25
 
21
26
  protected
22
27
 
23
28
  def download(db_instance_identifier)
24
29
  db_instance_identifier ||= ENV["AWS_DB_INSTANCE_IDENTIFIER"]
25
- rds = AWS::RDS.new
26
- resp = rds.client.describe_db_log_files(db_instance_identifier: db_instance_identifier)
30
+ rds = Aws::RDS::Client.new
31
+ resp = rds.describe_db_log_files(db_instance_identifier: db_instance_identifier)
27
32
  files = resp[:describe_db_log_files].map{|f| f[:log_file_name] }
28
33
  files.each do |log_file_name|
29
34
  local_file_name = log_file_name.sub("error/", "")
@@ -38,10 +43,10 @@ module PgHeroLogs
38
43
  log_file_name: log_file_name
39
44
  }
40
45
  options.merge!(marker: marker) if marker
41
- resp = rds.client.download_db_log_file_portion(options)
46
+ resp = rds.download_db_log_file_portion(options)
42
47
  data << resp[:log_file_data].to_s
43
48
  end while resp[:additional_data_pending] && (marker = resp[:marker])
44
- File.open(local_file_name, "w") { |file| file.write(data) }
49
+ File.write(local_file_name, data)
45
50
  puts "DOWNLOADED #{local_file_name}"
46
51
  end
47
52
  end
@@ -96,6 +101,5 @@ module PgHeroLogs
96
101
  def squish(str)
97
102
  str.gsub(/\A[[:space:]]+/, '').gsub(/[[:space:]]+\z/, '').gsub(/[[:space:]]+/, ' ')
98
103
  end
99
-
100
104
  end
101
105
  end
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pghero_logs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
8
- autorequire:
9
- bindir: bin
8
+ autorequire:
9
+ bindir: exe
10
10
  cert_chain: []
11
- date: 2017-08-28 00:00:00.000000000 Z
11
+ date: 2022-01-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: pg_query
14
+ name: aws-sdk-rds
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
@@ -25,69 +25,37 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: aws-sdk
28
+ name: pg_query
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '1'
33
+ version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '1'
41
- - !ruby/object:Gem::Dependency
42
- name: bundler
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '1.7'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '1.7'
55
- - !ruby/object:Gem::Dependency
56
- name: rake
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '10.0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
38
+ - - ">="
67
39
  - !ruby/object:Gem::Version
68
- version: '10.0'
69
- description: Slow query log parser for Postgres
70
- email:
71
- - andrew@chartkick.com
40
+ version: '0'
41
+ description:
42
+ email: andrew@ankane.org
72
43
  executables:
73
44
  - pghero_logs
74
45
  extensions: []
75
46
  extra_rdoc_files: []
76
47
  files:
77
- - ".gitignore"
78
- - Gemfile
48
+ - CHANGELOG.md
79
49
  - LICENSE.txt
80
50
  - README.md
81
- - Rakefile
82
- - bin/pghero_logs
51
+ - exe/pghero_logs
83
52
  - lib/pghero_logs.rb
84
53
  - lib/pghero_logs/version.rb
85
- - pghero_logs.gemspec
86
54
  homepage: https://github.com/ankane/pghero_logs
87
55
  licenses:
88
56
  - MIT
89
57
  metadata: {}
90
- post_install_message:
58
+ post_install_message:
91
59
  rdoc_options: []
92
60
  require_paths:
93
61
  - lib
@@ -95,16 +63,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
95
63
  requirements:
96
64
  - - ">="
97
65
  - !ruby/object:Gem::Version
98
- version: '0'
66
+ version: '2.5'
99
67
  required_rubygems_version: !ruby/object:Gem::Requirement
100
68
  requirements:
101
69
  - - ">="
102
70
  - !ruby/object:Gem::Version
103
71
  version: '0'
104
72
  requirements: []
105
- rubyforge_project:
106
- rubygems_version: 2.6.11
107
- signing_key:
73
+ rubygems_version: 3.3.3
74
+ signing_key:
108
75
  specification_version: 4
109
76
  summary: Slow query log parser for Postgres
110
77
  test_files: []
data/.gitignore DELETED
@@ -1,14 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /Gemfile.lock
4
- /_yardoc/
5
- /coverage/
6
- /doc/
7
- /pkg/
8
- /spec/reports/
9
- /tmp/
10
- *.bundle
11
- *.so
12
- *.o
13
- *.a
14
- mkmf.log
data/Gemfile DELETED
@@ -1,4 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in pghero_logs.gemspec
4
- gemspec
data/Rakefile DELETED
@@ -1,2 +0,0 @@
1
- require "bundler/gem_tasks"
2
-
data/pghero_logs.gemspec DELETED
@@ -1,26 +0,0 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'pghero_logs/version'
5
-
6
- Gem::Specification.new do |spec|
7
- spec.name = "pghero_logs"
8
- spec.version = PgheroLogs::VERSION
9
- spec.authors = ["Andrew Kane"]
10
- spec.email = ["andrew@chartkick.com"]
11
- spec.summary = %q{Slow query log parser for Postgres}
12
- spec.description = %q{Slow query log parser for Postgres}
13
- spec.homepage = "https://github.com/ankane/pghero_logs"
14
- spec.license = "MIT"
15
-
16
- spec.files = `git ls-files -z`.split("\x0")
17
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ["lib"]
20
-
21
- spec.add_dependency "pg_query"
22
- spec.add_dependency "aws-sdk", "~> 1"
23
-
24
- spec.add_development_dependency "bundler", "~> 1.7"
25
- spec.add_development_dependency "rake", "~> 10.0"
26
- end