ich einen Rubin Filter haben hoffentlich eine E-Mail-Adresse übereinstimmen es in einer Log-Nachricht, entfernen und sie durch eine Anonymisierung Filter passieren, so etwas wie dieses ...Logstash Ruby-Filter E-Mail-Adressen entsprechen
ruby {
code =>
"
begin
if !event['log_message'].nil?
if match = event['log_message'].match(/(\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b)/i)
event['user_email'] = match[1]
end
else
puts 'Oddity parsing message: log_message is nil'
puts event.to_yaml
end
rescue Exception => e
puts 'Exception parsing user email:'
puts e.message
end
"
}
if [user_email] {
anonymize {
algorithm => "SHA1"
fields => ["user_email"]
key => "mySuperSecretPassword"
}
ruby {
code =>
"
begin
event['message'].gsub!(/\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b/i, event['user_email'])
event['log_message'].gsub!(/\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b/i, event['user_email'])
rescue Exception => e
puts 'Exception replacing user-email in log:'
puts e.message
end
"
remove_field => ["user_email"]
}
}
Ab sofort fängt diese Regex nichts ein. Ich habe versucht, es zu ersetzen, und ich bekam einen Fehler (der der "Kuriositätenanalyse-Nachricht" Zweig meines Codes war).
Weiß jemand ungefähr, wie man das macht? Ich brauche keinen verrückten, übertriebenen Regex, nur einen, um 99% der E-Mail-Adressen zu finden. Die Regex Ich habe versucht, war
if match = event['log_message'].match(/(\b[a-zA-Z0-9_.+=:-][email protected][0-9A-Za-z][0-9A-Za-z-]{0,62}(?:\.(?:[0-9A-Za-z][0-9A-Za-z-]{0,62}))*\b)/i)
zu verwenden Hier ist eine Protokollzeile Referenz
76817815 11/Jun/2016 00:04:28 +0000 INFO [eventListener-3] messagingsvc logDefault > doSend - Sending email... From: "Test" <[email protected]>
Hinweis Wenn dies einfacher durchgeführt werden kann/in vernünftiger Weise mit Grok, bin ich völlig offen zum Entfernen des Rubins.
* I eine nicht einen verrückten Over-the-Top-Regex benötigen, nur 99% der E-Mail-Adressen zu fangen * macht diese Frage ein Duplikat von http://stackoverflow.com/questions/14440444/extract-all-email-addresses-from-bulk-text-using-jquery, http://stackoverflow.com/questions/3194407/extract-all- E-Mail-Adressen-aus-einigen-Txt-Dokumente-mit-Ruby, und ich denke, viele mehr. Warum posten Sie einfach eine andere Frage wie "Gib mir eine E-Mail-Regex"? –
Die Besonderheiten, es in einen Grok oder einen Rubinfilter für Logstash zu bringen, sind ein bisschen anders. Außerdem gibt es einen entschiedenen Mangel an Dokumentation darüber, wie man das online richtig macht. –
All die, die ich verlinkt habe, um Oniguruma Regex Geschmack zu passen. –