Thanks much for the tip! It lead me to a simple solution which is good enough for my purposes. I am fine with the slight difference between the time a message was created on the source and when it was received as *some* (not all) messages show.
<source>
@type udp
port 2003
bind 0.0.0.0
tag fluentd.syslog.cisco.udp
# Set 'source' as the field name for the message source
source_hostname_key source
# Using built-in 'none' parser which shoves the whole log into the message field
# and sets the timestamp to the time the message was received, see:
format none
</source>
I'm also outputting to an Elasticsearch DB with:
<match fluentd.syslog.cisco.**>
@type elasticsearch
# The ES index name before the date suffix
logstash_prefix cisco_syslog
# This makes the ES index <logstash_prefix>-YYYY.MM.DD
logstash_format true
#host <hostname> #(optional; default="localhost")
#port <port> #(optional; default=9200)
# ES type attribute
type_name cisco_syslog
</match>
This Elasticsearch JSON record snippet shows the output, including the 'source' attribute defined above.
{
"_index": "cisco_syslog-2018.03.28",
"_type": "cisco_syslog",
"_id": "wGnYbWIBsG5FW3qNXDay",
"_version": 1,
"_score": null,
"_source": {
"message": "<187>27197:
192.168.1.200: 021170: Mar 28 13:21:44.989: %SNMP-3-CPUHOG: Processing GetBulk of bsnMobileStationCcxVersion",
"source": "192.168.1.200",
"@timestamp": "2018-03-28T13:21:46.642079098-05:00"
},
Regards,
RCA