6
6
7
7
class Cfs (Plugin ):
8
8
9
- Interval = 60
9
+ ratioInterval , ratioCounter = 10 , 0
10
+ timeRatioInterval = ratioInterval * 60
10
11
11
12
DEFAULT_CONFIG = {'force_enable' : str (False )}
12
13
@@ -49,17 +50,20 @@ def run(self, zbx):
49
50
if self .plugin_config ('force_enable' ) == 'False' :
50
51
self .disable_and_exit_if_not_pgpro_ee ()
51
52
52
- relations , compressed_size , non_compressed_size = [], 0 , 0
53
- for db in Pooler .databases ():
54
- for row in Pooler .query (self .compressed_ratio_sql , db ):
55
- relation_name = '{0}.{1}' .format (db , row [0 ])
56
- relations .append ({'{#COMPRESSED_RELATION}' : relation_name })
57
- compressed_size += row [2 ]
58
- non_compressed_size += row [2 ] * row [1 ]
59
- zbx .send ('pgsql.cfs.compress_ratio[{0}]' .format (relation_name ), row [1 ])
60
- zbx .send ('pgsql.cfs.discovery_compressed_relations[]' , zbx .json ({'data' : relations }))
61
- zbx .send ('pgsql.cfs.activity[total_compress_ratio]' , non_compressed_size / compressed_size )
62
- del (relations , compressed_size , non_compressed_size )
53
+ if self .ratioCounter == self .ratioInterval :
54
+ relations , compressed_size , non_compressed_size = [], 0 , 0
55
+ for db in Pooler .databases ():
56
+ for row in Pooler .query (self .compressed_ratio_sql , db ):
57
+ relation_name = '{0}.{1}' .format (db , row [0 ])
58
+ relations .append ({'{#COMPRESSED_RELATION}' : relation_name })
59
+ compressed_size += row [2 ]
60
+ non_compressed_size += row [2 ] * row [1 ]
61
+ zbx .send ('pgsql.cfs.compress_ratio[{0}]' .format (relation_name ), row [1 ])
62
+ zbx .send ('pgsql.cfs.discovery_compressed_relations[]' , zbx .json ({'data' : relations }))
63
+ zbx .send ('pgsql.cfs.activity[total_compress_ratio]' , non_compressed_size / compressed_size )
64
+ del (relations , compressed_size , non_compressed_size )
65
+ self .ratioCounter = 0
66
+ self .ratioCounter += 1
63
67
64
68
info = Pooler .query (self .activity_sql )[0 ]
65
69
zbx .send ('pgsql.cfs.activity[written_bytes]' , info [0 ], delta = self .DELTA_SPEED , only_positive_speed = True )
@@ -73,33 +77,40 @@ def run(self, zbx):
73
77
self .prev ['written_bytes' ] = info [0 ]
74
78
self .prev ['scanned_bytes' ] = info [1 ]
75
79
76
- zbx .send ('pgsql.cfs.activity[compressed_files]' , info [2 ], delta = self .DELTA_SPEED , only_positive_speed = True )
77
- zbx .send ('pgsql.cfs.activity[scanned_files]' , info [3 ], delta = self .DELTA_SPEED , only_positive_speed = True )
80
+ # information about files
81
+ zbx .send ('pgsql.cfs.activity[compressed_files]' , info [2 ] * self .Interval , delta = self .DELTA_SPEED , only_positive_speed = True )
82
+ zbx .send ('pgsql.cfs.activity[scanned_files]' , info [3 ] * self .Interval , delta = self .DELTA_SPEED , only_positive_speed = True )
78
83
79
84
def items (self , template ):
80
85
return template .item ({
81
86
'name' : 'PostgreSQL cfs compression: written byte/s' ,
82
87
'key' : 'pgsql.cfs.activity[written_bytes]' ,
88
+ 'units' : self .UNITS .bytes ,
83
89
'delay' : self .Interval
84
90
}) + template .item ({
85
91
'name' : 'PostgreSQL cfs compression: scanned byte/s' ,
86
92
'key' : 'pgsql.cfs.activity[scanned_bytes]' ,
93
+ 'units' : self .UNITS .bytes ,
87
94
'delay' : self .Interval
88
95
}) + template .item ({
89
- 'name' : 'PostgreSQL cfs compression: compressed files/s ' ,
96
+ 'name' : 'PostgreSQL cfs compression: compressed files' ,
90
97
'key' : 'pgsql.cfs.activity[compressed_files]' ,
98
+ 'units' : self .UNITS .none ,
91
99
'delay' : self .Interval
92
100
}) + template .item ({
93
- 'name' : 'PostgreSQL cfs compression: scanned files/s ' ,
101
+ 'name' : 'PostgreSQL cfs compression: scanned files' ,
94
102
'key' : 'pgsql.cfs.activity[scanned_files]' ,
103
+ 'units' : self .UNITS .none ,
95
104
'delay' : self .Interval
96
105
}) + template .item ({
97
106
'name' : 'PostgreSQL cfs compression: current ratio' ,
98
107
'key' : 'pgsql.cfs.activity[current_compress_ratio]' ,
108
+ 'units' : self .UNITS .none ,
99
109
'delay' : self .Interval
100
110
}) + template .item ({
101
111
'name' : 'PostgreSQL cfs compression: total ratio' ,
102
112
'key' : 'pgsql.cfs.activity[total_compress_ratio]' ,
113
+ 'units' : self .UNITS .none ,
103
114
'delay' : self .Interval
104
115
})
105
116
@@ -143,12 +154,12 @@ def discovery_rules(self, template):
143
154
items = [
144
155
{'key' : 'pgsql.cfs.compress_ratio[{#COMPRESSED_RELATION}]' ,
145
156
'name' : 'Relation {#COMPRESSED_RELATION}: compress ratio' ,
146
- 'delay' : self .Interval }
157
+ 'delay' : self .timeRatioInterval }
147
158
]
148
159
graphs = [
149
160
{
150
161
'name' : 'Relation {#COMPRESSED_RELATION}: compress ratio' ,
151
- 'delay' : self .Interval ,
162
+ 'delay' : self .timeRatioInterval ,
152
163
'items' : [
153
164
{'color' : '00CC00' ,
154
165
'key' : 'pgsql.cfs.compress_ratio[{#COMPRESSED_RELATION}]' }]
0 commit comments