From d347b67e47dfae2fbd4bac4099e9ac131928894b Mon Sep 17 00:00:00 2001 From: Mario Castro Date: Thu, 6 Dec 2018 15:28:19 +0100 Subject: [PATCH] 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