Esempio n. 1
0
 def setup(self):
     """ Setup default command line argument option handling """
     opts = pmapi.pmOptions()
     opts.pmSetOptionCallback(self.option_callback)
     opts.pmSetOverrideCallback(self.override)
     opts.pmSetShortOptions("vp:a:c:f:R:i:s:h:?")
     opts.pmSetLongOptionText("")
     opts.pmSetLongOptionText(
         "Interactive: pcp collectl [-h HOST] [options]")
     opts.pmSetLongOptionText(
         "Read PCP archive: pcp collectl -a ARCHIVE [options]")
     opts.pmSetLongOptionText(
         "Read PCP archive folio: pcp collectl -p FOLIO [options]")
     opts.pmSetLongOptionText(
         "Write PCP archive folio: pcp collectl -f FOLIO [options]")
     opts.pmSetLongOptionHeader("Options")
     opts.pmSetLongOptionArchive()
     opts.pmSetLongOptionHost()
     opts.pmSetLongOptionVersion()
     opts.pmSetLongOption("verbose", 0, 'v', '', "produce verbose output")
     opts.pmSetLongOption("playback", 1, 'p', 'FOLIO',
                          "metrics source is a PCP archive folio")
     opts.pmSetLongOption("count", 1, 'c', 'COUNT', "number of samples")
     opts.pmSetLongOption("filename", 1, 'f', 'FOLIO',
                          "name of output PCP archive folio")
     opts.pmSetLongOption("runtime", 1, 'R', 'N', "how long to take report")
     opts.pmSetLongOption("interval", 1, 'i', 'N', "report time interval")
     opts.pmSetLongOption("subsys", 1, 's', 'SUBSYS', "subsystem to report")
     opts.pmSetLongOptionHelp()
     return opts
Esempio n. 2
0
 def setup(self):
     """ Setup default command line argument option handling """
     opts = pmapi.pmOptions()
     opts.pmSetOptionCallback(self.option_callback)
     opts.pmSetOverrideCallback(self.override)
     # leading - returns args that are not options with leading ^A
     opts.pmSetShortOptions("-gmw:r:L:h:a:V?")
     opts.pmSetLongOptionText("Interactive: [-g|-m] [-L linelen] [-h host | -a archive] [ interval [ samples ]]")
     opts.pmSetLongOptionText("Write folio: pmatop -w folio [ interval [ samples ]]")
     opts.pmSetLongOptionText("Read folio: pmatop -r folio [-g|-m] [-L linelen] [-h host]")
     opts.pmSetLongOptionHeader("Reporting Options")
     opts.pmSetLongOption("generic", 0, 'g', '', "Display generic metrics")
     opts.pmSetLongOption("memory", 0, 'm', '', "Display memory metrics")
     opts.pmSetLongOption("width", 1, 'L', 'WIDTH', "Width of the output")
     opts.pmSetLongOptionHeader("Folio Options")
     opts.pmSetLongOption("write", 1, 'w', 'FILENAME', "Write metric data to PCP archive folio")
     opts.pmSetLongOption("read", 1, 'r', 'FILENAME', "Read metric data from PCP archive folio")
     opts.pmSetLongOptionHeader("General Options")
     opts.pmSetLongOptionAlign()
     opts.pmSetLongOptionArchive()
     opts.pmSetLongOptionDebug()
     opts.pmSetLongOptionHost()
     opts.pmSetLongOptionOrigin()
     opts.pmSetLongOptionStart()
     opts.pmSetLongOptionFinish()
     opts.pmSetLongOptionVersion()
     opts.pmSetLongOptionTimeZone()
     opts.pmSetLongOptionHostZone()
     opts.pmSetLongOptionHelp()
     return opts
Esempio n. 3
0
    def options(self):
        """ Setup default command line argument option handling """
        opts = pmapi.pmOptions()
        opts.pmSetOptionCallback(self.option)
        opts.pmSetOverrideCallback(self.option_override)
        opts.pmSetShortOptions("a:h:LK:c:Ce:D:V?HGA:S:T:O:s:t:rRIi:jJ:4:58:9:nN:vP:0:q:b:y:Q:B:Y:g:x:X:p:")
        opts.pmSetShortUsage("[option...] metricspec [...]")

        opts.pmSetLongOptionHeader("General options")
        opts.pmSetLongOptionArchive()      # -a/--archive
        opts.pmSetLongOptionArchiveFolio() # --archive-folio
        opts.pmSetLongOptionContainer()    # --container
        opts.pmSetLongOptionHost()         # -h/--host
        opts.pmSetLongOptionLocalPMDA()    # -L/--local-PMDA
        opts.pmSetLongOptionSpecLocal()    # -K/--spec-local
        opts.pmSetLongOption("config", 1, "c", "FILE", "config file path")
        opts.pmSetLongOption("check", 0, "C", "", "check config and metrics and exit")
        opts.pmSetLongOption("derived", 1, "e", "FILE|DFNT", "derived metrics definitions")
        opts.pmSetLongOption("daemonize", 0, "", "", "daemonize on startup")
        opts.pmSetLongOptionDebug()        # -D/--debug
        opts.pmSetLongOptionVersion()      # -V/--version
        opts.pmSetLongOptionHelp()         # -?/--help

        opts.pmSetLongOptionHeader("Reporting options")
        opts.pmSetLongOption("no-header", 0, "H", "", "omit headers")
        opts.pmSetLongOption("no-globals", 0, "G", "", "omit global metrics")
        opts.pmSetLongOptionAlign()        # -A/--align
        opts.pmSetLongOptionStart()        # -S/--start
        opts.pmSetLongOptionFinish()       # -T/--finish
        opts.pmSetLongOptionOrigin()       # -O/--origin
        opts.pmSetLongOptionSamples()      # -s/--samples
        opts.pmSetLongOptionInterval()     # -t/--interval
        opts.pmSetLongOption("raw", 0, "r", "", "output raw counter values (no rate conversion)")
        opts.pmSetLongOption("raw-prefer", 0, "R", "", "prefer output raw counter values (no rate conversion)")
        opts.pmSetLongOption("ignore-incompat", 0, "I", "", "ignore incompatible instances (default: abort)")
        opts.pmSetLongOption("ignore-unknown", 0, "5", "", "ignore unknown metrics (default: abort)")
        opts.pmSetLongOption("names-change", 1, "4", "ACTION", "update/ignore/abort on PMNS change (default: ignore)")
        opts.pmSetLongOption("instances", 1, "i", "STR", "instances to report (default: all current)")
        opts.pmSetLongOption("live-filter", 0, "j", "", "perform instance live filtering")
        opts.pmSetLongOption("rank", 1, "J", "COUNT", "limit results to COUNT highest/lowest valued instances")
        opts.pmSetLongOption("limit-filter", 1, "8", "LIMIT", "default limit for value filtering")
        opts.pmSetLongOption("limit-filter-force", 1, "9", "LIMIT", "forced limit for value filtering")
        opts.pmSetLongOption("invert-filter", 0, "n", "", "perform ranking before live filtering")
        opts.pmSetLongOption("predicate", 1, "N", "METRIC", "set predicate filter reference metric")
        opts.pmSetLongOption("omit-flat", 0, "v", "", "omit single-valued metrics")
        opts.pmSetLongOption("precision", 1, "P", "N", "prefer N digits after decimal separator (default: 3)")
        opts.pmSetLongOption("precision-force", 1, "0", "N", "force N digits after decimal separator")
        opts.pmSetLongOption("count-scale", 1, "q", "SCALE", "default count unit")
        opts.pmSetLongOption("count-scale-force", 1, "Q", "SCALE", "forced count unit")
        opts.pmSetLongOption("space-scale", 1, "b", "SCALE", "default space unit")
        opts.pmSetLongOption("space-scale-force", 1, "B", "SCALE", "forced space unit")
        opts.pmSetLongOption("time-scale", 1, "y", "SCALE", "default time unit")
        opts.pmSetLongOption("time-scale-force", 1, "Y", "SCALE", "forced time unit")

        opts.pmSetLongOption("es-host", 1, "g", "SERVER", "Elasticsearch server (default: " + ES_SERVER + ")")
        opts.pmSetLongOption("es-index", 1, "x", "INDEX", "Elasticsearch index for metric names (default: " + ES_INDEX + ")")
        opts.pmSetLongOption("es-hostid", 1, "X", "HOSTID", "Elasticsearch host-id for measurements")
        opts.pmSetLongOption("es-search-type", 1, "p", "TYPE", "Elasticsearch search type for measurements")

        return opts
Esempio n. 4
0
 def setup(self):
     """ Setup default command line argument option handling """
     opts = pmapi.pmOptions()
     opts.pmSetOptionCallback(self.option_callback)
     opts.pmSetOverrideCallback(self.override)
     opts.pmSetShortOptions("vp:c:f:R:i:s:h:?")
     opts.pmSetLongOptionHeader("Options")
     opts.pmSetLongOption("verbose", 0, 'v', '', "Produce verbose output")
     opts.pmSetLongOption("playback", 0, 'p', '',
                          "Read sample data from file")
     opts.pmSetLongOption("count", 1, 'c', 'COUNT', "Number of samples")
     opts.pmSetLongOption("filename", 1, 'f', 'FILENAME',
                          "Name of output file")
     opts.pmSetLongOption("runtime", 1, 'R', 'N',
                          "How long to take samples")
     opts.pmSetLongOption("interval", 1, 'i', 'N',
                          "The sample time interval")
     opts.pmSetLongOption("subsys", 1, 's', 'SUBSYS',
                          "The subsystem to sample")
     opts.pmSetShortUsage(
         "[options]\nInteractive: [-v] [-h host] [-s subsys] [-c N] [-i N] [-R N]\nWrite raw logfile: pmcollectl -f rawfile [-c N] [-i N] [-R N]\nRead raw logfile: pmcollectl -p rawfile"
     )
     opts.pmSetLongOptionHost()
     opts.pmSetLongOptionVersion()
     opts.pmSetLongOptionHelp()
     return opts
