# fluent-plugin-calc [![Build Status](https://secure.travis-ci.org/sonots/fluent-plugin-calc.png?branch=master)](http://travis-ci.org/sonots/fluent-plugin-calc) [![Dependency Status](https://gemnasium.com/sonots/fluent-plugin-calc.png)](https://gemnasium.com/sonots/fluent-plugin-calc) Simple fluentd plugin to calculate messages. ## Configuration Example1) sum for xxx_count, max for xxx_max, min for xxx_min, avg for xxx_avg type calc interval 5s add_tag_prefix calc sum .*_count$ max .*_max$ min .*_min$ avg .*_avg$ Assuming following inputs are coming: foo.bar: {"4xx_count":1,"5xx_count":2","reqtime_max":12083,"reqtime_min":10,"reqtime_avg":240.46} foo.bar: {"4xx_count":4,"5xx_count":2","reqtime_max":24831,"reqtime_min":82,"reqtime_avg":300.46} then output bocomes as belows: calc.foo.bar: {"4xx_count":5,"5xx_count":4","reqtime_max":24831,"reqtime_min":10,"reqtime_avg":270.46} Example2) sum, max, min, avg for the same key type calc interval 5s add_tag_prefix calc sum ^reqtime$ max ^reqtime$ min ^reqtime$ avg ^reqtime$ sum_suffix _sum max_suffix _max min_suffix _min avg_suffix _avg Assuming following inputs are coming: foo.bar: {"reqtime":1.000} foo.bar: {"reqtime":2.000} then output bocomes as belows: calc.foo.bar: {"reqtime_sum":3.000,"reqtime_max":2.000,"reqtime_min":1.000,"reqtime_avg":1.500} ## Parameters - sum, min, max, avg Calculation. Specify input keys by a regular expression - sum\_suffix, min\_suffix, max\_suffix, avg\_suffix Add a suffix to keys of the output record - interval The interval to calculate in seconds. Default is 5s. - tag The output tag name. Required for aggregate `all`. - add_tag_prefix Add tag prefix for output message. - aggragate Calculate by each `tag` or `all`. The default value is `tag`. - store_file Store internal data into a file of the given path on shutdown, and load on starting. ## ChangeLog See [CHANGELOG.md](CHANGELOG.md) for details. ## ToDo Get the number of denominator to calculate `avg` from input json field. ## Contributing 1. Fork it 2. Create your feature branch (`git checkout -b my-new-feature`) 3. Commit your changes (`git commit -am 'Add some feature'`) 4. Push to the branch (`git push origin my-new-feature`) 5. Create new [Pull Request](../../pull/new/master) ## Copyright Copyright (c) 2013 Naotoshi SEO. See [LICENSE](LICENSE) for details.