zabbix-ruby-client 0.0.17 → 0.0.18

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. data/.gitignore +1 -0
  2. data/CHANGELOG.md +9 -0
  3. data/README.md +6 -9
  4. data/lib/zabbix-ruby-client/data.rb +6 -4
  5. data/lib/zabbix-ruby-client/plugin_base.rb +41 -0
  6. data/lib/zabbix-ruby-client/plugins/apache.rb +1 -1
  7. data/lib/zabbix-ruby-client/plugins/apt.rb +32 -10
  8. data/lib/zabbix-ruby-client/plugins/cpu.rb +32 -23
  9. data/lib/zabbix-ruby-client/plugins/disk.rb +52 -33
  10. data/lib/zabbix-ruby-client/plugins/load.rb +22 -15
  11. data/lib/zabbix-ruby-client/plugins/memory.rb +48 -26
  12. data/lib/zabbix-ruby-client/plugins/network.rb +26 -17
  13. data/lib/zabbix-ruby-client/plugins/nginx.rb +1 -0
  14. data/lib/zabbix-ruby-client/plugins/postgres.rb +64 -0
  15. data/lib/zabbix-ruby-client/version.rb +1 -1
  16. data/spec/files/plugins/sample_buggy.rb +11 -0
  17. data/spec/files/plugins/sample_discover.rb +12 -0
  18. data/spec/files/system/apache_status +7 -6
  19. data/spec/files/system/apt-check +1 -0
  20. data/spec/files/system/df +1 -0
  21. data/spec/files/system/diskstats +1 -0
  22. data/spec/files/system/loadavg +1 -0
  23. data/spec/files/system/meminfo +46 -0
  24. data/spec/files/system/net_dev +1 -0
  25. data/spec/files/system/proc_cpu +1 -0
  26. data/spec/files/task_discovery.yml +3 -0
  27. data/spec/lib/cli_spec.rb +44 -6
  28. data/spec/lib/data_spec.rb +58 -1
  29. data/spec/lib/plugin_base_spec.rb +54 -0
  30. data/spec/lib/plugins/apache_spec.rb +78 -5
  31. data/spec/lib/plugins/apt_spec.rb +45 -0
  32. data/spec/lib/plugins/cpu_spec.rb +51 -1
  33. data/spec/lib/plugins/disk_spec.rb +77 -1
  34. data/spec/lib/plugins/load_spec.rb +41 -0
  35. data/spec/lib/plugins/memory_spec.rb +83 -2
  36. data/spec/lib/plugins/network_spec.rb +60 -1
  37. data/spec/lib/plugins_spec.rb +3 -1
  38. data/templates/client/postgres.yml +3 -0
  39. data/zabbix-ruby-client.gemspec +1 -0
  40. data/zabbix-templates/postgres_tpl.xml +833 -0
  41. metadata +79 -15
  42. checksums.yaml +0 -7