Esempio n. 5
0
    def options(self):
        """ Setup default command line argument option handling """
        opts = pmapi.pmOptions()
        opts.pmSetOptionCallback(self.option)
        opts.pmSetOverrideCallback(self.option_override)
        opts.pmSetShortOptions("a:h:LK:c:Ce:D:V?HGA:S:T:O:s:t:rRIi:jJ:8:9:nN:vP:0:q:b:y:Q:B:Y:F:f:Z:zxX")
        opts.pmSetShortUsage("[option...] metricspec [...]")

        opts.pmSetLongOptionHeader("General options")
        opts.pmSetLongOptionArchive()      # -a/--archive
        opts.pmSetLongOptionArchiveFolio() # --archive-folio
        opts.pmSetLongOptionContainer()    # --container
        opts.pmSetLongOptionHost()         # -h/--host
        opts.pmSetLongOptionLocalPMDA()    # -L/--local-PMDA
        opts.pmSetLongOptionSpecLocal()    # -K/--spec-local
        opts.pmSetLongOption("config", 1, "c", "FILE", "config file path")
        opts.pmSetLongOption("check", 0, "C", "", "check config and metrics and exit")
        opts.pmSetLongOption("output-file", 1, "F", "OUTFILE", "output file")
        opts.pmSetLongOption("derived", 1, "e", "FILE|DFNT", "derived metrics definitions")
        opts.pmSetLongOption("daemonize", 0, "", "", "daemonize on startup")
        opts.pmSetLongOptionDebug()        # -D/--debug
        opts.pmSetLongOptionVersion()      # -V/--version
        opts.pmSetLongOptionHelp()         # -?/--help

        opts.pmSetLongOptionHeader("Reporting options")
        opts.pmSetLongOption("no-header", 0, "H", "", "omit headers")
        opts.pmSetLongOption("no-globals", 0, "G", "", "omit global metrics")
        opts.pmSetLongOptionAlign()        # -A/--align
        opts.pmSetLongOptionStart()        # -S/--start
        opts.pmSetLongOptionFinish()       # -T/--finish
        opts.pmSetLongOptionOrigin()       # -O/--origin
        opts.pmSetLongOptionSamples()      # -s/--samples
        opts.pmSetLongOptionInterval()     # -t/--interval
        opts.pmSetLongOptionTimeZone()     # -Z/--timezone
        opts.pmSetLongOptionHostZone()     # -z/--hostzone
        opts.pmSetLongOption("raw", 0, "r", "", "output raw counter values (no rate conversion)")
        opts.pmSetLongOption("raw-prefer", 0, "R", "", "prefer output raw counter values (no rate conversion)")
        opts.pmSetLongOption("ignore-incompat", 0, "I", "", "ignore incompatible instances (default: abort)")
        opts.pmSetLongOption("instances", 1, "i", "STR", "instances to report (default: all current)")
        opts.pmSetLongOption("live-filter", 0, "j", "", "perform instance live filtering")
        opts.pmSetLongOption("rank", 1, "J", "COUNT", "limit results to COUNT highest/lowest valued instances")
        opts.pmSetLongOption("limit-filter", 1, "8", "LIMIT", "default limit for value filtering")
        opts.pmSetLongOption("limit-filter-force", 1, "9", "LIMIT", "forced limit for value filtering")
        opts.pmSetLongOption("invert-filter", 0, "n", "", "perform ranking before live filtering")
        opts.pmSetLongOption("predicate", 1, "N", "METRIC", "set predicate filter reference metric")
        opts.pmSetLongOption("omit-flat", 0, "v", "", "omit single-valued metrics")
        opts.pmSetLongOption("precision", 1, "P", "N", "prefer N digits after decimal separator (default: 3)")
        opts.pmSetLongOption("precision-force", 1, "0", "N", "force N digits after decimal separator")
        opts.pmSetLongOption("timestamp-format", 1, "f", "STR", "strftime string for timestamp format")
        opts.pmSetLongOption("count-scale", 1, "q", "SCALE", "default count unit")
        opts.pmSetLongOption("count-scale-force", 1, "Q", "SCALE", "forced count unit")
        opts.pmSetLongOption("space-scale", 1, "b", "SCALE", "default space unit")
        opts.pmSetLongOption("space-scale-force", 1, "B", "SCALE", "forced space unit")
        opts.pmSetLongOption("time-scale", 1, "y", "SCALE", "default time unit")
        opts.pmSetLongOption("time-scale-force", 1, "Y", "SCALE", "forced time unit")

        opts.pmSetLongOption("with-extended", 0, "x", "", "write extended information about metrics")
        opts.pmSetLongOption("with-everything", 0, "X", "", "write everything, incl. internal IDs")

        return opts
 def __init__(self):
     self.context = None
     self.opts = pmapi.pmOptions()
     self.opts.pmSetShortOptions("V?")
     self.opts.pmSetLongOptionHeader("Options")
     self.opts.pmSetLongOptionVersion()
     self.opts.pmSetLongOptionHelp()
Esempio n. 7
0
    def options(self):
        """ Setup default command line argument option handling """
        opts = pmapi.pmOptions()
        opts.pmSetOptionCallback(self.option)
        opts.pmSetOverrideCallback(self.option_override)
        opts.pmSetShortOptions("a:h:LK:c:Ce:D:V?HGA:S:T:O:s:t:rRIi:jJ:4:58:9:nN:vP:0:q:b:y:Q:B:Y:g:x:X:p:")
        opts.pmSetShortUsage("[option...] metricspec [...]")

        opts.pmSetLongOptionHeader("General options")
        opts.pmSetLongOptionArchive()      # -a/--archive
        opts.pmSetLongOptionArchiveFolio() # --archive-folio
        opts.pmSetLongOptionContainer()    # --container
        opts.pmSetLongOptionHost()         # -h/--host
        opts.pmSetLongOptionLocalPMDA()    # -L/--local-PMDA
        opts.pmSetLongOptionSpecLocal()    # -K/--spec-local
        opts.pmSetLongOption("config", 1, "c", "FILE", "config file path")
        opts.pmSetLongOption("check", 0, "C", "", "check config and metrics and exit")
        opts.pmSetLongOption("derived", 1, "e", "FILE|DFNT", "derived metrics definitions")
        opts.pmSetLongOption("daemonize", 0, "", "", "daemonize on startup")
        opts.pmSetLongOptionDebug()        # -D/--debug
        opts.pmSetLongOptionVersion()      # -V/--version
        opts.pmSetLongOptionHelp()         # -?/--help

        opts.pmSetLongOptionHeader("Reporting options")
        opts.pmSetLongOption("no-header", 0, "H", "", "omit headers")
        opts.pmSetLongOption("no-globals", 0, "G", "", "omit global metrics")
        opts.pmSetLongOptionAlign()        # -A/--align
        opts.pmSetLongOptionStart()        # -S/--start
        opts.pmSetLongOptionFinish()       # -T/--finish
        opts.pmSetLongOptionOrigin()       # -O/--origin
        opts.pmSetLongOptionSamples()      # -s/--samples
        opts.pmSetLongOptionInterval()     # -t/--interval
        opts.pmSetLongOption("raw", 0, "r", "", "output raw counter values (no rate conversion)")
        opts.pmSetLongOption("raw-prefer", 0, "R", "", "prefer output raw counter values (no rate conversion)")
        opts.pmSetLongOption("ignore-incompat", 0, "I", "", "ignore incompatible instances (default: abort)")
        opts.pmSetLongOption("ignore-unknown", 0, "5", "", "ignore unknown metrics (default: abort)")
        opts.pmSetLongOption("names-change", 1, "4", "ACTION", "update/ignore/abort on PMNS change (default: ignore)")
        opts.pmSetLongOption("instances", 1, "i", "STR", "instances to report (default: all current)")
        opts.pmSetLongOption("live-filter", 0, "j", "", "perform instance live filtering")
        opts.pmSetLongOption("rank", 1, "J", "COUNT", "limit results to COUNT highest/lowest valued instances")
        opts.pmSetLongOption("limit-filter", 1, "8", "LIMIT", "default limit for value filtering")
        opts.pmSetLongOption("limit-filter-force", 1, "9", "LIMIT", "forced limit for value filtering")
        opts.pmSetLongOption("invert-filter", 0, "n", "", "perform ranking before live filtering")
        opts.pmSetLongOption("predicate", 1, "N", "METRIC", "set predicate filter reference metric")
        opts.pmSetLongOption("omit-flat", 0, "v", "", "omit single-valued metrics")
        opts.pmSetLongOption("precision", 1, "P", "N", "prefer N digits after decimal separator (default: 3)")
        opts.pmSetLongOption("precision-force", 1, "0", "N", "force N digits after decimal separator")
        opts.pmSetLongOption("count-scale", 1, "q", "SCALE", "default count unit")
        opts.pmSetLongOption("count-scale-force", 1, "Q", "SCALE", "forced count unit")
        opts.pmSetLongOption("space-scale", 1, "b", "SCALE", "default space unit")
        opts.pmSetLongOption("space-scale-force", 1, "B", "SCALE", "forced space unit")
        opts.pmSetLongOption("time-scale", 1, "y", "SCALE", "default time unit")
        opts.pmSetLongOption("time-scale-force", 1, "Y", "SCALE", "forced time unit")

        opts.pmSetLongOption("es-host", 1, "g", "SERVER", "Elasticsearch server (default: " + ES_SERVER + ")")
        opts.pmSetLongOption("es-index", 1, "x", "INDEX", "Elasticsearch index for metric names (default: " + ES_INDEX + ")")
        opts.pmSetLongOption("es-hostid", 1, "X", "HOSTID", "Elasticsearch host-id for measurements")
        opts.pmSetLongOption("es-search-type", 1, "p", "TYPE", "Elasticsearch search type for measurements")

        return opts
Esempio n. 8
0
    def options(self):
        """ Setup default command line argument option handling """
        opts = pmapi.pmOptions()
        opts.pmSetOptionCallback(self.option)
        opts.pmSetOverrideCallback(self.option_override)
        opts.pmSetShortOptions("a:h:LK:c:Ce:D:V?HGA:S:T:O:s:t:rRIi:jJ:8:9:nN:vP:0:q:b:y:Q:B:Y:g:p:X:E:x:")
        opts.pmSetShortUsage("[option...] metricspec [...]")

        opts.pmSetLongOptionHeader("General options")
        opts.pmSetLongOptionArchive()      # -a/--archive
        opts.pmSetLongOptionArchiveFolio() # --archive-folio
        opts.pmSetLongOptionContainer()    # --container
        opts.pmSetLongOptionHost()         # -h/--host
        opts.pmSetLongOptionLocalPMDA()    # -L/--local-PMDA
        opts.pmSetLongOptionSpecLocal()    # -K/--spec-local
        opts.pmSetLongOption("config", 1, "c", "FILE", "config file path")
        opts.pmSetLongOption("check", 0, "C", "", "check config and metrics and exit")
        opts.pmSetLongOption("derived", 1, "e", "FILE|DFNT", "derived metrics definitions")
        opts.pmSetLongOption("daemonize", 0, "", "", "daemonize on startup")
        opts.pmSetLongOptionDebug()        # -D/--debug
        opts.pmSetLongOptionVersion()      # -V/--version
        opts.pmSetLongOptionHelp()         # -?/--help

        opts.pmSetLongOptionHeader("Reporting options")
        opts.pmSetLongOption("no-header", 0, "H", "", "omit headers")
        opts.pmSetLongOption("no-globals", 0, "G", "", "omit global metrics")
        opts.pmSetLongOptionAlign()        # -A/--align
        opts.pmSetLongOptionStart()        # -S/--start
        opts.pmSetLongOptionFinish()       # -T/--finish
        opts.pmSetLongOptionOrigin()       # -O/--origin
        opts.pmSetLongOptionSamples()      # -s/--samples
        opts.pmSetLongOptionInterval()     # -t/--interval
        opts.pmSetLongOption("raw", 0, "r", "", "output raw counter values (no rate conversion)")
        opts.pmSetLongOption("raw-prefer", 0, "R", "", "prefer output raw counter values (no rate conversion)")
        opts.pmSetLongOption("ignore-incompat", 0, "I", "", "ignore incompatible instances (default: abort)")
        opts.pmSetLongOption("instances", 1, "i", "STR", "instances to report (default: all current)")
        opts.pmSetLongOption("live-filter", 0, "j", "", "perform instance live filtering")
        opts.pmSetLongOption("rank", 1, "J", "COUNT", "limit results to COUNT highest/lowest valued instances")
        opts.pmSetLongOption("limit-filter", 1, "8", "LIMIT", "default limit for value filtering")
        opts.pmSetLongOption("limit-filter-force", 1, "9", "LIMIT", "forced limit for value filtering")
        opts.pmSetLongOption("invert-filter", 0, "n", "", "perform ranking before live filtering")
        opts.pmSetLongOption("predicate", 1, "N", "METRIC", "set predicate filter reference metric")
        opts.pmSetLongOption("omit-flat", 0, "v", "", "omit single-valued metrics")
        opts.pmSetLongOption("precision", 1, "P", "N", "prefer N digits after decimal separator (default: 3)")
        opts.pmSetLongOption("precision-force", 1, "0", "N", "force N digits after decimal separator")
        opts.pmSetLongOption("count-scale", 1, "q", "SCALE", "default count unit")
        opts.pmSetLongOption("count-scale-force", 1, "Q", "SCALE", "forced count unit")
        opts.pmSetLongOption("space-scale", 1, "b", "SCALE", "default space unit")
        opts.pmSetLongOption("space-scale-force", 1, "B", "SCALE", "forced space unit")
        opts.pmSetLongOption("time-scale", 1, "y", "SCALE", "default time unit")
        opts.pmSetLongOption("time-scale-force", 1, "Y", "SCALE", "forced time unit")

        opts.pmSetLongOption("graphite-host", 1, "g", "SERVER", "Graphite server (default: " + SERVER + ")")
        opts.pmSetLongOption("pickle-port", 1, "p", "PICKLE-PORT", "Graphite pickle port (default: 2004)")
        opts.pmSetLongOption("pickle-protocol", 1, "X", "PROTOCOL", "pickle protocol version (default: 0)")
        opts.pmSetLongOption("text-port", 1, "E", "TEXT-PORT", "Graphite plaintext port (usually: 2003)")
        opts.pmSetLongOption("prefix", 1, "x", "PREFIX", "prefix for metric names (default: " + PREFIX + ")")

        return opts
