I have a grok match statement with multiple matches:
grok {
match => { "message" => [
"<%{NONNEGINT:syslog_pri}>%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{INT:cisco_eventnum:int}: %{DATA:cisco_uptime}: \%SYS-%{INT:cisco_event_lvl}-%{DATA:cisco_event_st}: %{GREEDYDATA:syslog_message}",
"<%{NONNEGINT:syslog_pri}>%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{INT:cisco_eventnum:int}: %{DATA:cisco_uptime}: \%PHY-%{INT:cisco_event_lvl}-%{DATA:cisco_event_st}: %{GREEDYDATA:syslog_message}",
"<%{NONNEGINT:syslog_pri}>%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{INT:cisco_eventnum:int}: %{DATA:cisco_uptime}: \%%{DATA:cisco_event}-%{INT:cisco_event_lvl}-%{DATA:cisco_event_st}: Interface %{DATA:cisco_iface}, changed state to %{WORD:cisco_iface_state}",
"<%{NONNEGINT:syslog_pri}>%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{INT:cisco_eventnum:int}: %{DATA:cisco_uptime}: \%%{DATA:cisco_event}-%{INT:cisco_event_lvl}-%{DATA:cisco_event_st}: Line protocol on Interface %{DATA:cisco_iface}, changed state to %{WORD:cisco_iface_state}",
"<%{NONNEGINT:syslog_pri}>%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{INT:cisco_eventnum:int}: %{GREEDYDATA:syslog_message}",
"<%{NONNEGINT:syslog_pri}>%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} invld>%{SYSLOGTIMESTAMP} %{SYSLOGHOST} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}",
"<%{NONNEGINT:syslog_pri}>%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} \(\"%{DATA}\"\) %{WORD:syslog_program}: %{GREEDYDATA:syslog_message}",
"<%{NONNEGINT:syslog_pri}>%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}\[\s*%{BASE10NUM:syslog_pid}\]: \(%{DATA:syslog_wincommitid}:%{DATA:syslog_winthreadid}:%{DATA:syslog_winchannelid}\) \[%{DATA:syslog_wineventid}:%{DATA:syslog_wintaskid}\.%{DATA:syslog_winopcode}\.%{DATA:syslog_winloglevel}\] %{DATA:syslog_wincommand}\.#012%n%n%{GREEDYDATA:syslog_winmessage}",
"<%{NONNEGINT:syslog_pri}>%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}:\[\s*%{BASE10NUM:syslog_pid}\] %{GREEDYDATA:syslog_message}",
"<%{NONNEGINT:syslog_pri}>%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}",
"<%{NONNEGINT:syslog_pri}>%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} run-parts\(/etc/cron\..*\)\[%{NUMBER:syslog_pid} %{GREEDYDATA:syslog_message}",
"<%{NONNEGINT:syslog_pri}>%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{GREEDYDATA:syslog_message}"
] }
add_field => [ "received_at", "%{@timestamp}" ]
add_field => [ "received_from", "%{host}" ]
add_tag => [ "SYSLOG" ]
}
I'd like to set a tag based on which match was used.
Is this possible?