onering-report-plugins 0.0.31 → 0.0.32

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.
@@ -0,0 +1,143 @@
1
+ # Onering Facts - HAProxy Stats
2
+ # provides collection of statistics from HAProxy
3
+ #
4
+ require 'socket'
5
+
6
+ haproxy = nil
7
+
8
+ Dir["/etc/haproxy/*.cfg"].each do |cfg|
9
+ haproxy ||= []
10
+ cfg_data = (File.read(cfg).lines rescue [])
11
+
12
+ description = (cfg_data.select{|i| i =~ /^\s* description / }.first.strip.split(' ',2).last.gsub('"','') rescue nil)
13
+ socket = (cfg_data.select{|i| i =~ /^\s* stats socket / }.first.strip.split(' ')[2] rescue nil)
14
+
15
+ if not socket.nil? and File.exists?(socket)
16
+ stats = UNIXSocket.new(socket)
17
+ stats.puts("show stat")
18
+
19
+ instance = {
20
+ :name => File.basename(cfg, '.cfg'),
21
+ :description => description,
22
+ :pools => {}
23
+ }
24
+
25
+ stats.read.lines.each do |line|
26
+ next if line[0].chr == '#'
27
+ line = line.strip.chomp
28
+ next if line.empty?
29
+ line = line.split(',')
30
+
31
+ begin
32
+ instance[:pools][line[0]] ||= []
33
+ instance[:pools][line[0]] << ({
34
+ :pool => line[0],
35
+ :name => line[1],
36
+ :queue => {
37
+ :current => line[2].to_i,
38
+ :maximum => line[3].to_i,
39
+ :limit => line[25].to_i
40
+ },
41
+ :sessions => {
42
+ :rate => line[33].to_i,
43
+ :rate_limit => line[34].to_i,
44
+ :rate_maximum => line[35].to_i,
45
+ :current => line[4].to_i,
46
+ :maximum => line[5].to_i,
47
+ :limit => line[6].to_i,
48
+ :total => line[7].to_i
49
+ },
50
+ :bytes => {
51
+ :in => line[8].to_i,
52
+ :out => line[9].to_i
53
+ },
54
+ :denied => {
55
+ :request => line[10].to_i,
56
+ :response => line[11].to_i
57
+ },
58
+ :errors => {
59
+ :request => line[12].to_i,
60
+ :connection => line[13].to_i,
61
+ :response => line[14].to_i
62
+ },
63
+ :warnings => {
64
+ :retry => line[15].to_i,
65
+ :redispatch => line[16].to_i
66
+ },
67
+ :status => line[17].downcase,
68
+ :online => (line[17].downcase == 'up'),
69
+ :weight => line[18].to_i,
70
+ :checks => {
71
+ :status => (case line[36].upcase.to_sym
72
+ when :UNK then :unknown
73
+ when :INI then :initializing
74
+ when :SOCKERR then :socket_error
75
+ when :L4OK then :layer4_ok
76
+ when :L4TMOUT then :layer4_timeout
77
+ when :L4CON then :layer4_connection_failed
78
+ when :L6OK then :layer6_ok
79
+ when :L6TOUT then :layer6_ssl_timeout
80
+ when :L6RSP then :layer6_ssl_protocol_error
81
+ when :L7OK then :layer7_ok
82
+ when :L7OKC then :layer7_ok
83
+ when :L7TOUT then :layer7_timeout
84
+ when :L7RSP then :layer7_protocol_error
85
+ when :L7STS then :layer7_server_error
86
+ else nil
87
+ end
88
+ ),
89
+ :response_code => line[37].to_i,
90
+ :duration => line[38].to_i,
91
+ :fail_details => line[45],
92
+ :failed => line[21].to_i,
93
+ :downs => line[22].to_i
94
+ },
95
+ :http => {
96
+ :request => {
97
+ :rate => line[46].to_i,
98
+ :rate_maximum => line[47].to_i,
99
+ :total => line[48].to_i,
100
+ :client_abort => line[49].to_i,
101
+ :server_abort => line[50].to_i
102
+ },
103
+ :response => {
104
+ '100' => line[39].to_i,
105
+ '200' => line[40].to_i,
106
+ '300' => line[41].to_i,
107
+ '400' => line[42].to_i,
108
+ '500' => line[43].to_i,
109
+ 'other' => line[44].to_i
110
+ }
111
+ },
112
+ :last_changed_at => Time.at(Time.now.to_i - line[23].to_i).strftime('%Y-%m-%d %H:%M:%S %z'),
113
+ :downtime => line[24].to_i,
114
+ :pid => line[26].to_i,
115
+ :proxy_id => line[27].to_i,
116
+ :service_id => line[28].to_i,
117
+ :throttle => line[29],
118
+ :selected => line[30].to_i,
119
+ :tracked => line[31],
120
+ :type => (case line[32].to_i
121
+ when 0 then :frontend
122
+ when 1 then :backend
123
+ when 2 then :server
124
+ when 3 then :socket
125
+ else nil
126
+ end
127
+ )
128
+ })
129
+ rescue
130
+ next
131
+ end
132
+ end
133
+
134
+ haproxy << instance
135
+ end
136
+ end
137
+
138
+
139
+ if not haproxy.nil?
140
+ Facter.add('haproxy') do
141
+ setcode { haproxy }
142
+ end
143
+ end
@@ -0,0 +1,8 @@
1
+ # Onering Collector - HAProxy
2
+ # provides data on HAProxy services
3
+ #
4
+
5
+ report do
6
+ haproxy = Facter.value('haproxy')
7
+ property :@haproxy, haproxy unless haproxy.nil?
8
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: onering-report-plugins
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.31
4
+ version: 0.0.32
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2013-04-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: onering-client
16
- requirement: &22534100 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,7 +21,12 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *22534100
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
25
30
  description: Base plugins for providing system information via the Onering client