Esempio n. 9
0
 def __init__(self):
     """ Construct object - prepare for command line handling """
     self.context = None
     self.opts = pmapi.pmOptions()
     self.opts.pmSetShortOptions("V?")
     self.opts.pmSetLongOptionHeader("Options")
     self.opts.pmSetLongOptionVersion()
     self.opts.pmSetLongOptionHelp()
Esempio n. 10
0
 def __init__(self,argv):
     self.fg = None
     self.opts = pmapi.pmOptions()
     self.opts.pmSetShortOptions("V?")
     self.opts.pmSetLongOptionHeader("Options")
     self.opts.pmSetLongOptionVersion()
     self.opts.pmSetLongOptionHelp()
     self.opts.pmSetLongOptionHost()
Esempio n. 11
0
 def options(self):
     """ Setup default command line argument option handling """
     opts = pmapi.pmOptions()
     opts.pmSetOptionCallback(self.option)
     opts.pmSetShortOptions("w:V?")
     opts.pmSetLongOptionHeader("Options")
     opts.pmSetLongOption("width", 1, 'w', "N", "limit the display width")
     opts.pmSetLongOptionVersion()
     opts.pmSetLongOptionHelp()
     return opts
Esempio n. 12
0
 def options(self):
     """ Setup default command line argument option handling """
     opts = pmapi.pmOptions()
     opts.pmSetOptionCallback(self.option)
     opts.pmSetShortOptions("w:V?")
     opts.pmSetLongOptionHeader("Options")
     opts.pmSetLongOption("width", 1, 'w', "N", "limit the display width")
     opts.pmSetLongOptionVersion()
     opts.pmSetLongOptionHelp()
     return opts
Esempio n. 13
0
    def options(self):
        """ Setup default command line argument option handling """
        opts = pmapi.pmOptions()
        opts.pmSetOptionCallback(self.option)
        opts.pmSetOverrideCallback(self.option_override)
        opts.pmSetShortOptions("a:h:LK:c:Ce:D:V?HGA:S:T:O:s:t:rRIi:4:5vmP:0:q:b:y:Q:B:Y:F:f:Z:z")
        opts.pmSetShortUsage("[option...] metricspec [...]")

        opts.pmSetLongOptionHeader("General options")
        opts.pmSetLongOptionArchive()      # -a/--archive
        opts.pmSetLongOptionArchiveFolio() # --archive-folio
        opts.pmSetLongOptionContainer()    # --container
        opts.pmSetLongOptionHost()         # -h/--host
        opts.pmSetLongOptionLocalPMDA()    # -L/--local-PMDA
        opts.pmSetLongOptionSpecLocal()    # -K/--spec-local
        opts.pmSetLongOption("config", 1, "c", "FILE", "config file path")
        opts.pmSetLongOption("check", 0, "C", "", "check config and metrics and exit")
        opts.pmSetLongOption("output-file", 1, "F", "OUTFILE", "output file")
        opts.pmSetLongOption("derived", 1, "e", "FILE|DFNT", "derived metrics definitions")
        opts.pmSetLongOption("daemonize", 0, "", "", "daemonize on startup")
        opts.pmSetLongOptionDebug()        # -D/--debug
        opts.pmSetLongOptionVersion()      # -V/--version
        opts.pmSetLongOptionHelp()         # -?/--help

        opts.pmSetLongOptionHeader("Reporting options")
        opts.pmSetLongOption("no-header", 0, "H", "", "omit headers")
        opts.pmSetLongOption("no-globals", 0, "G", "", "omit global metrics")
        opts.pmSetLongOptionAlign()        # -A/--align
        opts.pmSetLongOptionStart()        # -S/--start
        opts.pmSetLongOptionFinish()       # -T/--finish
        opts.pmSetLongOptionOrigin()       # -O/--origin
        opts.pmSetLongOptionSamples()      # -s/--samples
        opts.pmSetLongOptionInterval()     # -t/--interval
        opts.pmSetLongOptionTimeZone()     # -Z/--timezone
        opts.pmSetLongOptionHostZone()     # -z/--hostzone
        opts.pmSetLongOption("raw", 0, "r", "", "output raw counter values (no rate conversion)")
        opts.pmSetLongOption("raw-prefer", 0, "R", "", "prefer output raw counter values (no rate conversion)")
        opts.pmSetLongOption("ignore-incompat", 0, "I", "", "ignore incompatible instances (default: abort)")
        opts.pmSetLongOption("ignore-unknown", 0, "5", "", "ignore unknown metrics (default: abort)")
        opts.pmSetLongOption("names-change", 1, "4", "ACTION", "ignore/abort on PMNS change (default: ignore)")
        opts.pmSetLongOption("instances", 1, "i", "STR", "instances to report (default: all current)")
        opts.pmSetLongOption("omit-flat", 0, "v", "", "omit single-valued metrics")
        opts.pmSetLongOption("include-labels", 0, "m", "", "include metric label info")
        opts.pmSetLongOption("precision", 1, "P", "N", "prefer N digits after decimal separator (default: 3)")
        opts.pmSetLongOption("precision-force", 1, "0", "N", "force N digits after decimal separator")
        opts.pmSetLongOption("timestamp-format", 1, "f", "STR", "xlsx timestamp format")
        opts.pmSetLongOption("count-scale", 1, "q", "SCALE", "default count unit")
        opts.pmSetLongOption("count-scale-force", 1, "Q", "SCALE", "forced count unit")
        opts.pmSetLongOption("space-scale", 1, "b", "SCALE", "default space unit")
        opts.pmSetLongOption("space-scale-force", 1, "B", "SCALE", "forced space unit")
        opts.pmSetLongOption("time-scale", 1, "y", "SCALE", "default time unit")
        opts.pmSetLongOption("time-scale-force", 1, "Y", "SCALE", "forced time unit")

        return opts
Esempio n. 14
0
 def options(self):
     """ Setup default command line argument option handling """
     opts = pmapi.pmOptions()
     opts.pmSetOptionCallback(self.option)
     opts.pmSetShortOptions("luV?")
     opts.pmSetLongOptionHeader("Options")
     # other options will to do([email protected])
     opts.pmSetLongOption("limits", 0, 'l', '', "show resource limits")
     opts.pmSetLongOption("summary", 0, 'u', '', "show status summary")
     opts.pmSetLongOptionVersion()
     opts.pmSetLongOptionHelp()
     return opts
Esempio n. 15
0
    def options(self):
        """ Setup default command line argument option handling """
        opts = pmapi.pmOptions()
        opts.pmSetOptionCallback(self.option)
        opts.pmSetOverrideCallback(self.option_override)
        opts.pmSetShortOptions("a:h:LK:c:Ce:D:V?HGA:S:T:O:s:t:rRIi:4:5vP:0:q:b:y:Q:B:Y:F:f:Z:z")
        opts.pmSetShortUsage("[option...] metricspec [...]")

        opts.pmSetLongOptionHeader("General options")
        opts.pmSetLongOptionArchive()      # -a/--archive
        opts.pmSetLongOptionArchiveFolio() # --archive-folio
        opts.pmSetLongOptionContainer()    # --container
        opts.pmSetLongOptionHost()         # -h/--host
        opts.pmSetLongOptionLocalPMDA()    # -L/--local-PMDA
        opts.pmSetLongOptionSpecLocal()    # -K/--spec-local
        opts.pmSetLongOption("config", 1, "c", "FILE", "config file path")
        opts.pmSetLongOption("check", 0, "C", "", "check config and metrics and exit")
        opts.pmSetLongOption("output-file", 1, "F", "OUTFILE", "output file")
        opts.pmSetLongOption("derived", 1, "e", "FILE|DFNT", "derived metrics definitions")
        opts.pmSetLongOption("daemonize", 0, "", "", "daemonize on startup")
        opts.pmSetLongOptionDebug()        # -D/--debug
        opts.pmSetLongOptionVersion()      # -V/--version
        opts.pmSetLongOptionHelp()         # -?/--help

        opts.pmSetLongOptionHeader("Reporting options")
        opts.pmSetLongOption("no-header", 0, "H", "", "omit headers")
        opts.pmSetLongOption("no-globals", 0, "G", "", "omit global metrics")
        opts.pmSetLongOptionAlign()        # -A/--align
        opts.pmSetLongOptionStart()        # -S/--start
        opts.pmSetLongOptionFinish()       # -T/--finish
        opts.pmSetLongOptionOrigin()       # -O/--origin
        opts.pmSetLongOptionSamples()      # -s/--samples
        opts.pmSetLongOptionInterval()     # -t/--interval
        opts.pmSetLongOptionTimeZone()     # -Z/--timezone
        opts.pmSetLongOptionHostZone()     # -z/--hostzone
        opts.pmSetLongOption("raw", 0, "r", "", "output raw counter values (no rate conversion)")
        opts.pmSetLongOption("raw-prefer", 0, "R", "", "prefer output raw counter values (no rate conversion)")
        opts.pmSetLongOption("ignore-incompat", 0, "I", "", "ignore incompatible instances (default: abort)")
        opts.pmSetLongOption("ignore-unknown", 0, "5", "", "ignore unknown metrics (default: abort)")
        opts.pmSetLongOption("names-change", 1, "4", "ACTION", "ignore/abort on PMNS change (default: ignore)")
        opts.pmSetLongOption("instances", 1, "i", "STR", "instances to report (default: all current)")
        opts.pmSetLongOption("omit-flat", 0, "v", "", "omit single-valued metrics")
        opts.pmSetLongOption("precision", 1, "P", "N", "prefer N digits after decimal separator (default: 3)")
        opts.pmSetLongOption("precision-force", 1, "0", "N", "force N digits after decimal separator")
        opts.pmSetLongOption("timestamp-format", 1, "f", "STR", "xlsx timestamp format")
        opts.pmSetLongOption("count-scale", 1, "q", "SCALE", "default count unit")
        opts.pmSetLongOption("count-scale-force", 1, "Q", "SCALE", "forced count unit")
        opts.pmSetLongOption("space-scale", 1, "b", "SCALE", "default space unit")
        opts.pmSetLongOption("space-scale-force", 1, "B", "SCALE", "forced space unit")
        opts.pmSetLongOption("time-scale", 1, "y", "SCALE", "default time unit")
        opts.pmSetLongOption("time-scale-force", 1, "Y", "SCALE", "forced time unit")

        return opts
