gri 10.0.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 +7 -0
- data/.gitignore +7 -0
- data/MIT-LICENSE.txt +20 -0
- data/README.md +132 -0
- data/Rakefile +5 -0
- data/bin/grapher +17 -0
- data/bin/gri +5 -0
- data/bin/gricast +17 -0
- data/bin/grispark +5 -0
- data/bin/griwalk +9 -0
- data/bin/trad +19 -0
- data/bin/trad-http +17 -0
- data/gri.gemspec +21 -0
- data/lib/fluent/plugin/out_gri.rb +56 -0
- data/lib/gri/api.rb +28 -0
- data/lib/gri/app_collector.rb +154 -0
- data/lib/gri/app_walker.rb +23 -0
- data/lib/gri/blank.rb +49 -0
- data/lib/gri/builtindefs.rb +211 -0
- data/lib/gri/cast.rb +84 -0
- data/lib/gri/cgraph.rb +37 -0
- data/lib/gri/clist.rb +163 -0
- data/lib/gri/collector.rb +284 -0
- data/lib/gri/config.rb +134 -0
- data/lib/gri/ds_list.rb +166 -0
- data/lib/gri/format_helper.rb +112 -0
- data/lib/gri/gparams.rb +43 -0
- data/lib/gri/graph.rb +239 -0
- data/lib/gri/grapher.rb +70 -0
- data/lib/gri/ldb.rb +160 -0
- data/lib/gri/list.rb +242 -0
- data/lib/gri/log.rb +140 -0
- data/lib/gri/loop.rb +109 -0
- data/lib/gri/ltsv.rb +58 -0
- data/lib/gri/main.rb +107 -0
- data/lib/gri/mlog.rb +22 -0
- data/lib/gri/mmsgpack.rb +57 -0
- data/lib/gri/msnmp.rb +601 -0
- data/lib/gri/page.rb +235 -0
- data/lib/gri/pcollector.rb +209 -0
- data/lib/gri/plugin.rb +75 -0
- data/lib/gri/plugin/bootstrap.rb +65 -0
- data/lib/gri/plugin/cisco.rb +98 -0
- data/lib/gri/plugin/exec_collector.rb +89 -0
- data/lib/gri/plugin/juniper.rb +5 -0
- data/lib/gri/plugin/netsnmp.rb +8 -0
- data/lib/gri/plugin/ucdavis.rb +176 -0
- data/lib/gri/plugin/writer_fluentd.rb +26 -0
- data/lib/gri/polling_unit.rb +88 -0
- data/lib/gri/q.rb +5 -0
- data/lib/gri/request.rb +29 -0
- data/lib/gri/rrd.rb +438 -0
- data/lib/gri/scheduler.rb +68 -0
- data/lib/gri/sgraph.rb +147 -0
- data/lib/gri/spark.rb +94 -0
- data/lib/gri/tra_collector.rb +80 -0
- data/lib/gri/trad.rb +170 -0
- data/lib/gri/updater.rb +201 -0
- data/lib/gri/util_daemon.rb +19 -0
- data/lib/gri/util_marshal.rb +13 -0
- data/lib/gri/utils.rb +63 -0
- data/lib/gri/vendor.rb +76 -0
- data/lib/gri/version.rb +3 -0
- data/lib/gri/wmain.rb +67 -0
- data/lib/gri/writer.rb +184 -0
- data/mcollector +47 -0
- data/test/mock.rb +60 -0
- data/test/root/gra/.sysdb/sysdb.txt +3 -0
- data/test/root/gra/testhost/.records.txt +2 -0
- data/test/root/if.def +2 -0
- data/test/root/test.conf +4 -0
- data/test/root/testtab +9 -0
- data/test/root/testtab2 +2 -0
- data/test/root/tra/testhost/_/20130614 +20 -0
- data/test/test_app.rb +58 -0
- data/test/test_builtindefs.rb +24 -0
- data/test/test_collector.rb +58 -0
- data/test/test_config.rb +62 -0
- data/test/test_ds_list.rb +48 -0
- data/test/test_exec_collector.rb +33 -0
- data/test/test_format_helper.rb +68 -0
- data/test/test_graph.rb +69 -0
- data/test/test_ldb.rb +29 -0
- data/test/test_list.rb +65 -0
- data/test/test_log.rb +16 -0
- data/test/test_loop.rb +35 -0
- data/test/test_ltsv.rb +38 -0
- data/test/test_main.rb +19 -0
- data/test/test_mmsgpack.rb +27 -0
- data/test/test_msnmp.rb +147 -0
- data/test/test_page.rb +51 -0
- data/test/test_pcollector.rb +71 -0
- data/test/test_plugin.rb +62 -0
- data/test/test_plugin_cisco.rb +23 -0
- data/test/test_polling_unit.rb +58 -0
- data/test/test_request.rb +26 -0
- data/test/test_rrd.rb +53 -0
- data/test/test_rrd_updater.rb +139 -0
- data/test/test_scheduler.rb +31 -0
- data/test/test_tra_collector.rb +40 -0
- data/test/test_trad.rb +33 -0
- data/test/test_util_marshal.rb +17 -0
- data/test/test_utils.rb +15 -0
- data/test/test_vendor.rb +40 -0
- data/test/test_writer.rb +33 -0
- data/test/unittest_helper.rb +27 -0
- metadata +208 -0
@@ -0,0 +1,65 @@
|
|
1
|
+
module GRI
|
2
|
+
module Bootstrap
|
3
|
+
extend Bootstrap
|
4
|
+
def layout
|
5
|
+
<<EOS
|
6
|
+
<!DOCTYPE html>
|
7
|
+
<html>
|
8
|
+
<head>
|
9
|
+
<title><%= @title %></title>
|
10
|
+
<style>
|
11
|
+
span.large {font-size: x-large;}
|
12
|
+
table.ds {margin-bottom: 2px;}
|
13
|
+
table.ds td {padding:0;background:#f9f9f9; border-collapse: separate;}
|
14
|
+
table.ds th {background:#ffd0d0;
|
15
|
+
background:linear-gradient(to bottom, #ffd8d8 0%,#ffcccc 45%,#ffc0c0 100%);
|
16
|
+
text-align:left;}
|
17
|
+
hr {border:none;border-top:1px #cccccc solid;}
|
18
|
+
</style>
|
19
|
+
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css">
|
20
|
+
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-theme.min.css">
|
21
|
+
</head>
|
22
|
+
|
23
|
+
<body>
|
24
|
+
|
25
|
+
<div class="navbar navbar-static-top navbar-inverse">
|
26
|
+
<div class="container">
|
27
|
+
<div class="navbar-header">
|
28
|
+
<a class="navbar-brand" href="<%= url_to ''%>">GRI</a>
|
29
|
+
</div>
|
30
|
+
</div>
|
31
|
+
</div>
|
32
|
+
|
33
|
+
<div class="container">
|
34
|
+
<%= yield %>
|
35
|
+
</div>
|
36
|
+
|
37
|
+
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js">
|
38
|
+
</script>
|
39
|
+
<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
|
40
|
+
</body>
|
41
|
+
</html>
|
42
|
+
EOS
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
class Grapher
|
47
|
+
def public_dir
|
48
|
+
File.dirname(__FILE__) + '/../../../public'
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.layout
|
52
|
+
Bootstrap.layout
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
class Cast
|
57
|
+
def public_dir
|
58
|
+
File.dirname(__FILE__) + '/../../../public'
|
59
|
+
end
|
60
|
+
|
61
|
+
def self.layout
|
62
|
+
Bootstrap.layout
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,98 @@
|
|
1
|
+
SNMP.update 'ciscoMemoryPoolMIB'=>'1.3.6.1.4.1.9.9.48',
|
2
|
+
'ciscoMemoryPoolObjects'=>'1.3.6.1.4.1.9.9.48.1',
|
3
|
+
'ciscoMemoryPoolTable'=>'1.3.6.1.4.1.9.9.48.1.1',
|
4
|
+
'ciscoMemoryPoolEntry'=>'1.3.6.1.4.1.9.9.48.1.1.1',
|
5
|
+
'ciscoMemoryPoolName'=>'1.3.6.1.4.1.9.9.48.1.1.1.2',
|
6
|
+
'ciscoMemoryPoolUsed'=>'1.3.6.1.4.1.9.9.48.1.1.1.5',
|
7
|
+
'ciscoMemoryPoolFree'=>'1.3.6.1.4.1.9.9.48.1.1.1.6',
|
8
|
+
'ciscoMemoryPoolLargestFree'=>'1.3.6.1.4.1.9.9.48.1.1.1.7',
|
9
|
+
|
10
|
+
'cipMacTable'=>'1.3.6.1.4.1.9.9.84.1.2.1',
|
11
|
+
'cipMacSwitchedPkts'=>'1.3.6.1.4.1.9.9.84.1.2.1.1.3',
|
12
|
+
'cipMacSwitchedBytes'=>'1.3.6.1.4.1.9.9.84.1.2.1.1.4',
|
13
|
+
|
14
|
+
'cipMacXTable'=>'1.3.6.1.4.1.9.9.84.1.2.3',
|
15
|
+
'cipMacHCSwitchedPkts'=>'1.3.6.1.4.1.9.9.84.1.2.3.1.1',
|
16
|
+
'cipMacHCSwitchedBytes'=>'1.3.6.1.4.1.9.9.84.1.2.3.1.2',
|
17
|
+
|
18
|
+
'lcpu'=>'1.3.6.1.4.1.9.2.1',
|
19
|
+
'busyPer'=>'1.3.6.1.4.1.9.2.1.56.0',
|
20
|
+
'avgBusy1'=>'1.3.6.1.4.1.9.2.1.57.0',
|
21
|
+
'avgBusy5'=>'1.3.6.1.4.1.9.2.1.58.0',
|
22
|
+
|
23
|
+
'cpmCPUTotalPhysicalIndex'=>'1.3.6.1.4.1.9.9.109.1.1.1.1.2',
|
24
|
+
'cpmCPUTotal5sec'=>'1.3.6.1.4.1.9.9.109.1.1.1.1.3',
|
25
|
+
'cpmCPUTotal1min'=>'1.3.6.1.4.1.9.9.109.1.1.1.1.4',
|
26
|
+
'cpmCPUTotal5min'=>'1.3.6.1.4.1.9.9.109.1.1.1.1.5',
|
27
|
+
|
28
|
+
'ciscoEnvMonMIB'=>'1.3.6.1.4.1.9.9.13',
|
29
|
+
'ciscoEnvMonObjects'=>'1.3.6.1.4.1.9.9.13.1',
|
30
|
+
'ciscoEnvMonTemperatureStatusTable'=>'1.3.6.1.4.1.9.9.13.1.3',
|
31
|
+
'ciscoEnvMonTemperatureStatusEntry'=>'1.3.6.1.4.1.9.9.13.1.3.1',
|
32
|
+
'ciscoEnvMonTemperatureStatusDescr'=>'1.3.6.1.4.1.9.9.13.1.3.1.2',
|
33
|
+
'ciscoEnvMonTemperatureStatusValue'=>'1.3.6.1.4.1.9.9.13.1.3.1.3',
|
34
|
+
|
35
|
+
'cempMemPoolName'=>'1.3.6.1.4.1.9.9.221.1.1.1.1.3',
|
36
|
+
'cempMemPoolUsed'=>'1.3.6.1.4.1.9.9.221.1.1.1.1.7',
|
37
|
+
'cempMemPoolFree'=>'1.3.6.1.4.1.9.9.221.1.1.1.1.8',
|
38
|
+
'cempMemPoolLargestFree'=>'1.3.6.1.4.1.9.9.221.1.1.1.1.9',
|
39
|
+
'cempMemPoolHCFree'=>'1.3.6.1.4.1.9.9.221.1.1.1.1.20',
|
40
|
+
'cempMemPoolHCLargestFree'=>'1.3.6.1.4.1.9.9.221.1.1.1.1.22',
|
41
|
+
'cempMemPoolHCUsed'=>'1.3.6.1.4.1.9.9.221.1.1.1.1.26'
|
42
|
+
|
43
|
+
GRI::Vendor::DEFS.update '9'=>{
|
44
|
+
:name=>'Cisco',
|
45
|
+
:options=>{'ver'=>'2c', 'ifMIB'=>true, 'lcpu'=>true,
|
46
|
+
'ciscoEnvMonTemperature'=>true},
|
47
|
+
:firm_re=>/Software\s*\(([\w\d]+)/,
|
48
|
+
:version_re=>/Version\s+([\.\d\w()]+)/,
|
49
|
+
:after_initialize=>proc {|sysinfo, options|
|
50
|
+
options.set_unless_defined 'entityu' if options['lccpu']
|
51
|
+
if (sysdescr = sysinfo['sysDescr']) =~
|
52
|
+
/\s(\S+)\s+Software \(([^\)]+)\).*Version ([^,\s]+)/
|
53
|
+
sysinfo['_firm'] = $2
|
54
|
+
sysinfo['_ver'] = $3
|
55
|
+
sysinfo['_sysdescr'] = "IOS #{$1} Software (#{$2}), Version #{$3}"
|
56
|
+
elsif sysdescr =~ /Cisco Systems(, Inc\.)? (\S+)[\s\S]*Catalyst Operating System.*Version (\S+)/
|
57
|
+
sysinfo['_firm'] = $2
|
58
|
+
sysinfo['_ver'] = $3
|
59
|
+
sysinfo['_sysdescr'] = "Catalyst Operating System (#{$2}), Version #{$3}"
|
60
|
+
end
|
61
|
+
},
|
62
|
+
}
|
63
|
+
|
64
|
+
GRI::DEFS.update 'lcpu'=>{:pucat=>:cpu,
|
65
|
+
:oid=>['busyPer', 'avgBusy1', 'avgBusy5'],
|
66
|
+
:tdb=>['cpu', 'busyPer', 'avgBusy1', 'avgBusy5'],
|
67
|
+
:ds=>['busyPer,busyper,GAUGE,MAX,LINE1,#ff4020',
|
68
|
+
'avgBusy1,avgbusy1,GAUGE,MAX,LINE1,#40ff20',
|
69
|
+
'avgBusy5,avgbusy5,GAUGE,MAX,LINE1,#4020ff'],
|
70
|
+
:prop=>{:lastvalue=>'busyPer', :name=>'cpu'},
|
71
|
+
:list=>['CPU BUSY', '%N,%L %%\r'],
|
72
|
+
:graph=>[['percent', 0]],
|
73
|
+
},
|
74
|
+
'ciscoEnvMonTemperature'=>{:cat=>:temperature,
|
75
|
+
:oid=>['ciscoEnvMonTemperatureStatusEntry'],
|
76
|
+
:tdb=>['t', 'ciscoEnvMonTemperatureStatusDescr',
|
77
|
+
'ciscoEnvMonTemperatureStatusValue'],
|
78
|
+
:ds=>['ciscoEnvMonTemperatureStatusValue,temperature,GAUGE'],
|
79
|
+
:prop=>{:lastvalue=>'ciscoEnvMonTemperatureStatusValue',
|
80
|
+
:name=>'ciscoEnvMonTemperatureStatusDescr'},
|
81
|
+
:list=>['Temperature', '%N,%L °C\r'],
|
82
|
+
:graph=>[['degrees Celsius', 0, [0, 1000]]],
|
83
|
+
:composite=>['v', 't'],
|
84
|
+
},
|
85
|
+
'lccpu'=>{
|
86
|
+
:oid=>['cpmCPUTotalPhysicalIndex', 'cpmCPUTotal5sec',
|
87
|
+
'cpmCPUTotal1min', 'cpmCPUTotal5min'],
|
88
|
+
:tdb=>['lccpu', 'entPhysicalDescr', 'entPhysicalName',
|
89
|
+
'cpmCPUTotal5sec', 'cpmCPUTotal1min', 'cpmCPUTotal5min'],
|
90
|
+
:join=>[:entityu, 'cpmCPUTotalPhysicalIndex'],
|
91
|
+
:ds=>['cpmCPUTotal5sec,busyper,GAUGE,MAX,LINE1,#ff4020',
|
92
|
+
'cpmCPUTotal1min,avgbusy1,GAUGE,MAX,LINE1,#40ff20',
|
93
|
+
'cpmCPUTotal5min,avgbusy5,GAUGE,MAX,LINE1,#4020ff'],
|
94
|
+
:prop=>{:description=>'entPhysicalDescr',
|
95
|
+
:lastvalue=>'cpmCPUTotal5sec', :name=>'entPhysicalName'},
|
96
|
+
:list=>['LC CPU BUSY', '%N,%D,%L %%\r'],
|
97
|
+
:graph=>[['percent', 0]],
|
98
|
+
}
|
@@ -0,0 +1,89 @@
|
|
1
|
+
if Object.const_defined? :RUBY_VERSION
|
2
|
+
|
3
|
+
require 'open3'
|
4
|
+
require 'gri/collector'
|
5
|
+
|
6
|
+
module GRI
|
7
|
+
class ExecCollector < Collector
|
8
|
+
TYPES['exec'] = self
|
9
|
+
MAX_INPUT_SIZE = 8192
|
10
|
+
|
11
|
+
def sync?; false; end
|
12
|
+
|
13
|
+
def on_init
|
14
|
+
@rbuf = ''
|
15
|
+
case options['separator']
|
16
|
+
when 'tab'
|
17
|
+
@sep = /\t/
|
18
|
+
when /^[!"%&,->@-Z_-z]+/
|
19
|
+
@sep = Regexp.new options['separator']
|
20
|
+
else
|
21
|
+
@sep = nil
|
22
|
+
end
|
23
|
+
if options['out_keys']
|
24
|
+
@out_keys = options['out_keys'].split(/\s*,\s*/)
|
25
|
+
end
|
26
|
+
@transpose = !!options['transpose']
|
27
|
+
end
|
28
|
+
|
29
|
+
def on_attach
|
30
|
+
cmd = options['cmd']
|
31
|
+
stdin, stdout, stderr, wait_thr = popen cmd
|
32
|
+
stdin.close
|
33
|
+
loop.watch stdout, :r, 0, self
|
34
|
+
loop.watch stderr, :r, 0, self
|
35
|
+
end
|
36
|
+
|
37
|
+
def popen cmd
|
38
|
+
Open3.popen3 cmd
|
39
|
+
end
|
40
|
+
|
41
|
+
def on_readable io=nil
|
42
|
+
begin
|
43
|
+
while data = io.read_nonblock(MAX_INPUT_SIZE)
|
44
|
+
on_read data
|
45
|
+
end
|
46
|
+
rescue Errno::EAGAIN, Errno::EINTR
|
47
|
+
loop.watch io, :r, 0, self
|
48
|
+
rescue SystemCallError, EOFError, IOError, SocketError
|
49
|
+
on_close
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def on_read data
|
54
|
+
@rbuf << data
|
55
|
+
records = []
|
56
|
+
while true
|
57
|
+
break unless @rbuf =~ /\n/
|
58
|
+
line, rbuf = @rbuf.split /^/, 2
|
59
|
+
@rbuf.replace(rbuf || '')
|
60
|
+
line.chomp!
|
61
|
+
record = values2record line.split(@sep)
|
62
|
+
if @transpose
|
63
|
+
records += record.inject([]) {|a, kv|
|
64
|
+
a.push({'_host'=>host, '_key'=>"num_#{kv.first}", 'num'=>kv.last})
|
65
|
+
a
|
66
|
+
}
|
67
|
+
else
|
68
|
+
record['_host'] = host
|
69
|
+
records.push record
|
70
|
+
end
|
71
|
+
end
|
72
|
+
@cb.call records unless records.empty?
|
73
|
+
end
|
74
|
+
|
75
|
+
def values2record values
|
76
|
+
h = {}
|
77
|
+
values.each_with_index {|v, i|
|
78
|
+
h[@out_keys[i]] = v if @out_keys[i]
|
79
|
+
}
|
80
|
+
h
|
81
|
+
end
|
82
|
+
|
83
|
+
def on_close
|
84
|
+
loop.detach self
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
GRI::Vendor::DEFS.update '8072' => {
|
2
|
+
:name=>'NetSNMP',
|
3
|
+
:options=>{'ver'=>'2c', 'ifMIB'=>true,
|
4
|
+
'ucd-la'=>true, 'ucd-pr'=>true, 'ucd-ext'=>true, 'ucd-memory'=>true,
|
5
|
+
'ucd-systemstats'=>true, #'ucd-diskio'=>true,
|
6
|
+
'hrStorage'=>true, 'hrMemorySize'=>true,
|
7
|
+
'hrSystemNumUsers'=>true, 'hrSystemProcesses'=>true},
|
8
|
+
}
|
@@ -0,0 +1,176 @@
|
|
1
|
+
SNMP.update 'ucdavis'=>'1.3.6.1.4.1.2021',
|
2
|
+
'prEntry'=>'1.3.6.1.4.1.2021.2.1',
|
3
|
+
'prNames'=>'1.3.6.1.4.1.2021.2.1.2',
|
4
|
+
'prCount'=>'1.3.6.1.4.1.2021.2.1.5',
|
5
|
+
|
6
|
+
'extEntry'=>'1.3.6.1.4.1.2021.8.1',
|
7
|
+
'extNames'=>'1.3.6.1.4.1.2021.8.1.2',
|
8
|
+
'extOutput'=>'1.3.6.1.4.1.2021.8.1.101',
|
9
|
+
|
10
|
+
'dskEntry'=>'1.3.6.1.4.1.2021.9.1',
|
11
|
+
'dskPath'=>'1.3.6.1.4.1.2021.9.1.2',
|
12
|
+
'dskDevice'=>'1.3.6.1.4.1.2021.9.1.3',
|
13
|
+
'dskTotal'=>'1.3.6.1.4.1.2021.9.1.6',
|
14
|
+
'dskUsed'=>'1.3.6.1.4.1.2021.9.1.8',
|
15
|
+
'dskPercent'=>'1.3.6.1.4.1.2021.9.1.9',
|
16
|
+
'dskPercentNode'=>'1.3.6.1.4.1.2021.9.1.10',
|
17
|
+
'dskTotalLow'=>'1.3.6.1.4.1.2021.9.1.11',
|
18
|
+
'dskTotalHigh'=>'1.3.6.1.4.1.2021.9.1.12',
|
19
|
+
'dskUsedLow'=>'1.3.6.1.4.1.2021.9.1.15',
|
20
|
+
'dskUsedHigh'=>'1.3.6.1.4.1.2021.9.1.16',
|
21
|
+
|
22
|
+
'laEntry'=>'1.3.6.1.4.1.2021.10.1',
|
23
|
+
'laNames'=>'1.3.6.1.4.1.2021.10.1.2',
|
24
|
+
'laLoad'=>'1.3.6.1.4.1.2021.10.1.3',
|
25
|
+
|
26
|
+
'memory'=>'1.3.6.1.4.1.2021.4',
|
27
|
+
'memTotalSwap'=>'1.3.6.1.4.1.2021.4.3.0',
|
28
|
+
'memAvailSwap'=>'1.3.6.1.4.1.2021.4.4.0',
|
29
|
+
'memTotalReal'=>'1.3.6.1.4.1.2021.4.5.0',
|
30
|
+
'memAvailReal'=>'1.3.6.1.4.1.2021.4.6.0',
|
31
|
+
'memTotalFree'=>'1.3.6.1.4.1.2021.4.11.0',
|
32
|
+
'memShared'=>'1.3.6.1.4.1.2021.4.13.0',
|
33
|
+
'memBuffer'=>'1.3.6.1.4.1.2021.4.14.0',
|
34
|
+
'memCached'=>'1.3.6.1.4.1.2021.4.15.0',
|
35
|
+
|
36
|
+
'systemStats'=>'1.3.6.1.4.1.2021.11',
|
37
|
+
'ssCpuRawUser'=>'1.3.6.1.4.1.2021.11.50.0',
|
38
|
+
'ssCpuRawNice'=>'1.3.6.1.4.1.2021.11.51.0',
|
39
|
+
'ssCpuRawSystem'=>'1.3.6.1.4.1.2021.11.52.0',
|
40
|
+
'ssCpuRawIdle'=>'1.3.6.1.4.1.2021.11.53.0',
|
41
|
+
'ssCpuRawWait'=>'1.3.6.1.4.1.2021.11.54.0',
|
42
|
+
'ssCpuRawKernel'=>'1.3.6.1.4.1.2021.11.55.0',
|
43
|
+
'ssCpuRawInterrupt'=>'1.3.6.1.4.1.2021.11.56.0',
|
44
|
+
'ssIORawSent'=>'1.3.6.1.4.1.2021.11.57.0',
|
45
|
+
'ssIORawReceived'=>'1.3.6.1.4.1.2021.11.58.0',
|
46
|
+
'ssRawInterrupts'=>'1.3.6.1.4.1.2021.11.59.0',
|
47
|
+
'ssRawContexts'=>'1.3.6.1.4.1.2021.11.60.0',
|
48
|
+
|
49
|
+
'diskIOTable'=>'1.3.6.1.4.1.2021.13.15.1',
|
50
|
+
'diskIOIndex'=>'1.3.6.1.4.1.2021.13.15.1.1.1',
|
51
|
+
'diskIODevice'=>'1.3.6.1.4.1.2021.13.15.1.1.2',
|
52
|
+
'diskIONRead'=>'1.3.6.1.4.1.2021.13.15.1.1.3',
|
53
|
+
'diskIONWritten'=>'1.3.6.1.4.1.2021.13.15.1.1.4',
|
54
|
+
'diskIOReads'=>'1.3.6.1.4.1.2021.13.15.1.1.5',
|
55
|
+
'diskIOWrites'=>'1.3.6.1.4.1.2021.13.15.1.1.6',
|
56
|
+
'diskIONReadX'=>'1.3.6.1.4.1.2021.13.15.1.1.12',
|
57
|
+
'diskIONWrittenX'=>'1.3.6.1.4.1.2021.13.15.1.1.13'
|
58
|
+
|
59
|
+
GRI::DEFS.update 'ucd-la'=>{:cat=>:l,
|
60
|
+
:oid=>['laEntry'],
|
61
|
+
:tdb=>['l', 'laNames', 'laLoad'],
|
62
|
+
#:conv_val => Proc.new {|sym_oid, val|
|
63
|
+
# (sym_oid == 'laLoad') ? val.to_f : val
|
64
|
+
#},
|
65
|
+
:ds=>['laLoad,load,GAUGE,MAX,LINE1,#ff3333,load'],
|
66
|
+
:prop=>{:lastvalue=>'laLoad', :name=>'laNames'},
|
67
|
+
:list=>['Load Average', '%N,%L\r'],
|
68
|
+
:graph=>[['load average', 0]],
|
69
|
+
:composite=>['v', 't'],
|
70
|
+
},
|
71
|
+
'ucd-pr'=>{:cat=>:proc,
|
72
|
+
:oid=>['prEntry'],
|
73
|
+
:tdb=>['p', 'prNames', 'prCount'],
|
74
|
+
:ds=>['prCount,running,GAUGE,MAX,LINE1,#ff3333,process'],
|
75
|
+
:prop=>{:lastvalue=>'prCount', :name=>'prNames'},
|
76
|
+
:list=>['Process Count', '%N,%L\r'],
|
77
|
+
:graph=>[['process count', 0]],
|
78
|
+
},
|
79
|
+
'ucd-ext'=>{:cat=>:ext,
|
80
|
+
:oid=>['extEntry'],
|
81
|
+
:tdb=>['ucdext', 'extNames', 'extOutput'],
|
82
|
+
:ds=>['extOutput,output,GAUGE'],
|
83
|
+
:prop=>{:name=>'extNames'},
|
84
|
+
:list=>['Extensible Output', '%N,%L\r'],
|
85
|
+
:graph=>[['output', 0]],
|
86
|
+
},
|
87
|
+
'ucd-dsk'=>{:cat=>:disk,
|
88
|
+
:oid=>['dskEntry'],
|
89
|
+
:tdb=>['d', 'dskPath', 'dskTotal', 'dskUsed', 'dskDevice'],
|
90
|
+
:fix_workhash=>proc {|wh|
|
91
|
+
for k, r in wh[:disk]
|
92
|
+
if r['dskTotalLow']
|
93
|
+
r['dskTotal'] = r['dskTotalHigh'].to_i * 4294967296 + r['dskTotalLow'].to_i
|
94
|
+
r['dskUsed'] = r['dskUsedHigh'].to_i * 4294967296 + r['dskUsedLow'].to_i
|
95
|
+
end
|
96
|
+
r['dskTotal'] = r['dskTotal'].to_i * 1024
|
97
|
+
r['dskUsed'] = r['dskUsed'].to_i * 1024
|
98
|
+
end
|
99
|
+
},
|
100
|
+
:ds=>['dskUsed,used,GAUGE,MAX,AREA,#40ff40'],
|
101
|
+
:prop=>{:ub=>'dskTotal', :lastvalue=>'dskUsed', :name=>'dskPath',
|
102
|
+
:description=>'dskDevice',
|
103
|
+
},
|
104
|
+
:list_text=>['Disk Used', '%N,%D,%1024L / %1024U\r'],
|
105
|
+
:graph=>[['"disk used"', 1024]],
|
106
|
+
},
|
107
|
+
'ucd-memory'=>{:cat=>:ucdm,
|
108
|
+
:oid=>['memory'],
|
109
|
+
:fix_workhash=>lambda {|wh|
|
110
|
+
if (h = wh[:ucdm]) and (h0 = h[0])
|
111
|
+
ind = 0
|
112
|
+
h0.keys.sort.each {|key|
|
113
|
+
ind = {'memTotalSwap'=>0, 'memAvailSwap'=>1, 'memTotalReal'=>2,
|
114
|
+
'memAvailReal'=>3, 'memTotalFree'=>4,
|
115
|
+
'memShared'=>5, 'memBuffer'=>6, 'memCached'=>7}[key]
|
116
|
+
h[ind] = {'dummyName'=>key.dup, 'dummyFree'=>h0[key] * 1024} if ind
|
117
|
+
}
|
118
|
+
end
|
119
|
+
},
|
120
|
+
:ds=>['dummyFree,free,GAUGE,MAX,LINE1,#4020ff,memory'],
|
121
|
+
:prop=>{:lastvalue=>'dummyFree', :name=>'dummyName'},
|
122
|
+
:list=>['UCD Memory', '%N,%1024L\r'],
|
123
|
+
:graph=>[['bytes', 1024]],
|
124
|
+
:composite=>['t'],
|
125
|
+
},
|
126
|
+
'ucd-diskio'=>{:cat=>:diskio, :puclass=>'UCDDiskIO',
|
127
|
+
:oid=>['diskIODevice', 'diskIOReads', 'diskIOWrites',
|
128
|
+
'diskIONReadX', 'diskIONWrittenX'],
|
129
|
+
:tdb=>['diskIO', 'diskIODevice', 'diskIOReads', 'diskIOWrites',
|
130
|
+
'diskIONReadX', 'diskIONWrittenX'],
|
131
|
+
:ds=>['diskIOReads,reads,DERIVE,MAX,AREA,#90f090',
|
132
|
+
'diskIOWrites,writes,DERIVE,MAX,LINE1,#4020ff',
|
133
|
+
'diskIONReadX,nread,DERIVE,MAX,AREA,#90f090',
|
134
|
+
'diskIONWrittenX,nwritten,DERIVE,MAX,LINE1,#4020ff',],
|
135
|
+
:list=>['Disk I/O', '%N'],
|
136
|
+
:prop=>{:name=>'diskIODevice'},
|
137
|
+
:graph=>[['access', 0, [0, nil], /reads|writes/],
|
138
|
+
['byte/sec', 1000, [0, nil], /nread|nwritten/],], #/
|
139
|
+
:composite=>['v', 't'],
|
140
|
+
},
|
141
|
+
'ucd-systemstats'=>{
|
142
|
+
:oid=>['systemStats'],
|
143
|
+
:tdb=>['systemstats', 'ssCpuRawUser', 'ssCpuRawNice',
|
144
|
+
'ssCpuRawSystem', 'ssCpuRawIdle', 'ssCpuRawWait',
|
145
|
+
'ssCpuRawKernel', 'ssCpuRawInterrupt',
|
146
|
+
'ssRawInterrupts', 'ssRawContexts',
|
147
|
+
'ssIORawSent', 'ssIORawReceived',
|
148
|
+
],
|
149
|
+
:ds=>[
|
150
|
+
'ssCpuRawKernel,ssCpuRawKernel,DERIVE,MAX,AREA,#0000ff',
|
151
|
+
'ssCpuRawSystem,ssCpuRawSystem,DERIVE,MAX,STACK,#0000ff',
|
152
|
+
'ssCpuRawUser,ssCpuRawUser,DERIVE,MAX,STACK,#ff8080',
|
153
|
+
'ssCpuRawWait,ssCpuRawWait,DERIVE,MAX,STACK,#ffff80',
|
154
|
+
'ssCpuRawIdle,ssCpuRawIdle,DERIVE,MAX,STACK,#80ff80',
|
155
|
+
|
156
|
+
'ssRawContexts,ssRawContexts,DERIVE,MAX,AREA,#ff8080',
|
157
|
+
'ssRawInterrupts,ssRawInterrupts,DERIVE,MAX,STACK,#80ff80',
|
158
|
+
|
159
|
+
'ssIORawReceived,ssIORawReceived,DERIVE,MAX,AREA,#80ff80',
|
160
|
+
'ssIORawSent,ssIORawSent,DERIVE,MAX,STACK,#ff8080',
|
161
|
+
],
|
162
|
+
:list=>['System Stats', '%N'],
|
163
|
+
:prop=>{:name=>'systemStats'},
|
164
|
+
:graph=>[['"CPU time"', 0, [0, nil], /Idle|Wait|User|System|Kernel/],
|
165
|
+
['num', 0, [0, nil], /Interrupts|Contexts/],
|
166
|
+
['blocks', 0, [0, nil], /Sent|Received/],
|
167
|
+
#['blocks', 0, nil, /ssIORaw/],
|
168
|
+
],
|
169
|
+
}
|
170
|
+
|
171
|
+
GRI::Vendor::DEFS.update '2021'=>[
|
172
|
+
'UCDavis',
|
173
|
+
{'ver'=>'2c', 'ifMIB'=>true,
|
174
|
+
'ucd-la'=>true, 'ucd-dsk'=>true, 'ucd-pr'=>true, 'ucd-ext'=>true,
|
175
|
+
'ucd-memory'=>true, 'ucd-systemstats'=>true,},
|
176
|
+
]
|