From d347b67e47dfae2fbd4bac4099e9ac131928894b Mon Sep 17 00:00:00 2001 From: Mario Castro Date: Thu, 6 Dec 2018 15:28:19 +0100 Subject: [PATCH 1/3] Update Filebeat Traefik module to handle mixed Common and Combined Log Format (#8768) * Added support for Common Log Format and Combined Log Format in Traefik which is the default format until now. * Added more log lines, including one in Common Log Format * Added user_identifier field which was hardcoded to '-' before * Added log test inputs where the user_name and user_identifier were set and not set. * Added duration field which was missing * Numeric fields added as string have been converted to long * Added request count field * Added two log lines more that covers issue #6111 * Make bytes_sent field of type long. Most Grok expressions are optional now * Added CHANGELOG entry (cherry picked from commit 0e9054ce5517688d3608f5a1c8cf7c5d802575d2) --- CHANGELOG.asciidoc | 1 + filebeat/docs/fields.asciidoc | 30 ++++ filebeat/include/fields.go | 2 +- .../module/traefik/access/_meta/fields.yml | 12 ++ .../traefik/access/config/traefik-access.yml | 2 +- .../traefik/access/ingest/pipeline.json | 11 +- filebeat/module/traefik/access/test/test.log | 7 +- .../access/test/test.log-expected.json | 168 ++++++++++++++++-- 8 files changed, 216 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 3c99a4177a3..e9aff86b683 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -90,6 +90,7 @@ https://github.com/elastic/beats/compare/v6.5.0...6.x[Check the HEAD diff] *Filebeat* - Added `detect_null_bytes` selector to detect null bytes from a io.reader. {pull}9210[9210] - Added `syslog_host` variable to HAProxy module to allow syslog listener to bind to configured host. {pull}9366[9366] +- Added support on Traefik for Common Log Format and Combined Log Format mixed which is the default Traefik format {issue}8015[8015] {issue}6111[6111] {pull}8768[8768]. - Allow to force CRI format parsing for better performance {pull}8424[8424] diff --git a/filebeat/docs/fields.asciidoc b/filebeat/docs/fields.asciidoc index b04e466a275..9752acf6c20 100644 --- a/filebeat/docs/fields.asciidoc +++ b/filebeat/docs/fields.asciidoc @@ -4991,6 +4991,16 @@ type: keyword Client IP address. +-- + +*`traefik.access.duration`*:: ++ +-- +type: long + +Duration of the access entry. + + -- *`traefik.access.user_name`*:: @@ -5001,6 +5011,16 @@ type: keyword The user name used when basic authentication is used. +-- + +*`traefik.access.user_identifier`*:: ++ +-- +type: keyword + +Is the RFC 1413 identity of the client + + -- *`traefik.access.method`*:: @@ -5092,6 +5112,16 @@ type: keyword The name of the physical device. +-- + +*`traefik.access.user_agent.build`*:: ++ +-- +type: keyword + +The build of the user agent. + + -- *`traefik.access.user_agent.major`*:: diff --git a/filebeat/include/fields.go b/filebeat/include/fields.go index e17f04b9a8b..429c913091d 100644 --- a/filebeat/include/fields.go +++ b/filebeat/include/fields.go @@ -31,5 +31,5 @@ func init() { // Asset returns asset data func Asset() string { - return "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" + return "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" } diff --git a/filebeat/module/traefik/access/_meta/fields.yml b/filebeat/module/traefik/access/_meta/fields.yml index a65e524b057..116ed67d42f 100644 --- a/filebeat/module/traefik/access/_meta/fields.yml +++ b/filebeat/module/traefik/access/_meta/fields.yml @@ -7,10 +7,18 @@ type: keyword description: > Client IP address. + - name: duration + type: long + description: > + Duration of the access entry. - name: user_name type: keyword description: > The user name used when basic authentication is used. + - name: user_identifier + type: keyword + description: > + Is the RFC 1413 identity of the client - name: method type: keyword example: GET @@ -52,6 +60,10 @@ type: keyword description: > The name of the physical device. + - name: build + type: keyword + description: > + The build of the user agent. - name: major type: long description: > diff --git a/filebeat/module/traefik/access/config/traefik-access.yml b/filebeat/module/traefik/access/config/traefik-access.yml index 2df383f52fd..1d20f94a29f 100644 --- a/filebeat/module/traefik/access/config/traefik-access.yml +++ b/filebeat/module/traefik/access/config/traefik-access.yml @@ -7,7 +7,7 @@ exclude_files: [".gz$"] processors: - dissect: - tokenizer: '%{traefik.access.remote_ip} - %{traefik.access.user_name} [%{traefik.access.time}] + tokenizer: '%{traefik.access.remote_ip} %{traefik.access.user_identifier} %{traefik.access.user_name} [%{traefik.access.time}] "%{traefik.access.method} %{traefik.access.url} HTTP/%{traefik.access.http_version}" %{traefik.access.response_code} %{traefik.access.message}' diff --git a/filebeat/module/traefik/access/ingest/pipeline.json b/filebeat/module/traefik/access/ingest/pipeline.json index d15899fc98a..955cafc1af8 100644 --- a/filebeat/module/traefik/access/ingest/pipeline.json +++ b/filebeat/module/traefik/access/ingest/pipeline.json @@ -5,19 +5,21 @@ "grok": { "field": "traefik.access.message", "patterns": [ - "(?:%{NUMBER:traefik.access.body_sent.bytes}|-)( \"%{DATA:traefik.access.referrer}\")?( \"%{DATA:traefik.access.agent}\")?(?:%{NUMBER:traefik.access.request_count}|-)?( \"%{DATA:traefik.access.frontend_name}\")?( \"%{DATA:traefik.access.backend_url}\")?" + "(?:%{NUMBER:traefik.access.body_sent.bytes:int}|-)( (?:\"%{DATA:traefik.access.referrer}\"|-)?( (?:\"%{DATA:traefik.access.agent}\"|-)?)?( (?:%{NUMBER:traefik.access.request_count:int}|-)?)?( (?:\"%{DATA:traefik.access.frontend_name}\"|-)?)?( \"%{DATA:traefik.access.backend_url}\")?( %{NUMBER:traefik.access.duration:int}ms)?)?" ], "ignore_missing": true } }, { "remove": { - "field": "message" + "field": "message", + "ignore_missing": true } }, { "remove": { - "field": "traefik.access.message" + "field": "traefik.access.message", + "ignore_missing": true } }, { @@ -50,7 +52,8 @@ { "rename": { "field": "traefik.access.agent", - "target_field": "traefik.access.user_agent.original" + "target_field": "traefik.access.user_agent.original", + "ignore_failure": true } }, { diff --git a/filebeat/module/traefik/access/test/test.log b/filebeat/module/traefik/access/test/test.log index 742546ff51a..a271309d214 100644 --- a/filebeat/module/traefik/access/test/test.log +++ b/filebeat/module/traefik/access/test/test.log @@ -1,2 +1,7 @@ 192.168.33.1 - - [02/Oct/2017:20:22:07 +0000] "GET /ui/favicons/favicon-16x16.png HTTP/1.1" 304 0 "http://example.com/login" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36" 262 "Host-host-1" "http://172.19.0.3:5601" 2ms -85.181.35.98 - - [02/Oct/2017:20:22:08 +0000] "GET /ui/favicons/favicon.ico HTTP/1.1" 304 0 "http://example.com/login" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36" 271 "Host-host1 "http://172.19.0.3:5601" 3ms +85.181.35.98 - - [02/Oct/2017:20:22:08 +0000] "GET /ui/favicons/favicon.ico HTTP/1.1" 304 0 "http://example.com/login" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36" 271 "Host-host1" "http://172.19.0.3:5601" 3ms +70.29.80.15 - - [28/Feb/2018:17:30:33 +0000] "GET /en/ HTTP/2.0" 200 2814 - "Mozilla/5.0 (iPhone; CPU iPhone OS 11_2_5 like Mac OS X) AppleWebKit/604.5.6 (KHTML, like Gecko) Version/11.0 Mobile/15D60 Safari/604.1" 13 "Host-host1-com-0" "http://172.19.0.6:14008" 247ms +::1 - - [29/Nov/2018:15:03:51 +0000] "GET / HTTP/1.1" 404 19 "-" "curl/7.62.0" 10 "backend not found" "/" 0ms +94.254.131.115 - - [19/Jan/2018:10:01:02 +0000] "GET /assets/52f8f2e711d235d76044799e/owners?oauth_token=ya29.GltABOXd_gtG-XVvYX2YhxXJiXVvbHRMXn9fbzc_mDfl2rDhqK0CrAlwuwwRWnNnEaMDwkmyI7-QGbRSB0Hzje2cc__FjTQ1iuiYTSIBaIPfxSWip5jx6zqvsVVo HTTP/1.1" 200 85 - "Android" 623112 "Host-api-wearerealitygames-com-2" "http://172.25.0.9:4140" 13ms +89.64.35.193 - - [19/Jan/2018:10:01:02 +0000] "GET /marketplace/tax?oauth_token=ya29.Gl0fBWnrJ7DcEU-tN-O3Vxn2XZVaz2I-hFTjP1JQzhYFVT-SKtlmo9hSzrx3n82LUwUxJ1s5lmU8U3Mc9gA_aCxBk49ShYEwvmYOWxJJyldDIJ7hY4us4LoiSY1OqAM HTTP/1.1" 200 150 - "Android" 623114 "Host-api-wearerealitygames-com-2" "http://172.25.0.6:4140" 8ms +127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 diff --git a/filebeat/module/traefik/access/test/test.log-expected.json b/filebeat/module/traefik/access/test/test.log-expected.json index 27d3066994d..9cbe8a78564 100644 --- a/filebeat/module/traefik/access/test/test.log-expected.json +++ b/filebeat/module/traefik/access/test/test.log-expected.json @@ -1,16 +1,19 @@ [ { "@timestamp": "2017-10-02T20:22:07.000Z", - "fileset.module": "traefik", - "fileset.name": "access", + "event.dataset": "access", + "event.module": "traefik", "input.type": "log", - "offset": 0, - "prospector.type": "log", - "traefik.access.body_sent.bytes": "0", + "log.offset": 0, + "traefik.access.backend_url": "http://172.19.0.3:5601", + "traefik.access.body_sent.bytes": 0, + "traefik.access.duration": 2, + "traefik.access.frontend_name": "Host-host-1", "traefik.access.http_version": "1.1", "traefik.access.method": "GET", "traefik.access.referrer": "http://example.com/login", "traefik.access.remote_ip": "192.168.33.1", + "traefik.access.request_count": 262, "traefik.access.response_code": "304", "traefik.access.url": "/ui/favicons/favicon-16x16.png", "traefik.access.user_agent.device": "Other", @@ -21,16 +24,19 @@ "traefik.access.user_agent.os": "Linux", "traefik.access.user_agent.os_name": "Linux", "traefik.access.user_agent.patch": "3163", + "traefik.access.user_identifier": "-", "traefik.access.user_name": "-" }, { "@timestamp": "2017-10-02T20:22:08.000Z", - "fileset.module": "traefik", - "fileset.name": "access", + "event.dataset": "access", + "event.module": "traefik", "input.type": "log", - "offset": 280, - "prospector.type": "log", - "traefik.access.body_sent.bytes": "0", + "log.offset": 280, + "traefik.access.backend_url": "http://172.19.0.3:5601", + "traefik.access.body_sent.bytes": 0, + "traefik.access.duration": 3, + "traefik.access.frontend_name": "Host-host1", "traefik.access.geoip.city_name": "Berlin", "traefik.access.geoip.continent_name": "Europe", "traefik.access.geoip.country_iso_code": "DE", @@ -42,6 +48,7 @@ "traefik.access.method": "GET", "traefik.access.referrer": "http://example.com/login", "traefik.access.remote_ip": "85.181.35.98", + "traefik.access.request_count": 271, "traefik.access.response_code": "304", "traefik.access.url": "/ui/favicons/favicon.ico", "traefik.access.user_agent.device": "Other", @@ -52,6 +59,147 @@ "traefik.access.user_agent.os": "Linux", "traefik.access.user_agent.os_name": "Linux", "traefik.access.user_agent.patch": "3163", + "traefik.access.user_identifier": "-", "traefik.access.user_name": "-" + }, + { + "@timestamp": "2018-02-28T17:30:33.000Z", + "event.dataset": "access", + "event.module": "traefik", + "input.type": "log", + "log.offset": 553, + "traefik.access.backend_url": "http://172.19.0.6:14008", + "traefik.access.body_sent.bytes": 2814, + "traefik.access.duration": 247, + "traefik.access.frontend_name": "Host-host1-com-0", + "traefik.access.geoip.city_name": "Ottawa", + "traefik.access.geoip.continent_name": "North America", + "traefik.access.geoip.country_iso_code": "CA", + "traefik.access.geoip.location.lat": 45.2691, + "traefik.access.geoip.location.lon": -75.7518, + "traefik.access.geoip.region_iso_code": "CA-ON", + "traefik.access.geoip.region_name": "Ontario", + "traefik.access.http_version": "2.0", + "traefik.access.method": "GET", + "traefik.access.remote_ip": "70.29.80.15", + "traefik.access.request_count": 13, + "traefik.access.response_code": "200", + "traefik.access.url": "/en/", + "traefik.access.user_agent.device": "iPhone", + "traefik.access.user_agent.major": "11", + "traefik.access.user_agent.minor": "0", + "traefik.access.user_agent.name": "Mobile Safari", + "traefik.access.user_agent.original": "Mozilla/5.0 (iPhone; CPU iPhone OS 11_2_5 like Mac OS X) AppleWebKit/604.5.6 (KHTML, like Gecko) Version/11.0 Mobile/15D60 Safari/604.1", + "traefik.access.user_agent.os": "iOS 11.2.5", + "traefik.access.user_agent.os_major": "11", + "traefik.access.user_agent.os_minor": "2", + "traefik.access.user_agent.os_name": "iOS", + "traefik.access.user_identifier": "-", + "traefik.access.user_name": "-" + }, + { + "@timestamp": "2018-11-29T15:03:51.000Z", + "event.dataset": "access", + "event.module": "traefik", + "input.type": "log", + "log.offset": 821, + "traefik.access.backend_url": "/", + "traefik.access.body_sent.bytes": 19, + "traefik.access.duration": 0, + "traefik.access.frontend_name": "backend not found", + "traefik.access.http_version": "1.1", + "traefik.access.method": "GET", + "traefik.access.referrer": "-", + "traefik.access.remote_ip": "::1", + "traefik.access.request_count": 10, + "traefik.access.response_code": "404", + "traefik.access.url": "/", + "traefik.access.user_agent.device": "Other", + "traefik.access.user_agent.major": "7", + "traefik.access.user_agent.minor": "62", + "traefik.access.user_agent.name": "curl", + "traefik.access.user_agent.original": "curl/7.62.0", + "traefik.access.user_agent.os": "Other", + "traefik.access.user_agent.os_name": "Other", + "traefik.access.user_agent.patch": "0", + "traefik.access.user_identifier": "-", + "traefik.access.user_name": "-" + }, + { + "@timestamp": "2018-01-19T10:01:02.000Z", + "event.dataset": "access", + "event.module": "traefik", + "input.type": "log", + "log.offset": 931, + "traefik.access.backend_url": "http://172.25.0.9:4140", + "traefik.access.body_sent.bytes": 85, + "traefik.access.duration": 13, + "traefik.access.frontend_name": "Host-api-wearerealitygames-com-2", + "traefik.access.geoip.city_name": "Warsaw", + "traefik.access.geoip.continent_name": "Europe", + "traefik.access.geoip.country_iso_code": "PL", + "traefik.access.geoip.location.lat": 52.25, + "traefik.access.geoip.location.lon": 21.0, + "traefik.access.geoip.region_iso_code": "PL-MZ", + "traefik.access.geoip.region_name": "Mazovia", + "traefik.access.http_version": "1.1", + "traefik.access.method": "GET", + "traefik.access.remote_ip": "94.254.131.115", + "traefik.access.request_count": 623112, + "traefik.access.response_code": "200", + "traefik.access.url": "/assets/52f8f2e711d235d76044799e/owners?oauth_token=ya29.GltABOXd_gtG-XVvYX2YhxXJiXVvbHRMXn9fbzc_mDfl2rDhqK0CrAlwuwwRWnNnEaMDwkmyI7-QGbRSB0Hzje2cc__FjTQ1iuiYTSIBaIPfxSWip5jx6zqvsVVo", + "traefik.access.user_agent.device": "Generic Smartphone", + "traefik.access.user_agent.name": "Other", + "traefik.access.user_agent.original": "Android", + "traefik.access.user_agent.os": "Android", + "traefik.access.user_agent.os_name": "Android", + "traefik.access.user_identifier": "-", + "traefik.access.user_name": "-" + }, + { + "@timestamp": "2018-01-19T10:01:02.000Z", + "event.dataset": "access", + "event.module": "traefik", + "input.type": "log", + "log.offset": 1267, + "traefik.access.backend_url": "http://172.25.0.6:4140", + "traefik.access.body_sent.bytes": 150, + "traefik.access.duration": 8, + "traefik.access.frontend_name": "Host-api-wearerealitygames-com-2", + "traefik.access.geoip.city_name": "Katowice", + "traefik.access.geoip.continent_name": "Europe", + "traefik.access.geoip.country_iso_code": "PL", + "traefik.access.geoip.location.lat": 50.2194, + "traefik.access.geoip.location.lon": 18.9737, + "traefik.access.geoip.region_iso_code": "PL-SL", + "traefik.access.geoip.region_name": "Silesia", + "traefik.access.http_version": "1.1", + "traefik.access.method": "GET", + "traefik.access.remote_ip": "89.64.35.193", + "traefik.access.request_count": 623114, + "traefik.access.response_code": "200", + "traefik.access.url": "/marketplace/tax?oauth_token=ya29.Gl0fBWnrJ7DcEU-tN-O3Vxn2XZVaz2I-hFTjP1JQzhYFVT-SKtlmo9hSzrx3n82LUwUxJ1s5lmU8U3Mc9gA_aCxBk49ShYEwvmYOWxJJyldDIJ7hY4us4LoiSY1OqAM", + "traefik.access.user_agent.device": "Generic Smartphone", + "traefik.access.user_agent.name": "Other", + "traefik.access.user_agent.original": "Android", + "traefik.access.user_agent.os": "Android", + "traefik.access.user_agent.os_name": "Android", + "traefik.access.user_identifier": "-", + "traefik.access.user_name": "-" + }, + { + "@timestamp": "2000-10-10T20:55:36.000Z", + "event.dataset": "access", + "event.module": "traefik", + "input.type": "log", + "log.offset": 1581, + "traefik.access.body_sent.bytes": 2326, + "traefik.access.http_version": "1.0", + "traefik.access.method": "GET", + "traefik.access.remote_ip": "127.0.0.1", + "traefik.access.response_code": "200", + "traefik.access.url": "/apache_pb.gif", + "traefik.access.user_identifier": "-", + "traefik.access.user_name": "frank" } ] \ No newline at end of file From 862f364865c8e7ab72fc4aec4b22ac9de51bb99f Mon Sep 17 00:00:00 2001 From: sayden Date: Thu, 6 Dec 2018 17:52:52 +0100 Subject: [PATCH 2/3] Updated fields.go file --- filebeat/include/fields.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/filebeat/include/fields.go b/filebeat/include/fields.go index 429c913091d..3ab067c08de 100644 --- a/filebeat/include/fields.go +++ b/filebeat/include/fields.go @@ -31,5 +31,5 @@ func init() { // Asset returns asset data func Asset() string { - return "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" + return "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" } From da10f7bb934019c30f523a4a90f6a9278168523e Mon Sep 17 00:00:00 2001 From: sayden Date: Fri, 7 Dec 2018 11:00:53 +0100 Subject: [PATCH 3/3] Upload pre-ECS generated JSON expected file which differs from master --- .../access/test/test.log-expected.json | 49 +++++++++++-------- 1 file changed, 28 insertions(+), 21 deletions(-) diff --git a/filebeat/module/traefik/access/test/test.log-expected.json b/filebeat/module/traefik/access/test/test.log-expected.json index 9cbe8a78564..64db2480cf2 100644 --- a/filebeat/module/traefik/access/test/test.log-expected.json +++ b/filebeat/module/traefik/access/test/test.log-expected.json @@ -1,10 +1,11 @@ [ { "@timestamp": "2017-10-02T20:22:07.000Z", - "event.dataset": "access", - "event.module": "traefik", + "fileset.module": "traefik", + "fileset.name": "access", "input.type": "log", - "log.offset": 0, + "offset": 0, + "prospector.type": "log", "traefik.access.backend_url": "http://172.19.0.3:5601", "traefik.access.body_sent.bytes": 0, "traefik.access.duration": 2, @@ -29,10 +30,11 @@ }, { "@timestamp": "2017-10-02T20:22:08.000Z", - "event.dataset": "access", - "event.module": "traefik", + "fileset.module": "traefik", + "fileset.name": "access", "input.type": "log", - "log.offset": 280, + "offset": 280, + "prospector.type": "log", "traefik.access.backend_url": "http://172.19.0.3:5601", "traefik.access.body_sent.bytes": 0, "traefik.access.duration": 3, @@ -64,10 +66,11 @@ }, { "@timestamp": "2018-02-28T17:30:33.000Z", - "event.dataset": "access", - "event.module": "traefik", + "fileset.module": "traefik", + "fileset.name": "access", "input.type": "log", - "log.offset": 553, + "offset": 553, + "prospector.type": "log", "traefik.access.backend_url": "http://172.19.0.6:14008", "traefik.access.body_sent.bytes": 2814, "traefik.access.duration": 247, @@ -99,10 +102,11 @@ }, { "@timestamp": "2018-11-29T15:03:51.000Z", - "event.dataset": "access", - "event.module": "traefik", + "fileset.module": "traefik", + "fileset.name": "access", "input.type": "log", - "log.offset": 821, + "offset": 821, + "prospector.type": "log", "traefik.access.backend_url": "/", "traefik.access.body_sent.bytes": 19, "traefik.access.duration": 0, @@ -127,10 +131,11 @@ }, { "@timestamp": "2018-01-19T10:01:02.000Z", - "event.dataset": "access", - "event.module": "traefik", + "fileset.module": "traefik", + "fileset.name": "access", "input.type": "log", - "log.offset": 931, + "offset": 931, + "prospector.type": "log", "traefik.access.backend_url": "http://172.25.0.9:4140", "traefik.access.body_sent.bytes": 85, "traefik.access.duration": 13, @@ -158,10 +163,11 @@ }, { "@timestamp": "2018-01-19T10:01:02.000Z", - "event.dataset": "access", - "event.module": "traefik", + "fileset.module": "traefik", + "fileset.name": "access", "input.type": "log", - "log.offset": 1267, + "offset": 1267, + "prospector.type": "log", "traefik.access.backend_url": "http://172.25.0.6:4140", "traefik.access.body_sent.bytes": 150, "traefik.access.duration": 8, @@ -189,10 +195,11 @@ }, { "@timestamp": "2000-10-10T20:55:36.000Z", - "event.dataset": "access", - "event.module": "traefik", + "fileset.module": "traefik", + "fileset.name": "access", "input.type": "log", - "log.offset": 1581, + "offset": 1581, + "prospector.type": "log", "traefik.access.body_sent.bytes": 2326, "traefik.access.http_version": "1.0", "traefik.access.method": "GET",