Graphite::Simple
    Perl package provides methods to collect metrics and send them to
    Graphite server.

SYNOPSIS
      use Graphite::Simple ();

      my $graphite = Graphite::Simple->new(\%options);

      $graphite->connect();

      $graphite->disconnect();

      my $bulk = $graphite->get_bulk_metrics();

      my $status = $graphite->send_bulk();

      my $status = $graphite->send_bulk_delegate();

      my $metrics = $graphite->get_metrics();

      my $avg_counters = $graphite->get_average_counters();

      $graphite->clear_bulk();

      $graphite->incr_bulk($key, $value);
      $graphite->incr_bulk($key);

      $graphite->append_bulk($hash, $prefix);
      $graphite->append_bulk($hash);

      my $is_valid = $graphite->is_valid_key();

      my $counter = $graphite->get_invalid_key_counter();

      $graphite->check_and_bump_invalid_metric($key);

      my $is_blocked = $graphite->is_metric_blocked($key);

      $graphite->set_blocked_metrics_re($re);

      $graphite->DESTROY();

      # the following is actual only if C<use_global_storage> was set
      my %metrics      = %Graphite::Simple::bulk;
      my %avg_counters = %Graphite::Simple::avg_counters;

DESCRIPTION
      This package provides methods to collect metrics and send them to Graphite server over UDP socket.

  $class->new(\%options)
    It's a class constructor. Takes a hash reference as argument.

    enabled
        By default this option equals to 0. The connection to Graphite host
        will be established if this value is true.

    host
        Sets the hostname or IPv4 address of Graphite server. This option is
        mandatory if "enabled" is true.

    port
        Sets the port number of Graphite server. This option is mandatory if
        "enabled" is true.

    project
        Sets a project's name (global prefix for all metrics). This prefix
        will be applied to each metric before sending to server.

    sender_name
        Sets the method's name in format "package::method".

        This method will be called from "send_bulk_delegate" sub. The hash
        reference with result metrics will be passed as arguments.

        Be aware that the invocation of this method can lead to some
        performance penalties.

        Optional.

    block_metrics_re
        The compiled regular expression. If any metric matches, then it will
        be ignored and won't be stored in the resulted hash.

        Optional.

    use_global_storage
        This flag is optional. If flag is set then the package global hashes
        will be used to store collected data.

          my %metrics      = %Graphite::Simple::bulk;
          my %avg_counters = %Graphite::Simple::avg_counters;

        Otherweise internal hashes will be used.

  $self->connect()
    Establishes the connection to Graphite server if "enabled" was set as
    true.

  $self->disconnect()
    Closes the connection.

  $self->send_bulk_delegate()
    Calculates the result metrics and passes them to specified method in
    "sender_name".

    Previously stored keys will be used as average counters while getting
    the result. Example:

      $graphite->incr_bulk("avg,key", 4);
      $graphite->incr_bulk("avg,key", 8);

    Here "avg.key" counter will be equal to 2. And the result value for
    "avg.key" is 6: (4 + 8) / 2

    Be aware that the invocation of this method can lead to some performance
    penalties.

  $self->send_bulk()
    Calculates the result metrics and send them to Graphite server via
    direct connection.

    Previously stored keys will be used as average counters while getting
    the result. Example:

      $graphite->incr_bulk("avg,key", 4);
      $graphite->incr_bulk("avg,key", 8);

    Here "avg.key" counter will be equal to 2. And result value for
    "avg.key" is 6: (4 + 8) / 2

  $self->get_average_counters()
    Returns the hash reference with counters of average metrics. Average
    metric is a metric started with "avg." string.

  $self->get_metrics()
    Returns the hash reference with result metrics. Each metric started with
    "avg." string is divided by its counter from "average_counter".

  $self->clear_bulk()
    Clears all collected metrics;

  $self->incr_bulk($key, $value = 1)
    Increments metric $key by value $value. If $value is unspecified then 1
    will be used.

  $self->append_bulk($hash, $prefix = undef)
    Increments metrics specified in $hash.

    The $hash format:

    $hash = {key1 => $value1, key2 => $value2, ...};

    The second argument is optional and it specifies the common prefix. If
    prefix doesn't contain a dot at the end, then it will be added
    automatically.

  $self->is_valid_key($key)
    Returns 1 if $key is valid for usage as Graphite metric path. Otherwise
    returns 0.

  $self->get_invalid_key_counter()
    Returns the amount of invalid metrics detected by "is_valid_key" method.

  $self->check_and_bump_invalid_metric($key)
    If "get_invalid_key_counter" returns a non-zero value, then this value
    will be written into passed $key. IF passed $key is invalid, then
    invalid key counter will be bumped by 1.

  $self->is_metric_blocked($key)
    Returns 1 if $key matches with reqular expression set with
    "set_blocked_metrics_re" or "block_metrics_re".

    Otherwise returns 0.

  $self->set_blocked_metrics_re($re = undef)
    Sets regular expression to detect blocked metrics. Such metrics won't be
    added to result.

    If $re is omitted or undefined then no any detection for blocked metrics
    will be used.

  DESTROY
    Destructor. Destroys object.

AUTHOR
    Chernenko Dmitiry cdn@cpan.org