26
31
  utility
27
32
  email: ghetzel@outbrain.com
@@ -29,30 +34,32 @@ executables: []
29
34
  extensions: []
30
35
  extra_rdoc_files: []
31
36
  files:
37
+ - lib/reporter/default/properties_facter.rb
38
+ - lib/reporter/default/stats_virident.rb
39
+ - lib/reporter/default/stats_disk.rb
40
+ - lib/reporter/default/properties_xen.rb
41
+ - lib/reporter/default/properties_openvz.rb
42
+ - lib/reporter/default/properties_haproxy.rb
43
+ - lib/reporter/default/properties_network.rb
44
+ - lib/reporter/default/properties_physical.rb
45
+ - lib/reporter/default/properties_ohai.rb
46
+ - lib/reporter/default/stats_zfs.rb
47
+ - lib/reporter/default/stats_base.rb
48
+ - lib/reporter/default/properties_services.rb
49
+ - lib/reporter/default/properties_chef.rb
32
50
  - lib/facter/onering_properties_openvz.rb
33
- - lib/facter/onering_properties_network.rb
34
- - lib/facter/onering_properties_virident.rb
35
- - lib/facter/onering_properties_services.rb
36
51
  - lib/facter/onering_properties_chef.rb
37
52
  - lib/facter/onering_properties_physical.rb
53
+ - lib/facter/onering_properties_xen.rb
54
+ - lib/facter/onering_properties_services.rb
55
+ - lib/facter/onering_properties_virident.rb
56
+ - lib/facter/onering_properties_zfs.rb
57
+ - lib/facter/onering_properties_network.rb
38
58
  - lib/facter/onering_properties_system.rb
39
59
  - lib/facter/onering_properties_id.rb
40
60
  - lib/facter/onering_disk_smart.rb
41
- - lib/facter/onering_properties_zfs.rb
42
- - lib/facter/onering_properties_xen.rb
61
+ - lib/facter/onering_properties_haproxy.rb
43
62
  - lib/etc/facter.list
44
- - lib/reporter/default/properties_physical.rb
45
- - lib/reporter/default/properties_facter.rb
46
- - lib/reporter/default/stats_disk.rb
47
- - lib/reporter/default/stats_zfs.rb
48
- - lib/reporter/default/properties_openvz.rb
49
- - lib/reporter/default/properties_xen.rb
50
- - lib/reporter/default/properties_chef.rb
51
- - lib/reporter/default/stats_virident.rb
52
- - lib/reporter/default/properties_ohai.rb
53
- - lib/reporter/default/properties_network.rb
54
- - lib/reporter/default/properties_services.rb
55
- - lib/reporter/default/stats_base.rb
56
63
  homepage: https://github.com/outbrain/onering-report-plugins
57
64
  licenses: []
58
65
  post_install_message:
@@ -73,7 +80,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
73
80
  version: '0'
74
81
  requirements: []
75
82
  rubyforge_project:
76
- rubygems_version: 1.8.11
83
+ rubygems_version: 1.8.23
77
84
  signing_key:
78
85
  specification_version: 3
79
86
  summary: Onering system reporting plugins