# How do I get statsd to increment a number

**URL:** <https://discuss.elastic.co/t/how-do-i-get-statsd-to-increment-a-number/63826>\
**Category:** Logstash\
**Created:** [October 25, 2016, 6:27am UTC](https://discuss.elastic.co/t/how-do-i-get-statsd-to-increment-a-number/63826 "2016-10-25T06:27:15Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Sam\_Saffron](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/sam_saffron/32/44937_2.png) [@Sam\_Saffron](https://discuss.elastic.co/u/Sam_Saffron)\
**Post date:** [October 25, 2016, 6:27am UTC](https://discuss.elastic.co/t/how-do-i-get-statsd-to-increment-a-number/63826/1 "2016-10-25T06:27:15Z")

</div>

I have an output rule for statsd

```auto
    statsd {
        host => "graphite-statsd"
        port => 8125
        namespace => ""
        sender => "%{backend_name}"
        increment => [
          "%{http_status_code}"
        ]
      }

```

this used to work great, but recently we upgraded logstash and it complains you can not increment a integer.

I can make this work by changing `"%{http_status_code}"` to `"{http_status_code}X"` however by adding the X I am corrupting my existing counters.

What can I do to make `%{https_status_code}` be treated as a string and not a number?

---

<div class="post-metadata">

**Author:** ![magnusbaeck](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/magnusbaeck/32/44943_2.png) [@magnusbaeck](https://discuss.elastic.co/u/magnusbaeck)\
**Post date:** [October 25, 2016, 6:55am UTC](https://discuss.elastic.co/t/how-do-i-get-statsd-to-increment-a-number/63826/2 "2016-10-25T06:55:11Z")

</div>

What's the exact error message?

---

<div class="post-metadata">

**Author:** ![Sam\_Saffron](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/sam_saffron/32/44937_2.png) [@Sam\_Saffron](https://discuss.elastic.co/u/Sam_Saffron)\
**Post date:** [October 25, 2016, 7:32am UTC](https://discuss.elastic.co/t/how-do-i-get-statsd-to-increment-a-number/63826/3 "2016-10-25T07:32:23Z")

</div>

```auto
NoMethodError: undefined method `gsub' for 200:Fixnum
            build_stat at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-output-statsd-2.0.7/lib/logstash/outputs/statsd.rb:138
               receive at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-output-statsd-2.0.7/lib/logstash/outputs/statsd.rb:113
                  each at org/jruby/RubyArray.java:1613
               receive at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-output-statsd-2.0.7/lib/logstash/outputs/statsd.rb:112
         multi_receive at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.4-java/lib/logstash/outputs/base.rb:83
                  each at org/jruby/RubyArray.java:1613
         multi_receive at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.4-java/lib/logstash/outputs/base.rb:83
  worker_multi_receive at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.4-java/lib/logstash/output_delegator.rb:130
         multi_receive at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.4-java/lib/logstash/output_delegator.rb:114
          output_batch at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.4-java/lib/logstash/pipeline.rb:301
                  each at org/jruby/RubyHash.java:1342
          output_batch at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.4-java/lib/logstash/pipeline.rb:301
           worker_loop at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.4-java/lib/logstash/pipeline.rb:232
         start_workers at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.4-java/lib/logstash/pipeline.rb:201

```

---

<div class="post-metadata">

**Author:** ![Sam\_Saffron](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/sam_saffron/32/44937_2.png) [@Sam\_Saffron](https://discuss.elastic.co/u/Sam_Saffron)\
**Post date:** [October 25, 2016, 7:39am UTC](https://discuss.elastic.co/t/how-do-i-get-statsd-to-increment-a-number/63826/4 "2016-10-25T07:39:29Z")

</div>

probably changing:

> <https://github.com/logstash-plugins/logstash-output-statsd/blob/master/lib/logstash/outputs/statsd.rb#L135>

to

```auto
metric = metric.to_s.gsub('::','.').gsub(RESERVED_CHARACTERS_REGEX, '_')

```

will do the trick, but then I have to patch the plugin.

---

<div class="post-metadata">

**Author:** ![Sam\_Saffron](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/sam_saffron/32/44937_2.png) [@Sam\_Saffron](https://discuss.elastic.co/u/Sam_Saffron)\
**Post date:** [October 25, 2016, 7:44am UTC](https://discuss.elastic.co/t/how-do-i-get-statsd-to-increment-a-number/63826/5 "2016-10-25T07:44:50Z")

</div>

FWIW I think this PR would fix it:

> <https://github.com/logstash-plugins/logstash-output-statsd/pull/26>

---

<div class="post-metadata">

**Author:** ![jsvd](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/jsvd/32/6203_2.png) [@jsvd](https://discuss.elastic.co/u/jsvd)\
**Post date:** [October 25, 2016, 9:04am UTC](https://discuss.elastic.co/t/how-do-i-get-statsd-to-increment-a-number/63826/6 "2016-10-25T09:04:54Z")

</div>

another option is to add a field that is a string version of http\_status\_code, like:

```auto
 mutate { add_field => { "http_status_code_string" => "%{http_status_code}" } }
 mutate { convert => { "number" => "http_status_code" } }

```

---

<div class="post-metadata">

**Author:** ![Sam\_Saffron](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/sam_saffron/32/44937_2.png) [@Sam\_Saffron](https://discuss.elastic.co/u/Sam_Saffron)\
**Post date:** [October 25, 2016, 9:17am UTC](https://discuss.elastic.co/t/how-do-i-get-statsd-to-increment-a-number/63826/7 "2016-10-25T09:17:27Z")

</div>

I see, if I do that how to I avoid shipping it to elastic?

---

<div class="post-metadata">

**Author:** ![jsvd](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/jsvd/32/6203_2.png) [@jsvd](https://discuss.elastic.co/u/jsvd)\
**Post date:** [October 25, 2016, 9:22am UTC](https://discuss.elastic.co/t/how-do-i-get-statsd-to-increment-a-number/63826/8 "2016-10-25T09:22:37Z")

</div>

ah you have other outputs, then nevermind, you'd have to disable dynamic mapping on ES to ignore new fields

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [July 6, 2017, 4:32am UTC](https://discuss.elastic.co/t/how-do-i-get-statsd-to-increment-a-number/63826/9 "2017-07-06T04:32:53Z")

</div>


