cscli parsers install ZoeyVid/npmplus-logs
A generic parser for NPMplus, supports both access and error logs.
1filter: "evt.Parsed.program startsWith 'npmplus'"2onsuccess: next_stage3name: ZoeyVid/npmplus-logs4description: "Parse NPMplus access and error logs"5pattern_syntax:6 NPMPLUSFQDN: '%{IPORHOST}||%{DATA}'7nodes:8 - grok:9 pattern: '\[%{HTTPDATE:time_local}\] %{NPMPLUSFQDN:target_fqdn} %{IPORHOST:remote_addr} %{NUMBER:request_time} "%{WORD:verb} %{DATA:request} HTTP/%{NUMBER:http_version}" %{NUMBER:status} %{NUMBER:body_bytes_sent} %{NUMBER:bytes_sent} %{NOTDQUOTE:http_referer} %{NOTDQUOTE:http_user_agent}'10 apply_on: message11 statics:12 - meta: log_type13 value: http_access-log14 - target: evt.StrTime15 expression: evt.Parsed.time_local16 - grok:17 # and this one the error log18 pattern: '(%{IPORHOST:target_fqdn} )?%{NGINXERRTIME:time} \[%{LOGLEVEL:loglevel}\] %{NONNEGINT:pid}#%{NONNEGINT:tid}: (\*%{NONNEGINT:cid} )?%{GREEDYDATA:message}, client: %{IPORHOST:remote_addr}, server: %{DATA:target_fqdn}, request: "%{WORD:verb} ([^/]+)?%{URIPATHPARAM:request}( HTTP/%{NUMBER:http_version})?", host: "%{IPORHOST}(:%{NONNEGINT})?"'19 apply_on: message20 statics:21 - meta: log_type22 value: http_error-log23 - target: evt.StrTime24 expression: evt.Parsed.time25 pattern_syntax:26 NO_DOUBLE_QUOTE: '[^"]+'27 onsuccess: next_stage28 nodes:29 - filter: "evt.Parsed.message contains 'was not found in'"30 pattern_syntax:31 USER_NOT_FOUND: 'user "%{NO_DOUBLE_QUOTE:username}" was not found in "%{NO_DOUBLE_QUOTE}"'32 grok:33 pattern: '%{USER_NOT_FOUND}'34 apply_on: message35 statics:36 - meta: sub_type37 value: "auth_fail"38 - meta: username39 expression: evt.Parsed.username40 - filter: "evt.Parsed.message contains 'password mismatch'"41 pattern_syntax:42 PASSWORD_MISMATCH: 'user "%{NO_DOUBLE_QUOTE:username}": password mismatch'43 grok:44 pattern: '%{PASSWORD_MISMATCH}'45 apply_on: message46 statics:47 - meta: sub_type48 value: "auth_fail"49 - meta: username50 expression: evt.Parsed.username51 - filter: "evt.Parsed.message contains 'limiting requests, excess'"52 statics:53 - meta: sub_type54 value: "req_limit_exceeded"55 ## Parse malformed requests56 - grok:57 pattern: '\[%{HTTPDATE:time_local}\] %{NPMPLUSFQDN:target_fqdn} %{IPORHOST:remote_addr} %{NUMBER:request_time} "%{DATA:request}" %{NUMBER:status} %{NUMBER:body_bytes_sent} %{NUMBER:bytes_sent} %{NOTDQUOTE:http_referer} %{NOTDQUOTE:http_user_agent}'58 apply_on: message59 statics:60 - meta: log_type61 value: http_access-log62 - target: evt.StrTime63 expression: evt.Parsed.time_local64 # these ones apply for both grok patterns65statics:66 - meta: service67 value: http68 - meta: source_ip69 expression: "evt.Parsed.remote_addr"70 - meta: http_status71 expression: "evt.Parsed.status"72 - meta: http_path73 expression: "evt.Parsed.request"74 - meta: http_verb75 expression: "evt.Parsed.verb"76 - meta: http_user_agent77 expression: "evt.Parsed.http_user_agent"78 - meta: target_fqdn79 expression: "evt.Parsed.target_fqdn"80