Hello,

you can use format="json*" in order to avoid unnecessary escaping:
http://www.rsyslog.com/doc/property_replacer.html[1] 


##CEE TEMPLATE
template(name="cee" type="list") {
    constant(value="<") property(name="pri") constant(value=">")
    property(name="timereported" dateFormat="rfc3339")
    constant(value=" ") property(name="$myhostname")
    constant(value=" ") property(name="programname")    
    constant(value=" ")
    constant(value="@cee: {")
    #SYSLOG
    property(name="$myhostname" format="jsonf" outname="host") 
constant(value=", ")    
    property(name="syslogtag" format="jsonf" outname="tag") constant(value=", 
")    
    property(name="programname" format="jsonf" outname="prog") 
constant(value=", ")    
    property(name="syslogfacility-text" format="jsonf" outname="facility") 
constant(value=", ")    
    property(name="syslogpriority-text" format="jsonf" outname="priority") 
constant(value=", ")       
    property(name="timereported" dateFormat="rfc3339" format="jsonf" 
outname="syslog_timestamp") constant(value=", ")     
    ##ES TIMESTAMP
    constant(value="\"@timestamp\":\"")
    property(name="timegenerated" dateFormat="unixtimestamp")
    property(name="timegenerated" dateFormat="subseconds" position.to="3")
    constant(value="\", ")          
    #REST
    property(name="$!all-json" position.from="2")    
}


/---/
*/Best regards,/*
/Eugene Istomin/
/EDS Systems/
/[email protected]/
/Work: +372-6409-600/


> Hello all,
> 
> I have some exceptions from elastic search regarding messages sent by
> rsyslog.
> 
> Template in rsyslog used for elasticsearch:
> 
> template(name="es_template"
>          type="list"
>          option.json="on")
>          {
>            constant(value="{")
>              constant(value="\"@timestamp\":\"")
> property(name="timereported" dateFormat="rfc3339")
>              constant(value="\",\"timereported\":\"")
> property(name="timereported" dateFormat="rfc3339")
>              constant(value="\",\"timegenerated\":\"")
> property(name="timegenerated" dateFormat="rfc3339")
>              constant(value="\",\"message\":\"")        property(name="msg")
> constant(value="\",\"host\":\"")
> property(name="hostname")
>              constant(value="\",\"severity\":\"")
> property(name="syslogseverity-text")
>              constant(value="\",\"priority\":\"")
> property(name="syslogpriority-text")
>              constant(value="\",\"facility\":\"")
> property(name="syslogfacility-text")
>              constant(value="\",\"tag\":\"")
> property(name="syslogtag")
>              constant(value="\",\"program_name\":\"")
> property(name="programname")
>            constant(value="\"}")
>          }
> 
> 
> Json sent by rsyslog:
> 
> {
>   "@timestamp": "2014-07-23T15:08:37.262843+03:00",
>   "timereported": "2014-07-23T15:08:37.262843+03:00",
>   "timegenerated": "2014-07-23T15:08:37.262843+03:00",
>   "message": "   File
> \"/opt/optymyze/collectd/scripts/python/web_plugin.py\", line 63, in
> read#012    metrics.type_instance = re.sub(\"\ \",\"-\",transactions[j]) +
> \"_response_time\"",
>   "host": "is-iasi-vm.synygy.net",
>   "severity": "err",
>   "priority": "err",
>   "facility": "daemon",
>   "tag": "collectd[29370]:",
>   "program_name": "collectd"
> }
> 
> Elastic search complains about space character being escaped. This happens
> here:
> re.sub(\"\ \",\"-\"
> 
> 
> 
> Exception log:
> 
> [2014-07-23 15:08:37,273][DEBUG][action.bulk              ]
> [v-so-repo-02-es-01] [default-index][1] failed to execute bulk item (index)
> index {[default-index][collectd][knQxDu2MR3eYgSiZc6TmLQ],
> source[{"@timestamp":"2014-07-23T15:08:37.262843+03:00","timereported":"2014
> -07-23T15:08:37.262843+03:00","timegenerated":"2014-07-23T15:08:37.262843+03
> :00","message":" File
> \"/opt/optymyze/collectd/scripts/python/web_plugin.py\", line 63, in
> read#012    metrics.type_instance = re.sub(\"\ \",\"-\",transactions[j]) +
> \"_response_time\"","host":"is-iasi-vm.synygy.net
> ","severity":"err","priority":"err","facility":"daemon","tag":"collectd[2937
> 0]:","program_name":"collectd"}]}
> org.elasticsearch.index.mapper.MapperParsingException: failed to parse
> [message]
>         at
> org.elasticsearch.index.mapper.core.AbstractFieldMapper.parse(AbstractFieldM
> apper.java:417) at
> org.elasticsearch.index.mapper.object.ObjectMapper.serializeValue(ObjectMapp
> er.java:637) at
> org.elasticsearch.index.mapper.object.ObjectMapper.parse(ObjectMapper.java:4
> 90) at
> org.elasticsearch.index.mapper.DocumentMapper.parse(DocumentMapper.java:515)
> at
> org.elasticsearch.index.mapper.DocumentMapper.parse(DocumentMapper.java:462)
> at
> org.elasticsearch.index.shard.service.InternalIndexShard.prepareCreate(Inter
> nalIndexShard.java:373) at
> org.elasticsearch.action.bulk.TransportShardBulkAction.shardIndexOperation(T
> ransportShardBulkAction.java:425) at
> org.elasticsearch.action.bulk.TransportShardBulkAction.shardOperationOnPrima
> ry(TransportShardBulkAction.java:158) at
> org.elasticsearch.action.support.replication.TransportShardReplicationOperat
> ionAction$AsyncShardOperationAction.performOnPrimary(TransportShardReplicati
> onOperationAction.java:534) at
> org.elasticsearch.action.support.replication.TransportShardReplicationOperat
> ionAction$AsyncShardOperationAction$1.run(TransportShardReplicationOperation
> Action.java:433) at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:11
> 45) at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:6
> 15) at java.lang.Thread.run(Thread.java:744)
> Caused by: org.elasticsearch.common.jackson.core.JsonParseException:
> Unrecognized character escape ' ' (code 32)
>  at [Source: [B@5f263984; line: 1, column: 286]
>         at
> org.elasticsearch.common.jackson.core.JsonParser._constructError(JsonParser.
> java:1524) at
> org.elasticsearch.common.jackson.core.base.ParserMinimalBase._reportError(Pa
> rserMinimalBase.java:557) at
> org.elasticsearch.common.jackson.core.base.ParserMinimalBase._handleUnrecogn
> izedCharacterEscape(ParserMinimalBase.java:532) at
> org.elasticsearch.common.jackson.core.json.UTF8StreamJsonParser._decodeEscap
> ed(UTF8StreamJsonParser.java:2817) at
> org.elasticsearch.common.jackson.core.json.UTF8StreamJsonParser._finishStrin
> g2(UTF8StreamJsonParser.java:2193) at
> org.elasticsearch.common.jackson.core.json.UTF8StreamJsonParser._finishStrin
> g(UTF8StreamJsonParser.java:2149) at
> org.elasticsearch.common.jackson.core.json.UTF8StreamJsonParser.getText(UTF8
> StreamJsonParser.java:281) at
> org.elasticsearch.common.xcontent.json.JsonXContentParser.text(JsonXContentP
> arser.java:85) at
> org.elasticsearch.common.xcontent.support.AbstractXContentParser.textOrNull(
> AbstractXContentParser.java:194) at
> org.elasticsearch.index.mapper.core.StringFieldMapper.parseCreateFieldForStr
> ing(StringFieldMapper.java:338) at
> org.elasticsearch.index.mapper.core.StringFieldMapper.parseCreateField(Strin
> gFieldMapper.java:278) at
> org.elasticsearch.index.mapper.core.AbstractFieldMapper.parse(AbstractFieldM
> apper.java:407) ... 12 more
> 
> Should I open a bug for this, or is something wrong on my side?
> 
> Best regards,
> Cristian Falcas
> _______________________________________________
> rsyslog mailing list
> http://lists.adiscon.net/mailman/listinfo/rsyslog
> http://www.rsyslog.com/professional-services/
> What's up with rsyslog? Follow https://twitter.com/rgerhards
> NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad of
> sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you DON'T
> LIKE THAT.


--------
[1] http://www.rsyslog.com/doc/property_replacer.html
_______________________________________________
rsyslog mailing list
http://lists.adiscon.net/mailman/listinfo/rsyslog
http://www.rsyslog.com/professional-services/
What's up with rsyslog? Follow https://twitter.com/rgerhards
NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad of 
sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you DON'T LIKE 
THAT.

Reply via email to