sensu-plugins-azurerm 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (29) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +21 -0
  3. data/README.md +278 -7
  4. data/bin/check-azurerm-core-usage.rb +37 -40
  5. data/bin/check-azurerm-cores-d-usage.rb +121 -0
  6. data/bin/check-azurerm-cores-ds-usage.rb +121 -0
  7. data/bin/check-azurerm-cores-dsv2-usage.rb +121 -0
  8. data/bin/check-azurerm-cores-dv2-usage.rb +121 -0
  9. data/bin/check-azurerm-cores-f-usage.rb +121 -0
  10. data/bin/check-azurerm-cores-fs-usage.rb +121 -0
  11. data/bin/check-azurerm-load-balancers-usage.rb +121 -0
  12. data/bin/check-azurerm-network-interfaces-usage.rb +121 -0
  13. data/bin/check-azurerm-network-security-groups-usage.rb +121 -0
  14. data/bin/check-azurerm-public-ip-addresses-usage.rb +121 -0
  15. data/bin/check-azurerm-route-tables-usage.rb +121 -0
  16. data/bin/check-azurerm-static-public-ip-addresses-usage.rb +121 -0
  17. data/bin/check-azurerm-virtual-machines-usage.rb +37 -40
  18. data/bin/check-azurerm-virtual-network-gateway-connected.rb +31 -34
  19. data/bin/check-azurerm-virtual-network-gateway-failure-connected.rb +51 -54
  20. data/bin/check-azurerm-virtual-networks-usage.rb +121 -0
  21. data/bin/metric-azurerm-service-bus-subscription-message-count.rb +39 -42
  22. data/bin/metric-azurerm-virtual-network-gateway-usage.rb +40 -43
  23. data/lib/sensu-plugins-azurerm.rb +1 -0
  24. data/lib/sensu-plugins-azurerm/common.rb +10 -0
  25. data/lib/sensu-plugins-azurerm/compute_usage.rb +3 -13
  26. data/lib/sensu-plugins-azurerm/network_usage.rb +12 -5
  27. data/lib/sensu-plugins-azurerm/servicebus_usage.rb +3 -6
  28. data/lib/sensu-plugins-azurerm/version.rb +1 -1
  29. metadata +60 -33
