adp-fluent-plugin-graphite 0.0.11 → 0.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/adp-fluent-plugin-graphite.gemspec +1 -1
 - data/lib/fluent/plugin/out_graphite.rb +26 -28
 - metadata +1 -1
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 3d7ea3516d03ae9df0d626c97453daa20ca97c86491e4ebbeb47bdf8bb0a95e3
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: f306f5437dd3fbff7394985cf3ad4618bcecde930d24d74be8529918ad5a2b62
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 5ebe013292fc99265b692e060b5a3041f2b2ef770becb3f53f20eb372ecb7a4f594e51bfa8ee607fcb7c059918f52bca0d334f876a119dbd9d51031aa2eebc63
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: f902ca5c94366c979a009bbbfe39cbc3951c06ee18ff27b7ec2c2d177423c07d593e98cc16184e43cef81770cc37398ee96c574226f06cc9019d8061812747ae
         
     | 
| 
         @@ -3,7 +3,7 @@ $:.push File.expand_path('../lib', __FILE__) 
     | 
|
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            Gem::Specification.new do |gem|
         
     | 
| 
       5 
5 
     | 
    
         
             
              gem.name        = 'adp-fluent-plugin-graphite'
         
     | 
| 
       6 
     | 
    
         
            -
              gem.version     = '0.0. 
     | 
| 
      
 6 
     | 
    
         
            +
              gem.version     = '0.0.15'
         
     | 
| 
       7 
7 
     | 
    
         
             
              gem.authors     = ['Satoshi SUZUKI']
         
     | 
| 
       8 
8 
     | 
    
         
             
              gem.email       = 'studio3104.com@gmail.com'
         
     | 
| 
       9 
9 
     | 
    
         
             
              gem.homepage    = 'https://github.com/studio3104/fluent-plugin-graphite'
         
     | 
| 
         @@ -7,7 +7,7 @@ module Fluent::Plugin 
     | 
|
| 
       7 
7 
     | 
    
         
             
                config_param :host, :string
         
     | 
| 
       8 
8 
     | 
    
         
             
                config_param :port, :integer, default: 2003
         
     | 
| 
       9 
9 
     | 
    
         
             
                config_param :tag_for, :string, default: 'prefix'
         
     | 
| 
       10 
     | 
    
         
            -
                config_param : 
     | 
| 
      
 10 
     | 
    
         
            +
                config_param :monitoring_key, :string
         
     | 
| 
       11 
11 
     | 
    
         
             
                config_param :name_key_pattern, :string, default: nil
         
     | 
| 
       12 
12 
     | 
    
         
             
                config_param :max_retries, :integer, default: 3
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
         @@ -33,44 +33,24 @@ module Fluent::Plugin 
     | 
|
| 
       33 
33 
     | 
    
         
             
                  es.each do |time, record|
         
     | 
| 
       34 
34 
     | 
    
         
             
                    emit_tag = tag.dup
         
     | 
| 
       35 
35 
     | 
    
         
             
                    log.info("Emit graphite plugin: #{record}")
         
     | 
| 
      
 36 
     | 
    
         
            +
                    metrics = format_metrics(emit_tag, record)
         
     | 
| 
       36 
37 
     | 
    
         | 
| 
       37 
38 
     | 
    
         
             
                    # implemented to immediate call post method in this loop, because graphite-api.gem has the buffers.
         
     | 
