cscli parsers install timokoessler/gitlab-logs
Parser for GitLab Logs. Tested with the Omnibus package v14 and v15.
Example acquisition for a log file:
---
filenames:
- /var/log/gitlab/gitlab-rails/production_json.log
labels:
type: gitlab
or for Docker:
---
source: docker
container_name:
- my_container_name
labels:
type: gitlab
Depending on your gitlab installation method, paths to log files might change.
1onsuccess: next_stage2filter: "Upper(evt.Parsed.program) == 'GITLAB' && UnmarshalJSON(evt.Parsed.message, evt.Unmarshaled, 'gitlab') in ['', nil]"3name: timokoessler/gitlab-logs4description: "Parse GitLab Logs"5nodes:6 - filter: |7 evt.Unmarshaled.gitlab.method == 'POST' &&8 evt.Unmarshaled.gitlab.path in ['/users/sign_in', '/users/auth/ldapmain/callback'] &&9 any(evt.Unmarshaled.gitlab.params, {.key == 'user' && .value.login != ''}) &&10 (evt.Unmarshaled.gitlab.status == 0 || evt.Unmarshaled.gitlab.action == 'failure')11 statics:12 - meta: log_type13 value: "gitlab_failed_password"14 - meta: username15 expression: filter(evt.Unmarshaled.gitlab.params, {.key == 'user' && .value.login != ''})[0]['value']['login']16 - filter: |17 evt.Unmarshaled.gitlab.method == 'POST' &&18 evt.Unmarshaled.gitlab.path in ['/users/sign_in', '/users/auth/ldapmain/callback'] &&19 any(evt.Unmarshaled.gitlab.params, {.key == 'username' && .value != ''}) &&20 (evt.Unmarshaled.gitlab.status == 0 || evt.Unmarshaled.gitlab.action == 'failure')21 statics:22 - meta: log_type23 value: "gitlab_failed_password"24 - meta: username25 expression: filter(evt.Unmarshaled.gitlab.params, {.key == 'username' && .value != ''})[0]['value']26 - filter: |27 evt.Unmarshaled.gitlab.method == 'POST' &&28 evt.Unmarshaled.gitlab.path == '/users/sign_in' &&29 any(evt.Unmarshaled.gitlab.params, {.key == 'user' && .value.otp_attempt != nil}) &&30 evt.Unmarshaled.gitlab.status != 30231 statics:32 - meta: log_type33 value: "gitlab_failed_totp"3435statics:36 - meta: service37 value: gitlab38 - meta: source_ip39 expression: evt.Unmarshaled.gitlab.remote_ip40 - parsed: timestamp41 expression: evt.Unmarshaled.gitlab.time42 - target: evt.StrTime43 expression: "evt.Parsed.timestamp"44