Esempio n. 16
0
 def options(self):
     """ Setup default command line argument option handling """
     opts = pmapi.pmOptions()
     opts.pmSetOptionCallback(self.option)
     opts.pmSetShortOptions("luV?")
     opts.pmSetLongOptionHeader("Options")
     # other options will to do([email protected])
     opts.pmSetLongOption("limits", 0, 'l', '', "show resource limits")
     opts.pmSetLongOption("summary", 0, 'u', '', "show status summary")
     opts.pmSetLongOptionVersion()
     opts.pmSetLongOptionHelp()
     return opts
Esempio n. 17
0
    def options(self):
        """ Setup default command line argument option handling """
        opts = pmapi.pmOptions()
        opts.pmSetOptionCallback(self.option)
        opts.pmSetOverrideCallback(self.option_override)
        opts.pmSetShortOptions("a:h:LK:c:Ce:D:V?HGA:S:T:O:s:t:rIi:vP:q:b:y:g:x:U:E:X:")
        opts.pmSetShortUsage("[option...] metricspec [...]")

        opts.pmSetLongOptionHeader("General options")
        opts.pmSetLongOptionArchive()      # -a/--archive
        opts.pmSetLongOptionArchiveFolio() # --archive-folio
        opts.pmSetLongOptionContainer()    # --container
        opts.pmSetLongOptionHost()         # -h/--host
        opts.pmSetLongOptionLocalPMDA()    # -L/--local-PMDA
        opts.pmSetLongOptionSpecLocal()    # -K/--spec-local
        opts.pmSetLongOption("config", 1, "c", "FILE", "config file path")
        opts.pmSetLongOption("check", 0, "C", "", "check config and metrics and exit")
        opts.pmSetLongOption("derived", 1, "e", "FILE|DFNT", "derived metrics definitions")
        self.daemonize = opts.pmSetLongOption("daemonize", 0, "", "", "daemonize on startup") # > 1
        opts.pmSetLongOptionDebug()        # -D/--debug
        opts.pmSetLongOptionVersion()      # -V/--version
        opts.pmSetLongOptionHelp()         # -?/--help

        opts.pmSetLongOptionHeader("Reporting options")
        opts.pmSetLongOption("no-header", 0, "H", "", "omit headers")
        opts.pmSetLongOption("no-globals", 0, "G", "", "omit global metrics")
        opts.pmSetLongOptionAlign()        # -A/--align
        opts.pmSetLongOptionStart()        # -S/--start
        opts.pmSetLongOptionFinish()       # -T/--finish
        opts.pmSetLongOptionOrigin()       # -O/--origin
        opts.pmSetLongOptionSamples()      # -s/--samples
        opts.pmSetLongOptionInterval()     # -t/--interval
        opts.pmSetLongOption("raw", 0, "r", "", "output raw counter values (no rate conversion)")
        opts.pmSetLongOption("ignore-incompat", 0, "I", "", "ignore incompatible instances (default: abort)")
        opts.pmSetLongOption("instances", 1, "i", "STR", "instances to report (default: all current)")
        opts.pmSetLongOption("omit-flat", 0, "v", "", "omit single-valued metrics with -i (default: include)")
        opts.pmSetLongOption("precision", 1, "P", "N", "N digits after the decimal separator (default: 3)")
        opts.pmSetLongOption("count-scale", 1, "q", "SCALE", "default count unit")
        opts.pmSetLongOption("space-scale", 1, "b", "SCALE", "default space unit")
        opts.pmSetLongOption("time-scale", 1, "y", "SCALE", "default time unit")

        opts.pmSetLongOption("db-server", 1, "g", "SERVER", "InfluxDB server URL (default: " + SERVER + ")")
        opts.pmSetLongOption("db-name", 1, "x", "DATABASE", "metrics database name (default: " + DB + ")")
        opts.pmSetLongOption("db-user", 1, "U", "USERNAME", "username for database")
        opts.pmSetLongOption("db-pass", 1, "E", "PASSWORD", "password for database")
        opts.pmSetLongOption("db-tags", 1, "X", "TAGS", "string of tags to add to the metrics")

        return opts
Esempio n. 18
0
    def options(self):
        """ Setup default command line argument option handling """
        opts = pmapi.pmOptions()
        opts.pmSetOptionCallback(self.option)
        opts.pmSetOverrideCallback(self.option_override)
        opts.pmSetShortOptions("a:h:LK:c:Ce:D:V?HGA:S:T:O:s:t:rIi:vP:q:b:y:g:p:X:E:x:")
        opts.pmSetShortUsage("[option...] metricspec [...]")

        opts.pmSetLongOptionHeader("General options")
        opts.pmSetLongOptionArchive()      # -a/--archive
        opts.pmSetLongOptionArchiveFolio() # --archive-folio
        opts.pmSetLongOptionContainer()    # --container
        opts.pmSetLongOptionHost()         # -h/--host
        opts.pmSetLongOptionLocalPMDA()    # -L/--local-PMDA
        opts.pmSetLongOptionSpecLocal()    # -K/--spec-local
        opts.pmSetLongOption("config", 1, "c", "FILE", "config file path")
        opts.pmSetLongOption("check", 0, "C", "", "check config and metrics and exit")
        opts.pmSetLongOption("derived", 1, "e", "FILE|DFNT", "derived metrics definitions")
        self.daemonize = opts.pmSetLongOption("daemonize", 0, "", "", "daemonize on startup") # > 1
        opts.pmSetLongOptionDebug()        # -D/--debug
        opts.pmSetLongOptionVersion()      # -V/--version
        opts.pmSetLongOptionHelp()         # -?/--help

        opts.pmSetLongOptionHeader("Reporting options")
        opts.pmSetLongOption("no-header", 0, "H", "", "omit headers")
        opts.pmSetLongOption("no-globals", 0, "G", "", "omit global metrics")
        opts.pmSetLongOptionAlign()        # -A/--align
        opts.pmSetLongOptionStart()        # -S/--start
        opts.pmSetLongOptionFinish()       # -T/--finish
        opts.pmSetLongOptionOrigin()       # -O/--origin
        opts.pmSetLongOptionSamples()      # -s/--samples
        opts.pmSetLongOptionInterval()     # -t/--interval
        opts.pmSetLongOption("raw", 0, "r", "", "output raw counter values (no rate conversion)")
        opts.pmSetLongOption("ignore-incompat", 0, "I", "", "ignore incompatible instances (default: abort)")
        opts.pmSetLongOption("instances", 1, "i", "STR", "instances to report (default: all current)")
        opts.pmSetLongOption("omit-flat", 0, "v", "", "omit single-valued metrics with -i (default: include)")
        opts.pmSetLongOption("precision", 1, "P", "N", "N digits after the decimal separator (default: 3)")
        opts.pmSetLongOption("count-scale", 1, "q", "SCALE", "default count unit")
        opts.pmSetLongOption("space-scale", 1, "b", "SCALE", "default space unit")
        opts.pmSetLongOption("time-scale", 1, "y", "SCALE", "default time unit")

        opts.pmSetLongOption("zabbix-server", 1, "g", "SERVER", "zabbix server (default: " + ZBXSERVER + ")")
        opts.pmSetLongOption("zabbix-port", 1, "p", "PORT", "zabbix port (default: " + str(ZBXPORT) + ")")
        opts.pmSetLongOption("zabbix-host", 1, "X", "HOSTID", "zabbix host-id for measurements")
        opts.pmSetLongOption("zabbix-interval", 1, "E", "INTERVAL", "interval to send collected metrics")
        opts.pmSetLongOption("zabbix-prefix", 1, "x", "PREFIX", "prefix for metric names (default: " + ZBXPREFIX + ")")

        return opts
Esempio n. 19
0
 def setup(self):
     """ Setup default command line argument option handling """
     opts = pmapi.pmOptions()
     opts.pmSetOptionCallback(self.option_callback)
     opts.pmSetOverrideCallback(self.override)
     # leading - returns args that are not options with leading ^A
     opts.pmSetShortOptions("-gmw:r:L:h:V?")
     opts.pmSetLongOptionHeader("Options")
     opts.pmSetLongOption("generic", 0, 'g', '', "Display generic metrics")
     opts.pmSetLongOption("memory", 0, 'm', '', "Display memory metrics")
     opts.pmSetLongOption("write", 1, 'w', 'FILENAME', "Write metric data to file")
     opts.pmSetLongOption("read", 1, 'r', 'FILENAME', "Read metric data from file")
     opts.pmSetLongOption("width", 1, 'L', 'WIDTH', "Width of the output")
     opts.pmSetShortUsage("[options]\nInteractive: [-g|-m] [-L linelen] [-h host] [ interval [ samples ]]\nWrite raw logfile: pmatop -w rawfile [ interval [ samples ]]\nRead raw logfile: pmatop -r [ rawfile ] [-g|-m] [-L linelen] [-h host]")
     opts.pmSetLongOptionHost()
     opts.pmSetLongOptionVersion()
     opts.pmSetLongOptionHelp()
     return opts
Esempio n. 20
0
File: pmatop.py Progetto: Aconex/pcp
 def setup(self):
     """ Setup default command line argument option handling """
     opts = pmapi.pmOptions()
     opts.pmSetOptionCallback(self.option_callback)
     opts.pmSetOverrideCallback(self.override)
     # leading - returns args that are not options with leading ^A
     opts.pmSetShortOptions("-gmw:r:L:h:V?")
     opts.pmSetLongOptionHeader("Options")
     opts.pmSetLongOption("generic", 0, 'g', '', "Display generic metrics")
     opts.pmSetLongOption("memory", 0, 'm', '', "Display memory metrics")
     opts.pmSetLongOption("write", 1, 'w', 'FILENAME', "Write metric data to file")
     opts.pmSetLongOption("read", 1, 'r', 'FILENAME', "Read metric data from file")
     opts.pmSetLongOption("width", 1, 'L', 'WIDTH', "Width of the output")
     opts.pmSetShortUsage("[options]\nInteractive: [-g|-m] [-L linelen] [-h host] [ interval [ samples ]]\nWrite raw logfile: pmatop -w rawfile [ interval [ samples ]]\nRead raw logfile: pmatop -r [ rawfile ] [-g|-m] [-L linelen] [-h host]")
     opts.pmSetLongOptionHost()
     opts.pmSetLongOptionVersion()
     opts.pmSetLongOptionHelp()
     return opts
Esempio n. 21
0
 def setup(self):
     """ Setup default command line argument option handling """
     opts = pmapi.pmOptions()
     opts.pmSetOptionCallback(self.option_callback)
     opts.pmSetOverrideCallback(self.override)
     opts.pmSetShortOptions("vp:c:f:R:i:s:h:?")
     opts.pmSetLongOptionHeader("Options")
     opts.pmSetLongOption("verbose", 0, 'v', '', "Produce verbose output")
     opts.pmSetLongOption("playback", 0, 'p', '', "Read sample data from file")
     opts.pmSetLongOption("count", 1, 'c', 'COUNT', "Number of samples")
     opts.pmSetLongOption("filename", 1, 'f', 'FILENAME', "Name of output file")
     opts.pmSetLongOption("runtime", 1, 'R', 'N', "How long to take samples")
     opts.pmSetLongOption("interval", 1, 'i', 'N', "The sample time interval")
     opts.pmSetLongOption("subsys", 1, 's', 'SUBSYS', "The subsystem to sample")
     opts.pmSetShortUsage("[options]\nInteractive: [-v] [-h host] [-s subsys] [-c N] [-i N] [-R N]\nWrite raw logfile: pmcollectl -f rawfile [-c N] [-i N] [-R N]\nRead raw logfile: pmcollectl -p rawfile")
     opts.pmSetLongOptionHost()
     opts.pmSetLongOptionVersion()
     opts.pmSetLongOptionHelp()
     return opts
