Путеводитель по Руководству Linux

  User  |  Syst  |  Libr  |  Device  |  Files  |  Other  |  Admin  |  Head  |



   pmdastatsd    ( 1 )

агент домена метрики производительности протокола StatsD (PMDA) (StatsD protocol performance metric domain agent (PMDA))

Имя (Name)

pmdastatsd - StatsD protocol performance metric domain agent
       (PMDA)

Синопсис (Synopsis)

$PCP_PMDAS_DIR/statsd/pmdastatsd [-Z maximum udp packet size] [-P
       port] [-v] [-g] [-o debug output filename] [-s] [-r parser type]
       [-a port] [-z maximum of unprocessed packets]

Описание (Description)

StatsD is simple, text-based UDP protocol for receiving
       monitoring data of applications in architecture client-server.
       pmdastatsd is an Performance Metrics Domain Agent that collects
       StatsD data, aggregates them and makes them available to any
       Performance Co-Pilot client, which is ideal for easily tracking
       stats in your application.

The statsd PMDA supports Counter, Gauge and Duration (with instances for minimum, maximum, median, average, 90th percentile, 95th percentile, 99th percentile, count and standard deviation) metric types, offers multiple parsing options: Ragel or handwritten/custom parser, offers multiple aggregating options for duration metric type: basic histogram or HDR histogram, supports custom form of labels, logging, exports multiple metrics about itself and may be configured either with an ini file or command line options.


Конфигурация (Configuration)

A brief description of the pmdastatsd command line options
       follows:

-Z, --max-udp=<value> Maximum allowed packet size, any larger then this will be thrown away. Default: 1472

-P, --port=<value> Which port agent will listen to for incoming trafic. Default: 8125

-v, --verbose Verbosity level. Prints info about agent execution into logfile. Valid values are 0-2. 0 = Default value, shows config information, read socket state, and first 100 dropped messages. 1 = Shows PMNS and related information. 2 = Most detailed verbosity level, also shows dropped messages above 100. All levels include those belows.

-o, --debug-output-filename=<value> You can send USR1 signal that 'asks' agent to output basic information about all aggregated metric into a $PCP_LOG_DIR/pmcd/statsd_{name} file. Default: 0

-s, --version Flag controlling whether or not to log current agent version on start. Default: 0

-p, --parser-type=<value> Flag specifying which parser to use for incoming packets; Basic = 0, Ragel = 1. Default: 0

-a, --duration-aggregation-type=<value> Flag specifying which aggregation scheme to use for duration metrics; basic histogram = 0, HDR histogram = 1. Default: 1

-z, -max-unprocessed-packets=<value> Maximum size of packet queue that the agent will save in memory. There are 2 queues: one for packets that are waiting to be parsed and one for parsed packets before they are aggregated. Default: 2048

The agent also looks for a pmdastatsd.ini file in the $PCP_PMDAS_DIR/statsd directory. There, the same options may be specified, albeit with slightly different names as follows:

max_udp_packet_size=<value> port=<value> verbose=<value> debug=<value> debug_output_filename=<value> version=<value> parser_type=<value> duration_aggregation_type=<value> max_unprocessed_packets=<value>

Should an option be specified in both pmdastatsd.ini and command line, then the latter takes precedence. Most of the time you will want to configure the agent with an ini file, as the agent should never be executed directly.

Location of the log file. By default, a log file named statsd.log is written in the current directory of pmcd(1) when pmdastatsd is started, i.e. $PCP_LOG_DIR/pmcd. If the log file cannot be created or is not writable, output is written to standard error instead.


Установка (Installation)

If you want to install the pmdastatsd, do the following as root:

# cd $PCP_PMDAS_DIR/statsd # ./Install

To uninstall, do the following as root:

# cd $PCP_PMDAS_DIR/statsd # ./Remove

pmdastatsd is launched by pmcd(1) and should never be executed directly. The Install and Remove scripts notify pmcd(1) when the agent is installed or removed.


Использование (Usage)

Once started, pmdastatsd will listen on specified port for any
       content in a form of:

<metricname>:<value>|<type>

There may be multiple such messages in single datagram, split by a newline character, so this:

<metricname>:<value>|<type>\n<metricname>:<value>|<type>

is valid as well. Constraints for each of the above variables are:

<metricname> = [a-z][a-zA-Z0-9_.]* <value> = described further in each metric type subsection <type> = One of the following: c , g or ms

If verbose logging is turned on, agent will log every message parsed and related failures.

All recorded metrics will, if parsed and aggregated successfully, be made available under statsd.* namespace.

1 Counter metric Stores metrics as simple counters, adding any incoming values to already existing ones.

<metricname>:<value>|c

Where value is positive number.

Example:

After aggregating following messages:

metric:20|c metric:10|c metric:3.3|c

Value available to PCP will be:

# pminfo --fetch statsd.metric

inst [0 or '/'] value 33.3

2 Gauge metric Stores metrics as modifiable values, with an option to either set, increment or decrement values.

<metricname>:<value>|g

Where value can be in a form of:

'-{value}', when negative value is supplied agent will substract value stored with the value passed

'+{value}', when positive value with a leading plus sign is supplied, the agent will add the passed value to the value stored

'{value}', when a value without any leading sign is supplied, the agent will set the metric to the passed value.