@@ -0,0 +1,45 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+ require "zabbix-ruby-client/plugins"
5
+ ZabbixRubyClient::Plugins.scan_dirs ["zabbix-ruby-client/plugins"]
6
+ require "zabbix-ruby-client/plugins/apt"
7
+
8
+ describe ZabbixRubyClient::Plugins::Apt do
9
+
10
+ before :all do
11
+ @logfile = File.expand_path("../../files/logs/spec.log", __FILE__)
12
+ ZabbixRubyClient::Log.set_logger(@logfile)
13
+ end
14
+
15
+ after :all do
16
+ FileUtils.rm_rf @logfile if File.exists? @logfile
17
+ end
18
+
19
+ it "launches a command to get apt stats" do
20
+ expect(ZabbixRubyClient::Plugins::Apt).to receive(:`).with('/usr/lib/update-notifier/apt-check 2>&1')
21
+ ZabbixRubyClient::Plugins::Apt.send(:aptinfo)
22
+ end
23
+
24
+ it "prepare data to be usable" do
25
+ expected = [23, 14]
26
+ stubfile = File.expand_path('../../../../spec/files/system/apt-check', __FILE__)
27
+ ZabbixRubyClient::Plugins::Apt.stub(:aptinfo).and_return(File.read(stubfile))
28
+ data = ZabbixRubyClient::Plugins::Apt.send(:get_info)
29
+ expect(data).to eq expected
30
+ end
31
+
32
+ it "populate a hash with extracted data" do
33
+ expected = [
34
+ "local apt[security] 123456789 23",
35
+ "local apt[pending] 123456789 14",
36
+ "local apt[status] 123456789 TODO apt 23/14"
37
+ ]
38
+ stubfile = File.expand_path('../../../../spec/files/system/apt-check', __FILE__)
39
+ ZabbixRubyClient::Plugins::Apt.stub(:aptinfo).and_return(File.read(stubfile))
40
+ Time.stub(:now).and_return("123456789")
41
+ data = ZabbixRubyClient::Plugins::Apt.send(:collect, 'local')
42
+ expect(data).to eq expected
43
+ end
44
+
45
+ end
@@ -1,11 +1,61 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  require 'spec_helper'
4
+ require "zabbix-ruby-client/plugin_base"
4
5
  require "zabbix-ruby-client/plugins"
6
+ ZabbixRubyClient::Plugins.scan_dirs ["zabbix-ruby-client/plugins"]
5
7
  require "zabbix-ruby-client/plugins/cpu"
6
8
 
7
9
  describe ZabbixRubyClient::Plugins::Cpu do
8
10
 
9
- pending "populate a hash with extracted data"
11
+ before :all do
12
+ @logfile = File.expand_path("../../files/logs/spec.log", __FILE__)
13
+ ZabbixRubyClient::Log.set_logger(@logfile)
14
+ end
15
+
16
+ after :all do
17
+ FileUtils.rm_rf @logfile if File.exists? @logfile
18
+ end
19
+
20
+ it "prepare data to be usable" do
21
+ expected = {
22
+ "user" => 473806,
23
+ "nice" => 20486,
24
+ "system" => 406619,
25
+ "idle" => 187353904,
26
+ "iowait" => 11589,
27
+ "irq" => 9,
28
+ "soft" => 696,
29
+ "steal" => 5186311,
30
+ "guest" => 0,
31
+ "used" => 900911,
32
+ "total" => 193453420
33
+ }
34
+ stubfile = File.expand_path('../../../../spec/files/system/proc_cpu', __FILE__)
35
+ ZabbixRubyClient::Plugins::Cpu.stub(:getline).and_return(File.read(stubfile))
36
+ data = ZabbixRubyClient::Plugins::Cpu.send(:get_info)
37
+ expect(data).to eq expected
38
+ end
39
+
40
+ it "populate a hash with extracted data" do
41
+ expected = [
42
+ "local cpu[user] 123456789 473806",
43
+ "local cpu[nice] 123456789 20486",
44
+ "local cpu[system] 123456789 406619",
45
+ "local cpu[idle] 123456789 187353904",
46
+ "local cpu[iowait] 123456789 11589",
47
+ "local cpu[irq] 123456789 9",
48
+ "local cpu[soft] 123456789 696",
49
+ "local cpu[steal] 123456789 5186311",
50
+ "local cpu[guest] 123456789 0",
51
+ "local cpu[used] 123456789 900911",
52
+ "local cpu[total] 123456789 193453420"
53
+ ]
54
+ stubfile = File.expand_path('../../../../spec/files/system/proc_cpu', __FILE__)
55
+ ZabbixRubyClient::Plugins::Cpu.stub(:getline).and_return(File.read(stubfile))
56
+ Time.stub(:now).and_return("123456789")
57
+ data = ZabbixRubyClient::Plugins::Cpu.send(:collect, 'local')
58
+ expect(data).to eq expected
59
+ end
10
60
 
11
61
  end
@@ -7,6 +7,82 @@ require "zabbix-ruby-client/plugins/disk"
7
7
 
8
8
  describe ZabbixRubyClient::Plugins::Disk do
9
9
 
10
- pending "populate a hash with extracted data"
10
+ before :all do
11
+ @logfile = File.expand_path("../../files/logs/spec.log", __FILE__)
12
+ ZabbixRubyClient::Log.set_logger(@logfile)
13
+ end
14
+
15
+ after :all do
16
+ FileUtils.rm_rf @logfile if File.exists? @logfile
17
+ end
18
+
19
+ it "launches a command to get disk space" do
20
+ expect(ZabbixRubyClient::Plugins::Disk).to receive(:`).with('df | grep "xx"')
21
+ ZabbixRubyClient::Plugins::Disk.send(:diskinfo, 'xx')
22
+ end
23
+
24
+ it "prepare data to be usable" do
25
+ expected = [
26
+ "/dev/sda2",
27
+ "288238944",
28
+ "76560212",
29
+ "197013928",
30
+ "28%",
31
+ "/home",
32
+ "",
33
+ "8",
34
+ "1",
35
+ "sda1",
36
+ "974243",
37
+ "695335",
38
+ "37526290",
39
+ "4648644",
40
+ "711455",
41
+ "785503",
42
+ "27660904",
43
+ "11097172",
44
+ "0",
45
+ "6283844",
46
+ "15744924"
47
+ ]
48
+ stubfile_df = File.expand_path('../../../../spec/files/system/df', __FILE__)
49
+ stubfile_io = File.expand_path('../../../../spec/files/system/diskstats', __FILE__)
50
+ ZabbixRubyClient::Plugins::Disk.stub(:diskinfo).and_return(File.read(stubfile_df))
51
+ ZabbixRubyClient::Plugins::Disk.stub(:getline).and_return(File.read(stubfile_io))
52
+ data = ZabbixRubyClient::Plugins::Disk.send(:get_info, 0, 0)
53
+ expect(data).to eq expected
54
+ end
55
+
56
+ it "populate a hash with extracted data" do
57
+ expected = [
58
+ "local disk.space[xxx,size] 123456789 288238944000",
59
+ "local disk.space[xxx,used] 123456789 76560212000",
60
+ "local disk.space[xxx,available] 123456789 197013928000",
61
+ "local disk.space[xxx,percent_used] 123456789 28",
62
+ "local disk.io[xxx,read_ok] 123456789 sda1",
63
+ "local disk.io[xxx,read_merged] 123456789 974243",
64
+ "local disk.io[xxx,read_sector] 123456789 695335",
65
+ "local disk.io[xxx,read_time] 123456789 37526290",
66
+ "local disk.io[xxx,write_ok] 123456789 4648644",
67
+ "local disk.io[xxx,write_merged] 123456789 711455",
68
+ "local disk.io[xxx,write_sector] 123456789 785503",
69
+ "local disk.io[xxx,write_time] 123456789 27660904",
70
+ "local disk.io[xxx,io_time] 123456789 11097172",
71
+ "local disk.io[xxx,io_weighted] 123456789 0"
72
+ ]
73
+ stubfile_df = File.expand_path('../../../../spec/files/system/df', __FILE__)
74
+ stubfile_io = File.expand_path('../../../../spec/files/system/diskstats', __FILE__)
75
+ ZabbixRubyClient::Plugins::Disk.stub(:diskinfo).and_return(File.read(stubfile_df))
76
+ ZabbixRubyClient::Plugins::Disk.stub(:getline).and_return(File.read(stubfile_io))
77
+ Time.stub(:now).and_return("123456789")
78
+ data = ZabbixRubyClient::Plugins::Disk.send(:collect, 'local', 'xxx', 'xxx')
79
+ expect(data).to eq expected
80
+ end
81
+
82
+ it "declares discoverable volumes" do
83
+ expected = [ "disk.dev.discovery", '{"{#DISK_DEVICE}": "sda1", "{#DISK_MOUNT}": "lvm1"}' ]
84
+ data = ZabbixRubyClient::Plugins::Disk.send(:discover, '', 'lvm1', 'sda1')
85
+ expect(data).to eq expected
86
+ end
11
87
 
12
88
  end
@@ -0,0 +1,41 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+ require "zabbix-ruby-client/plugins"
5
+ ZabbixRubyClient::Plugins.scan_dirs ["zabbix-ruby-client/plugins"]
6
+ require "zabbix-ruby-client/plugins/load"
7
+
8
+ describe ZabbixRubyClient::Plugins::Load do
9
+
10
+ before :all do
11
+ @logfile = File.expand_path("../../files/logs/spec.log", __FILE__)
12
+ ZabbixRubyClient::Log.set_logger(@logfile)
13
+ end
14
+
15
+ after :all do
16
+ FileUtils.rm_rf @logfile if File.exists? @logfile
17
+ end
18
+
19
+ it "prepare data to be usable" do
20
+ expected = ["0.89", "1.29", "1.05", "2", "2768"]
21
+ stubfile = File.expand_path('../../../../spec/files/system/loadavg', __FILE__)
22
+ ZabbixRubyClient::Plugins::Load.stub(:getline).and_return(File.read(stubfile).strip)
23
+ data = ZabbixRubyClient::Plugins::Load.send(:get_info)
24
+ expect(data).to eq expected
25
+ end
26
+
27
+ it "populate a hash with extracted data" do
28
+ expected = [
29
+ "local load[one] 123456789 0.89",
30
+ "local load[five] 123456789 1.29",
31
+ "local load[fifteen] 123456789 1.05",
32
+ "local load[procs] 123456789 2"
33
+ ]
34
+ stubfile = File.expand_path('../../../../spec/files/system/loadavg', __FILE__)
35
+ ZabbixRubyClient::Plugins::Load.stub(:getline).and_return(File.read(stubfile))
36
+ Time.stub(:now).and_return("123456789")
37
+ data = ZabbixRubyClient::Plugins::Load.send(:collect, 'local')
38
+ expect(data).to eq expected
39
+ end
40
+
41
+ end
@@ -7,7 +7,88 @@ require "zabbix-ruby-client/plugins/memory"
7
7
 
