Паттерн Logstash Grok Match не работает, хотя конструктор Grok говорит, что все в порядке
Я создал несколько шаблонов grok для разбора файла журнала / var / log / secure, и все работало нормально. Я создаю шаблоны grok на http://grokconstructor.appspot.com/ и даже затем тестирую их на http://grokdebug.herokuapp.com/ и оба сайта показывают, что шаблоны идеально совпадают. Я использую logstash 2.1.1,asticsearch 2.1.1 и kibana 4.3.1, все работают на CentOS 7.1 с использованием JAVA openjdk 1.8.0.65-2.b17.
Затем я взял эти шаблоны и внедрил их с фильтром на своих серверах logstash. Большинство фильтров работают нормально, но SECURENETREG и SECURENETBADGE по какой-то причине не совпадают. logstash --configtest не показывает проблем, и logstash работает нормально, но когда я смотрю на записи, которые должны соответствовать этим шаблонам в Kibana, кажется, что ни один из синтаксического анализа не работает.
Вот мой файл шаблонов, /etc/logstash/patterns.d/secure-log.grok:
SECURETIMESTAMP %{MONTH}%{SPACE}%{MONTHDAY} %{TIME}
SECUREPROG %{PROG:program}(?:\[%{POSINT:pid}\])?
SECUREHOST %{IPORHOST:host}
SECUREBASE %{SECURETIMESTAMP:secure_timestamp}%{SPACE}%{SECUREHOST}%{SPACE}%{SECUREPROG}:
SECURESU %{SECUREBASE} (runuser: |)%{PROG:pam_program}(?:\[%{POSINT:pid}\])? session %{WORD} for user %{USER:user}( by \(uid=%{NUMBER:su_caller_uid}\)|)
SECURESUDORUN %{SECUREBASE}%{SPACE}(%{USER:user} : TTY=%{DATA} ; PWD=%{DATA} ; USER=%{USER:sudo_runas_user} ; COMMAND=%{GREEDYDATA:sudo_command}|\S+:%{SPACE}(TGT verified|error reading keytab %{GREEDYDATA}|authentication %{WORD} for '%{USER:user}'%{GREEDYDATA}|%{GREEDYDATA}user=%{USER:user}))
SECURESSHDPUBKEY %{SECUREBASE} (Found matching RSA key: %{GREEDYDATA:rsa_key}|%{WORD} publickey for %{USER:user} from %{IPORHOST:src_ip}( port %{NUMBER:port} %{WORD}( \[preauth\]|: RSA %{GREEDYDATA:rsa_key}|)|)|)
SECURESSHDREST %{SECUREBASE} (Did not receive identification string from %{IPORHOST:src_ip}|pam_unix\(sshd:session\): session %{WORD} for user %{USER:user}|Starting session: command for %{USER:user} from %{IPORHOST:src_ip}|Connection from %{IPORHOST:src_ip}|Accepted (password|publickey) for %{USER:user} from %{IPORHOST:src_ip}|Received disconnect from %{IPORHOST:src_ip}|Connection closed by %{IPORHOST:src_ip}|User child is on pid %{NUMBER}|Set %{UNIXPATH} to %{NUMBER})
SECURENETREG %{SECUREBASE} connect from %{IPORHOST:src_ip}%{GREEDYDATA}
SECURENETBADGE %{SECUREBASE} (%{WORD:whois_action}|Authentication %{WORD:auth_result}): (reply from %{URI:whois_uri}: Result: %{GREEDYDATA:whois_result}|User: %{USER:user}, %{GREEDYDATA:auth_result_detail}, From: %{IPORHOST:src_ip}, %{GREEDYDATA}, URL: %{URI:netbadge_source_uri})
Вот мой конфигурационный файл, который применяет фильтр, /etc/logstash/conf.d/46-filter-secure-log.conf:
filter {
if [type] == "secure" {
grok {
patterns_dir => ["/etc/logstash/patterns.d/"]
match => { "message" => [
"%{SECURESU}",
"%{SECURESUDORUN}",
"%{SECURESSHDPUBKEY}",
"%{SECURESSHDREST}",
"%{SECURENETREG}",
"%{SECURENETBADGE}"
]
}
add_field => {
"received_at" => "%{@timestamp}"
"received_from" => "%{host}"
}
}
date {
match => [ "secure_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}
И, наконец, вот некоторые (очищенные от идентификационной информации) сообщения журнала, которые идеально совпадают в тестировщиках шаблонов, но, кажется, не анализируются должным образом в logstash (хотя я знаю, что фильтр срабатывает на них, потому что я временно протестировал, добавив новое поле только для убедитесь, что сообщения проходили через фильтр):
Jan 8 09:22:22 netbadge-serv netbadge[3534]: verify_whois: reply from https://whois.domain.edu/whois: Result: 0:-1000:0:0:Error with submitted data Illegal characters in data stream#012
Jan 8 09:22:19 netreg-serv autoreg.pl[13867]: connect from 10.250.100.22 (10.250.100.22)
Jan 8 09:22:19 netbadge-serv netbadge[3522]: Authentication success: User: mst3k, Password: Test Test, From: 10.250.28.30, Appid: webmail_login, URL: https://www.mail.domain.edu/switchboard/
Jan 8 09:39:51 netbadge-serv netbadge[11358]: Authentication failure: User: mst3k, Invalid User/Password, From: 10.250.28.31, Appid: Shibboleth Identity Provider, URL: https://shib.domain.edu/idp/Authn/RemoteUser
Я уверен, что это что-то простое, что я упускаю из-за того, что смотрю на все это так долго, поэтому я уверен, что кто-то может сказать мне, что здесь происходит.
Спасибо,
боб
1 ответ
Догадаться. В конце SECURESSHDPUBKEY был | до финала), который соответствовал всему остальному, поэтому он никогда не доходил до паттернов ниже. Я знал, что это было просто, просто слишком долго смотрел на этого грота.