Esempio n. 22
0
 def options(self):
     """ Setup default command line argument option handling """
     opts = pmapi.pmOptions()
     opts.pmSetOptionCallback(self.option)
     opts.pmSetOverrideCallback(self.override)
     opts.pmSetShortOptions("bc:gklmots:V?")
     opts.pmSetLongOptionHeader("Options")
     opts.pmSetLongOption("bytes", 0, 'b', '', "show output in bytes")
     opts.pmSetLongOption("kilobytes", 0, 'k', '', "show output in KB")
     opts.pmSetLongOption("megabytes", 0, 'm', '', "show output in MB")
     opts.pmSetLongOption("gigabytes", 0, 'g', '', "show output in GB")
     opts.pmSetLongOption("", 0, 'o', '',
                          "use old format (no -/+buffers/cache line)")
     opts.pmSetLongOption("", 0, 'l', '',
                          "show detailed low and high memory statistics")
     opts.pmSetLongOption("total", 0, 't', '',
                          "display total for RAM + swap")
     opts.pmSetLongOption("samples", 1, 'c', "COUNT", "number of samples")
     opts.pmSetLongOption("interval", 1, 's', "DELTA", "sampling interval")
     opts.pmSetLongOptionVersion()
     opts.pmSetLongOptionHelp()
     return opts
Esempio n. 23
0
 def options(self):
     """ Setup default command line argument option handling """
     opts = pmapi.pmOptions()
     opts.pmSetOptionCallback(self.option)
     opts.pmSetOverrideCallback(self.override)
     opts.pmSetShortOptions("bc:gklmots:V?")
     opts.pmSetLongOptionHeader("Options")
     opts.pmSetLongOption("bytes", 0, 'b', '', "show output in bytes")
     opts.pmSetLongOption("kilobytes", 0, 'k', '', "show output in KB")
     opts.pmSetLongOption("megabytes", 0, 'm', '', "show output in MB")
     opts.pmSetLongOption("gigabytes", 0, 'g', '', "show output in GB")
     opts.pmSetLongOption("", 0, 'o', '',
                          "use old format (no -/+buffers/cache line)")
     opts.pmSetLongOption("", 0, 'l', '',
                          "show detailed low and high memory statistics")
     opts.pmSetLongOption("total", 0, 't', '',
                          "display total for RAM + swap")
     opts.pmSetLongOption("samples", 1, 'c', "COUNT", "number of samples")
     opts.pmSetLongOption("interval", 1, 's', "DELTA", "sampling interval")
     opts.pmSetLongOptionVersion()
     opts.pmSetLongOptionHelp()
     return opts
Esempio n. 24
0
 def setup(self):
     """ Setup default command line argument option handling """
     opts = pmapi.pmOptions()
     opts.pmSetOptionCallback(self.option_callback)
     opts.pmSetOverrideCallback(self.override)
     opts.pmSetShortOptions("vp:a:c:f:R:i:s:h:?")
     opts.pmSetLongOptionText("")
     opts.pmSetLongOptionText("Interactive: pcp collectl [-h HOST] [options]")
     opts.pmSetLongOptionText("Read PCP archive: pcp collectl -a ARCHIVE [options]")
     opts.pmSetLongOptionText("Read PCP archive folio: pcp collectl -p FOLIO [options]")
     opts.pmSetLongOptionText("Write PCP archive folio: pcp collectl -f FOLIO [options]")
     opts.pmSetLongOptionHeader("Options")
     opts.pmSetLongOptionArchive()
     opts.pmSetLongOptionHost()
     opts.pmSetLongOptionVersion()
     opts.pmSetLongOption("verbose", 0, 'v', '', "produce verbose output")
     opts.pmSetLongOption("playback", 1, 'p', 'FOLIO', "metrics source is a PCP archive folio")
     opts.pmSetLongOption("count", 1, 'c', 'COUNT', "number of samples")
     opts.pmSetLongOption("filename", 1, 'f', 'FOLIO', "name of output PCP archive folio")
     opts.pmSetLongOption("runtime", 1, 'R', 'N', "how long to take report")
     opts.pmSetLongOption("interval", 1, 'i', 'N', "report time interval")
     opts.pmSetLongOption("subsys", 1, 's', 'SUBSYS', "subsystem to report")
     opts.pmSetLongOptionHelp()
     return opts
Esempio n. 25
0
    def options(self):
        """ Setup default command line argument option handling """
        opts = pmapi.pmOptions()
        opts.pmSetOptionCallback(self.option)
        opts.pmSetOverrideCallback(self.option_override)
        opts.pmSetShortOptions("acC:dD:fghiI:lmnN:o:prsS:tT:vVy?")
        opts.pmSetShortUsage("[-afv] [options...] [delay [count]]")
        opts.pmSetLongOptionText('Versatile tool for generating system resource statistics')

        opts.pmSetLongOptionHeader("Dstat options")
        opts.pmSetLongOption('cpu', 0, 'c', '', 'enable cpu stats')
        opts.pmSetLongOptionText(' '*5 + '-C 0,3,total' + ' '*10 + 'include cpu0, cpu3 and total')
        opts.pmSetLongOption('disk', 0, 'd', '', 'enable disk stats')
        opts.pmSetLongOptionText(' '*5 + '-D total,hda' + ' '*10 + 'include hda and total')
        opts.pmSetLongOption('page', 0, 'g', '', 'enable page stats')
        opts.pmSetLongOption('int', 0, 'i', '', 'enable interrupt stats')
        opts.pmSetLongOptionText(' '*5 + '-I 5,eth2' + ' '*10 + 'include int5 and interrupt used by eth2')
        opts.pmSetLongOption('load', 0, 'l', '', 'enable load stats')
        opts.pmSetLongOption('mem', 0, 'm', '', 'enable memory stats')
        opts.pmSetLongOption('net', 0, 'n', '', 'enable network stats')
        opts.pmSetLongOptionText(' '*5 + '-N eth1,total' + ' '*9 + 'include eth1 and total')
        opts.pmSetLongOption('proc', 0, 'p', '', 'enable process stats')
        opts.pmSetLongOption('io', 0, 'r', '', 'enable io stats (I/O requests completed)')
        opts.pmSetLongOption('swap', 0, 's', '', 'enable swap stats')
        opts.pmSetLongOptionText(' '*5 + '-S swap1,total' + ' '*9 + 'include swap1 and total')
        opts.pmSetLongOption('time', 0, 't', '', 'enable time/date output')
        opts.pmSetLongOption('time-adv', 0, None, '', 'enable time/date output (with milliseconds)')
        opts.pmSetLongOption('epoch', 0, 'T', '', 'enable time counter (seconds since epoch)')
        opts.pmSetLongOption('epoch-adv', 0, None, '', 'enable time counter (milliseconds since epoch)')
        opts.pmSetLongOption('sys', 0, 'y', '', 'enable system stats')
        opts.pmSetLongOptionText('')
        opts.pmSetLongOption('aio', 0, None, '', 'enable aio stats')
        opts.pmSetLongOption('fs', 0, None, '', '')
        opts.pmSetLongOption('filesystem', 0, None, '', '')
        opts.pmSetLongOptionText('  --fs, --filesystem' + ' '*4 + 'enable fs stats')
        for group in 'ipc', 'lock', 'raw', 'socket', 'tcp', 'udp', 'unix', 'vm':
            opts.pmSetLongOption(group, 0, None, '', 'enable '+ group + 'stats')
        opts.pmSetLongOption('vm-adv', 0, None, '', 'enable advanced vm stats')
        opts.pmSetLongOption('zones', 0, None, '', 'enable zoneinfo stats')
        opts.pmSetLongOptionText('')
        opts.pmSetLongOption('list', 0, None, '', 'list all available plugins')
        opts.pmSetLongOption('plugin', 0, None, '', 'enable external plugin by name (see --list)')
        opts.pmSetLongOptionText('')
        opts.pmSetLongOption('all', 0, 'a', '', 'equals -cdngy (default)')
        opts.pmSetLongOption('full', 0, 'f', '', 'automatically expand -C, -D, -I, -N and -S lists')
        opts.pmSetLongOption('vmstat', 0, 'v', '', 'equals -pmgdsc -D total')
        opts.pmSetLongOptionText('')
        opts.pmSetLongOption('bits', 0, '', '', 'force bits for values expressed in bytes')
        opts.pmSetLongOption('float', 0, '', '', 'force float values on screen')
        opts.pmSetLongOption('integer', 0, '', '', 'force integer values on screen')
        opts.pmSetLongOptionText('')
        opts.pmSetLongOption('bw', 0, '', '', '')
        opts.pmSetLongOption('blackonwhite', 0, '', '', '')
        opts.pmSetLongOption('black-on-white', 0, '', '', '')
        opts.pmSetLongOptionText('  --bw, --blackonwhite' + ' '*2 + 'change colors for white background terminal')
        opts.pmSetLongOption('color', 0, '', '', 'force colors')
        opts.pmSetLongOption('nocolor', 0, '', '', 'disable colors')
        opts.pmSetLongOption('noheaders', 0, '', '', 'disable repetitive headers')
        opts.pmSetLongOption('noupdate', 0, '', '', 'disable intermediate headers')
        opts.pmSetLongOption('output', 0, '', 'file', 'write CSV output to file')
        opts.pmSetLongOption('profile', 0, '', '', 'show profiling statistics when exiting dstat')
        opts.pmSetLongOption('version', 0, 'V', '', '')
        opts.pmSetLongOption('help', 0, 'h', '', '')
        opts.pmSetLongOptionText('')
        opts.pmSetLongOptionText('delay is the delay in seconds between each update (default: 1)')
        opts.pmSetLongOptionText('count is the number of updates to display before exiting (default: unlimited)')
        return opts
