README.md in fluent-plugin-viaq_data_model-0.0.1 vs README.md in fluent-plugin-viaq_data_model-0.0.2
- old
+ new
@@ -1,2 +1,118 @@
-# fluent-plugin-viaq_data_model
-helps format records into viaq data model
+# fluent-plugin-viaq_data_model - a ViaQ data model filter plugin for [Fluentd](http://fluentd.org)
+[![Travis CI](https://secure.travis-ci.org/ViaQ/fluent-plugin-viaq_data_model.png)](http://travis-ci.org/#!/ViaQ/fluent-plugin-viaq_data_model)
+
+## Introduction
+
+This plugin formats Fluentd records in the proper [ViaQ data
+model](https://github.com/ViaQ/elasticsearch-templates). It does the
+following:
+
+* Removes empty fields
+ * fields with a value of `nil`
+ * string fields with a value of `''` or the empty string
+ * hash valued fields with a value of `{}`
+ * hash valued fields which contain only empty fields as described above
+ * FixNum, Boolean and other field values are not removed - type must respond
+ to `:empty?` to be considered empty
+
+* Moves "undefined" values to a top level field called `undefined`
+
+The ViaQ data model wants all top level fields defined and described. These
+can conflict with the fields defined by ViaQ. You can "move" these fields to
+be under a hash valued top level field called `undefined` so as not to conflict
+with the "well known" ViaQ top level fields. You can optionally keep some
+fields as top level fields while moving others to the `undefined` container.
+
+* Rename a time field to `@timestamp`
+
+You cannot set the `@timestamp` field in a Fluentd `record_transformer` filter.
+The plugin allows you to use some other field e.g. `time` and have that "moved"
+to a top level field called `@timestamp`.
+
+## Configuration
+
+NOTE: All fields are Optional - no required fields.
+
+See `filter-viaq_data_model.conf` for an example filter configuration.
+
+* `default_keep_fields` - comma delimited string - default: `''`
+ * This is the default list of fields to keep as top level fields in the record
+ * `default_keep_fields message,@timestamp,ident` - do not move these fields into the `undefined` field
+* `extra_keep_fields` - comma delimited string - default: `''`
+ * This is an extra list of fields to keep in addition to
+ `default_keep_fields` - mostly useful as a way to hard code the
+ `default_keep_fields` list for configuration management purposes, but at the
+ same time allow customization in certain cases
+ * `extra_keep_fields myspecialfield1,myspecialfield2`
+* `keep_empty_fields` - comma delimited string - default `''`
+ * Always keep these top level fields, even if they are empty
+ * `keep_empty_fields message` - keep the `message` field, even if empty
+* `use_undefined` - boolean - default `false`
+ * If `true`, move fields not specified in `default_keep_fields` and
+ `extra_keep_fields` to the `undefined` top level field. If you use
+ `use_undefined` you should specify the fields you want to keep out of
+ `undefined` by using `default_keep_fields` and/or `extra_keep_fields`
+* `undefined_name` - string - default `"undefined"`
+ * Name of undefined top level field to use if `use_undefined true` is set
+ * `undefined_name myfields` - keep undefined fields under field `myfields`
+* `rename_time` - boolean - default `true`
+ * Rename the time field e.g. when you need to set `@timestamp` in the record
+ * NOTE: This will overwrite the `dest_time_name` if already set
+* `rename_time_if_missing` - boolean - default `false`
+ * Rename the time field only if it is not present. For example, if some
+ records already have the `@timestamp` field and you do not want to overwrite
+ them, use `rename_time_if_missing true`
+* `src_time_name` - string - default `time`
+ * Use this field to get the value of the time field in the resulting record.
+ This field will be removed from the record.
+ * NOTE: This field must be present in the `default_keep_fields` or
+ `extra_keep_fields` if `use_undefined true`
+* `dest_time_name` - string - default `@timestamp`
+ * This is the name of the top level field to hold the time value. The value
+ is taken from the value of the `src_time_name` field.
+
+## Example
+
+If the input record looks like this:
+
+ {
+ "a": "b",
+ "c": "d",
+ "e": '',
+ "f": {
+ "g": '',
+ "h": {}
+ },
+ "i": {
+ "j": 0,
+ "k": False,
+ "l": ''
+ },
+ "time": "2017-02-13 15:30:10.259106596-07:00"
+ }
+
+The resulting record, using the defaults, would look like this:
+
+ {
+ "a": "b",
+ "c": "d",
+ "i": {
+ "j": 0,
+ "k": False,
+ },
+ "@timestamp": "2017-02-13 15:30:10.259106596-07:00"
+ }
+
+
+## Installation
+
+ gem install fluent-plugin-viaq_data_model
+
+## 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. Test it (`GEM_HOME=vendor bundle install; GEM_HOME=vendor bundle exec rake test`)
+5. Push to the branch (`git push origin my-new-feature`)
+6. Create new Pull Request