pghero 3.3.1 → 3.3.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f26e73390b749930f287536790ab7951268d105c074211c3273c595105558b4e
4
- data.tar.gz: 8d6e752dde349c152e5569f93f282035c35357f4eb54edf682ddd5c2e3a23986
3
+ metadata.gz: '002087a8cb8c6db43d1f084fd773aa4c8320c6fe77be3d4f42b6ca55ff91d39d'
4
+ data.tar.gz: fd4cb80b991e10232d7628604049e25685ae3723c53c7dd3231288b369015976
5
5
  SHA512:
6
- metadata.gz: 9f2be7dd596e50df9319cc794e2098226833445f4b6a1fefb2f57aca21eb38e3f2676c78bc14d620bcc36da413e6825709e053020646b00ae428b33860534406
7
- data.tar.gz: b852564d036d3c2e427e4f4ccccdfc9cb00c13507a64cf742d0fadf3c6ec35cfc6eddbe5c6a8e29f2d71692fe6a3a663f91ee0bd8807fa946a537938908456c6
6
+ metadata.gz: 42a29de1135ce51d59423e0aedafff5261ffea8e93740a40aa80d472a48d01a799349ea9c48f78c027f86d493e342901698707894156b149236ca7e8f101a0a1
7
+ data.tar.gz: 68e636a77b47b825803c04ef90005827a66ae6abc0dab5f60bde8877f0c0d4aa580daa60c7959042bb0f9f0bb374eda3e885e0903069247a00c7a9a8779945a2
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## 3.3.3 (2023-04-18)
2
+
3
+ - Fixed error with system stats for Azure Database
4
+
5
+ ## 3.3.2 (2023-04-12)
6
+
7
+ - Fixed error with suggested indexes and empty statements
8
+
1
9
  ## 3.3.1 (2023-03-15)
2
10
 
3
11
  - Fixed error with Uglifier
@@ -248,9 +248,16 @@ module PgHero
248
248
  stats =
249
249
  case @database.system_stats_provider
250
250
  when :azure
251
- [
252
- {name: "IO Consumption", data: @database.azure_stats("io_consumption_percent", **system_params), library: chart_library_options}
253
- ]
251
+ if @database.send(:azure_flexible_server?)
252
+ [
253
+ {name: "Read IOPS", data: @database.read_iops_stats(**system_params).map { |k, v| [k, v ? v.round : v] }, library: chart_library_options},
254
+ {name: "Write IOPS", data: @database.write_iops_stats(**system_params).map { |k, v| [k, v ? v.round : v] }, library: chart_library_options}
255
+ ]
256
+ else
257
+ [
258
+ {name: "IO Consumption", data: @database.azure_stats("io_consumption_percent", **system_params), library: chart_library_options}
259
+ ]
260
+ end
254
261
  when :gcp
255
262
  [
256
263
  {name: "Read Ops", data: @database.read_iops_stats(**system_params).map { |k, v| [k, v ? v.round : v] }, library: chart_library_options},
@@ -194,6 +194,7 @@ module PgHero
194
194
  end
195
195
 
196
196
  def best_index_structure(statement)
197
+ return {error: "Empty statement"} if statement.to_s.empty?
197
198
  return {error: "Too large"} if statement.to_s.length > 10000
198
199
 
199
200
  begin
@@ -102,7 +102,8 @@ module PgHero
102
102
  end
103
103
 
104
104
  client = Azure::Monitor::Profiles::Latest::Mgmt::Client.new
105
- timespan = "#{start_time.iso8601}/#{end_time.iso8601}"
105
+ # call utc to convert +00:00 to Z
106
+ timespan = "#{start_time.utc.iso8601}/#{end_time.utc.iso8601}"
106
107
  results = client.metrics.list(
107
108
  azure_resource_id,
108
109
  metricnames: metric_name,
@@ -269,12 +270,13 @@ module PgHero
269
270
  used = azure_stats("storage_used", **options)
270
271
  free_space(quota, used)
271
272
  else
272
- # no read_iops, write_iops
273
- # could add io_consumption_percent
273
+ replication_lag_stat = azure_flexible_server? ? "physical_replication_delay_in_seconds" : "pg_replica_log_delay_in_seconds"
274
274
  metrics = {
275
275
  cpu: "cpu_percent",
276
276
  connections: "active_connections",
277
- replication_lag: "pg_replica_log_delay_in_seconds"
277
+ replication_lag: replication_lag_stat,
278
+ read_iops: "read_iops", # flexible server only
279
+ write_iops: "write_iops" # flexible server only
278
280
  }
279
281
  raise Error, "Metric not supported" unless metrics[metric_key]
280
282
  azure_stats(metrics[metric_key], **options)
@@ -284,6 +286,10 @@ module PgHero
284
286
  end
285
287
  end
286
288
 
289
+ def azure_flexible_server?
290
+ azure_resource_id.include?("/Microsoft.DBforPostgreSQL/flexibleServers/")
291
+ end
292
+
287
293
  # only use data points included in both series
288
294
  # this also eliminates need to align Time.now
289
295
  def free_space(quota, used)
@@ -1,3 +1,3 @@
1
1
  module PgHero
2
- VERSION = "3.3.1"
2
+ VERSION = "3.3.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pghero
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.3.1
4
+ version: 3.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-16 00:00:00.000000000 Z
11
+ date: 2023-04-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -124,7 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
124
124
  - !ruby/object:Gem::Version
125
125
  version: '0'
126
126
  requirements: []
127
- rubygems_version: 3.4.6
127
+ rubygems_version: 3.4.10
128
128
  signing_key:
129
129
  specification_version: 4
130
130
  summary: A performance dashboard for Postgres