Esempio n. 26
0
    def __init__(self):
        """ Construct object, parse command line """
        self.context = None
        self.database = 'pcp'
        self.influxdb_tags = ''
        self.influxdb_address = 'http://127.0.0.1:8086'
        self.influxdb_user = None
        self.influxdb_pass = None
        self.sample_count = 0
        self.unitsstr = None
        self.units = None
        self.units_mult = None

        # option setup
        self.opts = pmapi.pmOptions()
        self.opts.pmSetShortOptions("a:O:s:T:g:p:P:r:m:t:u:h:t:D:LV?")
        self.opts.pmSetShortUsage("[options] metricname ...")
        self.opts.pmSetLongOptionText("""
Description: Periodically, relay raw values of all instances of a
given hierarchies of PCP metrics to an InfluxDB server on the network.""")
        self.opts.pmSetLongOptionHeader("Options")
        self.opts.pmSetOptionCallback(self.option)

        # common options
        self.opts.pmSetLongOptionVersion()
        self.opts.pmSetLongOptionArchive()
        self.opts.pmSetLongOptionOrigin()
        self.opts.pmSetLongOptionSamples()
        self.opts.pmSetLongOptionFinish()
        self.opts.pmSetLongOptionDebug()
        self.opts.pmSetLongOptionHost()
        self.opts.pmSetLongOptionLocalPMDA()
        self.opts.pmSetLongOptionInterval()

        # custom options
        self.opts.pmSetLongOption(
            "influxdb-address", 1, 'i', '', "InfluxDB HTTP/HTTPS address " +
            "(default \"" + self.influxdb_address + "\")")
        self.opts.pmSetLongOption(
            "units", 1, 'u', '',
            "rescale units " + "(e.g. \"MB\", will omit incompatible units)")
        self.opts.pmSetLongOption("database", 1, 'd', '',
                                  "database for metric (default \"pcp\")")
        self.opts.pmSetLongOption("db-user", 1, 'U', '',
                                  "username for InfluxDB database")
        self.opts.pmSetLongOption("db-password", 1, 'P', '',
                                  "password for InfluxDB database")
        self.opts.pmSetLongOption("tag-string", 1, 'I', '',
                                  "string of tags to add to the metrics")
        self.opts.pmSetLongOptionHelp()

        # parse options
        self.context = pmapi.pmContext.fromOptions(self.opts, sys.argv)
        self.interval = self.opts.pmGetOptionInterval() or pmapi.timeval(60, 0)
        if self.unitsstr is not None:
            units = self.context.pmParseUnitsStr(self.unitsstr)
            (self.units, self.units_mult) = units
        self.metrics = []
        self.pmids = []
        self.descs = []
        metrics = self.opts.pmGetNonOptionsFromList(sys.argv)
        if metrics:
            for m in metrics:
                try:
                    self.context.pmTraversePMNS(m,
                                                self.handle_candidate_metric)
                except pmapi.pmErr as error:
                    sys.stderr.write("Excluding metric %s (%s)\n" %
                                     (m, str(error)))

            sys.stderr.flush()

        if len(self.metrics) == 0:
            sys.stderr.write("No acceptable metrics specified.\n")
            raise pmapi.pmUsageErr()

        # Report what we're about to do
        print("Relaying %d %smetric(s) to database %s with tags %s from %s "
              "to %s every %f s" %
              (len(self.metrics), "rescaled " if self.units else "",
               self.database, self.influxdb_tags, self.describe_source(),
               self.influxdb_address, self.interval))

        sys.stdout.flush()
Esempio n. 27
0
    def __init__(self):
        """ Construct object, parse command line """
        self.context = None
        self.socket = None
        self.sample_count = 0
        self.opts = pmapi.pmOptions()
        self.opts.pmSetShortOptions("a:O:s:T:g:p:P:r:u:m:t:h:t:D:LV?")
        self.opts.pmSetShortUsage("[options] metricname ...")
        self.opts.pmSetOptionCallback(self.option)
        self.opts.pmSetOverrideCallback(self.option_override)
        self.opts.pmSetLongOptionText("""
Description: Periodically, relay raw values of all instances of a
given hierarchies of PCP metrics to a graphite/carbon server on the
network.""")
        self.opts.pmSetLongOptionHeader("Options")
        self.opts.pmSetLongOptionVersion()  # -V
        self.opts.pmSetLongOptionArchive()  # -a FILE
        self.opts.pmSetLongOptionOrigin()  # -O TIME
        self.opts.pmSetLongOptionSamples()  # -s NUMBER
        self.opts.pmSetLongOptionFinish()  # -T NUMBER
        self.opts.pmSetLongOptionDebug()  # -D stuff
        self.opts.pmSetLongOptionHost()  # -h HOST
        self.opts.pmSetLongOptionLocalPMDA()  # -L
        self.opts.pmSetLongOptionInterval()  # -t NUMBER
        self.opts.pmSetLongOption(
            "graphite-host", 1, 'g', '',
            "graphite server host " + "(default \"localhost\")")
        self.opts.pmSetLongOption("pickled-port", 1, 'p', '',
                                  "graphite pickled port (default 2004)")
        self.opts.pmSetLongOption("text-port", 1, 'P', '',
                                  "graphite plaintext port (usually 2003)")
        self.opts.pmSetLongOption(
            "units", 1, 'u', '',
            "rescale units " + "(e.g. \"MB\", will omit incompatible units)")
        self.opts.pmSetLongOption(
            "prefix", 1, 'm', '', "prefix for metric names (default \"pcp.\")")
        self.opts.pmSetLongOption("pickle-protocol", 1, 'r', 'PROTOCOL',
                                  "graphite pickle protocol (default 0)")
        self.opts.pmSetLongOptionHelp()
        self.graphite_host = "localhost"
        self.graphite_port = 2004
        self.pickle = True
        self.pickle_protocol = 0
        self.prefix = "pcp."
        self.unitsstr = None
        self.units = None  # pass verbatim by default
        self.units_mult = None  # pass verbatim by default

        # now actually parse
        self.context = pmapi.pmContext.fromOptions(self.opts, sys.argv)
        self.interval = self.opts.pmGetOptionInterval() or pmapi.timeval(60, 0)
        if self.unitsstr is not None:
            units = self.context.pmParseUnitsStr(self.unitsstr)
            (self.units, self.units_mult) = units
        self.metrics = []
        self.pmids = []
        self.descs = []
        metrics = self.opts.pmGetNonOptionsFromList(sys.argv)
        if metrics:
            for m in metrics:
                try:
                    self.context.pmTraversePMNS(m,
                                                self.handle_candidate_metric)
                except pmapi.pmErr as error:
                    sys.stderr.write("Excluding metric %s (%s)\n" %
                                     (m, str(error)))
            sys.stderr.flush()

        if len(self.metrics) == 0:
            sys.stderr.write("No acceptable metrics specified.\n")
            raise pmapi.pmUsageErr()

        # Report what we're about to do
        print(
            "Relaying %d %smetric(s) with prefix %s from %s "
            "in %s mode to %s:%d every %f s" %
            (len(self.metrics), "rescaled " if self.units else "", self.prefix,
             self.describe_source(), "pickled" if self.pickle else "text",
             self.graphite_host, self.graphite_port, self.interval))
        sys.stdout.flush()
Esempio n. 28
0
            if not self.hostname:
                self.hostname = group.contextCache.pmGetContextHostName()
            stamp = group.contextCache.pmCtime(long(group.timestamp))
            title = '@ %s (host %s)' % (stamp.rstrip(), self.hostname)
            if RATIO:
                style = "%s%s" % (padding, SUBHEAD_RATIO)
            else:
                style = "%s%s" % (padding, SUBHEAD_IOPS)
            
            HEADING = ' device '.center(max_lv,'-') + COL_HEADING
            print('%s\n%s\n%s' % (title, HEADING, style))
        self.report_values(group, width=max_lv)

if __name__ == '__main__':
    try:
        options = pmapi.pmOptions('iR:?')
        options.pmSetShortUsage('[options] [device ...]')
        options.pmSetOptionCallback(option)
        options.pmSetLongOptionHeader('Options')
        options.pmSetLongOption('repeat', 1, 'R', 'N', 'repeat the header after every N samples')
        options.pmSetLongOption('iops', 0, 'i', '', 'display IOPs instead of cache hit ratio')
        options.pmSetLongOptionVersion()
        options.pmSetLongOptionHelp()
        manager = pmcc.MetricGroupManager.builder(options, sys.argv)
        manager.printer = DmCachePrinter(options.pmGetOperands())
        manager['dmcache'] = CACHE_METRICS
        manager.run()
    except pmapi.pmErr as error:
        print('%s: %s\n' % (error.progname(), error.message()))
    except pmapi.pmUsageErr as usage:
        usage.message()
Esempio n. 29
0
    def __init__(self):
        """ Construct object, parse command line """
        self.context = None
        self.opts = pmapi.pmOptions()
        self.opts.pmSetShortOptions("g:p:P:u:m:t:h:Lt:D:V?") # must include common options
        self.opts.pmSetShortUsage("[options] metricname ...")
        self.opts.pmSetOptionCallback(self.option)
        self.opts.pmSetOverrideCallback(self.option_override)
        # hack to include some explanatory text
        self.opts.pmSetLongOptionHeader("""
Description: Periodically, relay raw values of all instances of a
given hierarchies of PCP metrics to a graphite/carbon server on the
network.

Options""")
        self.opts.pmSetLongOptionVersion() # -V
        # self.opts.pmSetLongOptionArchive() # -a FILE   -- not supported yet; need -S/etc. controls
        self.opts.pmSetLongOptionDebug() # -D stuff
        self.opts.pmSetLongOptionHost() # -h HOST
        # self.opts.pmSetLongOptionLocalPMDA() # -L
        self.opts.pmSetLongOptionInterval() # -t NUMBER
        self.opts.pmSetLongOption("graphite-host", 1, 'g', '', "graphite server host (default \"localhost\")")
        self.opts.pmSetLongOption("pickled-port", 1, 'p', '', "graphite pickled port (default 2004)")
        self.opts.pmSetLongOption("text-port", 1, 'P', '', "graphite plaintext port (usually 2003)")
        self.opts.pmSetLongOption("units", 1, 'u', '', "rescale all metric units (e.g., \"mbytes/5 sec\")")
        self.opts.pmSetLongOption("prefix", 1, 'm', '', "prefix for metric names (default \"pcp.\")")
        self.opts.pmSetLongOptionHelp()
        self.graphite_host = "localhost"
        self.graphite_port = 2004
        self.pickle = True
        self.prefix = "pcp."
        self.unitsstr = None
        self.units = None # pass verbatim by default
        self.units_mult = None # pass verbatim by default

        # now actually parse
        self.context = pmapi.pmContext.fromOptions(self.opts, sys.argv)
        self.interval = self.opts.pmGetOptionInterval() or pmapi.timeval(60,0)

        if self.unitsstr is not None:
            (self.units, self.units_mult) = self.context.pmParseUnitsStr(self.unitsstr)
        self.metrics = []
        self.pmids = []
        self.descs = []
        metrics = self.opts.pmNonOptionsFromList(sys.argv)
        if metrics:
            for m in metrics:
                try:
                    self.context.pmTraversePMNS(m, self.handle_candidate_metric)
                except pmapi.pmErr as error:
                    sys.stderr.write("Excluding metric %s (%s)\n" % (m, str(error)))
            sys.stderr.flush()

        if len(self.metrics) == 0:
            sys.stderr.write("No acceptable metrics specified.\n")
            raise pmapi.pmUsageErr()

        # Report what we're about to do
        print("Relaying %d %smetric(s) with prefix %s "
              "in %s mode to %s:%d every %f s" % (
                len(self.metrics),
                "rescaled " if self.units else "",
                self.prefix,
                "pickled" if self.pickle else "text",
                self.graphite_host, self.graphite_port,
                self.interval))
        sys.stdout.flush()
Esempio n. 30
0
    def __init__(self):
        """ Construct object, parse command line """
        self.opts = pmapi.pmOptions()
        self.opts.pmSetShortOptions("a:O:s:T:g:i:u:m:t:h:t:D:LV?")
        self.opts.pmSetShortUsage("[options] metricname ...")
        self.opts.pmSetOptionCallback(self.option)
        self.opts.pmSetOverrideCallback(self.option_override)
        self.opts.pmSetLongOptionText("""
Description: Periodically, relay raw values of all instances of a
given hierarchies of PCP metrics to a elasticsearch/carbon server on the
network.""")
        self.opts.pmSetLongOptionHeader("Options")
        self.opts.pmSetLongOptionVersion()  # -V
        self.opts.pmSetLongOptionArchive()  # -a FILE
        self.opts.pmSetLongOptionOrigin()  # -O TIME
        self.opts.pmSetLongOptionSamples()  # -s NUMBER
        self.opts.pmSetLongOptionFinish()  # -T NUMBER
        self.opts.pmSetLongOptionDebug()  # -D stuff
        self.opts.pmSetLongOptionHost()  # -h HOST
        self.opts.pmSetLongOptionLocalPMDA()  # -L
        self.opts.pmSetLongOptionInterval()  # -t NUMBER
        self.opts.pmSetLongOption(
            "elasticsearch-host", 1, 'g', '', "elasticsearch server host " +
            "(default \"http://*****:*****@timestamp': {
                                                   'type': 'date'
                                               },
                                               'host-id': {
                                                   'type': 'string'
                                               }
                                           }
                                       }
                                   }
                               })

        # Report what we're about to do
        print("Relaying %d %smetric(s) with es_index %s from %s "
              "to %s every %f s" %
              (len(self.metrics),
               "rescaled " if self.units else "", self.es_index,
               self.describe_source(), self.elasticsearch_host, self.interval))
        sys.stdout.flush()
