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
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
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
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
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()
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
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()
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()
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
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
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
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
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
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
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
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
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
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
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
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()
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()
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()
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()
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()
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
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
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()
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()
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()
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