def _create_graphs(self): # opcode graph opcode_graph = Multigraph("%sopcodes" % self.mg_prefix, 'OPCodes', category='bind9') for opcode, count in self.opcodes.iteritems(): opcode_graph.add_row('opcode_%s' % opcode, opcode, type='COUNTER') opcode_graph.add_data('opcode_%s' % opcode, count) yield opcode_graph # server statistics graph nsstat_graph = Multigraph("%snsstat" % self.mg_prefix, 'Server Statistics', category='bind9', args="-l 0", vlabel='Usage (Queries / Second)') for k, v in sorted(self.nsstat.iteritems()): nsstat_graph.add_row(k, k, 'DERIVE', 'AREASTACK') nsstat_graph.add_data(k, v) yield nsstat_graph # socket statistics graph sockstat_graph = Multigraph("%ssockstat" % self.mg_prefix, 'Socket I/O Statistics', category='bind9', args="-l 0", vlabel='Derived Count') for k, v in sorted(self.sockstat.iteritems()): sockstat_graph.add_row(k, k, type='DERIVE', draw='AREASTACK', min=0) sockstat_graph.add_data(k, v) yield sockstat_graph # view graphs resq_graph = Multigraph("%sresqtypes" % self.mg_prefix, 'Queries', category='bind9', args='-l 0', vlabel="Queries / second") resstat_graph = Multigraph("%sresstat" % self.mg_prefix, 'Resolver statistics', category='bind9', args='-l 0', vlabel="Queries / second") cachedb_graph = Multigraph("%scachedb" % self.mg_prefix, 'CacheDB', category='bind9', args='-l 0', vlabel="Count") # sum the totals over all views for the overview graph resq_totals = self._sum_dicts([x[1]['resqtype'] for x in self.views]) resstat_totals = self._sum_dicts([x[1]['resstats'] for x in self.views]) cachedb_totals = self._sum_dicts([x[1]['cachedb'] for x in self.views]) # finish overview graphs for k, v in sorted(resq_totals.iteritems()): resq_graph.add_row(k, k, type='DERIVE', draw='AREASTACK', min=0) resq_graph.add_data(k, v) for k, v in sorted(resstat_totals.iteritems()): resstat_graph.add_row(k, k, type='DERIVE', draw='AREASTACK', min=0) resstat_graph.add_data(k, v) for k, v in sorted(cachedb_totals.iteritems()): cachedb_graph.add_row(k, k, type='DERIVE', draw='AREASTACK', min=0) cachedb_graph.add_data(k, v) for view_name, stats in self.views: q_graph = Graph("Queries for view '%s'" % view_name, category='bind9', args='-l 0') for k, v in sorted(stats['resqtype'].iteritems()): q_graph.add_row(k, k, type='DERIVE', draw='AREASTACK') q_graph.add_data(k, v) resq_graph.add_subgraph("%sresqtypes.%s" % (self.mg_prefix, view_name), q_graph) r_graph = Graph("Resolver statistics for view '%s'" % view_name, category='bind9', args='-l 0') for k, v in sorted(stats['resstats'].iteritems()): r_graph.add_row(k, k, type='DERIVE', draw='AREASTACK') r_graph.add_data(k, v) resq_graph.add_subgraph("%sresstat.%s" % (self.mg_prefix, view_name), r_graph) cdb_graph = Graph("Cache DB for view '%s'" % view_name, category='bind9', args='-l 0') for k, v in sorted(stats['cachedb'].iteritems()): cdb_graph.add_row(k, k, type='DERIVE', draw='AREASTACK') cdb_graph.add_data(k, v) cachedb_graph.add_subgraph("%scachedb.%s" % (self.mg_prefix, view_name), cdb_graph) yield resq_graph yield resstat_graph yield cachedb_graph # memory graph with total and inuse values mem_graph = Multigraph("%smemory" % self.mg_prefix, 'Memory usage', category='bind9', args="-l 0 --base 1024", vlabel="Memory in use") for k, v in self.memory: if k == "TotalUse": mem_graph.add_row(k, k, draw='LINE1', type='DERIVE', min=0) else: mem_graph.add_row(k, k, draw='AREASTACK') mem_graph.add_data(k, v) yield mem_graph
def _create_graphs(self): # opcode graph opcode_graph = Multigraph("%sopcodes" % self.mg_prefix, 'OPCodes', category='bind9') for opcode, count in self.opcodes.iteritems(): opcode_graph.add_row('opcode_%s' % opcode, opcode, type='COUNTER') opcode_graph.add_data('opcode_%s' % opcode, count) yield opcode_graph # server statistics graph nsstat_graph = Multigraph("%snsstat" % self.mg_prefix, 'Server Statistics', category='bind9', args="-l 0", vlabel='Usage (Queries / Second)') for k, v in sorted(self.nsstat.iteritems()): nsstat_graph.add_row(k, k, 'DERIVE', 'AREASTACK') nsstat_graph.add_data(k, v) yield nsstat_graph # socket statistics graph sockstat_graph = Multigraph("%ssockstat" % self.mg_prefix, 'Socket I/O Statistics', category='bind9', args="-l 0", vlabel='Derived Count') for k, v in sorted(self.sockstat.iteritems()): sockstat_graph.add_row(k, k, type='DERIVE', draw='AREASTACK', min=0) sockstat_graph.add_data(k, v) yield sockstat_graph # view graphs resq_graph = Multigraph("%sresqtypes" % self.mg_prefix, 'Queries', category='bind9', args='-l 0', vlabel="Queries / second") resstat_graph = Multigraph("%sresstat" % self.mg_prefix, 'Resolver statistics', category='bind9', args='-l 0', vlabel="Queries / second") cachedb_graph = Multigraph("%scachedb" % self.mg_prefix, 'CacheDB', category='bind9', args='-l 0', vlabel="Count") # sum the totals over all views for the overview graph resq_totals = self._sum_dicts([x[1]['resqtype'] for x in self.views]) resstat_totals = self._sum_dicts( [x[1]['resstats'] for x in self.views]) cachedb_totals = self._sum_dicts([x[1]['cachedb'] for x in self.views]) # finish overview graphs for k, v in sorted(resq_totals.iteritems()): resq_graph.add_row(k, k, type='DERIVE', draw='AREASTACK', min=0) resq_graph.add_data(k, v) for k, v in sorted(resstat_totals.iteritems()): resstat_graph.add_row(k, k, type='DERIVE', draw='AREASTACK', min=0) resstat_graph.add_data(k, v) for k, v in sorted(cachedb_totals.iteritems()): cachedb_graph.add_row(k, k, type='DERIVE', draw='AREASTACK', min=0) cachedb_graph.add_data(k, v) for view_name, stats in self.views: q_graph = Graph("Queries for view '%s'" % view_name, category='bind9', args='-l 0') for k, v in sorted(stats['resqtype'].iteritems()): q_graph.add_row(k, k, type='DERIVE', draw='AREASTACK') q_graph.add_data(k, v) resq_graph.add_subgraph( "%sresqtypes.%s" % (self.mg_prefix, view_name), q_graph) r_graph = Graph("Resolver statistics for view '%s'" % view_name, category='bind9', args='-l 0') for k, v in sorted(stats['resstats'].iteritems()): r_graph.add_row(k, k, type='DERIVE', draw='AREASTACK') r_graph.add_data(k, v) resq_graph.add_subgraph( "%sresstat.%s" % (self.mg_prefix, view_name), r_graph) cdb_graph = Graph("Cache DB for view '%s'" % view_name, category='bind9', args='-l 0') for k, v in sorted(stats['cachedb'].iteritems()): cdb_graph.add_row(k, k, type='DERIVE', draw='AREASTACK') cdb_graph.add_data(k, v) cachedb_graph.add_subgraph( "%scachedb.%s" % (self.mg_prefix, view_name), cdb_graph) yield resq_graph yield resstat_graph yield cachedb_graph # memory graph with total and inuse values mem_graph = Multigraph("%smemory" % self.mg_prefix, 'Memory usage', category='bind9', args="-l 0 --base 1024", vlabel="Memory in use") for k, v in self.memory: if k == "TotalUse": mem_graph.add_row(k, k, draw='LINE1', type='DERIVE', min=0) else: mem_graph.add_row(k, k, draw='AREASTACK') mem_graph.add_data(k, v) yield mem_graph