Esempio n. 31
0
    def options(self):
        """ Setup default command line argument option handling """
        opts = pmapi.pmOptions()
        opts.pmSetOptionCallback(self.option)
        opts.pmSetOverrideCallback(self.option_override)
        opts.pmSetShortOptions(
            "a:h:LK:c:Co:F:e:D:V?HUGpA:S:T:O:s:t:Z:zdrIi:vX:w:P:l:kxE:f:uq:b:y:"
        )
        opts.pmSetShortUsage("[option...] metricspec [...]")

        opts.pmSetLongOptionHeader("General options")
        opts.pmSetLongOptionArchive()  # -a/--archive
        opts.pmSetLongOptionArchiveFolio()  # --archive-folio
        opts.pmSetLongOptionContainer()  # --container
        opts.pmSetLongOptionHost()  # -h/--host
        opts.pmSetLongOptionLocalPMDA()  # -L/--local-PMDA
        opts.pmSetLongOptionSpecLocal()  # -K/--spec-local
        opts.pmSetLongOption("config", 1, "c", "FILE", "config file path")
        opts.pmSetLongOption("check", 0, "C", "",
                             "check config and metrics and exit")
        opts.pmSetLongOption("output", 1, "o", "OUTPUT",
                             "output target: archive, csv, stdout (default)")
        opts.pmSetLongOption("output-file", 1, "F", "OUTFILE", "output file")
        opts.pmSetLongOption("derived", 1, "e", "FILE|DFNT",
                             "derived metrics definitions")
        self.daemonize = opts.pmSetLongOption("daemonize", 0, "", "",
                                              "daemonize on startup")  # > 1
        opts.pmSetLongOptionDebug()  # -D/--debug
        opts.pmSetLongOptionVersion()  # -V/--version
        opts.pmSetLongOptionHelp()  # -?/--help

        opts.pmSetLongOptionHeader("Reporting options")
        opts.pmSetLongOption("no-header", 0, "H", "", "omit headers")
        opts.pmSetLongOption("no-unit-info", 0, "U", "",
                             "omit unit info from headers")
        opts.pmSetLongOption("no-globals", 0, "G", "", "omit global metrics")
        opts.pmSetLongOption("timestamps", 0, "p", "", "print timestamps")
        opts.pmSetLongOptionAlign()  # -A/--align
        opts.pmSetLongOptionStart()  # -S/--start
        opts.pmSetLongOptionFinish()  # -T/--finish
        opts.pmSetLongOptionOrigin()  # -O/--origin
        opts.pmSetLongOptionSamples()  # -s/--samples
        opts.pmSetLongOptionInterval()  # -t/--interval
        opts.pmSetLongOptionTimeZone()  # -Z/--timezone
        opts.pmSetLongOptionHostZone()  # -z/--hostzone
        opts.pmSetLongOption(
            "delay", 0, "d", "",
            "delay, pause between updates for archive replay")
        opts.pmSetLongOption("raw", 0, "r", "",
                             "output raw counter values (no rate conversion)")
        opts.pmSetLongOption("ignore-incompat", 0, "I", "",
                             "ignore incompatible instances (default: abort)")
        opts.pmSetLongOption("instances", 1, "i", "STR",
                             "instances to report (default: all current)")
        opts.pmSetLongOption(
            "omit-flat", 0, "v", "",
            "omit single-valued metrics with -i (default: include)")
        opts.pmSetLongOption(
            "colxrow", 1, "X", "STR",
            "swap stdout columns and rows using header label")
        opts.pmSetLongOption("width", 1, "w", "N", "default column width")
        opts.pmSetLongOption(
            "precision", 1, "P", "N",
            "N digits after the decimal separator (default: 3)")
        opts.pmSetLongOption("delimiter", 1, "l", "STR",
                             "delimiter to separate csv/stdout columns")
        opts.pmSetLongOption("extended-csv", 0, "k", "", "write extended CSV")
        opts.pmSetLongOption("extended-header", 0, "x", "",
                             "display extended header")
        opts.pmSetLongOption("repeat-header", 1, "E", "N",
                             "repeat stdout headers every N lines")
        opts.pmSetLongOption("timestamp-format", 1, "f", "STR",
                             "strftime string for timestamp format")
        opts.pmSetLongOption("no-interpol", 0, "u", "",
                             "disable interpolation mode with archives")
        opts.pmSetLongOption("count-scale", 1, "q", "SCALE",
                             "default count unit")
        opts.pmSetLongOption("space-scale", 1, "b", "SCALE",
                             "default space unit")
        opts.pmSetLongOption("time-scale", 1, "y", "SCALE",
                             "default time unit")

        return opts
Esempio n. 32
0
    def connect(self):
        """ Establish a fetchgroup PMAPI context to archive, host or local,
            via environment passed in by pcp(1). The ss(1) command has many
            clashes with standard PCP arguments so this is the only supported
            invocation. Debug options (if any) are set for us by pcp(1).
            Return True or False if we fail to connect.
        """
        # source
        pcp_host = os.getenv("PCP_HOST")
        pcp_archive = os.getenv("PCP_ARCHIVE")

        # time window
        pcp_origin = os.getenv("PCP_ORIGIN_TIME")
        pcp_start_time = os.getenv("PCP_START_TIME")
        pcp_align_time = os.getenv("PCP_ALIGN_TIME")
        pcp_timezone = os.getenv("PCP_TIMEZONE")
        pcp_hostzone = os.getenv("PCP_HOSTZONE")
        pcp_debug = os.getenv("PCP_DEBUG")

        if pcp_archive is not None:
            self.context_type = PM_CONTEXT_ARCHIVE
            if pcp_origin is None and pcp_start_time is None:
                pcp_origin = "-0"  # end of archive
            self.source = pcp_archive
        else:
            self.context_type = PM_CONTEXT_HOST
            if pcp_host is not None:
                self.source = pcp_host
            else:
                self.source = "localhost"

        try:
            self.pmfg = pmapi.fetchgroup(self.context_type, self.source)
            self.context = self.pmfg.get_context()
            if pcp_archive:
                options = pmapi.pmOptions("a:A:O:S:D:zZ:")
                optargv = ["pcp-ss", pcp_archive]
                if pcp_debug:
                    optargv.append("-D%s" % pcp_debug)
                if pcp_align_time:
                    optargv.append("-A%s" % pcp_align_time)
                if pcp_timezone:
                    optargv.append("-Z%s" % pcp_timezone)
                if pcp_hostzone:
                    optargv.append("-z")
                if pcp_origin:
                    optargv.append("-O%s" % pcp_origin)
                    pmapi.pmContext.fromOptions(options, optargv)
                    origin = options.pmGetOptionOrigin()
                    self.context.pmSetMode(PM_MODE_INTERP, origin, 0)
                elif pcp_start_time:
                    optargv.append("-S%s" % pcp_start_time)
                    pmapi.pmContext.fromOptions(options, optargv)
                    start = options.pmGetOptionStart()
                    self.context.pmSetMode(PM_MODE_INTERP, start, 0)

        except pmapi.pmErr as error:
            sys.stderr.write("%s: %s '%s'\n" %
                             (error.progname(), error.message(), self.source))
            return False

        # check network.persocket metrics are available
        try:
            self.context.pmLookupName((pmns + ".filter"))
        except Exception:
            if self.context_type == PM_CONTEXT_HOST:
                msg = "on host %s.\nIs the 'sockets' PMDA installed and enabled? See pmdasockets(1)." % self.source
            else:
                msg = "in archive %s" % self.source
            print("Error: metrics for '%s' not found %s" % (pmns, msg))
            return False

        return True
Esempio n. 33
0
    def __init__(self):
        """ Construct object, parse command line """
        self.context = None
        self.socket = None
        self.sample_count = 0
        self.opts = pmapi.pmOptions()
        self.opts.pmSetShortOptions("a:O:s:T:g:p:P:r:u:m:t:h:t:D:LV?")
        self.opts.pmSetShortUsage("[options] metricname ...")
        self.opts.pmSetOptionCallback(self.option)
        self.opts.pmSetOverrideCallback(self.option_override)
        self.opts.pmSetLongOptionText("""
Description: Periodically, relay raw values of all instances of a
given hierarchies of PCP metrics to a graphite/carbon server on the
network.""")
        self.opts.pmSetLongOptionHeader("Options")
        self.opts.pmSetLongOptionVersion() # -V
        self.opts.pmSetLongOptionArchive() # -a FILE
        self.opts.pmSetLongOptionOrigin() # -O TIME
        self.opts.pmSetLongOptionSamples() # -s NUMBER
        self.opts.pmSetLongOptionFinish() # -T NUMBER
        self.opts.pmSetLongOptionDebug() # -D stuff
        self.opts.pmSetLongOptionHost() # -h HOST
        self.opts.pmSetLongOptionLocalPMDA() # -L
        self.opts.pmSetLongOptionInterval() # -t NUMBER
        self.opts.pmSetLongOption("graphite-host", 1, 'g', '',
                                  "graphite server host " +
                                  "(default \"localhost\")")
        self.opts.pmSetLongOption("pickled-port", 1, 'p', '',
                                  "graphite pickled port (default 2004)")
        self.opts.pmSetLongOption("text-port", 1, 'P', '',
                                  "graphite plaintext port (usually 2003)")
        self.opts.pmSetLongOption("units", 1, 'u', '',
                                  "rescale units " +
                                  "(e.g. \"MB\", will omit incompatible units)")
        self.opts.pmSetLongOption("prefix", 1, 'm', '',
                                  "prefix for metric names (default \"pcp.\")")
        self.opts.pmSetLongOption("pickle-protocol", 1, 'r', 'PROTOCOL',
                                  "graphite pickle protocol (default 0)")
        self.opts.pmSetLongOptionHelp()
        self.graphite_host = "localhost"
        self.graphite_port = 2004
        self.pickle = True
        self.pickle_protocol = 0
        self.prefix = "pcp."
        self.unitsstr = None
        self.units = None # pass verbatim by default
        self.units_mult = None # pass verbatim by default

        # now actually parse
        self.context = pmapi.pmContext.fromOptions(self.opts, sys.argv)
        self.interval = self.opts.pmGetOptionInterval() or pmapi.timeval(60, 0)
        if self.unitsstr is not None:
            units = self.context.pmParseUnitsStr(self.unitsstr)
            (self.units, self.units_mult) = units
        self.metrics = []
        self.pmids = []
        self.descs = []
        metrics = self.opts.pmGetNonOptionsFromList(sys.argv)
        if metrics:
            for m in metrics:
                try:
                    self.context.pmTraversePMNS(m, self.handle_candidate_metric)
                except pmapi.pmErr as error:
                    sys.stderr.write("Excluding metric %s (%s)\n" %
                                     (m, str(error)))
            sys.stderr.flush()

        if len(self.metrics) == 0:
            sys.stderr.write("No acceptable metrics specified.\n")
            raise pmapi.pmUsageErr()

        # Report what we're about to do
        print("Relaying %d %smetric(s) with prefix %s from %s "
              "in %s mode to %s:%d every %f s" %
              (len(self.metrics),
               "rescaled " if self.units else "",
               self.prefix,
               self.describe_source(),
               "pickled" if self.pickle else "text",
               self.graphite_host, self.graphite_port,
               self.interval))
        sys.stdout.flush()