Initial value for metric of gauge type is 0.

Example:

After aggregating following messages:

metric:20|g metric:+10|g metric:-3.3|g

Value available to PCP will be:

# pminfo --fetch statsd.metric

inst [0 or '/'] value 26.7

3 Duration metric Aggregates values either via HDR histogram or simply stores all values and then calculates instances from all values received.

<metricname>:<value>|ms

Where value is a positive number.

Example:

With larger message count, the values may vary based on selected duration aggregation scheme.

After aggregating following messages:

metric:10|ms metric:20|ms

Values available to PCP will be:

# pminfo --fetch statsd.metric

inst[0 or '/min'] value 10 inst[1 or '/max'] value 20 inst[2 or '/median'] value 10 inst[3 or '/average'] value 15 inst[4 or '/percentile90'] value 20 inst[5 or '/percentile95'] value 20 inst[6 or '/percentile99'] value 20 inst[7 or '/count'] value 2 inst[8 or '/std_deviation'] value 5

Note:

Once you send given metricname with specified type, the agent will no longer aggregate any messages with same. metricname but different type and will throw them away.

4 Labels StatsD datagrams may also contain key:value pairs separated by commas like so:

metric,tagX=X,tagW=W:5|c

OR

metric:5|ms|#tagX:X,tagW:W

Where tagX is a key, X is a value and tagW is a key, W is a value.

Both key and value of such a pair are [a-ZA-Z0-9_.]{1,}.

Both formats are interchangeable and you may combine them together. When key is not unique, right most value takes precendence. This is valid:

metric,tagX=1:5|c|#tagX:2

Pair with key tagX will have value of 2.

You may use these labels to map specific values to some PCP instances. PCP labels are also assigned to these PCP instances. Pairs are ordered by key in resulting instance name and label descriptor.

Single label:

metric,tagX=X:5|c

Such a payload would map to PCP as follows (non-related labels were ommited):

# pminfo --fetch --labels statsd.metric

inst [0 or '/tagX=X'] value 5 inst [0 or '/tagX=X'] labels {'tagX':'X'}

As shown earlier you may also send payload with multiple labels. When multiple labels are supplied they are split in instance name by '::'. Example:

metric,tagX=X,tagW=W:5|c

This resolves to:

# pminfo --fetch --labels statsd.metric

inst [0 or '/tagX=X::tagW=W'] value 5 inst [0 or '/tagX=X::tagW=W'] labels {'tagX':'X','tagW':'W'}

Note:

Be mindful of the fact that duration metric type already maps to instances even without any labels. Sending labeled value to such a metric creates another 9 (as there are that many hardcoded) instances.

Example:

metric:200|ms metric:100|ms metric,target=cpu2:10|ms metric,target=cpu2:100|ms metric,target=cpu2:1000|ms

Creates 18 instances. Duration data type and label name compose instance name in following manner:

# pminfo --fetch --labels statsd.metric

... inst [10 or '/max::target=cpu0'] value 1000 inst [10 or '/max::target=cpu0'] labels {'target':'cpu0'} ...

5 Hardcoded stats Agent also exports metrics about itself:

statsd.pmda.received Number of datagrams that the agent has received

statsd.pmda.parsed Number of datagrams that were successfully parsed

statsd.pmda.dropped Number of datagrams that were dropped

statsd.pmda.aggregated Number of datagrams that were aggregated

statsd.pmda.metrics_tracked This metric has 3 instances. counter - Number of tracked counter metrics. gauge - Number of tracked gauge metrics. duration - Number of tracked duration metrics. total - Number of tracked metrics total.

statsd.pmda.time_spent_parsing Total time in microseconds spent parsing metrics. Includes time spent parsing a datagram and failing midway.

statsd.pmda.time_spent_aggregating Total time in microseconds spent aggregating metrics. Includes time spent aggregating a metric and failing midway.

statsd.pmda.settings.max_udp_packet_size Maximum UDP packet size

statsd.pmda.settings.max_unprocessed_packets Maximum size of unprocessed packets Q

statsd.pmda.settings.verbose Verbosity flag

statsd.pmda.settings.debug_output_filename Debug output filename

statsd.pmda.settings.port Port that is listened to

statsd.pmda.settings.parser_type Used parser type

statsd.pmda.settings.duration_aggregation_type Used duration aggregation type

These names are blocklisted for user usage. No messages with these names will processed. While not yet reserved, the whole statsd.pmda.* namespace is not recommended to use for user metrics.


Файлы (Files)

$PCP_PMCDCONF_PATH
              command line options used to launch pmdastatsd
       $PCP_PMDAS_DIR/statsd/Install
              installation script for the pmdastatsd agent
       $PCP_PMDAS_DIR/statsd/Remove
              undo installation script for the pmdastatsd agent
       $PCP_LOG_DIR/pmcd/statsd.log
              default log file for error messages and other information
              from pmdastatsd

Окружение PCP (PCP environment)

Environment variables with the prefix PCP_ are used to
       parameterize the file and directory names used by PCP.  On each
       installation, the file /etc/pcp.conf contains the local values
       for these variables.  The $PCP_CONF variable may be used to
       specify an alternative configuration file, as described in
       pcp.conf(5).

Смотри также (See also)

PCPIntro(1), pmcd(1), pcp.conf(5) and pcp.env(5).