malsh 0.3.0 → 0.3.4

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
2
  SHA256:
3
- metadata.gz: 7618152e48a3184a6f9f031a40fc3d1ff48bc16541a545fb27aaf18664d17a8a
4
- data.tar.gz: 061b00940628b739d6b59dc38efd20fad83ab1f061774436450d09dad2a6c198
3
+ metadata.gz: 0ba6b10739e65fa9b65e4cd60cd399ccdc4fc688d69bbaca61f0d032e9fd2c3d
4
+ data.tar.gz: 521295added941774b5ba85b0a2c3777747569552f5c94b6926259a050c812c2
5
5
  SHA512:
6
- metadata.gz: 7dc99e3b6b1afc7f72ad041d873803a4aa77b23d0443b6684bdcef79702163ba306f02987d1afa2e161a65a7e5413f76b8d0de57ec24b164e66ee44b55adf5ea
7
- data.tar.gz: be5c086daa10999317afd36754b576d4812e301624291c5bbf041a92055003843822cf932caa774faec1fcbe04f41cfff8b5efa460ed91c8181017239212174e
6
+ metadata.gz: '050824909ff8d3d653b0e7a864b403002560386d217f02de354a6829d38890f439c2950bc6ac443bde5165e1ae0aed03097d91e604368af0acafc8f9158a417a'
7
+ data.tar.gz: 77b19f42a100da11c7e29c79f00a438bbe6488817f478be5b0fa9363cabab365415e810dc0d98ce0b310d033b10f563ad92b22e0d26e8416a5a86b24112711d6
data/lib/malsh/cli.rb CHANGED
@@ -17,11 +17,15 @@ module Malsh
17
17
  def retire
18
18
  Malsh.init options
19
19
 
20
- hosts = Parallel.map(Malsh.metrics('memory.used')) do|memory|
21
- host = Malsh.host_by_id memory.first
22
- host if (!memory.last["memory.used"].respond_to?(:value) || !memory.last["memory.used"].value)
20
+ hosts = Parallel.map(Malsh.hosts) do |h|
21
+ m = Malsh.host_metrics(
22
+ h.id,
23
+ Malsh.host_metric_names(h.id).first,
24
+ Time.now.to_i - 86400,
25
+ Time.now.to_i
26
+ )
27
+ h if (!m || (m["metrics"] && m["metrics"].size == 0)) && !(h["meta"].has_key?("cloud") && %w(elb rds cloudfront).include?(h["meta"]["cloud"]["provider"]))
23
28
  end.flatten.compact
24
-
25
29
  Malsh.notify_host("退役未了ホスト一覧", hosts)
26
30
  end
27
31
 
@@ -1,8 +1,10 @@
1
1
  module Malsh::Notification
2
2
  class Base
3
3
  def self.notify_host(subject, hosts)
4
- names = hosts.map(&:name)
5
- puts "#{subject}: \n#{names.join("\n")}" if names.size > 0 && doit?
4
+ puts "#{subject}:"
5
+ hosts.map do |h|
6
+ puts "#{h.name}(#{h.roles.keys.join(",")})"
7
+ end if doit?
6
8
  end
7
9
 
8
10
  def self.notify_alert(subject, alerts)
@@ -5,7 +5,7 @@ module Malsh::Notification
5
5
  return unless doit?
6
6
  lists = if Malsh.options[:org]
7
7
  hosts.map do |h|
8
- "<https://mackerel.io/orgs/#{Malsh.options[:org]}/hosts/#{h.id}/-/setting|#{h.name}>"
8
+ "<https://mackerel.io/orgs/#{Malsh.options[:org]}/hosts/#{h.id}/-/setting|#{h.name}(#{h.roles.keys.join(",")})>"
9
9
  end
10
10
  else
11
11
  hosts.map(&:name)
@@ -30,16 +30,16 @@ module Malsh::Notification
30
30
  ''
31
31
  end
32
32
 
33
- title = if alert.type == 'external'
34
- alert.monitor.name
35
- else
33
+ title = if Malsh.alert_has_host?(alert)
36
34
  alert.host.name
35
+ else
36
+ alert.monitor.name
37
37
  end
38
38
 
39
- author_name = if alert.type == 'external'
40
- ''
41
- else
39
+ author_name = if Malsh.alert_has_host?(alert)
42
40
  alert.host.roles.map{|k, v| v.map{|r| "#{k}: #{r}"}}.flatten.join(" ")
41
+ else
42
+ ''
43
43
  end
44
44
 
45
45
  attachments << {
data/lib/malsh/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Malsh
2
- VERSION = "0.3.0"
2
+ VERSION = "0.3.4"
3
3
  end
data/lib/malsh.rb CHANGED
@@ -51,10 +51,10 @@ module Malsh
51
51
 
52
52
  def alerts()
53
53
  @_alerts ||= Mackerel.alerts.map do |alert|
54
- if alert.type == 'external'
55
- alert['monitor'] = Mackerel.monitor(alert.monitorId)
56
- else
54
+ if alert_has_host?(alert)
57
55
  alert['host'] = Malsh.host_by_id(alert.hostId)
56
+ else
57
+ alert['monitor'] = Mackerel.monitor(alert.monitorId)
58
58
  end
59
59
  alert
60
60
  end
@@ -83,5 +83,19 @@ module Malsh
83
83
  puts e
84
84
  end
85
85
  end
86
+
87
+ def host_metric_names(id)
88
+ begin
89
+ Mackerel.host_metric_names(id)
90
+ rescue => e
91
+ puts e
92
+ end
93
+ end
94
+
95
+ def alert_has_host?(alert)
96
+ exclude_types = ['external', 'service']
97
+ return false if exclude_types.include?(alert.type)
98
+ true
99
+ end
86
100
  end
87
101
  end
data/malsh.gemspec CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
26
26
  spec.add_dependency 'mackerel-rb'
27
27
  spec.add_dependency 'slack-notifier'
28
28
  spec.add_dependency 'parallel'
29
- spec.add_development_dependency "bundler", "~> 1.9"
30
- spec.add_development_dependency "rake", "~> 10.0"
29
+ spec.add_development_dependency "bundler"
30
+ spec.add_development_dependency "rake"
31
31
  spec.add_development_dependency "rspec"
32
32
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: malsh
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - kazuhiko yamahsita
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-11-30 00:00:00.000000000 Z
11
+ date: 2021-09-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -70,30 +70,30 @@ dependencies:
70
70
  name: bundler
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: '1.9'
75
+ version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: '1.9'
82
+ version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rake
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: '10.0'
89
+ version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: '10.0'
96
+ version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rspec
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -141,7 +141,7 @@ homepage: http://ten-snapon.com.
141
141
  licenses:
142
142
  - MIT
143
143
  metadata: {}
144
- post_install_message:
144
+ post_install_message:
145
145
  rdoc_options: []
146
146
  require_paths:
147
147
  - lib
@@ -156,9 +156,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
156
156
  - !ruby/object:Gem::Version
157
157
  version: '0'
158
158
  requirements: []
159
- rubyforge_project:
160
- rubygems_version: 2.7.5
161
- signing_key:
159
+ rubygems_version: 3.1.6
160
+ signing_key:
162
161
  specification_version: 4
163
162
  summary: mackerel tools.
164
163
  test_files: []