Esempio n. 34
0
    def __init__(self):
        """ Construct object, parse command line """
        self.context = None
        self.opts = pmapi.pmOptions()
        self.opts.pmSetShortOptions("g:p:P:u:m:t:h:Lt:D:V?")  # must include common options
        self.opts.pmSetShortUsage("[options] metricname ...")
        self.opts.pmSetOptionCallback(self.option)
        self.opts.pmSetOverrideCallback(self.option_override)
        # hack to include some explanatory text
        self.opts.pmSetLongOptionHeader(
            """
Description: Periodically, relay raw values of all instances of a
given hierarchies of PCP metrics to a graphite/carbon server on the
network.

Options"""
        )
        self.opts.pmSetLongOptionVersion()  # -V
        # self.opts.pmSetLongOptionArchive() # -a FILE   -- not supported yet; need -S/etc. controls
        self.opts.pmSetLongOptionDebug()  # -D stuff
        self.opts.pmSetLongOptionHost()  # -h HOST
        # self.opts.pmSetLongOptionLocalPMDA() # -L
        self.opts.pmSetLongOptionInterval()  # -t NUMBER
        self.opts.pmSetLongOption("graphite-host", 1, "g", "", 'graphite server host (default "localhost")')
        self.opts.pmSetLongOption("pickled-port", 1, "p", "", "graphite pickled port (default 2004)")
        self.opts.pmSetLongOption("text-port", 1, "P", "", "graphite plaintext port (usually 2003)")
        self.opts.pmSetLongOption("units", 1, "u", "", 'rescale all metric units (e.g., "mbytes/5 sec")')
        self.opts.pmSetLongOption("prefix", 1, "m", "", 'prefix for metric names (default "pcp.")')
        self.opts.pmSetLongOptionHelp()
        self.graphite_host = "localhost"
        self.graphite_port = 2004
        self.pickle = True
        self.prefix = "pcp."
        self.unitsstr = None
        self.units = None  # pass verbatim by default
        self.units_mult = None  # pass verbatim by default

        # now actually parse
        self.context = pmapi.pmContext.fromOptions(self.opts, sys.argv)
        self.interval = self.opts.pmGetOptionInterval() or pmapi.timeval(60, 0)

        if self.unitsstr is not None:
            (self.units, self.units_mult) = self.context.pmParseUnitsStr(self.unitsstr)
        self.metrics = []
        self.pmids = []
        self.descs = []
        metrics = self.opts.pmNonOptionsFromList(sys.argv)
        if metrics:
            for m in metrics:
                try:
                    self.context.pmTraversePMNS(m, self.handle_candidate_metric)
                except pmapi.pmErr as error:
                    sys.stderr.write("Excluding metric %s (%s)\n" % (m, str(error)))
            sys.stderr.flush()

        if len(self.metrics) == 0:
            sys.stderr.write("No acceptable metrics specified.\n")
            raise pmapi.pmUsageErr()

        # Report what we're about to do
        print(
            "Relaying %d %smetric(s) with prefix %s "
            "in %s mode to %s:%d every %f s"
            % (
                len(self.metrics),
                "rescaled " if self.units else "",
                self.prefix,
                "pickled" if self.pickle else "text",
                self.graphite_host,
                self.graphite_port,
                self.interval,
            )
        )
        sys.stdout.flush()
Esempio n. 35
0
    def __init__(self):
        """ Construct object, parse command line """
        self.context = None
        self.database = 'pcp'
        self.influxdb_tags = ''
        self.influxdb_address = 'http://127.0.0.1:8086'
        self.influxdb_user = None
        self.influxdb_pass = None
        self.sample_count = 0
        self.unitsstr = None
        self.units = None
        self.units_mult = None

        # option setup
        self.opts = pmapi.pmOptions()
        self.opts.pmSetShortOptions("a:O:s:T:g:p:P:r:m:t:u:h:t:D:LV?")
        self.opts.pmSetShortUsage("[options] metricname ...")
        self.opts.pmSetLongOptionText("""
Description: Periodically, relay raw values of all instances of a
given hierarchies of PCP metrics to an InfluxDB server on the network.""")
        self.opts.pmSetLongOptionHeader("Options")
        self.opts.pmSetOptionCallback(self.option)

        # common options
        self.opts.pmSetLongOptionVersion()
        self.opts.pmSetLongOptionArchive()
        self.opts.pmSetLongOptionOrigin()
        self.opts.pmSetLongOptionSamples()
        self.opts.pmSetLongOptionFinish()
        self.opts.pmSetLongOptionDebug()
        self.opts.pmSetLongOptionHost()
        self.opts.pmSetLongOptionLocalPMDA()
        self.opts.pmSetLongOptionInterval()

        # custom options
        self.opts.pmSetLongOption("influxdb-address", 1, 'i', '',
                                  "InfluxDB HTTP/HTTPS address " +
                                  "(default \"" + self.influxdb_address +
                                  "\")")
        self.opts.pmSetLongOption("units", 1, 'u', '',
                                  "rescale units " +
                                  "(e.g. \"MB\", will omit incompatible units)")
        self.opts.pmSetLongOption("database", 1, 'd', '',
                                  "database for metric (default \"pcp\")")
        self.opts.pmSetLongOption("db-user", 1, 'U', '',
                                  "username for InfluxDB database")
        self.opts.pmSetLongOption("db-password", 1, 'P', '',
                                  "password for InfluxDB database")
        self.opts.pmSetLongOption("tag-string", 1, 'I', '',
                                  "string of tags to add to the metrics")
        self.opts.pmSetLongOptionHelp()

        # parse options
        self.context = pmapi.pmContext.fromOptions(self.opts, sys.argv)
        self.interval = self.opts.pmGetOptionInterval() or pmapi.timeval(60, 0)
        if self.unitsstr is not None:
            units = self.context.pmParseUnitsStr(self.unitsstr)
            (self.units, self.units_mult) = units
        self.metrics = []
        self.pmids = []
        self.descs = []
        metrics = self.opts.pmGetNonOptionsFromList(sys.argv)
        if metrics:
            for m in metrics:
                try:
                    self.context.pmTraversePMNS(m,
                                                self.handle_candidate_metric)
                except pmapi.pmErr as error:
                    sys.stderr.write("Excluding metric %s (%s)\n" %
                                     (m, str(error)))

            sys.stderr.flush()

        if len(self.metrics) == 0:
            sys.stderr.write("No acceptable metrics specified.\n")
            raise pmapi.pmUsageErr()

        # Report what we're about to do
        print("Relaying %d %smetric(s) to database %s with tags %s from %s "
              "to %s every %f s" %
              (len(self.metrics),
               "rescaled " if self.units else "",
               self.database,
               self.influxdb_tags,
               self.describe_source(),
               self.influxdb_address,
               self.interval))

        sys.stdout.flush()
Esempio n. 36
0
    def setup(self):
        """Setup default command line argument option handling."""
        # FIXME: There has got to be a better way to indent the text in a
        # visually pleasing way
        t = " " * 24
        opts = pmapi.pmOptions()
        opts.pmSetOptionCallback(self.option_callback)
        opts.pmSetOverrideCallback(self.override)
        opts.pmSetShortOptions("nrVi:e:o:c:?S:T:t:a:l:m:d:")
        opts.pmSetOptionFlags(c_api.PM_OPTFLAG_BOUNDARIES)
        opts.pmSetOptionFlags(c_api.PM_OPTFLAG_MULTI)
        opts.pmSetShortUsage(
            "[options] -a <pcp_archive>\nFor example:\npcp2pdf -S \"May 30 12:00 2014\" -T \"May 30 15:00 2014\" -t \"4 minute\" \\\n -c \"traffic:network.interface.out.bytes:eth0,network.interface.in.bytes:*\" -l 'foo:2014-05-30 12:30:00' -a tests/20140530.0"
        )
        opts.pmSetLongOptionHeader("Options")

        opts.pmSetLongOption("include", 1, 'i', '', "Include specific metrics")
        opts.pmSetLongOptionText(
            t +
            "Includes metrics which match the specified regular expression.")
        opts.pmSetLongOptionText(
            t +
            "For example: --include 'network.*'. The option can be specified")
        opts.pmSetLongOptionText(
            t +
            "multiple times. If only --include is specified, only the matching"
        )
        opts.pmSetLongOptionText(
            t +
            "metrics will be included in the output. If both --include and --exclude"
        )
        opts.pmSetLongOptionText(
            t +
            "are specified first all excluded metrics are evaluted and then the included ones"
        )
        opts.pmSetLongOption("exclude", 1, 'e', '', "Exclude specific metrics")
        opts.pmSetLongOptionText(
            t +
            "Excludes metrics which match the specified regular expression. For example:"
        )
        opts.pmSetLongOptionText(
            t +
            "--exclude 'network.*'. The option can be specified multiple times. If only"
        )
        opts.pmSetLongOptionText(
            t +
            "--exclude is specified, all metrics are shown except the specified ones"
        )
        opts.pmSetLongOption("output", 1, 'o', '',
                             "Output file name (default: output.pdf)")
        opts.pmSetLongOption("custom", 1, 'c', '', "Add custom graphs")
        opts.pmSetLongOptionText(
            t +
            "Add ability to create graphs with multiple metrics. For example:")
        opts.pmSetLongOptionText(
            t +
            "--custom 'traffic:network.interface.out.bytes:virbr0,network.interface.in.bytes:br0,network.tcp.*:.*'"
        )
        opts.pmSetLongOptionText(
            t +
            "would create a 'traffic' page with the above matrics as regular expressions combined in a single graph."
        )
        opts.pmSetLongOptionText(t + "The general syntax is:")
        opts.pmSetLongOptionText(
            t +
            "--custom '<label>:<metric1_re>:<indom1_re>,...<metricN_re>:<indomN_re>'. The option can be specified multiple times"
        )
        opts.pmSetLongOption("raw", 0, 'r', '', "Disable rate conversions")
        opts.pmSetLongOptionText(
            t +
            "Disable the rate conversion for all the metrics that have the PM_SEM_COUNTER semantic"
        )
        opts.pmSetLongOptionText(
            t +
            "associated with them. By default those are converted via: (value(T) - value(T-1)) / (T - T-1)"
        )
        opts.pmSetLongOption(
            "label", 0, 'l', '',
            "Adds one or more labels to a graph at specified time")
        opts.pmSetLongOptionText(
            t +
            "For example --label 'foo:2014-01-01 13:45:03' --label 'bar:2014-01-02 13:15:15' will add"
        )
        opts.pmSetLongOptionText(
            t +
            "two extra labels on every graph at those times. This is useful for correlation work"
        )
        opts.pmSetLongOption(
            "nohistogram", 0, 'n', '',
            "Disables the creation of distribution histograms for each graph")
        opts.pmSetLongOption(
            "dpi", 1, 'd', '',
            "Sets the DPI used to create the images for the graph. Default is 200"
        )
        opts.pmSetLongOptionText(
            t +
            "unless overridden in the configuration. The lower the value, the less memory the process will need"
        )
        opts.pmSetLongOptionText(t +
                                 "and the less quality the graphs will have.")
        opts.pmSetLongOptionStart()
        opts.pmSetLongOptionFinish()
        opts.pmSetLongOptionInterval()
        opts.pmSetLongOptionArchive()
        opts.pmSetLongOptionVersion()
        opts.pmSetLongOptionHelp()
        return opts