@@ -0,0 +1,121 @@
1
+ #! /usr/bin/env ruby
2
+ #
3
+ # check-azurerm-network-security-groups-usage
4
+ #
5
+ # DESCRIPTION:
6
+ # This plugin checks the number of Network Security Groups allocated and available in a Region in Azure.
7
+ # Warning and Critical Percentage thresholds may be set as needed.
8
+ #
9
+ # OUTPUT:
10
+ # plain-text
11
+ #
12
+ # PLATFORMS:
13
+ # Linux
14
+ #
15
+ # DEPENDENCIES:
16
+ # gem: azure_mgmt_network
17
+ # gem: sensu-plugin
18
+ #
19
+ # USAGE:
20
+ # ./check-azurerm-network-security-groups-usage.rb -l "westeurope" -w 80 -c 90
21
+ #
22
+ # ./check-azurerm-network-security-groups-usage.rb -t "00000000-0000-0000-0000-000000000000"
23
+ # -c "00000000-0000-0000-0000-000000000000"
24
+ # -S "00000000-0000-0000-0000-000000000000"
25
+ # -s "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ12345678901234"
26
+ # -l "eastus2" -w 80 -c 90
27
+ #
28
+ # ./check-azurerm-network-security-groups-usage.rb -tenant "00000000-0000-0000-0000-000000000000"
29
+ # -client_id "00000000-0000-0000-0000-000000000000"
30
+ # -client_secret "00000000-0000-0000-0000-000000000000"
31
+ # -subscription "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ12345678901234"
32
+ # -location "westeurope"
33
+ # -warning_percentage 80
34
+ # -critical_percentage 90
35
+ #
36
+ # NOTES:
37
+ #
38
+ # LICENSE:
39
+ # Tom Harvey
40
+ # Released under the same terms as Sensu (the MIT license); see LICENSE
41
+ # for details.
42
+ #
43
+
44
+ require 'azure_mgmt_network'
45
+ require 'sensu-plugin/check/cli'
46
+ require 'sensu-plugins-azurerm'
47
+
48
+ class CheckAzureRMNetworkSecurityGroupsUsage < Sensu::Plugin::Check::CLI
49
+ include SensuPluginsAzureRM
50
+
51
+ option :tenant_id,
52
+ description: 'ARM Tenant ID. Either set ENV[\'ARM_TENANT_ID\'] or provide it as an option',
53
+ short: '-t ID',
54
+ long: '--tenant ID',
55
+ default: ENV['ARM_TENANT_ID'] # TODO: can we pull these out from the Check too?
56
+
57
+ option :client_id,
58
+ description: 'ARM Client ID. Either set ENV[\'ARM_CLIENT_ID\'] or provide it as an option',
59
+ short: '-c ID',
60
+ long: '--client ID',
61
+ default: ENV['ARM_CLIENT_ID']
62
+
63
+ option :client_secret,
64
+ description: 'ARM Client Secret. Either set ENV[\'ARM_CLIENT_SECRET\'] or provide it as an option',
65
+ short: '-s SECRET',
66
+ long: '--clientSecret SECRET',
67
+ default: ENV['ARM_CLIENT_SECRET']
68
+
69
+ option :subscription_id,
70
+ description: 'ARM Subscription ID',
71
+ short: '-S ID',
72
+ long: '--subscription ID',
73
+ default: ENV['ARM_SUBSCRIPTION_ID']
74
+
75
+ option :location,
76
+ description: 'Azure Location (e.g. westeurope/eastus2)',
77
+ short: '-l LOCATION',
78
+ long: '--location LOCATION'
79
+
80
+ option :warning_percentage,
81
+ description: 'Warning Percentage threshold for filter',
82
+ short: '-w PERCENTAGE',
83
+ long: '--warning PERCENTAGE'
84
+
85
+ option :critical_percentage,
86
+ description: 'Critical Percentage threshold for filter',
87
+ short: '-c PERCENTAGE',
88
+ long: '--critical PERCENTAGE'
89
+
90
+ def run
91
+ tenant_id = config[:tenant_id]
92
+ client_id = config[:client_id]
93
+ client_secret = config[:client_secret]
94
+ subscription_id = config[:subscription_id]
95
+ location = config[:location]
96
+
97
+ usage_client = NetworkUsage.new.build_usage_client(tenant_id, client_id, client_secret, subscription_id)
98
+ result = Common.new.retrieve_usage_stats(usage_client, location, 'NetworkSecurityGroups')
99
+
100
+ current_usage = result.current_value
101
+ allowance = result.limit
102
+ critical_percentage = config[:critical_percentage].to_f
103
+ warning_percentage = config[:warning_percentage].to_f
104
+
105
+ message = "Current usage: #{current_usage} of #{allowance} Network Security Groups"
106
+
107
+ percentage_used = (current_usage.to_f / allowance.to_f) * 100
108
+
109
+ if percentage_used >= critical_percentage
110
+ critical message
111
+ elsif percentage_used >= warning_percentage
112
+ warning message
113
+ else
114
+ ok message
115
+ end
116
+
117
+ rescue => e
118
+ puts "Error: exception: #{e}"
119
+ critical
120
+ end
121
+ end
@@ -0,0 +1,121 @@
1
+ #! /usr/bin/env ruby
2
+ #
3
+ # check-azurerm-public-ip-addresses-usage
4
+ #
5
+ # DESCRIPTION:
6
+ # This plugin checks the number of Public IP Addresses allocated and available in a Region in Azure.
7
+ # Warning and Critical Percentage thresholds may be set as needed.
8
+ #
9
+ # OUTPUT:
10
+ # plain-text
11
+ #
12
+ # PLATFORMS:
13
+ # Linux
14
+ #
15
+ # DEPENDENCIES:
16
+ # gem: azure_mgmt_network
17
+ # gem: sensu-plugin
18
+ #
19
+ # USAGE:
20
+ # ./check-azurerm-public-ip-addresses-usage.rb -l "westeurope" -w 80 -c 90
21
+ #
22
+ # ./check-azurerm-public-ip-addresses-usage.rb -t "00000000-0000-0000-0000-000000000000"
23
+ # -c "00000000-0000-0000-0000-000000000000"
24
+ # -S "00000000-0000-0000-0000-000000000000"
25
+ # -s "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ12345678901234"
26
+ # -l "eastus2" -w 80 -c 90
27
+ #
28
+ # ./check-azurerm-public-ip-addresses-usage.rb -tenant "00000000-0000-0000-0000-000000000000"
29
+ # -client_id "00000000-0000-0000-0000-000000000000"
30
+ # -client_secret "00000000-0000-0000-0000-000000000000"
31
+ # -subscription "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ12345678901234"
32
+ # -location "westeurope"
33
+ # -warning_percentage 80
34
+ # -critical_percentage 90
35
+ #
36
+ # NOTES:
37
+ #
38
+ # LICENSE:
39
+ # Tom Harvey
40
+ # Released under the same terms as Sensu (the MIT license); see LICENSE
41
+ # for details.
42
+ #
43
+
44
+ require 'azure_mgmt_network'
45
+ require 'sensu-plugin/check/cli'
46
+ require 'sensu-plugins-azurerm'
47
+
48
+ class CheckAzureRMPublicIPAddressesUsage < Sensu::Plugin::Check::CLI
49
+ include SensuPluginsAzureRM
50
+
51
+ option :tenant_id,
52
+ description: 'ARM Tenant ID. Either set ENV[\'ARM_TENANT_ID\'] or provide it as an option',
53
+ short: '-t ID',
54
+ long: '--tenant ID',
55
+ default: ENV['ARM_TENANT_ID'] # TODO: can we pull these out from the Check too?
56
+
57
+ option :client_id,
58
+ description: 'ARM Client ID. Either set ENV[\'ARM_CLIENT_ID\'] or provide it as an option',
59
+ short: '-c ID',
60
+ long: '--client ID',
61
+ default: ENV['ARM_CLIENT_ID']
62
+
63
+ option :client_secret,
64
+ description: 'ARM Client Secret. Either set ENV[\'ARM_CLIENT_SECRET\'] or provide it as an option',
65
+ short: '-s SECRET',
66
+ long: '--clientSecret SECRET',
67
+ default: ENV['ARM_CLIENT_SECRET']
68
+
69
+ option :subscription_id,
70
+ description: 'ARM Subscription ID',
71
+ short: '-S ID',
72
+ long: '--subscription ID',
73
+ default: ENV['ARM_SUBSCRIPTION_ID']
74
+
75
+ option :location,
76
+ description: 'Azure Location (e.g. westeurope/eastus2)',
77
+ short: '-l LOCATION',
78
+ long: '--location LOCATION'
79
+
80
+ option :warning_percentage,
81
+ description: 'Warning Percentage threshold for filter',
82
+ short: '-w PERCENTAGE',
83
+ long: '--warning PERCENTAGE'
84
+
85
+ option :critical_percentage,
86
+ description: 'Critical Percentage threshold for filter',
87
+ short: '-c PERCENTAGE',
88
+ long: '--critical PERCENTAGE'
89
+
90
+ def run
91
+ tenant_id = config[:tenant_id]
92
+ client_id = config[:client_id]
93
+ client_secret = config[:client_secret]
94
+ subscription_id = config[:subscription_id]
95
+ location = config[:location]
96
+
97
+ usage_client = NetworkUsage.new.build_usage_client(tenant_id, client_id, client_secret, subscription_id)
98
+ result = Common.new.retrieve_usage_stats(usage_client, location, 'PublicIPAddresses')
99
+
100
+ current_usage = result.current_value
101
+ allowance = result.limit
102
+ critical_percentage = config[:critical_percentage].to_f
103
+ warning_percentage = config[:warning_percentage].to_f
104
+
105
+ message = "Current usage: #{current_usage} of #{allowance} Public IP Addresses"
106
+
107
+ percentage_used = (current_usage.to_f / allowance.to_f) * 100
108
+
109
+ if percentage_used >= critical_percentage
110
+ critical message
111
+ elsif percentage_used >= warning_percentage
112
+ warning message
113
+ else
114
+ ok message
115
+ end
116
+
117
+ rescue => e
118
+ puts "Error: exception: #{e}"
119
+ critical
120
+ end
121
+ end
@@ -0,0 +1,121 @@
1
+ #! /usr/bin/env ruby
2
+ #
3
+ # check-azurerm-route-tables-usage
4
+ #
5
+ # DESCRIPTION:
6
+ # This plugin checks the number of Route Tables allocated and available in a Region in Azure.
7
+ # Warning and Critical Percentage thresholds may be set as needed.
8
+ #
9
+ # OUTPUT:
10
+ # plain-text
11
+ #
12
+ # PLATFORMS:
13
+ # Linux
14
+ #
15
+ # DEPENDENCIES:
16
+ # gem: azure_mgmt_network
17
+ # gem: sensu-plugin
18
+ #
19
+ # USAGE:
20
+ # ./check-azurerm-route-tables-usage.rb -l "westeurope" -w 80 -c 90
21
+ #
22
+ # ./check-azurerm-route-tables-usage.rb -t "00000000-0000-0000-0000-000000000000"
23
+ # -c "00000000-0000-0000-0000-000000000000"
24
+ # -S "00000000-0000-0000-0000-000000000000"
25
+ # -s "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ12345678901234"
26
+ # -l "eastus2" -w 80 -c 90
27
+ #
28
+ # ./check-azurerm-route-tables-usage.rb -tenant "00000000-0000-0000-0000-000000000000"
29
+ # -client_id "00000000-0000-0000-0000-000000000000"
30
+ # -client_secret "00000000-0000-0000-0000-000000000000"
31
+ # -subscription "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ12345678901234"
32
+ # -location "westeurope"
33
+ # -warning_percentage 80
34
+ # -critical_percentage 90
35
+ #
36
+ # NOTES:
37
+ #
38
+ # LICENSE:
39
+ # Tom Harvey
40
+ # Released under the same terms as Sensu (the MIT license); see LICENSE
41
+ # for details.
42
+ #
43
+
44
+ require 'azure_mgmt_network'
45
+ require 'sensu-plugin/check/cli'
46
+ require 'sensu-plugins-azurerm'
47
+
48
+ class CheckAzureRMRouteTablesUsage < Sensu::Plugin::Check::CLI
49
+ include SensuPluginsAzureRM
50
+
51
+ option :tenant_id,
52
+ description: 'ARM Tenant ID. Either set ENV[\'ARM_TENANT_ID\'] or provide it as an option',
53
+ short: '-t ID',
54
+ long: '--tenant ID',
55
+ default: ENV['ARM_TENANT_ID'] # TODO: can we pull these out from the Check too?
56
+
57
+ option :client_id,
58
+ description: 'ARM Client ID. Either set ENV[\'ARM_CLIENT_ID\'] or provide it as an option',
59
+ short: '-c ID',
60
+ long: '--client ID',
61
+ default: ENV['ARM_CLIENT_ID']
62
+
63
+ option :client_secret,
64
+ description: 'ARM Client Secret. Either set ENV[\'ARM_CLIENT_SECRET\'] or provide it as an option',
65
+ short: '-s SECRET',
66
+ long: '--clientSecret SECRET',
67
+ default: ENV['ARM_CLIENT_SECRET']
68
+
69
+ option :subscription_id,
70
+ description: 'ARM Subscription ID',
71
+ short: '-S ID',
72
+ long: '--subscription ID',
73
+ default: ENV['ARM_SUBSCRIPTION_ID']
74
+
75
+ option :location,
76
+ description: 'Azure Location (e.g. westeurope/eastus2)',
77
+ short: '-l LOCATION',
78
+ long: '--location LOCATION'
79
+
80
+ option :warning_percentage,
81
+ description: 'Warning Percentage threshold for filter',
82
+ short: '-w PERCENTAGE',
83
+ long: '--warning PERCENTAGE'
84
+
85
+ option :critical_percentage,
86
+ description: 'Critical Percentage threshold for filter',
87
+ short: '-c PERCENTAGE',
88
+ long: '--critical PERCENTAGE'
89
+
90
+ def run
91
+ tenant_id = config[:tenant_id]
92
+ client_id = config[:client_id]
93
+ client_secret = config[:client_secret]
94
+ subscription_id = config[:subscription_id]
95
+ location = config[:location]
96
+
97
+ usage_client = NetworkUsage.new.build_usage_client(tenant_id, client_id, client_secret, subscription_id)
98
+ result = Common.new.retrieve_usage_stats(usage_client, location, 'RouteTables')
99
+
100
+ current_usage = result.current_value
101
+ allowance = result.limit
102
+ critical_percentage = config[:critical_percentage].to_f
103
+ warning_percentage = config[:warning_percentage].to_f
104
+
105
+ message = "Current usage: #{current_usage} of #{allowance} Route Tables"
106
+
107
+ percentage_used = (current_usage.to_f / allowance.to_f) * 100
108
+
109
+ if percentage_used >= critical_percentage
110
+ critical message
111
+ elsif percentage_used >= warning_percentage
112
+ warning message
113
+ else
114
+ ok message
115
+ end
116
+
117
+ rescue => e
118
+ puts "Error: exception: #{e}"
119
+ critical
120
+ end
121
+ end
@@ -0,0 +1,121 @@
1
+ #! /usr/bin/env ruby
2
+ #
3
+ # check-azurerm-static-public-ip-addresses-usage
4
+ #
5
+ # DESCRIPTION:
6
+ # This plugin checks the number of Static Public IP Addresses allocated and available in a Region in Azure.
7
+ # Warning and Critical Percentage thresholds may be set as needed.
8
+ #
9
+ # OUTPUT:
10
+ # plain-text
11
+ #
12
+ # PLATFORMS:
13
+ # Linux
14
+ #
15
+ # DEPENDENCIES:
16
+ # gem: azure_mgmt_network
17
+ # gem: sensu-plugin
18
+ #
19
+ # USAGE:
20
+ # ./check-azurerm-static-public-ip-addresses-usage.rb -l "westeurope" -w 80 -c 90
21
+ #
22
+ # ./check-azurerm-static-public-ip-addresses-usage.rb -t "00000000-0000-0000-0000-000000000000"
23
+ # -c "00000000-0000-0000-0000-000000000000"
24
+ # -S "00000000-0000-0000-0000-000000000000"
25
+ # -s "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ12345678901234"
26
+ # -l "eastus2" -w 80 -c 90
27
+ #
28
+ # ./check-azurerm-static-public-ip-addresses-usage.rb -tenant "00000000-0000-0000-0000-000000000000"
29
+ # -client_id "00000000-0000-0000-0000-000000000000"
30
+ # -client_secret "00000000-0000-0000-0000-000000000000"
31
+ # -subscription "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ12345678901234"
32
+ # -location "westeurope"
33
+ # -warning_percentage 80
34
+ # -critical_percentage 90
35
+ #
36
+ # NOTES:
37
+ #
38
+ # LICENSE:
39
+ # Tom Harvey
40
+ # Released under the same terms as Sensu (the MIT license); see LICENSE
41
+ # for details.
42
+ #
43
+
44
+ require 'azure_mgmt_network'
45
+ require 'sensu-plugin/check/cli'
46
+ require 'sensu-plugins-azurerm'
47
+
48
+ class CheckAzureRMStaticPublicIPAddressesUsage < Sensu::Plugin::Check::CLI
49
+ include SensuPluginsAzureRM
50
+
51
+ option :tenant_id,
52
+ description: 'ARM Tenant ID. Either set ENV[\'ARM_TENANT_ID\'] or provide it as an option',
53
+ short: '-t ID',
54
+ long: '--tenant ID',
55
+ default: ENV['ARM_TENANT_ID'] # TODO: can we pull these out from the Check too?
56
+
57
+ option :client_id,
58
+ description: 'ARM Client ID. Either set ENV[\'ARM_CLIENT_ID\'] or provide it as an option',
59
+ short: '-c ID',
60
+ long: '--client ID',
61
+ default: ENV['ARM_CLIENT_ID']
62
+
63
+ option :client_secret,
64
+ description: 'ARM Client Secret. Either set ENV[\'ARM_CLIENT_SECRET\'] or provide it as an option',
65
+ short: '-s SECRET',
66
+ long: '--clientSecret SECRET',
67
+ default: ENV['ARM_CLIENT_SECRET']
68
+
69
+ option :subscription_id,
70
+ description: 'ARM Subscription ID',
71
+ short: '-S ID',
72
+ long: '--subscription ID',
73
+ default: ENV['ARM_SUBSCRIPTION_ID']
74
+
75
+ option :location,
76
+ description: 'Azure Location (e.g. westeurope/eastus2)',
77
+ short: '-l LOCATION',
78
+ long: '--location LOCATION'
79
+
80
+ option :warning_percentage,
81
+ description: 'Warning Percentage threshold for filter',
82
+ short: '-w PERCENTAGE',
83
+ long: '--warning PERCENTAGE'
84
+
85
+ option :critical_percentage,
86
+ description: 'Critical Percentage threshold for filter',
87
+ short: '-c PERCENTAGE',
88
+ long: '--critical PERCENTAGE'
89
+
90
+ def run
91
+ tenant_id = config[:tenant_id]
92
+ client_id = config[:client_id]
93
+ client_secret = config[:client_secret]
94
+ subscription_id = config[:subscription_id]
95
+ location = config[:location]
96
+
97
+ usage_client = NetworkUsage.new.build_usage_client(tenant_id, client_id, client_secret, subscription_id)
98
+ result = Common.new.retrieve_usage_stats(usage_client, location, 'StaticPublicIPAddresses')
99
+
100
+ current_usage = result.current_value
101
+ allowance = result.limit
102
+ critical_percentage = config[:critical_percentage].to_f
103
+ warning_percentage = config[:warning_percentage].to_f
104
+
105
+ message = "Current usage: #{current_usage} of #{allowance} Static IP Addresses"
106
+
107
+ percentage_used = (current_usage.to_f / allowance.to_f) * 100
108
+
109
+ if percentage_used >= critical_percentage
110
+ critical message
111
+ elsif percentage_used >= warning_percentage
112
+ warning message
113
+ else
114
+ ok message
115
+ end
116
+
117
+ rescue => e
118
+ puts "Error: exception: #{e}"
119
+ critical
120
+ end
121
+ end