| 
       38 
     | 
    
         
            -
                    post( 
     | 
| 
      
 39 
     | 
    
         
            +
                    post(metrics, time)
         
     | 
| 
       39 
40 
     | 
    
         
             
                  end
         
     | 
| 
       40 
41 
     | 
    
         | 
| 
       41 
42 
     | 
    
         
             
                end
         
     | 
| 
       42 
43 
     | 
    
         | 
| 
       43 
44 
     | 
    
         
             
                def format_metrics(tag, record)
         
     | 
| 
       44 
     | 
    
         
            -
                  filtered_record = if @name_keys
         
     | 
| 
       45 
     | 
    
         
            -
                                      record.select { |k, v| @name_keys.include?(k.to_s) }
         
     | 
| 
       46 
     | 
    
         
            -
                                    else
         
     | 
| 
       47 
     | 
    
         
            -
                                      # defined @name_key_pattern
         
     | 
| 
       48 
     | 
    
         
            -
                                      record.select { |k, v| @name_key_pattern.match(k.to_s) }
         
     | 
| 
       49 
     | 
    
         
            -
                                    end
         
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
                  return nil if filtered_r
         
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
                  ecord.empty?
         
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
45 
     | 
    
         
             
                  metrics = {}
         
     | 
| 
       56 
     | 
    
         
            -
                   
     | 
| 
       57 
     | 
    
         
            -
                  filtered_record.each do |k, v|
         
     | 
| 
       58 
     | 
    
         
            -
                    key = case @tag_for
         
     | 
| 
       59 
     | 
    
         
            -
                          when 'ignore' then k.to_s
         
     | 
| 
       60 
     | 
    
         
            -
                          when 'prefix' then "#{tag}.#{k}"
         
     | 
| 
       61 
     | 
    
         
            -
                          when 'suffix' then "#{k}.#{tag}"
         
     | 
| 
       62 
     | 
    
         
            -
                          end
         
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
     | 
    
         
            -
                    key = key.gsub(/(\s|\/)+/, '_') # cope with in the case of containing symbols or spaces in the key of the record like in_dstat.
         
     | 
| 
       65 
     | 
    
         
            -
                    metrics[key] = v.to_f
         
     | 
| 
       66 
     | 
    
         
            -
                  end
         
     | 
| 
      
 46 
     | 
    
         
            +
                  metrics[@monitoring_key + "." + tag] = 1
         
     | 
| 
       67 
47 
     | 
    
         
             
                  metrics
         
     | 
| 
       68 
48 
     | 
    
         
             
                end
         
     | 
| 
       69 
49 
     | 
    
         | 
| 
       70 
     | 
    
         
            -
                def post( 
     | 
| 
      
 50 
     | 
    
         
            +
                def post(metric, time)
         
     | 
| 
       71 
51 
     | 
    
         
             
                  trial ||= 1
         
     | 
| 
       72 
     | 
    
         
            -
                  @client.metrics( 
     | 
| 
       73 
     | 
    
         
            -
                  log.warn("Sending metrics: #{ 
     | 
| 
      
 52 
     | 
    
         
            +
                  @client.metrics(metric, time)
         
     | 
| 
      
 53 
     | 
    
         
            +
                  log.warn("Sending metrics: #{metric}")
         
     | 
| 
       74 
54 
     | 
    
         
             
                rescue Errno::ETIMEDOUT
         
     | 
| 
       75 
55 
     | 
    
         
             
                  # after long periods with nothing emitted, the connection will be closed and result in timeout
         
     | 
| 
       76 
56 
     | 
    
         
             
                  if trial <= @max_retries
         
     | 
| 
         @@ -90,7 +70,25 @@ module Fluent::Plugin 
     | 
|
| 
       90 
70 
     | 
    
         
             
                end
         
     | 
| 
       91 
71 
     | 
    
         | 
| 
       92 
72 
     | 
    
         
             
                def connect_client!
         
     | 
| 
       93 
     | 
    
         
            -
                   
     | 
| 
      
 73 
     | 
    
         
            +
                  options = {
         
     | 
| 
      
 74 
     | 
    
         
            +
                    # Required: valid URI {udp,tcp}://host:port/?timeout=seconds
         
     | 
| 
      
 75 
     | 
    
         
            +
                    graphite: "udp://#{@host}:#{@port}",
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
                    # Optional: results are aggregated in 60 seconds slices ( default is 60 )
         
     | 
| 
      
 78 
     | 
    
         
            +
                    slice: 60,
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
      
 80 
     | 
    
         
            +
                    # Optional: send to graphite every 60 seconds ( default is 0 - direct send )
         
     | 
| 
      
 81 
     | 
    
         
            +
                    interval: 30,
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
                    # Optional: set the max age in seconds for records reanimation ( default is 12 hours )
         
     | 
| 
      
 84 
     | 
    
         
            +
                    cache: 4 * 60 * 60,
         
     | 
| 
      
 85 
     | 
    
         
            +
             
     | 
| 
      
 86 
     | 
    
         
            +
                    # Optional: The default aggregation method for multiple reports in the same slice (default is :sum).
         
     | 
| 
      
 87 
     | 
    
         
            +
                    # Possible options: :sum, :avg, :replace
         
     | 
| 
      
 88 
     | 
    
         
            +
                    default_aggregation_method: :avg
         
     | 
| 
      
 89 
     | 
    
         
            +
                  }
         
     | 
| 
      
 90 
     | 
    
         
            +
                  @client = GraphiteAPI.new options
         
     | 
| 
      
 91 
     | 
    
         
            +
                  GraphiteAPI::Logger.init level: :debug
         
     | 
| 
       94 
92 
     | 
    
         
             
                  log.info("starting client")
         
     | 
| 
       95 
93 
     | 
    
         
             
                end
         
     | 
| 
       96 
94 
     | 
    
         
             
              end
         
     |