8
8
  describe ZabbixRubyClient::Plugins::Memory do
9
9
 
10
- pending "populate a hash with extracted data"
11
- pending "splits info to prepare collection"
10
+
11
+ before :all do
12
+ @logfile = File.expand_path("../../files/logs/spec.log", __FILE__)
13
+ ZabbixRubyClient::Log.set_logger(@logfile)
14
+ end
15
+
16
+ after :all do
17
+ FileUtils.rm_rf @logfile if File.exists? @logfile
18
+ end
19
+
20
+ it "launches a command to get meminfo" do
21
+ expect(ZabbixRubyClient::Plugins::Memory).to receive(:`).with('cat /proc/meminfo')
22
+ ZabbixRubyClient::Plugins::Memory.send(:meminfo)
23
+ end
24
+
25
+ it "prepare data to be usable" do
26
+ expected = {
27
+ "MemTotal"=>4229570560,
28
+ "MemFree"=>685416448,
29
+ "Buffers"=>59116,
30
+ "Cached"=>385776,
31
+ "SwapCached"=>204968,
32
+ "Active"=>2664148,
33
+ "Inactive"=>883200,
34
+ "Unevictable"=>212,
35
+ "Mlocked"=>212,
36
+ "HighTotal"=>3280520,
37
+ "HighFree"=>41136,
38
+ "LowTotal"=>849920,
39
+ "LowFree"=>183324,
40
+ "SwapTotal"=>5999050752,
41
+ "SwapFree"=>3666022400,
42
+ "Dirty"=>532,
43
+ "Writeback"=>0,
44
+ "AnonPages"=>3002480,
45
+ "Mapped"=>278560,
46
+ "Shmem"=>110636,
47
+ "Slab"=>92716,
48
+ "SReclaimable"=>60300,
49
+ "SUnreclaim"=>32416,
50
+ "KernelStack"=>7752,
51
+ "PageTables"=>49584,
52
+ "NFS_Unstable"=>0,
53
+ "Bounce"=>0,
54
+ "WritebackTmp"=>0,
55
+ "CommitLimit"=>7923668,
56
+ "Committed_AS"=>15878488,
57
+ "VmallocTotal"=>122880,
58
+ "VmallocUsed"=>49400,
59
+ "VmallocChunk"=>66212,
60
+ "HardwareCorrupted"=>0,
61
+ "AnonHugePages"=>0,
62
+ "Hugepagesize"=>2048,
63
+ "DirectMap4k"=>851960,
64
+ "DirectMap2M"=>61440,
65
+ "MemUsed"=>3544154112,
66
+ "MemPercent"=>83,
67
+ "SwapUsed"=>2333028352,
68
+ "SwapPercent"=>38
69
+ }
70
+ stubfile = File.expand_path('../../../../spec/files/system/meminfo', __FILE__)
71
+ ZabbixRubyClient::Plugins::Memory.stub(:meminfo).and_return(File.read(stubfile))
72
+ data = ZabbixRubyClient::Plugins::Memory.send(:get_info)
73
+ expect(data).to eq expected
74
+ end
75
+
76
+ it "populate a hash with extracted data" do
77
+ expected = [
78
+ "local memory[total] 123456789 4229570560",
79
+ "local memory[free] 123456789 685416448",
80
+ "local memory[used] 123456789 3544154112",
81
+ "local memory[percent_used] 123456789 83",
82
+ "local memory[swap_total] 123456789 5999050752",
83
+ "local memory[swap_free] 123456789 3666022400",
84
+ "local memory[swap_used] 123456789 2333028352",
85
+ "local memory[swap_percent_used] 123456789 38"
86
+ ]
87
+ stubfile = File.expand_path('../../../../spec/files/system/meminfo', __FILE__)
88
+ ZabbixRubyClient::Plugins::Memory.stub(:meminfo).and_return(File.read(stubfile))
89
+ Time.stub(:now).and_return("123456789")
90
+ data = ZabbixRubyClient::Plugins::Memory.send(:collect, 'local')
91
+ expect(data).to eq expected
92
+ end
12
93
 
13
94
  end
@@ -7,6 +7,65 @@ require "zabbix-ruby-client/plugins/network"
7
7
 
8
8
  describe ZabbixRubyClient::Plugins::Network do
9
9
 
10
- pending "populate a hash with extracted data"
10
+
11
+ before :all do
12
+ @logfile = File.expand_path("../../files/logs/spec.log", __FILE__)
13
+ ZabbixRubyClient::Log.set_logger(@logfile)
14
+ end
15
+
16
+ after :all do
17
+ FileUtils.rm_rf @logfile if File.exists? @logfile
18
+ end
19
+
20
+ it "prepare data to be usable" do
21
+ expected = [
22
+ "",
23
+ "eth0:",
24
+ "8523363858",
25
+ "17554648",
26
+ "0",
27
+ "0",
28
+ "0",
29
+ "0",
30
+ "0",
31
+ "589997",
32
+ "2479556217",
33
+ "15780062",
34
+ "0",
35
+ "0",
36
+ "0",
37
+ "0",
38
+ "0",
39
+ "0"
40
+ ]
41
+ stubfile = File.expand_path('../../../../spec/files/system/net_dev', __FILE__)
42
+ ZabbixRubyClient::Plugins::Network.stub(:getline).and_return(File.read(stubfile))
43
+ data = ZabbixRubyClient::Plugins::Network.send(:get_info, 'eth0')
44
+ expect(data).to eq expected
45
+ end
46
+
47
+ it "populate a hash with extracted data" do
48
+ expected = [
49
+ "local net.rx_ok[eth0] 123456789 8523363858",
50
+ "local net.rx_packets[eth0] 123456789 17554648",
51
+ "local net.rx_err[eth0] 123456789 0",
52
+ "local net.rx_drop[eth0] 123456789 0",
53
+ "local net.tx_ok[eth0] 123456789 2479556217",
54
+ "local net.tx_packets[eth0] 123456789 15780062",
55
+ "local net.tx_err[eth0] 123456789 0",
56
+ "local net.tx_drop[eth0] 123456789 0"
57
+ ]
58
+ stubfile = File.expand_path('../../../../spec/files/system/net_dev', __FILE__)
59
+ ZabbixRubyClient::Plugins::Network.stub(:getline).and_return(File.read(stubfile))
60
+ Time.stub(:now).and_return("123456789")
61
+ data = ZabbixRubyClient::Plugins::Network.send(:collect, 'local', 'eth0')
62
+ expect(data).to eq expected
63
+ end
64
+
65
+ it "declares discoverable interfaces" do
66
+ expected = [ "net.if.discovery", '{"{#NET_IF}": "eth0"}' ]
67
+ data = ZabbixRubyClient::Plugins::Network.send(:discover, 'eth0')
68
+ expect(data).to eq expected
69
+ end
11
70
 
12
71
  end
@@ -18,7 +18,9 @@ describe ZabbixRubyClient::Plugins do
18
18
  end
19
19
 
20
20
  it "loading dirs works" do
21
- result = {"sample" => File.join(@plugindir, "sample.rb") }
21
+ result = { "sample" => File.join(@plugindir, "sample.rb"),
22
+ "sample_discover" => File.join(@plugindir, "sample_discover.rb"),
23
+ "sample_buggy" => File.join(@plugindir, "sample_buggy.rb")}
22
24
  expect(ZabbixRubyClient::Plugins.instance_variable_get(:@available)).to eq result
23
25
  end
24
26
 
@@ -0,0 +1,3 @@
1
+ ---
2
+ - name: postgres
3
+ args: [ "-U username -h localhost", "dbname" ]
@@ -23,5 +23,6 @@ Gem::Specification.new do |spec|
23
23
  spec.add_development_dependency "bundler", "~> 1.3"
24
24
  spec.add_development_dependency "rake"
25
25
  spec.add_development_dependency "rspec"
26
+ spec.add_development_dependency "webmock"
26
27
  spec.add_development_dependency "coveralls"
27
28
  end
@@ -0,0 +1,833 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <zabbix_export>
3
+ <version>2.0</version>
4
+ <date>2013-12-13T09:34:45Z</date>
5
+ <groups>
6
+ <group>
7
+ <name>3. Service Postgres</name>
8
+ </group>
9
+ </groups>
10
+ <templates>
11
+ <template>
12
+ <template>Postgres Stats</template>
13
+ <name>Postgres (zrc)</name>
14
+ <groups>
15
+ <group>
16
+ <name>3. Service Postgres</name>
17
+ </group>
18
+ </groups>
19
+ <applications>
20
+ <application>
21
+ <name>Postgres</name>
22
+ </application>
23
+ </applications>
24
+ <items/>
25
+ <discovery_rules>
26
+ <discovery_rule>
27
+ <name>Database</name>
28
+ <type>2</type>
29
+ <snmp_community/>
30
+ <snmp_oid/>
31
+ <key>postgres.db.discovery</key>
32
+ <delay>0</delay>
33
+ <status>0</status>
34
+ <allowed_hosts/>
35
+ <snmpv3_contextname/>
36
+ <snmpv3_securityname/>
37
+ <snmpv3_securitylevel>0</snmpv3_securitylevel>
38
+ <snmpv3_authprotocol>0</snmpv3_authprotocol>
39
+ <snmpv3_authpassphrase/>
40
+ <snmpv3_privprotocol>0</snmpv3_privprotocol>
41
+ <snmpv3_privpassphrase/>
42
+ <delay_flex/>
43
+ <params/>
44
+ <ipmi_sensor/>
45
+ <authtype>0</authtype>
46
+ <username/>
47
+ <password/>
48
+ <publickey/>
49
+ <privatekey/>
50
+ <port/>
51
+ <filter>:</filter>
52
+ <lifetime>30</lifetime>
53
+ <description/>
54
+ <item_prototypes>
55
+ <item_prototype>
56
+ <name>{#DBNAME} block read time</name>
57
+ <type>2</type>
58
+ <snmp_community/>
59
+ <multiplier>0</multiplier>
60
+ <snmp_oid/>
61
+ <key>postgres.blk_read_time[{#DBNAME}]</key>
62
+ <delay>0</delay>
63
+ <history>90</history>
64
+ <trends>365</trends>
65
+ <status>0</status>
66
+ <value_type>3</value_type>
67
+ <allowed_hosts/>
68
+ <units/>
69
+ <delta>2</delta>
70
+ <snmpv3_contextname/>
71
+ <snmpv3_securityname/>
72
+ <snmpv3_securitylevel>0</snmpv3_securitylevel>
73
+ <snmpv3_authprotocol>0</snmpv3_authprotocol>
74
+ <snmpv3_authpassphrase/>
75
+ <snmpv3_privprotocol>0</snmpv3_privprotocol>
76
+ <snmpv3_privpassphrase/>
77
+ <formula>1</formula>
78
+ <delay_flex/>
79
+ <params/>
80
+ <ipmi_sensor/>
81
+ <data_type>0</data_type>
82
+ <authtype>0</authtype>
83
+ <username/>
84
+ <password/>
85
+ <publickey/>
86
+ <privatekey/>
87
+ <port/>
88
+ <description/>
89
+ <inventory_link>0</inventory_link>
90
+ <applications>
91
+ <application>
92
+ <name>Postgres</name>
93
+ </application>
94
+ </applications>
95
+ <valuemap/>
96
+ </item_prototype>
97
+ <item_prototype>
98
+ <name>{#DBNAME} blocks hit</name>
99
+ <type>2</type>
100
+ <snmp_community/>
101
+ <multiplier>0</multiplier>
102
+ <snmp_oid/>
103
+ <key>postgres.blks_hit[{#DBNAME}]</key>
104
+ <delay>0</delay>
105
+ <history>90</history>
106
+ <trends>365</trends>
107
+ <status>0</status>
108
+ <value_type>3</value_type>
109
+ <allowed_hosts/>
110
+ <units/>
111
+ <delta>2</delta>
112
+ <snmpv3_contextname/>
113
+ <snmpv3_securityname/>
114
+ <snmpv3_securitylevel>0</snmpv3_securitylevel>
115
+ <snmpv3_authprotocol>0</snmpv3_authprotocol>
116
+ <snmpv3_authpassphrase/>
117
+ <snmpv3_privprotocol>0</snmpv3_privprotocol>
118
+ <snmpv3_privpassphrase/>
119
+ <formula>1</formula>
120
+ <delay_flex/>
121
+ <params/>
122
+ <ipmi_sensor/>
123
+ <data_type>0</data_type>
124
+ <authtype>0</authtype>
125
+ <username/>
126
+ <password/>
127
+ <publickey/>
128
+ <privatekey/>
129
+ <port/>
130
+ <description/>
131
+ <inventory_link>0</inventory_link>
132
+ <applications>
133
+ <application>
134
+ <name>Postgres</name>
135
+ </application>
136
+ </applications>
137
+ <valuemap/>
138
+ </item_prototype>
139
+ <item_prototype>
140
+ <name>{#DBNAME} blocks read</name>
141
+ <type>2</type>
142
+ <snmp_community/>
143
+ <multiplier>0</multiplier>
144
+ <snmp_oid/>
145
+ <key>postgres.blks_read[{#DBNAME}]</key>
146
+ <delay>0</delay>
147
+ <history>90</history>
148
+ <trends>365</trends>
149
+ <status>0</status>
150
+ <value_type>3</value_type>
151
+ <allowed_hosts/>
152
+ <units/>
153
+ <delta>2</delta>
154
+ <snmpv3_contextname/>
155
+ <snmpv3_securityname/>
156
+ <snmpv3_securitylevel>0</snmpv3_securitylevel>
157
+ <snmpv3_authprotocol>0</snmpv3_authprotocol>
158
+ <snmpv3_authpassphrase/>
159
+ <snmpv3_privprotocol>0</snmpv3_privprotocol>
160
+ <snmpv3_privpassphrase/>
161
+ <formula>1</formula>
162
+ <delay_flex/>
163
+ <params/>
164
+ <ipmi_sensor/>
165
+ <data_type>0</data_type>
166
+ <authtype>0</authtype>
167
+ <username/>
168
+ <password/>
169
+ <publickey/>
170
+ <privatekey/>
171
+ <port/>
172
+ <description/>
173
+ <inventory_link>0</inventory_link>
174
+ <applications>
175
+ <application>
176
+ <name>Postgres</name>
177
+ </application>
178
+ </applications>
179
+ <valuemap/>
180
+ </item_prototype>
181
+ <item_prototype>
182
+ <name>{#DBNAME} block write time</name>
183
+ <type>2</type>
184
+ <snmp_community/>
185
+ <multiplier>0</multiplier>
186
+ <snmp_oid/>
187
+ <key>postgres.blk_write_time[{#DBNAME}]</key>
188
+ <delay>0</delay>
189
+ <history>90</history>
190
+ <trends>365</trends>
191
+ <status>0</status>
192
+ <value_type>3</value_type>
193
+ <allowed_hosts/>
194
+ <units/>
195
+ <delta>2</delta>
196
+ <snmpv3_contextname/>
197
+ <snmpv3_securityname/>
198
+ <snmpv3_securitylevel>0</snmpv3_securitylevel>
199
+ <snmpv3_authprotocol>0</snmpv3_authprotocol>
200
+ <snmpv3_authpassphrase/>
201
+ <snmpv3_privprotocol>0</snmpv3_privprotocol>
202
+ <snmpv3_privpassphrase/>
203
+ <formula>1</formula>
204
+ <delay_flex/>
205
+ <params/>
206
+ <ipmi_sensor/>
207
+ <data_type>0</data_type>
208
+ <authtype>0</authtype>
209
+ <username/>
210
+ <password/>
211
+ <publickey/>
212
+ <privatekey/>
213
+ <port/>
214
+ <description/>
215
+ <inventory_link>0</inventory_link>
216
+ <applications>
217
+ <application>
218
+ <name>Postgres</name>
219
+ </application>
220
+ </applications>
221
+ <valuemap/>
222
+ </item_prototype>
223
+ <item_prototype>
224
+ <name>{#DBNAME} conflicts</name>
225
+ <type>2</type>
226
+ <snmp_community/>
227
+ <multiplier>0</multiplier>
228
+ <snmp_oid/>
229
+ <key>postgres.conflicts[{#DBNAME}]</key>
230
+ <delay>0</delay>
231
+ <history>90</history>
232
+ <trends>365</trends>
233
+ <status>0</status>
234
+ <value_type>3</value_type>
235
+ <allowed_hosts/>
236
+ <units/>
237
+ <delta>2</delta>
238
+ <snmpv3_contextname/>
239
+ <snmpv3_securityname/>
240
+ <snmpv3_securitylevel>0</snmpv3_securitylevel>
241
+ <snmpv3_authprotocol>0</snmpv3_authprotocol>
242
+ <snmpv3_authpassphrase/>
243
+ <snmpv3_privprotocol>0</snmpv3_privprotocol>
244
+ <snmpv3_privpassphrase/>
245
+ <formula>1</formula>
246
+ <delay_flex/>
247
+ <params/>
248
+ <ipmi_sensor/>
249
+ <data_type>0</data_type>
250
+ <authtype>0</authtype>
251
+ <username/>
252
+ <password/>
253
+ <publickey/>
254
+ <privatekey/>
255
+ <port/>
256
+ <description/>
257
+ <inventory_link>0</inventory_link>
258
+ <applications>
259
+ <application>
260
+ <name>Postgres</name>
261
+ </application>
262
+ </applications>
263
+ <valuemap/>
264
+ </item_prototype>
265
+ <item_prototype>
266
+ <name>{#DBNAME} connections</name>
267
+ <type>2</type>
268
+ <snmp_community/>
269
+ <multiplier>0</multiplier>
270
+ <snmp_oid/>
271
+ <key>postgres.numbackends[{#DBNAME}]</key>
272
+ <delay>0</delay>
273
+ <history>90</history>
274
+ <trends>365</trends>
275
+ <status>0</status>
276
+ <value_type>3</value_type>
277
+ <allowed_hosts/>
278
+ <units/>
279
+ <delta>0</delta>
280
+ <snmpv3_contextname/>
281
+ <snmpv3_securityname/>
282
+ <snmpv3_securitylevel>0</snmpv3_securitylevel>
283
+ <snmpv3_authprotocol>0</snmpv3_authprotocol>
284
+ <snmpv3_authpassphrase/>
285
+ <snmpv3_privprotocol>0</snmpv3_privprotocol>
286
+ <snmpv3_privpassphrase/>
287
+ <formula>1</formula>
288
+ <delay_flex/>
289
+ <params/>
290
+ <ipmi_sensor/>
291
+ <data_type>0</data_type>
292
+ <authtype>0</authtype>
293
+ <username/>
294
+ <password/>
295
+ <publickey/>
296
+ <privatekey/>
297
+ <port/>
298
+ <description/>
299
+ <inventory_link>0</inventory_link>
300
+ <applications>
301
+ <application>
302
+ <name>Postgres</name>
303
+ </application>
304
+ </applications>
305
+ <valuemap/>
306
+ </item_prototype>
307
+ <item_prototype>
308
+ <name>{#DBNAME} deadlocks</name>
309
+ <type>2</type>
310
+ <snmp_community/>
311
+ <multiplier>0</multiplier>
312
+ <snmp_oid/>
313
+ <key>postgres.deadlocks[{#DBNAME}]</key>
314
+ <delay>0</delay>
315
+ <history>90</history>
316
+ <trends>365</trends>
317
+ <status>0</status>
318
+ <value_type>3</value_type>
319
+ <allowed_hosts/>
320
+ <units/>
321
+ <delta>2</delta>
322
+ <snmpv3_contextname/>
323
+ <snmpv3_securityname/>
324
+ <snmpv3_securitylevel>0</snmpv3_securitylevel>
325
+ <snmpv3_authprotocol>0</snmpv3_authprotocol>
326
+ <snmpv3_authpassphrase/>
327
+ <snmpv3_privprotocol>0</snmpv3_privprotocol>
328
+ <snmpv3_privpassphrase/>
329
+ <formula>1</formula>
330
+ <delay_flex/>
331
+ <params/>
332
+ <ipmi_sensor/>
333
+ <data_type>0</data_type>
334
+ <authtype>0</authtype>
335
+ <username/>
336
+ <password/>
337
+ <publickey/>
338
+ <privatekey/>
339
+ <port/>
340
+ <description/>
341
+ <inventory_link>0</inventory_link>
342
+ <applications>
343
+ <application>
344
+ <name>Postgres</name>
345
+ </application>
346
+ </applications>
347
+ <valuemap/>
348
+ </item_prototype>
349
+ <item_prototype>
350
+ <name>{#DBNAME} exact commits</name>
351
+ <type>2</type>
352
+ <snmp_community/>
353
+ <multiplier>0</multiplier>
354
+ <snmp_oid/>
355
+ <key>postgres.xact_commit[{#DBNAME}]</key>
356
+ <delay>0</delay>
357
+ <history>90</history>
358
+ <trends>365</trends>
359
+ <status>0</status>
360
+ <value_type>3</value_type>
361
+ <allowed_hosts/>
362
+ <units/>
363
+ <delta>2</delta>
364
+ <snmpv3_contextname/>
365
+ <snmpv3_securityname/>
366
+ <snmpv3_securitylevel>0</snmpv3_securitylevel>
367
+ <snmpv3_authprotocol>0</snmpv3_authprotocol>
368
+ <snmpv3_authpassphrase/>
369
+ <snmpv3_privprotocol>0</snmpv3_privprotocol>
370
+ <snmpv3_privpassphrase/>
371
+ <formula>1</formula>
372
+ <delay_flex/>
373
+ <params/>
374
+ <ipmi_sensor/>
375
+ <data_type>0</data_type>
376
+ <authtype>0</authtype>
377
+ <username/>
378
+ <password/>
379
+ <publickey/>
380
+ <privatekey/>
381
+ <port/>
382
+ <description/>
383
+ <inventory_link>0</inventory_link>
384
+ <applications>
385
+ <application>
386
+ <name>Postgres</name>
387
+ </application>
388
+ </applications>
389
+ <valuemap/>
390
+ </item_prototype>
391
+ <item_prototype>
392
+ <name>{#DBNAME} exact rollbacks</name>
393
+ <type>2</type>
394
+ <snmp_community/>
395
+ <multiplier>0</multiplier>
396
+ <snmp_oid/>
397
+ <key>postgres.xact_rollback[{#DBNAME}]</key>
398
+ <delay>0</delay>
399
+ <history>90</history>
400
+ <trends>365</trends>
401
+ <status>0</status>
402
+ <value_type>3</value_type>
403
+ <allowed_hosts/>
404
+ <units/>
405
+ <delta>2</delta>
406
+ <snmpv3_contextname/>
407
+ <snmpv3_securityname/>
408
+ <snmpv3_securitylevel>0</snmpv3_securitylevel>
409
+ <snmpv3_authprotocol>0</snmpv3_authprotocol>
410
+ <snmpv3_authpassphrase/>
411
+ <snmpv3_privprotocol>0</snmpv3_privprotocol>
412
+ <snmpv3_privpassphrase/>
413
+ <formula>1</formula>
414
+ <delay_flex/>
415
+ <params/>
416
+ <ipmi_sensor/>
417
+ <data_type>0</data_type>
418
+ <authtype>0</authtype>
419
+ <username/>
420
+ <password/>
421
+ <publickey/>
422
+ <privatekey/>
423
+ <port/>
424
+ <description/>
425
+ <inventory_link>0</inventory_link>
426
+ <applications>
427
+ <application>
428
+ <name>Postgres</name>
429
+ </application>
430
+ </applications>
431
+ <valuemap/>
432
+ </item_prototype>
433
+ <item_prototype>
434
+ <name>{#DBNAME} temporary bytes</name>
435
+ <type>2</type>
436
+ <snmp_community/>
437
+ <multiplier>0</multiplier>
438
+ <snmp_oid/>
439
+ <key>postgres.temp_bytes[{#DBNAME}]</key>
440
+ <delay>0</delay>
441
+ <history>90</history>
442
+ <trends>365</trends>
443
+ <status>0</status>
444
+ <value_type>3</value_type>
445
+ <allowed_hosts/>
446
+ <units/>
447
+ <delta>2</delta>
448
+ <snmpv3_contextname/>
449
+ <snmpv3_securityname/>
450
+ <snmpv3_securitylevel>0</snmpv3_securitylevel>
451
+ <snmpv3_authprotocol>0</snmpv3_authprotocol>
452
+ <snmpv3_authpassphrase/>
453
+ <snmpv3_privprotocol>0</snmpv3_privprotocol>
454
+ <snmpv3_privpassphrase/>
455
+ <formula>1</formula>
456
+ <delay_flex/>
457
+ <params/>
458
+ <ipmi_sensor/>
459
+ <data_type>0</data_type>
460
+ <authtype>0</authtype>
461
+ <username/>
462
+ <password/>
463
+ <publickey/>
464
+ <privatekey/>
465
+ <port/>
466
+ <description/>
467
+ <inventory_link>0</inventory_link>
468
+ <applications>
469
+ <application>
470
+ <name>Postgres</name>
471
+ </application>
472
+ </applications>
473
+ <valuemap/>
474
+ </item_prototype>
475
+ <item_prototype>
476
+ <name>{#DBNAME} temporary files</name>
477
+ <type>2</type>
478
+ <snmp_community/>
479
+ <multiplier>0</multiplier>
480
+ <snmp_oid/>
481
+ <key>postgres.temp_files[{#DBNAME}]</key>
482
+ <delay>0</delay>
483
+ <history>90</history>
484
+ <trends>365</trends>
485
+ <status>0</status>
486
+ <value_type>3</value_type>
487
+ <allowed_hosts/>
488
+ <units/>
489
+ <delta>2</delta>
490
+ <snmpv3_contextname/>
491
+ <snmpv3_securityname/>
492
+ <snmpv3_securitylevel>0</snmpv3_securitylevel>
493
+ <snmpv3_authprotocol>0</snmpv3_authprotocol>
494
+ <snmpv3_authpassphrase/>
495
+ <snmpv3_privprotocol>0</snmpv3_privprotocol>
496
+ <snmpv3_privpassphrase/>
497
+ <formula>1</formula>
498
+ <delay_flex/>
499
+ <params/>
500
+ <ipmi_sensor/>
501
+ <data_type>0</data_type>
502
+ <authtype>0</authtype>
503
+ <username/>
504
+ <password/>
505
+ <publickey/>
506
+ <privatekey/>
507
+ <port/>
508
+ <description/>
509
+ <inventory_link>0</inventory_link>
510
+ <applications>
511
+ <application>
512
+ <name>Postgres</name>
513
+ </application>
514
+ </applications>
515
+ <valuemap/>
516
+ </item_prototype>
517
+ <item_prototype>
518
+ <name>{#DBNAME} tuples deleted</name>
519
+ <type>2</type>
520
+ <snmp_community/>
521
+ <multiplier>0</multiplier>
522
+ <snmp_oid/>
523
+ <key>postgres.tup_deleted[{#DBNAME}]</key>
524
+ <delay>0</delay>
525
+ <history>90</history>
526
+ <trends>365</trends>
527
+ <status>0</status>
528
+ <value_type>3</value_type>
529
+ <allowed_hosts/>
530
+ <units/>
531
+ <delta>2</delta>
532
+ <snmpv3_contextname/>
533
+ <snmpv3_securityname/>
534
+ <snmpv3_securitylevel>0</snmpv3_securitylevel>
535
+ <snmpv3_authprotocol>0</snmpv3_authprotocol>
536
+ <snmpv3_authpassphrase/>
537
+ <snmpv3_privprotocol>0</snmpv3_privprotocol>
538
+ <snmpv3_privpassphrase/>
539
+ <formula>1</formula>
540
+ <delay_flex/>
541
+ <params/>
542
+ <ipmi_sensor/>
543
+ <data_type>0</data_type>
544
+ <authtype>0</authtype>
545
+ <username/>
546
+ <password/>
547
+ <publickey/>
548
+ <privatekey/>
549
+ <port/>
550
+ <description/>
551
+ <inventory_link>0</inventory_link>
552
+ <applications>
553
+ <application>
554
+ <name>Postgres</name>
555
+ </application>
556
+ </applications>
557
+ <valuemap/>
558
+ </item_prototype>
559
+ <item_prototype>
560
+ <name>{#DBNAME} tuples fetched</name>
561
+ <type>2</type>
562
+ <snmp_community/>
563
+ <multiplier>0</multiplier>
564
+ <snmp_oid/>
565
+ <key>postgres.tup_fetched[{#DBNAME}]</key>
566
+ <delay>0</delay>
567
+ <history>90</history>
568
+ <trends>365</trends>
569
+ <status>0</status>
570
+ <value_type>3</value_type>
571
+ <allowed_hosts/>
572
+ <units/>
573
+ <delta>2</delta>
574
+ <snmpv3_contextname/>
575
+ <snmpv3_securityname/>
576
+ <snmpv3_securitylevel>0</snmpv3_securitylevel>
577
+ <snmpv3_authprotocol>0</snmpv3_authprotocol>
578
+ <snmpv3_authpassphrase/>
579
+ <snmpv3_privprotocol>0</snmpv3_privprotocol>
580
+ <snmpv3_privpassphrase/>
581
+ <formula>1</formula>
582
+ <delay_flex/>
583
+ <params/>
584
+ <ipmi_sensor/>
585
+ <data_type>0</data_type>
586
+ <authtype>0</authtype>
587
+ <username/>
588
+ <password/>
589
+ <publickey/>
590
+ <privatekey/>
591
+ <port/>
592
+ <description/>
593
+ <inventory_link>0</inventory_link>
594
+ <applications>
595
+ <application>
596
+ <name>Postgres</name>
597
+ </application>
598
+ </applications>
599
+ <valuemap/>
600
+ </item_prototype>
601
+ <item_prototype>
602
+ <name>{#DBNAME} tuples inserted</name>
603
+ <type>2</type>
604
+ <snmp_community/>
605
+ <multiplier>0</multiplier>
606
+ <snmp_oid/>
607
+ <key>postgres.tup_inserted[{#DBNAME}]</key>
608
+ <delay>0</delay>
609
+ <history>90</history>
610
+ <trends>365</trends>
611
+ <status>0</status>
612
+ <value_type>3</value_type>
613
+ <allowed_hosts/>
614
+ <units/>
615
+ <delta>2</delta>
616
+ <snmpv3_contextname/>
617
+ <snmpv3_securityname/>
618
+ <snmpv3_securitylevel>0</snmpv3_securitylevel>
619
+ <snmpv3_authprotocol>0</snmpv3_authprotocol>
620
+ <snmpv3_authpassphrase/>
621
+ <snmpv3_privprotocol>0</snmpv3_privprotocol>
622
+ <snmpv3_privpassphrase/>
623
+ <formula>1</formula>
624
+ <delay_flex/>
625
+ <params/>
626
+ <ipmi_sensor/>
627
+ <data_type>0</data_type>
628
+ <authtype>0</authtype>
629
+ <username/>
630
+ <password/>
631
+ <publickey/>
632
+ <privatekey/>
633
+ <port/>
634
+ <description/>
635
+ <inventory_link>0</inventory_link>
636
+ <applications>
637
+ <application>
638
+ <name>Postgres</name>
639
+ </application>
640
+ </applications>
641
+ <valuemap/>
642
+ </item_prototype>
643
+ <item_prototype>
644
+ <name>{#DBNAME} tuples returned</name>
645
+ <type>2</type>
646
+ <snmp_community/>
647
+ <multiplier>0</multiplier>
648
+ <snmp_oid/>
649
+ <key>postgres.tup_returned[{#DBNAME}]</key>
650
+ <delay>0</delay>
651
+ <history>90</history>
652
+ <trends>365</trends>
653
+ <status>0</status>
654
+ <value_type>3</value_type>
655
+ <allowed_hosts/>
656
+ <units/>
657
+ <delta>2</delta>
658
+ <snmpv3_contextname/>
659
+ <snmpv3_securityname/>
660
+ <snmpv3_securitylevel>0</snmpv3_securitylevel>
661
+ <snmpv3_authprotocol>0</snmpv3_authprotocol>
662
+ <snmpv3_authpassphrase/>
663
+ <snmpv3_privprotocol>0</snmpv3_privprotocol>
664
+ <snmpv3_privpassphrase/>
665
+ <formula>1</formula>
666
+ <delay_flex/>
667
+ <params/>
668
+ <ipmi_sensor/>
669
+ <data_type>0</data_type>
670
+ <authtype>0</authtype>
671
+ <username/>
672
+ <password/>
673
+ <publickey/>
674
+ <privatekey/>
675
+ <port/>
676
+ <description/>
677
+ <inventory_link>0</inventory_link>
678
+ <applications>
679
+ <application>
680
+ <name>Postgres</name>
681
+ </application>
682
+ </applications>
683
+ <valuemap/>
684
+ </item_prototype>
685
+ </item_prototypes>
686
+ <trigger_prototypes/>
687
+ <graph_prototypes>
688
+ <graph_prototype>
689
+ <name>PG {#DBNAME} activity</name>
690
+ <width>900</width>
691
+ <height>200</height>
692
+ <yaxismin>0.0000</yaxismin>
693
+ <yaxismax>100.0000</yaxismax>
694
+ <show_work_period>1</show_work_period>
695
+ <show_triggers>1</show_triggers>
696
+ <type>0</type>
697
+ <show_legend>1</show_legend>
698
+ <show_3d>0</show_3d>
699
+ <percent_left>0.0000</percent_left>
700
+ <percent_right>0.0000</percent_right>
701
+ <ymin_type_1>1</ymin_type_1>
702
+ <ymax_type_1>0</ymax_type_1>
703
+ <ymin_item_1>0</ymin_item_1>
704
+ <ymax_item_1>0</ymax_item_1>
705
+ <graph_items>
706
+ <graph_item>
707
+ <sortorder>0</sortorder>
708
+ <drawtype>0</drawtype>
709
+ <color>C80000</color>
710
+ <yaxisside>0</yaxisside>
711
+ <calc_fnc>2</calc_fnc>
712
+ <type>0</type>
713
+ <item>
714
+ <host>Postgres Stats</host>
715
+ <key>postgres.blk_read_time[{#DBNAME}]</key>
716
+ </item>
717
+ </graph_item>
718
+ <graph_item>
719
+ <sortorder>1</sortorder>
720
+ <drawtype>0</drawtype>
721
+ <color>00C800</color>
722
+ <yaxisside>0</yaxisside>
723
+ <calc_fnc>2</calc_fnc>
724
+ <type>0</type>
725
+ <item>
726
+ <host>Postgres Stats</host>
727
+ <key>postgres.blks_hit[{#DBNAME}]</key>
728
+ </item>
729
+ </graph_item>
730
+ <graph_item>
731
+ <sortorder>2</sortorder>
732
+ <drawtype>0</drawtype>
733
+ <color>0000C8</color>
734
+ <yaxisside>0</yaxisside>
735
+ <calc_fnc>2</calc_fnc>
736
+ <type>0</type>
737
+ <item>
738
+ <host>Postgres Stats</host>
739
+ <key>postgres.xact_commit[{#DBNAME}]</key>
740
+ </item>
741
+ </graph_item>
742
+ <graph_item>
743
+ <sortorder>3</sortorder>
744
+ <drawtype>0</drawtype>
745
+ <color>C800C8</color>
746
+ <yaxisside>0</yaxisside>
747
+ <calc_fnc>2</calc_fnc>
748
+ <type>0</type>
749
+ <item>
750
+ <host>Postgres Stats</host>
751
+ <key>postgres.xact_rollback[{#DBNAME}]</key>
752
+ </item>
753
+ </graph_item>
754
+ </graph_items>
755
+ </graph_prototype>
756
+ <graph_prototype>
757
+ <name>PG {#DBNAME} Tuples</name>
758
+ <width>900</width>
759
+ <height>200</height>
760
+ <yaxismin>0.0000</yaxismin>
761
+ <yaxismax>100.0000</yaxismax>
762
+ <show_work_period>1</show_work_period>
763
+ <show_triggers>1</show_triggers>
764
+ <type>1</type>
765
+ <show_legend>1</show_legend>
766
+ <show_3d>0</show_3d>
767
+ <percent_left>0.0000</percent_left>
768
+ <percent_right>0.0000</percent_right>
769
+ <ymin_type_1>1</ymin_type_1>
770
+ <ymax_type_1>0</ymax_type_1>
771
+ <ymin_item_1>0</ymin_item_1>
772
+ <ymax_item_1>0</ymax_item_1>
773
+ <graph_items>
774
+ <graph_item>
775
+ <sortorder>0</sortorder>
776
+ <drawtype>0</drawtype>
777
+ <color>C80000</color>
778
+ <yaxisside>0</yaxisside>
779
+ <calc_fnc>2</calc_fnc>
780
+ <type>0</type>
781
+ <item>
782
+ <host>Postgres Stats</host>
783
+ <key>postgres.tup_deleted[{#DBNAME}]</key>
784
+ </item>
785
+ </graph_item>
786
+ <graph_item>
787
+ <sortorder>1</sortorder>
788
+ <drawtype>0</drawtype>
789
+ <color>00C800</color>
790
+ <yaxisside>0</yaxisside>
791
+ <calc_fnc>2</calc_fnc>
792
+ <type>0</type>
793
+ <item>
794
+ <host>Postgres Stats</host>
795
+ <key>postgres.tup_fetched[{#DBNAME}]</key>
796
+ </item>
797
+ </graph_item>
798
+ <graph_item>
799
+ <sortorder>2</sortorder>
800
+ <drawtype>0</drawtype>
801
+ <color>0000C8</color>
802
+ <yaxisside>0</yaxisside>
803
+ <calc_fnc>2</calc_fnc>
804
+ <type>0</type>
805
+ <item>
806
+ <host>Postgres Stats</host>
807
+ <key>postgres.tup_inserted[{#DBNAME}]</key>
808
+ </item>
809
+ </graph_item>
810
+ <graph_item>
811
+ <sortorder>3</sortorder>
812
+ <drawtype>0</drawtype>
813
+ <color>C800C8</color>
814
+ <yaxisside>0</yaxisside>
815
+ <calc_fnc>2</calc_fnc>
816
+ <type>0</type>
817
+ <item>
818
+ <host>Postgres Stats</host>
819
+ <key>postgres.tup_returned[{#DBNAME}]</key>
820
+ </item>
821
+ </graph_item>
822
+ </graph_items>
823
+ </graph_prototype>
824
+ </graph_prototypes>
825
+ <host_prototypes/>
826
+ </discovery_rule>
827
+ </discovery_rules>
828
+ <macros/>
829
+ <templates/>
830
+ <screens/>
831
+ </template>
832
+ </templates>
833
+ </zabbix_export>