Skip to content

Commit 09ef8fd

Browse files
authored
[Platform Observability] Create initial PO package for ingesting kibana ECS formatted logs (#3622)
* create package for ingesting kibana ECS formatted logs * changelog fix * update test expected result * adds a filebeat processor alternative * clean up poc code * fix json identation * Align ingest pipeline approach and improve README.md * Improve README.md; Fix package folder name; Document ECS fields * Fix supported kibana version on readme * Remove experimental attribute from manifest; Fix changelog PR; Fix min version * Support current and old model for license * Fix manifest * Add event.ingested field; Improve Kibana audit fields documentation * Fix pipeline test * Extract ECS processor into a new file; Fix kibana logo; Add event.* fields * Simplify ingest pipeline and clean-ups * Fix json format * Align default log file name with kibana docs
1 parent 0a2a221 commit 09ef8fd

File tree

28 files changed

+799
-0
lines changed

28 files changed

+799
-0
lines changed

.github/CODEOWNERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,3 +178,4 @@
178178
/packages/zscaler @elastic/security-external-integrations
179179
/packages/zscaler_zia @elastic/security-external-integrations
180180
/packages/zscaler_zpa @elastic/security-external-integrations
181+
/packages/platform_observability @elastic/infra-monitoring-ui
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
dependencies:
2+
ecs:
3+
reference: [email protected]
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Platform Observability
2+
3+
## Compatibility
4+
5+
This package works with Kibana 8.3.0 and later.
6+
7+
## Kibana logs
8+
9+
The Kibana integration collects logs from [Kibana](https://www.elastic.co/guide/en/kibana/current/introduction.html) instance.
10+
11+
### Logs
12+
13+
#### Audit
14+
15+
Audit logs collects the [Kibana audit logs](https://www.elastic.co/guide/en/kibana/current/security-settings-kb.html).
16+
17+
{{event "kibana_audit"}}
18+
19+
{{fields "kibana_audit"}}
20+
21+
#### Log
22+
23+
Log collects the [Kibana logs](https://www.elastic.co/guide/en/kibana/current/logging-configuration.html).
24+
25+
{{event "kibana_log"}}
26+
27+
{{fields "kibana_log"}}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# newer versions go on top
2+
- version: "0.0.1"
3+
changes:
4+
- description: Initial draft of the package
5+
type: enhancement
6+
link: https://github.com/elastic/integrations/pull/3622
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
dynamic_fields:
2+
event.ingested: ".*"
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"event":{"action":"http_request","category":["web"],"outcome":"unknown"},"http":{"request":{"method":"get"}},"url":{"domain":"localhost","path":"/internal/security/session","port":5601,"scheme":"http"},"user":{"name":"elastic","roles":["superuser"]},"kibana":{"space_id":"default","session_id":"ccZ0sbxrmmJwo+/y2Mn1tmGIrKOuZYaF8voUh0SkA/k="},"trace":{"id":"1c8c5808-d2d6-41fc-8cb7-998aa8996be9"},"ecs":{"version":"8.0.0"},"@timestamp":"2022-06-29T12:05:03.742+00:00","message":"User is requesting [/internal/security/session] endpoint","log":{"level":"INFO","logger":"plugins.security.audit.ecs"},"process":{"pid":7},"transaction":{"id":"f8863d86567119e6"}}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
{
2+
"expected": [
3+
{
4+
"@timestamp": "2022-06-29T12:05:03.742+00:00",
5+
"data_stream": {
6+
"dataset": "kibana-audit-log",
7+
"namespace": "platform-observability",
8+
"type": "logs"
9+
},
10+
"ecs": {
11+
"version": "8.0.0"
12+
},
13+
"event": {
14+
"action": "http_request",
15+
"category": [
16+
"web"
17+
],
18+
"dataset": "kibana-audit-log",
19+
"ingested": "2022-07-20T08:36:57.202942842Z",
20+
"kind": "event",
21+
"outcome": "unknown"
22+
},
23+
"http": {
24+
"request": {
25+
"method": "get"
26+
}
27+
},
28+
"kibana": {
29+
"session_id": "ccZ0sbxrmmJwo+/y2Mn1tmGIrKOuZYaF8voUh0SkA/k=",
30+
"space_id": "default"
31+
},
32+
"log": {
33+
"level": "INFO",
34+
"logger": "plugins.security.audit.ecs"
35+
},
36+
"message": "User is requesting [/internal/security/session] endpoint",
37+
"process": {
38+
"pid": 7
39+
},
40+
"trace": {
41+
"id": "1c8c5808-d2d6-41fc-8cb7-998aa8996be9"
42+
},
43+
"transaction": {
44+
"id": "f8863d86567119e6"
45+
},
46+
"url": {
47+
"domain": "localhost",
48+
"path": "/internal/security/session",
49+
"port": 5601,
50+
"scheme": "http"
51+
},
52+
"user": {
53+
"name": "elastic",
54+
"roles": [
55+
"superuser"
56+
]
57+
}
58+
}
59+
]
60+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
paths:
2+
{{#each paths}}
3+
- {{this}}
4+
{{/each}}
5+
{{#if processors}}
6+
processors:
7+
{{processors}}
8+
{{/if}}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
---
2+
description: Pipeline for parsing Kibana Audit ECS formatted logs
3+
processors:
4+
- pipeline:
5+
name: '{{ IngestPipeline "ecs-logs-pipeline" }}'
6+
if: |-
7+
def message = ctx.message;
8+
return message != null
9+
&& message.startsWith('{')
10+
&& message.endsWith('}')
11+
&& message.contains('"@timestamp"')
12+
- set:
13+
field: data_stream.type
14+
value: logs
15+
- set:
16+
field: data_stream.dataset
17+
value: kibana-audit-log
18+
- set:
19+
field: data_stream.namespace
20+
value: platform-observability
21+
- set:
22+
field: event.dataset
23+
copy_from: data_stream.dataset
24+
- set:
25+
field: event.ingested
26+
value: "{{_ingest.timestamp}}"
27+
- set:
28+
field: event.kind
29+
value: event
30+
on_failure:
31+
- set:
32+
field: error.message
33+
value: "{{ _ingest.on_failure_message }}"
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
---
2+
processors:
3+
- rename:
4+
field: message
5+
target_field: _ecs_json_message
6+
ignore_missing: true
7+
- json:
8+
field: _ecs_json_message
9+
add_to_root: true
10+
add_to_root_conflict_strategy: merge
11+
allow_duplicate_keys: true
12+
if: ctx.containsKey('_ecs_json_message')
13+
on_failure:
14+
- rename:
15+
field: _ecs_json_message
16+
target_field: message
17+
ignore_missing: true
18+
- set:
19+
field: error.message
20+
value: Error while parsing JSON
21+
override: false
22+
- remove:
23+
field: _ecs_json_message
24+
ignore_missing: true
25+
- dot_expander:
26+
field: "*"
27+
override: true
28+
- join:
29+
field: error.stack_trace
30+
separator: "\n"
31+
if: ctx.error?.stack_trace instanceof Collection

0 commit comments

Comments
 (0)