From 2caf75d04397e508118069e4e01c36f78630825e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9mi=20V=C3=A1nyi?= Date: Tue, 8 Aug 2017 08:51:15 +0200 Subject: [PATCH] Add PostgresSQL module for Filebeat (#4763) * filebeat: add PostgreSQL module This module includes a sample dashboard and two sample searches for Kibana. * filebeat: add PostgreSQL slowlog * system-tests: make it possible to test more than 10 logs Previously, only 10 logs could be in *.log and *-expected.json files, as it is the default page size of ES. However, to be more future proof the test was extended, so it can validate more than 10 logs and events. --- CHANGELOG.asciidoc | 2 + filebeat/docs/fields.asciidoc | 87 ++ .../images/filebeat-postgresql-overview.png | Bin 0 -> 44427 bytes .../filebeat-postgresql-slowlog-overview.png | Bin 0 -> 57254 bytes filebeat/docs/images/filebeat-postgresql.png | Bin 0 -> 71286 bytes filebeat/docs/modules/postgresql.asciidoc | 43 + filebeat/docs/modules_list.asciidoc | 2 + filebeat/filebeat.reference.yml | 14 + .../postgresql/_meta/config.reference.yml | 12 + filebeat/module/postgresql/_meta/config.yml | 8 + .../module/postgresql/_meta/docs.asciidoc | 30 + filebeat/module/postgresql/_meta/fields.yml | 11 + .../Filebeat-Postgresql-overview.json | 64 ++ .../Filebeat-Postgresql-slowlogs.json | 87 ++ .../module/postgresql/log/_meta/fields.yml | 40 + filebeat/module/postgresql/log/config/log.yml | 10 + .../postgresql/log/ingest/pipeline.json | 41 + filebeat/module/postgresql/log/manifest.yml | 13 + .../postgresql-9.6-debian-with-slowlog.log | 61 ++ ...-9.6-debian-with-slowlog.log-expected.json | 814 ++++++++++++++++++ .../log/test/postgresql-ubuntu-9.5.log | 78 ++ filebeat/modules.d/postgresql.yml.disabled | 8 + filebeat/tests/system/test_modules.py | 33 +- 23 files changed, 1446 insertions(+), 12 deletions(-) create mode 100644 filebeat/docs/images/filebeat-postgresql-overview.png create mode 100644 filebeat/docs/images/filebeat-postgresql-slowlog-overview.png create mode 100644 filebeat/docs/images/filebeat-postgresql.png create mode 100644 filebeat/docs/modules/postgresql.asciidoc create mode 100644 filebeat/module/postgresql/_meta/config.reference.yml create mode 100644 filebeat/module/postgresql/_meta/config.yml create mode 100644 filebeat/module/postgresql/_meta/docs.asciidoc create mode 100644 filebeat/module/postgresql/_meta/fields.yml create mode 100644 filebeat/module/postgresql/_meta/kibana/default/dashboard/Filebeat-Postgresql-overview.json create mode 100644 filebeat/module/postgresql/_meta/kibana/default/dashboard/Filebeat-Postgresql-slowlogs.json create mode 100644 filebeat/module/postgresql/log/_meta/fields.yml create mode 100644 filebeat/module/postgresql/log/config/log.yml create mode 100644 filebeat/module/postgresql/log/ingest/pipeline.json create mode 100644 filebeat/module/postgresql/log/manifest.yml create mode 100644 filebeat/module/postgresql/log/test/postgresql-9.6-debian-with-slowlog.log create mode 100644 filebeat/module/postgresql/log/test/postgresql-9.6-debian-with-slowlog.log-expected.json create mode 100644 filebeat/module/postgresql/log/test/postgresql-ubuntu-9.5.log create mode 100644 filebeat/modules.d/postgresql.yml.disabled diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 61910847ffef..82d8b24bed49 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -66,6 +66,8 @@ https://github.com/elastic/beats/compare/v6.0.0-beta1...master[Check the HEAD di *Filebeat* +- Add PostgreSQL module with slowlog support. {pull}4763[4763] + *Heartbeat* *Metricbeat* diff --git a/filebeat/docs/fields.asciidoc b/filebeat/docs/fields.asciidoc index 54ef5bc482d5..4e1cf9673fca 100644 --- a/filebeat/docs/fields.asciidoc +++ b/filebeat/docs/fields.asciidoc @@ -22,6 +22,7 @@ grouped in the following categories: * <> * <> * <> +* <> * <> * <> @@ -1277,6 +1278,92 @@ type: text The error message +[[exported-fields-postgresql]] +== PostgreSQL fields + +Module for parsing the PostgreSQL log files. + + + +[float] +== postgresql fields + +Fields from PostgreSQL logs. + + + +[float] +== log fields + +Fields from the PostgreSQL log files. + + + +[float] +=== `postgresql.log.timestamp` + +The timestamp from the log line. + + +[float] +=== `postgresql.log.timezone` + +The timezone of timestamp. + + +[float] +=== `postgresql.log.thread_id` + +type: long + +Processs id + + +[float] +=== `postgresql.log.user` + +example: admin + +Name of user + +[float] +=== `postgresql.log.database` + +example: mydb + +Name of database + +[float] +=== `postgresql.log.level` + +example: FATAL + +The log level. + +[float] +=== `postgresql.log.duration` + +type: float + +example: 30.0 + +Duration of a query. + +[float] +=== `postgresql.log.query` + +example: SELECT * FROM users; + +Query statment. + +[float] +=== `postgresql.log.message` + +type: text + +The logged message. + + [[exported-fields-redis]] == Redis fields diff --git a/filebeat/docs/images/filebeat-postgresql-overview.png b/filebeat/docs/images/filebeat-postgresql-overview.png new file mode 100644 index 0000000000000000000000000000000000000000..b4fc428c4d02dee831ecaaced31eb55ecc668bb3 GIT binary patch literal 44427 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 literal 0 HcmV?d00001 diff --git a/filebeat/docs/images/filebeat-postgresql-slowlog-overview.png b/filebeat/docs/images/filebeat-postgresql-slowlog-overview.png new file mode 100644 index 0000000000000000000000000000000000000000..944a257785226e6e977007126373c9c60baf7dcb GIT binary patch literal 57254 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 f?Z2hOa6w$k_vM=L=gi!Uub_R> section. + diff --git a/filebeat/docs/modules_list.asciidoc b/filebeat/docs/modules_list.asciidoc index f8ce7354cdc8..1dd629002500 100644 --- a/filebeat/docs/modules_list.asciidoc +++ b/filebeat/docs/modules_list.asciidoc @@ -8,6 +8,7 @@ This file is generated! See scripts/docs_collector.py * <> * <> * <> + * <> * <> * <> @@ -20,5 +21,6 @@ include::modules/auditd.asciidoc[] include::modules/icinga.asciidoc[] include::modules/mysql.asciidoc[] include::modules/nginx.asciidoc[] +include::modules/postgresql.asciidoc[] include::modules/redis.asciidoc[] include::modules/system.asciidoc[] diff --git a/filebeat/filebeat.reference.yml b/filebeat/filebeat.reference.yml index 20ee62930e2e..dcd7d03653be 100644 --- a/filebeat/filebeat.reference.yml +++ b/filebeat/filebeat.reference.yml @@ -166,6 +166,20 @@ filebeat.modules: # can be added under this section. #prospector: +#----------------------------- PostgreSQL Module ----------------------------- +#- module: postgresql + # Logs + #log: + #enabled: true + + # Set custom paths for the log files. If left empty, + # Filebeat will choose the paths depending on your OS. + #var.paths: + + # Prospector configuration (advanced). Any prospector configuration option + # can be added under this section. + #prospector: + #-------------------------------- Redis Module ------------------------------- #- module: redis # Main logs diff --git a/filebeat/module/postgresql/_meta/config.reference.yml b/filebeat/module/postgresql/_meta/config.reference.yml new file mode 100644 index 000000000000..fa500fda4b29 --- /dev/null +++ b/filebeat/module/postgresql/_meta/config.reference.yml @@ -0,0 +1,12 @@ +#- module: postgresql + # Logs + #log: + #enabled: true + + # Set custom paths for the log files. If left empty, + # Filebeat will choose the paths depending on your OS. + #var.paths: + + # Prospector configuration (advanced). Any prospector configuration option + # can be added under this section. + #prospector: diff --git a/filebeat/module/postgresql/_meta/config.yml b/filebeat/module/postgresql/_meta/config.yml new file mode 100644 index 000000000000..c82734a9570f --- /dev/null +++ b/filebeat/module/postgresql/_meta/config.yml @@ -0,0 +1,8 @@ +- module: postgresql + # All logs + log: + enabled: true + + # Set custom paths for the log files. If left empty, + # Filebeat will choose the paths depending on your OS. + #var.paths: diff --git a/filebeat/module/postgresql/_meta/docs.asciidoc b/filebeat/module/postgresql/_meta/docs.asciidoc new file mode 100644 index 000000000000..c67350d08bce --- /dev/null +++ b/filebeat/module/postgresql/_meta/docs.asciidoc @@ -0,0 +1,30 @@ +== PostgreSQL module + +This module collects and parses the logs created by https://www.postgresql.org/[PostgreSQL]. + +[float] +=== Compatibility + +The PostgreSQL module was tested with logs from versions 9.5 on Ubuntu and 9.6 on Debian. + +[float] +=== Dashboard + +This module comes with two sample dashboards. + +The first dashboard is for regulars logs. + +image::./images/filebeat-postgresql-overview.png[] + +The second one shows the slowlogs of PostgreSQL. + +image::./images/filebeat-postgresql-postgresql-overview.png[] + +[float] +=== Logs fileset settings + +[float] +==== var.paths + +An array of paths where to look for the log files. If left empty, Filebeat +will choose the paths depending on your operating systems. diff --git a/filebeat/module/postgresql/_meta/fields.yml b/filebeat/module/postgresql/_meta/fields.yml new file mode 100644 index 000000000000..5c773288ab6d --- /dev/null +++ b/filebeat/module/postgresql/_meta/fields.yml @@ -0,0 +1,11 @@ +- key: postgresql + title: "PostgreSQL" + description: > + Module for parsing the PostgreSQL log files. + short_config: true + fields: + - name: postgresql + type: group + description: > + Fields from PostgreSQL logs. + fields: diff --git a/filebeat/module/postgresql/_meta/kibana/default/dashboard/Filebeat-Postgresql-overview.json b/filebeat/module/postgresql/_meta/kibana/default/dashboard/Filebeat-Postgresql-overview.json new file mode 100644 index 000000000000..c63dea005ff9 --- /dev/null +++ b/filebeat/module/postgresql/_meta/kibana/default/dashboard/Filebeat-Postgresql-overview.json @@ -0,0 +1,64 @@ +{ + "objects": [ + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[]}" + }, + "savedSearchId": "ef9da9b0-776c-11e7-9e03-393c0d1aa325", + "title": "PostgreSQL Log Level Count", + "uiStateJSON": "{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}", + "version": 1, + "visState": "{\"title\":\"PostgreSQL Log Level Count\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMeticsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"postgresql.log.level\",\"size\":12,\"order\":\"desc\",\"orderBy\":\"1\"}}]}" + }, + "id": "28563b50-776d-11e7-9e03-393c0d1aa325", + "type": "visualization", + "version": 1 + }, + { + "attributes": { + "columns": [ + "postgresql.log.user", + "postgresql.log.database", + "postgresql.log.level", + "postgresql.log.message", + "postgresql.log.query" + ], + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"index\":\"a0b887a0-763d-11e7-9e03-393c0d1aa325\",\"highlightAll\":true,\"version\":true,\"query\":{\"query\":\"postgresql.log.level:*\",\"language\":\"lucene\"},\"filter\":[]}" + }, + "sort": [ + "@timestamp", + "desc" + ], + "title": "PostgreSQL All Logs", + "version": 1 + }, + "id": "ef9da9b0-776c-11e7-9e03-393c0d1aa325", + "type": "search", + "version": 1 + }, + { + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false}", + "panelsJSON": "[{\"size_x\":6,\"size_y\":3,\"panelIndex\":1,\"type\":\"visualization\",\"id\":\"28563b50-776d-11e7-9e03-393c0d1aa325\",\"col\":1,\"row\":4},{\"size_x\":12,\"size_y\":3,\"panelIndex\":2,\"type\":\"search\",\"id\":\"ef9da9b0-776c-11e7-9e03-393c0d1aa325\",\"col\":1,\"row\":1,\"columns\":[\"postgresql.log.user\",\"postgresql.log.database\",\"postgresql.log.level\",\"postgresql.log.message\",\"postgresql.log.query\"],\"sort\":[\"@timestamp\",\"desc\"]}]", + "timeRestore": false, + "title": "PostgreSQL All Logs", + "uiStateJSON": "{\"P-1\":{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}}", + "version": 1 + }, + "id": "a21284c0-776e-11e7-9e03-393c0d1aa325", + "type": "dashboard", + "version": 1 + } + ], + "version": "6.0.0-beta1-SNAPSHOT" +} \ No newline at end of file diff --git a/filebeat/module/postgresql/_meta/kibana/default/dashboard/Filebeat-Postgresql-slowlogs.json b/filebeat/module/postgresql/_meta/kibana/default/dashboard/Filebeat-Postgresql-slowlogs.json new file mode 100644 index 000000000000..6268c9a5cc8c --- /dev/null +++ b/filebeat/module/postgresql/_meta/kibana/default/dashboard/Filebeat-Postgresql-slowlogs.json @@ -0,0 +1,87 @@ +{ + "objects": [ + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"language\":\"lucene\"}}" + }, + "savedSearchId": "d338f1e0-776b-11e7-9e03-393c0d1aa325", + "title": "PostgreSQL Query Count and Duration", + "uiStateJSON": "{\"vis\":{\"colors\":{\"Sum of query duration\":\"#6ED0E0\",\"Number of queries\":\"#0A437C\"},\"legendOpen\":true}}", + "version": 1, + "visState": "{\"title\":\"PostgreSQL Query Count and Duration\",\"type\":\"histogram\",\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"}},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"truncate\":100},\"title\":{\"text\":\"@timestamp per minute\"}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"\"}}],\"seriesParams\":[{\"show\":true,\"mode\":\"normal\",\"type\":\"histogram\",\"drawLinesBetweenPoints\":true,\"showCircles\":true,\"interpolate\":\"linear\",\"lineWidth\":2,\"data\":{\"id\":\"4\",\"label\":\"Number of queries\"},\"valueAxis\":\"ValueAxis-1\"},{\"show\":true,\"mode\":\"normal\",\"type\":\"histogram\",\"drawLinesBetweenPoints\":true,\"showCircles\":true,\"interpolate\":\"linear\",\"lineWidth\":2,\"data\":{\"id\":\"2\",\"label\":\"Sum of query duration\"},\"valueAxis\":\"ValueAxis-1\"}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false},\"aggs\":[{\"id\":\"3\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"@timestamp\",\"interval\":\"m\",\"customInterval\":\"2h\",\"min_doc_count\":1,\"extended_bounds\":{}}},{\"id\":\"4\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{\"customLabel\":\"Number of queries\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"sum\",\"schema\":\"metric\",\"params\":{\"field\":\"postgresql.log.duration\",\"customLabel\":\"Sum of query duration\"}}]}" + }, + "id": "63bb6bd0-776c-11e7-9e03-393c0d1aa325", + "type": "visualization", + "version": 2 + }, + { + "attributes": { + "columns": [ + "postgresql.log.user", + "postgresql.log.database", + "postgresql.log.duration", + "postgresql.log.query" + ], + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"index\":\"a0b887a0-763d-11e7-9e03-393c0d1aa325\",\"highlightAll\":true,\"version\":true,\"query\":{\"query\":\"postgresql.log.duration:\u003e30\",\"language\":\"lucene\"},\"filter\":[]}" + }, + "sort": [ + "@timestamp", + "desc" + ], + "title": "Slow PostgreSQL Queries", + "version": 1 + }, + "id": "653bbfb0-776b-11e7-9e03-393c0d1aa325", + "type": "search", + "version": 3 + }, + { + "attributes": { + "columns": [ + "postgresql.log.user", + "postgresql.log.database", + "postgresql.log.duration", + "postgresql.log.query" + ], + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"index\":\"a0b887a0-763d-11e7-9e03-393c0d1aa325\",\"highlightAll\":true,\"version\":true,\"query\":{\"query\":\"postgresql.log.duration:*\",\"language\":\"lucene\"},\"filter\":[]}" + }, + "sort": [ + "@timestamp", + "desc" + ], + "title": "PostgreSQL Query Durations", + "version": 1 + }, + "id": "d338f1e0-776b-11e7-9e03-393c0d1aa325", + "type": "search", + "version": 2 + }, + { + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"language\":\"lucene\",\"query\":\"postgresql.log.query:*\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false}", + "panelsJSON": "[{\"col\":1,\"id\":\"63bb6bd0-776c-11e7-9e03-393c0d1aa325\",\"panelIndex\":1,\"row\":1,\"size_x\":6,\"size_y\":3,\"type\":\"visualization\"},{\"col\":7,\"columns\":[\"postgresql.log.user\",\"postgresql.log.database\",\"postgresql.log.duration\",\"postgresql.log.query\"],\"id\":\"653bbfb0-776b-11e7-9e03-393c0d1aa325\",\"panelIndex\":2,\"row\":1,\"size_x\":6,\"size_y\":3,\"sort\":[\"@timestamp\",\"desc\"],\"type\":\"search\"},{\"size_x\":12,\"size_y\":3,\"panelIndex\":3,\"type\":\"search\",\"id\":\"d338f1e0-776b-11e7-9e03-393c0d1aa325\",\"col\":1,\"row\":4,\"columns\":[\"postgresql.log.user\",\"postgresql.log.database\",\"postgresql.log.duration\",\"postgresql.log.query\"],\"sort\":[\"@timestamp\",\"desc\"]}]", + "timeRestore": false, + "title": "PostgreSQL Query Duration Overview", + "uiStateJSON": "{}", + "version": 1 + }, + "id": "92370770-776d-11e7-9e03-393c0d1aa325", + "type": "dashboard", + "version": 1 + } + ], + "version": "6.0.0-beta1-SNAPSHOT" +} \ No newline at end of file diff --git a/filebeat/module/postgresql/log/_meta/fields.yml b/filebeat/module/postgresql/log/_meta/fields.yml new file mode 100644 index 000000000000..06e01ca78629 --- /dev/null +++ b/filebeat/module/postgresql/log/_meta/fields.yml @@ -0,0 +1,40 @@ +- name: log + type: group + description: > + Fields from the PostgreSQL log files. + fields: + - name: timestamp + description: > + The timestamp from the log line. + - name: timezone + description: > + The timezone of timestamp. + - name: thread_id + type: long + description: > + Processs id + - name: user + example: "admin" + description: + Name of user + - name: database + example: "mydb" + description: + Name of database + - name: level + example: "FATAL" + description: + The log level. + - name: duration + type: float + example: "30.0" + description: + Duration of a query. + - name: query + example: "SELECT * FROM users;" + description: + Query statment. + - name: message + type: text + description: > + The logged message. diff --git a/filebeat/module/postgresql/log/config/log.yml b/filebeat/module/postgresql/log/config/log.yml new file mode 100644 index 000000000000..5f236667e90c --- /dev/null +++ b/filebeat/module/postgresql/log/config/log.yml @@ -0,0 +1,10 @@ +type: log +paths: +{{ range $i, $path := .paths }} + - {{$path}} +{{ end }} +exclude_files: [".gz$"] +multiline: + pattern: '^[-0-9]* ' + negate: true + match: after diff --git a/filebeat/module/postgresql/log/ingest/pipeline.json b/filebeat/module/postgresql/log/ingest/pipeline.json new file mode 100644 index 000000000000..17e461d897e5 --- /dev/null +++ b/filebeat/module/postgresql/log/ingest/pipeline.json @@ -0,0 +1,41 @@ +{ + "description": "Pipeline for parsing PostgreSQL logs.", + "processors": [ + { + "grok": { + "field": "message", + "ignore_missing": true, + "patterns": [ + "%{LOCALDATETIME:postgresql.log.timestamp} %{WORD:postgresql.log.timezone} \\[%{NUMBER:postgresql.log.thread_id}\\] %{USERNAME:postgresql.log.user}@%{HOSTNAME:postgresql.log.database} %{WORD:postgresql.log.level}: duration: %{NUMBER:postgresql.log.duration} ms statement: %{MULTILINEQUERY:postgresql.log.query}", + "%{LOCALDATETIME:postgresql.log.timestamp} %{WORD:postgresql.log.timezone} \\[%{NUMBER:postgresql.log.thread_id}\\] \\[%{USERNAME:postgresql.log.user}\\]@\\[%{HOSTNAME:postgresql.log.database}\\] %{WORD:postgresql.log.level}: duration: %{NUMBER:postgresql.log.duration} ms statement: %{MULTILINEQUERY:postgresql.log.query}", + "%{LOCALDATETIME:postgresql.log.timestamp} %{WORD:postgresql.log.timezone} \\[%{NUMBER:postgresql.log.thread_id}\\] %{USERNAME:postgresql.log.user}@%{HOSTNAME:postgresql.log.database} %{WORD:postgresql.log.level}: ?%{GREEDYDATA:postgresql.log.message}", + "%{LOCALDATETIME:postgresql.log.timestamp} %{WORD:postgresql.log.timezone} \\[%{NUMBER:postgresql.log.thread_id}\\] \\[%{USERNAME:postgresql.log.user}\\]@\\[%{HOSTNAME:postgresql.log.database}\\] %{WORD:postgresql.log.level}: ?%{GREEDYDATA:postgresql.log.message}", + "%{LOCALDATETIME:postgresql.log.timestamp} %{WORD:postgresql.log.timezone} \\[%{NUMBER:postgresql.log.thread_id}\\] %{WORD:postgresql.log.level}: ?%{GREEDYDATA:postgresql.log.message}" + ], + "pattern_definitions": { + "LOCALDATETIME": "[-0-9]+ %{TIME}", + "GREEDYDATA": ".*", + "MULTILINEQUERY" : "(.|\n|\t)*?;$" + } + } + }, + { + "date": { + "field": "postgresql.log.timestamp", + "target_field": "@timestamp", + "formats": [ + "yyyy-MM-dd HH:mm:ss.SSS" + ], + "ignore_failure": true + } + } + ], + "on_failure": [ + { + "set": { + "field": "error.message", + "value": "{{ _ingest.on_failure_message }}" + } + } + ] +} diff --git a/filebeat/module/postgresql/log/manifest.yml b/filebeat/module/postgresql/log/manifest.yml new file mode 100644 index 000000000000..bd9631f945f6 --- /dev/null +++ b/filebeat/module/postgresql/log/manifest.yml @@ -0,0 +1,13 @@ +module_version: "1.0" + +var: + - name: paths + default: + - /var/log/postgresql/postgresql-*-*.log* + os.darwin: + - /usr/local/var/postgres/*.log* + os.windows: + - "c:/Program Files/PostgreSQL/*/logs/*.log*" + +ingest_pipeline: ingest/pipeline.json +prospector: config/log.yml diff --git a/filebeat/module/postgresql/log/test/postgresql-9.6-debian-with-slowlog.log b/filebeat/module/postgresql/log/test/postgresql-9.6-debian-with-slowlog.log new file mode 100644 index 000000000000..1903a2a16db8 --- /dev/null +++ b/filebeat/module/postgresql/log/test/postgresql-9.6-debian-with-slowlog.log @@ -0,0 +1,61 @@ +2017-07-31 13:36:42.585 CEST [4974] LOG: database system was shut down at 2017-06-17 16:58:04 CEST +2017-07-31 13:36:42.605 CEST [4974] LOG: MultiXact member wraparound protections are now enabled +2017-07-31 13:36:42.615 CEST [4978] LOG: autovacuum launcher started +2017-07-31 13:36:42.616 CEST [4973] LOG: database system is ready to accept connections +2017-07-31 13:36:42.956 CEST [4980] [unknown]@[unknown] LOG: incomplete startup packet +2017-07-31 13:36:43.557 CEST [4983] postgres@postgres LOG: duration: 37.118 ms statement: SELECT d.datname as "Name", + pg_catalog.pg_get_userbyid(d.datdba) as "Owner", + pg_catalog.pg_encoding_to_char(d.encoding) as "Encoding", + d.datcollate as "Collate", + d.datctype as "Ctype", + pg_catalog.array_to_string(d.datacl, E'\n') AS "Access privileges" + FROM pg_catalog.pg_database d + ORDER BY 1; +2017-07-31 13:36:44.104 CEST [4986] postgres@postgres LOG: duration: 2.895 ms statement: SELECT d.datname as "Name", + pg_catalog.pg_get_userbyid(d.datdba) as "Owner", + pg_catalog.pg_encoding_to_char(d.encoding) as "Encoding", + d.datcollate as "Collate", + d.datctype as "Ctype", + pg_catalog.array_to_string(d.datacl, E'\n') AS "Access privileges" + FROM pg_catalog.pg_database d + ORDER BY 1; +2017-07-31 13:36:44.642 CEST [4989] postgres@postgres LOG: duration: 2.809 ms statement: SELECT d.datname as "Name", + pg_catalog.pg_get_userbyid(d.datdba) as "Owner", + pg_catalog.pg_encoding_to_char(d.encoding) as "Encoding", + d.datcollate as "Collate", + d.datctype as "Ctype", + pg_catalog.array_to_string(d.datacl, E'\n') AS "Access privileges" + FROM pg_catalog.pg_database d + ORDER BY 1; +2017-07-31 13:39:16.249 CEST [5407] postgres@users FATAL: database "users" does not exist +2017-07-31 13:39:17.945 CEST [5500] postgres@user FATAL: database "user" does not exist +2017-07-31 13:39:21.025 CEST [5404] postgres@postgres LOG: duration: 37.598 ms statement: SELECT n.nspname as "Schema", + c.relname as "Name", + CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' WHEN 'f' THEN 'foreign table' END as "Type", + pg_catalog.pg_get_userbyid(c.relowner) as "Owner" + FROM pg_catalog.pg_class c + LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace + WHERE c.relkind IN ('r','') + AND n.nspname <> 'pg_catalog' + AND n.nspname <> 'information_schema' + AND n.nspname !~ '^pg_toast' + AND pg_catalog.pg_table_is_visible(c.oid) + ORDER BY 1,2; +2017-07-31 13:39:31.619 CEST [5502] postgres@clients LOG: duration: 9.482 ms statement: select * from clients; +2017-07-31 13:39:40.147 CEST [5502] postgres@clients LOG: duration: 0.765 ms statement: select id from clients; +2017-07-31 13:40:54.310 CEST [5502] postgres@clients LOG: duration: 26.082 ms statement: SELECT n.nspname as "Schema", + c.relname as "Name", + CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' WHEN 'f' THEN 'foreign table' END as "Type", + pg_catalog.pg_get_userbyid(c.relowner) as "Owner" + FROM pg_catalog.pg_class c + LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace + WHERE c.relkind IN ('r','') + AND n.nspname <> 'pg_catalog' + AND n.nspname <> 'information_schema' + AND n.nspname !~ '^pg_toast' + AND pg_catalog.pg_table_is_visible(c.oid) + ORDER BY 1,2; +2017-07-31 13:43:22.645 CEST [5502] postgres@clients LOG: duration: 36.162 ms statement: create table cats(name varchar(50) primary key, toy varchar (50) not null, born timestamp not null); +2017-07-31 13:46:02.670 CEST [5502] postgres@clients LOG: duration: 10.540 ms statement: insert into cats(name, toy, born) values('kate', 'ball', now()); +2017-07-31 13:46:23.016 CEST [5502] postgres@clients LOG: duration: 5.156 ms statement: insert into cats(name, toy, born) values('frida', 'horse', now()); +2017-07-31 13:46:55.637 CEST [5502] postgres@clients LOG: duration: 25.871 ms statement: create table dogs(name varchar(50) primary key, owner varchar (50) not null, born timestamp not null); diff --git a/filebeat/module/postgresql/log/test/postgresql-9.6-debian-with-slowlog.log-expected.json b/filebeat/module/postgresql/log/test/postgresql-9.6-debian-with-slowlog.log-expected.json new file mode 100644 index 000000000000..91f5e3468342 --- /dev/null +++ b/filebeat/module/postgresql/log/test/postgresql-9.6-debian-with-slowlog.log-expected.json @@ -0,0 +1,814 @@ +[ + { + "_index": "filebeat-7.0.0-alpha1-2017.08.01", + "_type": "doc", + "_id": "t8S2ml0BVlT2mTAm4zRv", + "_version": 1, + "_score": null, + "_source": { + "@timestamp": "2017-07-31T13:36:42.585Z", + "offset": 100, + "postgresql": { + "log": { + "thread_id": "4974", + "level": "LOG", + "timezone": "CEST", + "message": "database system was shut down at 2017-06-17 16:58:04 CEST", + "timestamp": "2017-07-31 13:36:42.585" + } + }, + "beat": { + "hostname": "baldur", + "name": "baldur", + "version": "7.0.0-alpha1" + }, + "prospector": { + "type": "log" + }, + "source": "/home/n/go/src/github.com/elastic/beats/filebeat/module/postgresql/log/test/postgresql-9.6-debian.log", + "message": "2017-07-31 13:36:42.585 CEST [4974] LOG: database system was shut down at 2017-06-17 16:58:04 CEST", + "fileset": { + "module": "postgresql", + "name": "log" + } + }, + "fields": { + "@timestamp": [ + "2017-07-31T13:36:42.585Z" + ] + }, + "sort": [ + 1501508202585 + ] + }, + + { + "_index": "filebeat-7.0.0-alpha1-2017.08.01", + "_type": "doc", + "_id": "tcS2ml0BVlT2mTAm4jSf", + "_version": 1, + "_score": null, + "_source": { + "@timestamp": "2017-07-31T13:36:42.605Z", + "offset": 198, + "postgresql": { + "log": { + "thread_id": "4974", + "level": "LOG", + "timezone": "CEST", + "message": "MultiXact member wraparound protections are now enabled", + "timestamp": "2017-07-31 13:36:42.605" + } + }, + "beat": { + "hostname": "baldur", + "name": "baldur", + "version": "7.0.0-alpha1" + }, + "prospector": { + "type": "log" + }, + "source": "/home/n/go/src/github.com/elastic/beats/filebeat/module/postgresql/log/test/postgresql-9.6-debian.log", + "message": "2017-07-31 13:36:42.605 CEST [4974] LOG: MultiXact member wraparound protections are now enabled", + "fileset": { + "module": "postgresql", + "name": "log" + } + }, + "fields": { + "@timestamp": [ + "2017-07-31T13:36:42.605Z" + ] + }, + "sort": [ + 1501508202605 + ] + }, + + { + "_index": "filebeat-7.0.0-alpha1-2017.08.01", + "_type": "doc", + "_id": "tsS2ml0BVlT2mTAm4jSf", + "_version": 1, + "_score": null, + "_source": { + "@timestamp": "2017-07-31T13:36:42.615Z", + "offset": 268, + "postgresql": { + "log": { + "thread_id": "4978", + "level": "LOG", + "timezone": "CEST", + "message": "autovacuum launcher started", + "timestamp": "2017-07-31 13:36:42.615" + } + }, + "beat": { + "hostname": "baldur", + "name": "baldur", + "version": "7.0.0-alpha1" + }, + "prospector": { + "type": "log" + }, + "source": "/home/n/go/src/github.com/elastic/beats/filebeat/module/postgresql/log/test/postgresql-9.6-debian.log", + "message": "2017-07-31 13:36:42.615 CEST [4978] LOG: autovacuum launcher started", + "fileset": { + "module": "postgresql", + "name": "log" + } + }, + "fields": { + "@timestamp": [ + "2017-07-31T13:36:42.615Z" + ] + }, + "sort": [ + 1501508202615 + ] + }, + + { + "_index": "filebeat-7.0.0-alpha1-2017.08.01", + "_type": "doc", + "_id": "uMS2ml0BVlT2mTAm4zST", + "_version": 1, + "_score": null, + "_source": { + "@timestamp": "2017-07-31T13:36:42.616Z", + "offset": 357, + "postgresql": { + "log": { + "thread_id": "4973", + "level": "LOG", + "timezone": "CEST", + "message": "database system is ready to accept connections", + "timestamp": "2017-07-31 13:36:42.616" + } + }, + "beat": { + "hostname": "baldur", + "name": "baldur", + "version": "7.0.0-alpha1" + }, + "prospector": { + "type": "log" + }, + "source": "/home/n/go/src/github.com/elastic/beats/filebeat/module/postgresql/log/test/postgresql-9.6-debian.log", + "message": "2017-07-31 13:36:42.616 CEST [4973] LOG: database system is ready to accept connections", + "fileset": { + "module": "postgresql", + "name": "log" + } + }, + "fields": { + "@timestamp": [ + "2017-07-31T13:36:42.616Z" + ] + }, + "sort": [ + 1501508202616 + ] + }, + + { + "_index": "filebeat-7.0.0-alpha1-2017.08.01", + "_type": "doc", + "_id": "ucS2ml0BVlT2mTAm4zST", + "_version": 1, + "_score": null, + "_source": { + "@timestamp": "2017-07-31T13:36:42.956Z", + "offset": 445, + "postgresql": { + "log": { + "thread_id": "4980", + "database": "unknown", + "level": "LOG", + "timezone": "CEST", + "message": "incomplete startup packet", + "user": "unknown", + "timestamp": "2017-07-31 13:36:42.956" + } + }, + "beat": { + "hostname": "baldur", + "name": "baldur", + "version": "7.0.0-alpha1" + }, + "prospector": { + "type": "log" + }, + "source": "/home/n/go/src/github.com/elastic/beats/filebeat/module/postgresql/log/test/postgresql-9.6-debian.log", + "fileset": { + "module": "postgresql", + "name": "log" + }, + "message": "2017-07-31 13:36:42.956 CEST [4980] [unknown]@[unknown] LOG: incomplete startup packet" + }, + "fields": { + "@timestamp": [ + "2017-07-31T13:36:42.956Z" + ] + }, + "sort": [ + 1501508202956 + ] + }, + + { + "_index": "filebeat-7.0.0-alpha1-2017.08.01", + "_type": "doc", + "_id": "usS2ml0BVlT2mTAm4zST", + "_version": 1, + "_score": null, + "_source": { + "@timestamp": "2017-07-31T13:36:43.557Z", + "offset": 873, + "postgresql": { + "log": { + "duration": "37.118", + "thread_id": "4983", + "database": "postgres", + "level": "LOG", + "timezone": "CEST", + "query": "SELECT d.datname as \"Name\",\n\t pg_catalog.pg_get_userbyid(d.datdba) as \"Owner\",\n\t pg_catalog.pg_encoding_to_char(d.encoding) as \"Encoding\",\n\t d.datcollate as \"Collate\",\n\t d.datctype as \"Ctype\",\n\t pg_catalog.array_to_string(d.datacl, E'\\n') AS \"Access privileges\"\n\tFROM pg_catalog.pg_database d\n\tORDER BY 1;", + "user": "postgres", + "timestamp": "2017-07-31 13:36:43.557" + } + }, + "beat": { + "hostname": "baldur", + "name": "baldur", + "version": "7.0.0-alpha1" + }, + "prospector": { + "type": "log" + }, + "source": "/home/n/go/src/github.com/elastic/beats/filebeat/module/postgresql/log/test/postgresql-9.6-debian.log", + "fileset": { + "module": "postgresql", + "name": "log" + }, + "message": "2017-07-31 13:36:43.557 CEST [4983] postgres@postgres LOG: duration: 37.118 ms statement: SELECT d.datname as \"Name\",\n\t pg_catalog.pg_get_userbyid(d.datdba) as \"Owner\",\n\t pg_catalog.pg_encoding_to_char(d.encoding) as \"Encoding\",\n\t d.datcollate as \"Collate\",\n\t d.datctype as \"Ctype\",\n\t pg_catalog.array_to_string(d.datacl, E'\\n') AS \"Access privileges\"\n\tFROM pg_catalog.pg_database d\n\tORDER BY 1;" + }, + "fields": { + "@timestamp": [ + "2017-07-31T13:36:43.557Z" + ] + }, + "sort": [ + 1501508203557 + ] + }, + + { + "_index": "filebeat-7.0.0-alpha1-2017.08.01", + "_type": "doc", + "_id": "u8S2ml0BVlT2mTAm4zST", + "_version": 1, + "_score": null, + "_source": { + "@timestamp": "2017-07-31T13:36:44.104Z", + "offset": 1300, + "postgresql": { + "log": { + "duration": "2.895", + "thread_id": "4986", + "database": "postgres", + "level": "LOG", + "timezone": "CEST", + "query": "SELECT d.datname as \"Name\",\n\t pg_catalog.pg_get_userbyid(d.datdba) as \"Owner\",\n\t pg_catalog.pg_encoding_to_char(d.encoding) as \"Encoding\",\n\t d.datcollate as \"Collate\",\n\t d.datctype as \"Ctype\",\n\t pg_catalog.array_to_string(d.datacl, E'\\n') AS \"Access privileges\"\n\tFROM pg_catalog.pg_database d\n\tORDER BY 1;", + "user": "postgres", + "timestamp": "2017-07-31 13:36:44.104" + } + }, + "beat": { + "hostname": "baldur", + "name": "baldur", + "version": "7.0.0-alpha1" + }, + "prospector": { + "type": "log" + }, + "source": "/home/n/go/src/github.com/elastic/beats/filebeat/module/postgresql/log/test/postgresql-9.6-debian.log", + "message": "2017-07-31 13:36:44.104 CEST [4986] postgres@postgres LOG: duration: 2.895 ms statement: SELECT d.datname as \"Name\",\n\t pg_catalog.pg_get_userbyid(d.datdba) as \"Owner\",\n\t pg_catalog.pg_encoding_to_char(d.encoding) as \"Encoding\",\n\t d.datcollate as \"Collate\",\n\t d.datctype as \"Ctype\",\n\t pg_catalog.array_to_string(d.datacl, E'\\n') AS \"Access privileges\"\n\tFROM pg_catalog.pg_database d\n\tORDER BY 1;", + "fileset": { + "module": "postgresql", + "name": "log" + } + }, + "fields": { + "@timestamp": [ + "2017-07-31T13:36:44.104Z" + ] + }, + "sort": [ + 1501508204104 + ] + }, + + { + "_index": "filebeat-7.0.0-alpha1-2017.08.01", + "_type": "doc", + "_id": "vMS2ml0BVlT2mTAm4zST", + "_version": 1, + "_score": null, + "_source": { + "@timestamp": "2017-07-31T13:36:44.642Z", + "offset": 1727, + "postgresql": { + "log": { + "duration": "2.809", + "thread_id": "4989", + "database": "postgres", + "level": "LOG", + "timezone": "CEST", + "query": "SELECT d.datname as \"Name\",\n\t pg_catalog.pg_get_userbyid(d.datdba) as \"Owner\",\n\t pg_catalog.pg_encoding_to_char(d.encoding) as \"Encoding\",\n\t d.datcollate as \"Collate\",\n\t d.datctype as \"Ctype\",\n\t pg_catalog.array_to_string(d.datacl, E'\\n') AS \"Access privileges\"\n\tFROM pg_catalog.pg_database d\n\tORDER BY 1;", + "user": "postgres", + "timestamp": "2017-07-31 13:36:44.642" + } + }, + "beat": { + "hostname": "baldur", + "name": "baldur", + "version": "7.0.0-alpha1" + }, + "prospector": { + "type": "log" + }, + "source": "/home/n/go/src/github.com/elastic/beats/filebeat/module/postgresql/log/test/postgresql-9.6-debian.log", + "fileset": { + "module": "postgresql", + "name": "log" + }, + "message": "2017-07-31 13:36:44.642 CEST [4989] postgres@postgres LOG: duration: 2.809 ms statement: SELECT d.datname as \"Name\",\n\t pg_catalog.pg_get_userbyid(d.datdba) as \"Owner\",\n\t pg_catalog.pg_encoding_to_char(d.encoding) as \"Encoding\",\n\t d.datcollate as \"Collate\",\n\t d.datctype as \"Ctype\",\n\t pg_catalog.array_to_string(d.datacl, E'\\n') AS \"Access privileges\"\n\tFROM pg_catalog.pg_database d\n\tORDER BY 1;" + }, + "fields": { + "@timestamp": [ + "2017-07-31T13:36:44.642Z" + ] + }, + "sort": [ + 1501508204642 + ] + }, + + { + "_index": "filebeat-7.0.0-alpha1-2017.08.01", + "_type": "doc", + "_id": "vcS2ml0BVlT2mTAm4zST", + "_version": 1, + "_score": null, + "_source": { + "@timestamp": "2017-07-31T13:39:16.249Z", + "offset": 1818, + "postgresql": { + "log": { + "thread_id": "5407", + "database": "users", + "level": "FATAL", + "timezone": "CEST", + "message": "database \"users\" does not exist", + "user": "postgres", + "timestamp": "2017-07-31 13:39:16.249" + } + }, + "beat": { + "hostname": "baldur", + "name": "baldur", + "version": "7.0.0-alpha1" + }, + "prospector": { + "type": "log" + }, + "source": "/home/n/go/src/github.com/elastic/beats/filebeat/module/postgresql/log/test/postgresql-9.6-debian.log", + "message": "2017-07-31 13:39:16.249 CEST [5407] postgres@users FATAL: database \"users\" does not exist", + "fileset": { + "module": "postgresql", + "name": "log" + } + }, + "fields": { + "@timestamp": [ + "2017-07-31T13:39:16.249Z" + ] + }, + "sort": [ + 1501508356249 + ] + }, + + { + "_index": "filebeat-7.0.0-alpha1-2017.08.01", + "_type": "doc", + "_id": "vsS2ml0BVlT2mTAm4zST", + "_version": 1, + "_score": null, + "_source": { + "@timestamp": "2017-07-31T13:39:17.945Z", + "offset": 1907, + "postgresql": { + "log": { + "thread_id": "5500", + "database": "user", + "level": "FATAL", + "timezone": "CEST", + "message": "database \"user\" does not exist", + "user": "postgres", + "timestamp": "2017-07-31 13:39:17.945" + } + }, + "beat": { + "hostname": "baldur", + "name": "baldur", + "version": "7.0.0-alpha1" + }, + "prospector": { + "type": "log" + }, + "source": "/home/n/go/src/github.com/elastic/beats/filebeat/module/postgresql/log/test/postgresql-9.6-debian.log", + "fileset": { + "module": "postgresql", + "name": "log" + }, + "message": "2017-07-31 13:39:17.945 CEST [5500] postgres@user FATAL: database \"user\" does not exist" + }, + "fields": { + "@timestamp": [ + "2017-07-31T13:39:17.945Z" + ] + }, + "sort": [ + 1501508357945 + ] + }, + + { + "_index": "filebeat-7.0.0-alpha1-2017.08.01", + "_type": "doc", + "_id": "v8S2ml0BVlT2mTAm4zST", + "_version": 1, + "_score": null, + "_source": { + "@timestamp": "2017-07-31T13:39:21.025Z", + "offset": 2620, + "postgresql": { + "log": { + "duration": "37.598", + "thread_id": "5404", + "database": "postgres", + "level": "LOG", + "timezone": "CEST", + "query": "SELECT n.nspname as \"Schema\",\n\t c.relname as \"Name\",\n\t CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' WHEN 'f' THEN 'foreign table' END as \"Type\",\n\t pg_catalog.pg_get_userbyid(c.relowner) as \"Owner\"\n\tFROM pg_catalog.pg_class c\n\t LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace\n\tWHERE c.relkind IN ('r','')\n\t AND n.nspname <> 'pg_catalog'\n\t AND n.nspname <> 'information_schema'\n\t AND n.nspname !~ '^pg_toast'\n\t AND pg_catalog.pg_table_is_visible(c.oid)\n\tORDER BY 1,2;", + "user": "postgres", + "timestamp": "2017-07-31 13:39:21.025" + } + }, + "beat": { + "hostname": "baldur", + "name": "baldur", + "version": "7.0.0-alpha1" + }, + "prospector": { + "type": "log" + }, + "source": "/home/n/go/src/github.com/elastic/beats/filebeat/module/postgresql/log/test/postgresql-9.6-debian.log", + "message": "2017-07-31 13:39:21.025 CEST [5404] postgres@postgres LOG: duration: 37.598 ms statement: SELECT n.nspname as \"Schema\",\n\t c.relname as \"Name\",\n\t CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' WHEN 'f' THEN 'foreign table' END as \"Type\",\n\t pg_catalog.pg_get_userbyid(c.relowner) as \"Owner\"\n\tFROM pg_catalog.pg_class c\n\t LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace\n\tWHERE c.relkind IN ('r','')\n\t AND n.nspname <> 'pg_catalog'\n\t AND n.nspname <> 'information_schema'\n\t AND n.nspname !~ '^pg_toast'\n\t AND pg_catalog.pg_table_is_visible(c.oid)\n\tORDER BY 1,2;", + "fileset": { + "module": "postgresql", + "name": "log" + } + }, + "fields": { + "@timestamp": [ + "2017-07-31T13:39:21.025Z" + ] + }, + "sort": [ + 1501508361025 + ] + }, + + { + "_index": "filebeat-7.0.0-alpha1-2017.08.01", + "_type": "doc", + "_id": "wMS2ml0BVlT2mTAm4zST", + "_version": 1, + "_score": null, + "_source": { + "@timestamp": "2017-07-31T13:39:31.619Z", + "offset": 2733, + "postgresql": { + "log": { + "duration": "9.482", + "thread_id": "5502", + "database": "clients", + "level": "LOG", + "timezone": "CEST", + "query": "select * from clients;", + "user": "postgres", + "timestamp": "2017-07-31 13:39:31.619" + } + }, + "beat": { + "hostname": "baldur", + "name": "baldur", + "version": "7.0.0-alpha1" + }, + "prospector": { + "type": "log" + }, + "source": "/home/n/go/src/github.com/elastic/beats/filebeat/module/postgresql/log/test/postgresql-9.6-debian.log", + "message": "2017-07-31 13:39:31.619 CEST [5502] postgres@clients LOG: duration: 9.482 ms statement: select * from clients;", + "fileset": { + "module": "postgresql", + "name": "log" + } + }, + "fields": { + "@timestamp": [ + "2017-07-31T13:39:31.619Z" + ] + }, + "sort": [ + 1501508371619 + ] + }, + + { + "_index": "filebeat-7.0.0-alpha1-2017.08.01", + "_type": "doc", + "_id": "wcS2ml0BVlT2mTAm4zST", + "_version": 1, + "_score": null, + "_source": { + "@timestamp": "2017-07-31T13:39:40.147Z", + "offset": 2847, + "postgresql": { + "log": { + "duration": "0.765", + "thread_id": "5502", + "database": "clients", + "level": "LOG", + "timezone": "CEST", + "query": "select id from clients;", + "user": "postgres", + "timestamp": "2017-07-31 13:39:40.147" + } + }, + "beat": { + "hostname": "baldur", + "name": "baldur", + "version": "7.0.0-alpha1" + }, + "prospector": { + "type": "log" + }, + "source": "/home/n/go/src/github.com/elastic/beats/filebeat/module/postgresql/log/test/postgresql-9.6-debian.log", + "fileset": { + "module": "postgresql", + "name": "log" + }, + "message": "2017-07-31 13:39:40.147 CEST [5502] postgres@clients LOG: duration: 0.765 ms statement: select id from clients;" + }, + "fields": { + "@timestamp": [ + "2017-07-31T13:39:40.147Z" + ] + }, + "sort": [ + 1501508380147 + ] + }, + + { + "_index": "filebeat-7.0.0-alpha1-2017.08.01", + "_type": "doc", + "_id": "wsS2ml0BVlT2mTAm4zST", + "_version": 1, + "_score": null, + "_source": { + "@timestamp": "2017-07-31T13:40:54.310Z", + "offset": 3559, + "postgresql": { + "log": { + "duration": "26.082", + "thread_id": "5502", + "database": "clients", + "level": "LOG", + "timezone": "CEST", + "query": "SELECT n.nspname as \"Schema\",\n\t c.relname as \"Name\",\n\t CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' WHEN 'f' THEN 'foreign table' END as \"Type\",\n\t pg_catalog.pg_get_userbyid(c.relowner) as \"Owner\"\n\tFROM pg_catalog.pg_class c\n\t LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace\n\tWHERE c.relkind IN ('r','')\n\t AND n.nspname <> 'pg_catalog'\n\t AND n.nspname <> 'information_schema'\n\t AND n.nspname !~ '^pg_toast'\n\t AND pg_catalog.pg_table_is_visible(c.oid)\n\tORDER BY 1,2;", + "user": "postgres", + "timestamp": "2017-07-31 13:40:54.310" + } + }, + "beat": { + "hostname": "baldur", + "name": "baldur", + "version": "7.0.0-alpha1" + }, + "prospector": { + "type": "log" + }, + "source": "/home/n/go/src/github.com/elastic/beats/filebeat/module/postgresql/log/test/postgresql-9.6-debian.log", + "message": "2017-07-31 13:40:54.310 CEST [5502] postgres@clients LOG: duration: 26.082 ms statement: SELECT n.nspname as \"Schema\",\n\t c.relname as \"Name\",\n\t CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' WHEN 'f' THEN 'foreign table' END as \"Type\",\n\t pg_catalog.pg_get_userbyid(c.relowner) as \"Owner\"\n\tFROM pg_catalog.pg_class c\n\t LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace\n\tWHERE c.relkind IN ('r','')\n\t AND n.nspname <> 'pg_catalog'\n\t AND n.nspname <> 'information_schema'\n\t AND n.nspname !~ '^pg_toast'\n\t AND pg_catalog.pg_table_is_visible(c.oid)\n\tORDER BY 1,2;", + "fileset": { + "module": "postgresql", + "name": "log" + } + }, + "fields": { + "@timestamp": [ + "2017-07-31T13:40:54.310Z" + ] + }, + "sort": [ + 1501508454310 + ] + }, + + { + "_index": "filebeat-7.0.0-alpha1-2017.08.01", + "_type": "doc", + "_id": "w8S2ml0BVlT2mTAm4zST", + "_version": 1, + "_score": null, + "_source": { + "@timestamp": "2017-07-31T13:43:22.645Z", + "offset": 3751, + "postgresql": { + "log": { + "duration": "36.162", + "thread_id": "5502", + "database": "clients", + "level": "LOG", + "timezone": "CEST", + "query": "create table cats(name varchar(50) primary key, toy varchar (50) not null, born timestamp not null);", + "user": "postgres", + "timestamp": "2017-07-31 13:43:22.645" + } + }, + "beat": { + "hostname": "baldur", + "name": "baldur", + "version": "7.0.0-alpha1" + }, + "prospector": { + "type": "log" + }, + "source": "/home/n/go/src/github.com/elastic/beats/filebeat/module/postgresql/log/test/postgresql-9.6-debian.log", + "message": "2017-07-31 13:43:22.645 CEST [5502] postgres@clients LOG: duration: 36.162 ms statement: create table cats(name varchar(50) primary key, toy varchar (50) not null, born timestamp not null);", + "fileset": { + "module": "postgresql", + "name": "log" + } + }, + "fields": { + "@timestamp": [ + "2017-07-31T13:43:22.645Z" + ] + }, + "sort": [ + 1501508602645 + ] + }, + + { + "_index": "filebeat-7.0.0-alpha1-2017.08.01", + "_type": "doc", + "_id": "xMS2ml0BVlT2mTAm4zST", + "_version": 1, + "_score": null, + "_source": { + "@timestamp": "2017-07-31T13:46:02.670Z", + "offset": 3907, + "postgresql": { + "log": { + "duration": "10.540", + "thread_id": "5502", + "database": "clients", + "level": "LOG", + "timezone": "CEST", + "query": "insert into cats(name, toy, born) values('kate', 'ball', now());", + "user": "postgres", + "timestamp": "2017-07-31 13:46:02.670" + } + }, + "beat": { + "hostname": "baldur", + "name": "baldur", + "version": "7.0.0-alpha1" + }, + "prospector": { + "type": "log" + }, + "source": "/home/n/go/src/github.com/elastic/beats/filebeat/module/postgresql/log/test/postgresql-9.6-debian.log", + "fileset": { + "module": "postgresql", + "name": "log" + }, + "message": "2017-07-31 13:46:02.670 CEST [5502] postgres@clients LOG: duration: 10.540 ms statement: insert into cats(name, toy, born) values('kate', 'ball', now());" + }, + "fields": { + "@timestamp": [ + "2017-07-31T13:46:02.670Z" + ] + }, + "sort": [ + 1501508762670 + ] + }, + + { + "_index": "filebeat-7.0.0-alpha1-2017.08.01", + "_type": "doc", + "_id": "xcS2ml0BVlT2mTAm4zST", + "_version": 1, + "_score": null, + "_source": { + "@timestamp": "2017-07-31T13:46:23.016Z", + "offset": 4064, + "postgresql": { + "log": { + "duration": "5.156", + "thread_id": "5502", + "database": "clients", + "level": "LOG", + "timezone": "CEST", + "query": "insert into cats(name, toy, born) values('frida', 'horse', now());", + "user": "postgres", + "timestamp": "2017-07-31 13:46:23.016" + } + }, + "beat": { + "hostname": "baldur", + "name": "baldur", + "version": "7.0.0-alpha1" + }, + "prospector": { + "type": "log" + }, + "source": "/home/n/go/src/github.com/elastic/beats/filebeat/module/postgresql/log/test/postgresql-9.6-debian.log", + "message": "2017-07-31 13:46:23.016 CEST [5502] postgres@clients LOG: duration: 5.156 ms statement: insert into cats(name, toy, born) values('frida', 'horse', now());", + "fileset": { + "module": "postgresql", + "name": "log" + } + }, + "fields": { + "@timestamp": [ + "2017-07-31T13:46:23.016Z" + ] + }, + "sort": [ + 1501508783016 + ] + }, + + { + "_index": "filebeat-7.0.0-alpha1-2017.08.01", + "_type": "doc", + "_id": "x8S2ml0BVlT2mTAm8zQ2", + "_version": 1, + "_score": null, + "_source": { + "@timestamp": "2017-07-31T13:46:55.637Z", + "offset": 4258, + "postgresql": { + "log": { + "duration": "25.871", + "thread_id": "5502", + "database": "clients", + "level": "LOG", + "timezone": "CEST", + "query": "create table dogs(name varchar(50) primary key, owner varchar (50) not null, born timestamp not null);", + "user": "postgres", + "timestamp": "2017-07-31 13:46:55.637" + } + }, + "beat": { + "hostname": "baldur", + "name": "baldur", + "version": "7.0.0-alpha1" + }, + "prospector": { + "type": "log" + }, + "source": "/home/n/go/src/github.com/elastic/beats/filebeat/module/postgresql/log/test/postgresql-9.6-debian.log", + "message": "2017-07-31 13:46:55.637 CEST [5502] postgres@clients LOG: duration: 25.871 ms statement: create table dogs(name varchar(50) primary key, owner varchar (50) not null, born timestamp not null);", + "fileset": { + "module": "postgresql", + "name": "log" + } + }, + "fields": { + "@timestamp": [ + "2017-07-31T13:46:55.637Z" + ] + }, + "sort": [ + 1501508815637 + ] + } +] diff --git a/filebeat/module/postgresql/log/test/postgresql-ubuntu-9.5.log b/filebeat/module/postgresql/log/test/postgresql-ubuntu-9.5.log new file mode 100644 index 000000000000..5a3df37b16a6 --- /dev/null +++ b/filebeat/module/postgresql/log/test/postgresql-ubuntu-9.5.log @@ -0,0 +1,78 @@ +2017-04-03 22:32:14.322 CEST [31225] postgres@mydb LOG: could not receive data from client: Connection reset by peer +2017-04-03 22:32:14.322 CEST [31225] postgres@mydb LOG: unexpected EOF on client connection with an open transaction +2017-04-03 22:35:22.389 CEST [3474] postgres@mydb LOG: could not receive data from client: Connection reset by peer +2017-04-03 22:36:56.464 CEST [3525] postgres@mydb LOG: could not receive data from client: Connection reset by peer +2017-04-03 22:37:12.961 CEST [3570] postgres@mydb LOG: could not receive data from client: Connection reset by peer +2017-04-07 21:05:28.549 CEST [21483] postgres@mydb LOG: could not receive data from client: Connection reset by peer +2017-04-07 21:09:41.345 CEST [21597] postgres@mydb LOG: could not receive data from client: Connection reset by peer +2017-04-07 22:45:30.218 CEST [22603] postgres@mydb ERROR: operator does not exist: jsonb @> at character 49 +2017-04-07 22:45:30.218 CEST [22603] postgres@mydb HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts. +2017-04-07 22:45:30.218 CEST [22603] postgres@mydb STATEMENT: SELECT id, user FROM users WHERE NOT user @> %s +2017-04-07 22:46:09.751 CEST [22608] postgres@mydb ERROR: column "%s" does not exist at character 52 +2017-04-07 22:46:09.751 CEST [22608] postgres@mydb STATEMENT: SELECT id, user FROM users WHERE NOT user @> "%s" +2017-04-07 23:02:51.199 CEST [24341] postgres@mydb LOG: could not receive data from client: Connection reset by peer +2017-04-07 23:02:51.199 CEST [24341] postgres@mydb LOG: unexpected EOF on client connection with an open transaction +2017-04-07 23:04:36.087 CEST [20730] postgres@mydb ERROR: syntax error at or near "{" at character 49 +2017-04-07 23:04:36.087 CEST [20730] postgres@mydb STATEMENT: INSERT INTO users (id, user) VALUES (1, {"attr": "yes"}); +2017-04-07 23:04:51.462 CEST [20730] postgres@mydb ERROR: syntax error at or near "{" at character 49 +2017-04-07 23:04:51.462 CEST [20730] postgres@mydb STATEMENT: INSERT INTO users (id, user) VALUES (1, {attr: "yes"}); +2017-04-07 23:05:06.217 CEST [20730] postgres@mydb ERROR: column "a" does not exist at character 42 +2017-04-07 23:05:06.217 CEST [20730] postgres@mydb STATEMENT: INSERT INTO users (id, user) VALUES (1, '{"attr": "yes"}'); +2017-04-07 23:05:18.295 CEST [20730] postgres@mydb ERROR: column "attr" does not exist at character 42 +2017-04-07 23:05:18.295 CEST [20730] postgres@mydb STATEMENT: INSERT INTO users (id, user) VALUES ("1", '{"attr": "no"}'); +2017-04-07 23:13:47.505 CEST [24489] postgres@mydb LOG: could not receive data from client: Connection reset by peer +2017-04-07 23:13:47.505 CEST [24489] postgres@mydb LOG: unexpected EOF on client connection with an open transaction +2017-04-08 12:32:51.056 CEST [20730] postgres@mydb ERROR: duplicate key value violates unique constraint "users_pkey" +2017-04-08 12:32:51.056 CEST [20730] postgres@mydb DETAIL: Key (id)=(1) already exists. +2017-04-08 12:32:51.056 CEST [20730] postgres@mydb STATEMENT: INSERT INTO users (id, user) VALUES ('1', '{"attr": "yes"}'); +2017-04-08 21:54:37.443 CEST [30630] postgres@mydb LOG: could not receive data from client: Connection reset by peer +2017-04-08 21:54:37.468 CEST [30502] postgres@mydb LOG: could not receive data from client: Connection reset by peer +2017-04-08 21:54:37.618 CEST [20769] LOG: received fast shutdown request +2017-04-08 21:54:37.618 CEST [20769] LOG: aborting any active transactions +2017-04-08 21:54:37.618 CEST [20774] LOG: autovacuum launcher shutting down +2017-04-08 21:54:37.622 CEST [20771] LOG: shutting down +2017-04-08 21:54:37.644 CEST [20769] LOG: database system is shut down +2017-04-08 21:56:02.932 CEST [797] LOG: database system was shut down at 2017-04-08 21:54:37 CEST +2017-04-08 21:56:02.944 CEST [797] LOG: MultiXact member wraparound protections are now enabled +2017-04-08 21:56:02.946 CEST [780] LOG: database system is ready to accept connections +2017-04-08 21:56:02.947 CEST [802] LOG: autovacuum launcher started +2017-04-08 21:56:03.362 CEST [891] [unknown]@[unknown] LOG: incomplete startup packet +2017-05-27 14:07:53.007 UTC [32567] LOG: database system was shut down at 2017-05-27 14:07:52 UTC +2017-05-27 14:07:53.010 UTC [32567] LOG: MultiXact member wraparound protections are now enabled +2017-05-27 14:07:53.015 UTC [32566] LOG: database system is ready to accept connections +2017-05-27 14:07:53.016 UTC [32571] LOG: autovacuum launcher started +2017-05-27 14:07:53.463 UTC [32573] [unknown]@[unknown] LOG: incomplete startup packet +2017-05-27 14:08:13.661 UTC [1308] postgres@mydb FATAL: database "mydb" does not exist +2017-05-27 14:59:26.553 UTC [1994] postgres@mydb LOG: could not receive data from client: Connection reset by peer +2017-05-27 14:59:26.555 UTC [1989] postgres@mydb LOG: could not receive data from client: Connection reset by peer +2017-06-06 07:54:13.753 CEST [9110] LOG: received fast shutdown request +2017-06-06 07:54:13.753 CEST [9110] LOG: aborting any active transactions +2017-06-06 07:54:13.753 CEST [9115] LOG: autovacuum launcher shutting down +2017-06-06 07:54:13.755 CEST [9112] LOG: shutting down +2017-06-06 07:54:13.816 CEST [9110] LOG: database system is shut down +2017-06-06 07:55:39.725 CEST [12969] LOG: database system was shut down at 2017-06-06 07:54:13 CEST +2017-06-06 07:55:39.736 CEST [12969] LOG: MultiXact member wraparound protections are now enabled +2017-06-06 07:55:39.739 CEST [12968] LOG: database system is ready to accept connections +2017-06-06 07:55:39.739 CEST [12973] LOG: autovacuum launcher started +2017-06-06 07:55:40.155 CEST [12975] [unknown]@[unknown] LOG: incomplete startup packet +2017-06-06 07:55:40.156 CEST [12975] [unknown]@[unknown] LOG: incomplete startup packet +2017-06-10 19:37:30.681 CEST [17398] LOG: database system was shut down at 2017-06-10 19:37:29 CEST +2017-06-10 19:37:30.695 CEST [17398] LOG: MultiXact member wraparound protections are now enabled +2017-06-10 19:37:30.702 CEST [17397] LOG: database system is ready to accept connections +2017-06-10 19:37:30.702 CEST [17402] LOG: autovacuum launcher started +2017-06-10 19:37:31.104 CEST [17404] [unknown]@[unknown] LOG: incomplete startup packet +2017-06-10 20:27:55.911 CEST [17397] LOG: received fast shutdown request +2017-06-10 20:27:55.911 CEST [17397] LOG: aborting any active transactions +2017-06-10 20:27:55.911 CEST [17402] LOG: autovacuum launcher shutting down +2017-06-10 20:27:55.914 CEST [17399] LOG: shutting down +2017-06-10 20:27:55.973 CEST [17397] LOG: database system is shut down +2017-06-10 20:27:57.022 CEST [24490] LOG: database system was shut down at 2017-06-10 20:27:55 CEST +2017-06-10 20:27:57.032 CEST [24490] LOG: MultiXact member wraparound protections are now enabled +2017-06-10 20:27:57.035 CEST [24494] LOG: autovacuum launcher started +2017-06-10 20:27:57.035 CEST [24489] LOG: database system is ready to accept connections +2017-06-10 20:27:57.475 CEST [24496] [unknown]@[unknown] LOG: incomplete startup packet +2017-06-17 16:58:03.937 CEST [24489] LOG: received fast shutdown request +2017-06-17 16:58:03.937 CEST [24489] LOG: aborting any active transactions +2017-06-17 16:58:03.938 CEST [24494] LOG: autovacuum launcher shutting down +2017-06-17 16:58:03.940 CEST [24491] LOG: shutting down +2017-06-17 16:58:04.040 CEST [24489] LOG: database system is shut down diff --git a/filebeat/modules.d/postgresql.yml.disabled b/filebeat/modules.d/postgresql.yml.disabled new file mode 100644 index 000000000000..c82734a9570f --- /dev/null +++ b/filebeat/modules.d/postgresql.yml.disabled @@ -0,0 +1,8 @@ +- module: postgresql + # All logs + log: + enabled: true + + # Set custom paths for the log files. If left empty, + # Filebeat will choose the paths depending on your OS. + #var.paths: diff --git a/filebeat/tests/system/test_modules.py b/filebeat/tests/system/test_modules.py index a07fafab13f1..4b0f79bc59d2 100644 --- a/filebeat/tests/system/test_modules.py +++ b/filebeat/tests/system/test_modules.py @@ -64,6 +64,26 @@ def test_modules(self): test_file=test_file, cfgfile=cfgfile) + def _test_expected_events(self, module, test_file, res, objects): + with open(test_file + "-expected.json", "r") as f: + expected = json.load(f) + + if len(expected) > len(objects): + res = self.es.search(index=self.index_name, + body={"query": {"match_all": {}}, + "size": len(expected)}) + objects = [o["_source"] for o in res["hits"]["hits"]] + + assert len(expected) == res['hits']['total'], "expected {} but got {}".format(len(expected), len(objects)) + + for ev in expected: + found = False + for obj in objects: + if ev["_source"][module] == obj[module]: + found = True + break + assert found, "The following expected object was not found: {}".format(obj) + def run_on_file(self, module, fileset, test_file, cfgfile): print("Testing {}/{} on {}".format(module, fileset, test_file)) @@ -116,18 +136,7 @@ def run_on_file(self, module, fileset, test_file, cfgfile): self.assert_fields_are_documented(obj) if os.path.exists(test_file + "-expected.json"): - with open(test_file + "-expected.json", "r") as f: - expected = json.load(f) - assert len(expected) == len(objects), "expected {} but got {}".format(len(expected), len(objects)) - for ev in expected: - found = False - for obj in objects: - if ev["_source"][module] == obj[module]: - found = True - break - if not found: - raise Exception("The following expected object was" + - " not found: {}".format(obj)) + self._test_expected_events(module, test_file, res, objects) @unittest.skipIf(not INTEGRATION_TESTS or os.getenv("TESTING_ENVIRONMENT") == "2x",