kong-plugin-file-log-extended
Extension of the built-in Kong file-log plugin
Installation
luarocks install https://raw.githubusercontent.com/daxko/kong-plugin-file-log-extended/master/kong-plugin-file-log-extended-1.2-1.rockspec
Configuration
Configuring the plugin is straightforward, you can add it on top of an API (or Consumer) by executing the following request on your Kong server:
$ curl -X POST http://kong:8001/apis/{api}/plugins \
--data "name=file-log" \
--data "config.path=/tmp/file.log"
api
: The id
or name
of the API that this plugin configuration will target
You can also apply it for every API using the http://kong:8001/plugins/
endpoint. Read the Plugin Reference for more information.
form parameter | default | description |
---|---|---|
name |
The name of the plugin to use, in this case: file-log |
|
consumer_id optional |
The CONSUMER ID that this plugin configuration will target. This value can only be used if authentication has been enabled so that the system can identify the user making the request. | |
config.path |
The file path of the output log file. The plugin will create the file if it doesn't exist yet. Make sure Kong has write permissions to this file. | |
config.log_bodies |
false |
Whether the plugin should log request and response bodies |
Log Format
Every request will be logged separately in a JSON object separated by a new line \n
, with the following format:
{
"request": {
"method": "GET",
"uri": "/get",
"size": "75",
"request_uri": "http://httpbin.org:8000/get",
"querystring": {},
"headers": {
"accept": "*/*",
"host": "httpbin.org",
"user-agent": "curl/7.37.1"
},
"body": {
...
}
},
"response": {
"status": 200,
"size": "434",
"headers": {
"Content-Length": "197",
"via": "kong/0.3.0",
"Connection": "close",
"access-control-allow-credentials": "true",
"Content-Type": "application/json",
"server": "nginx",
"access-control-allow-origin": "*"
},
"body": {
...
}
},
"authenticated_entity": {
"consumer_id": "80f74eef-31b8-45d5-c525-ae532297ea8e",
"created_at": 1437643103000,
"id": "eaa330c0-4cff-47f5-c79e-b2e4f355207e",
"key": "2b64e2f0193851d4135a2e885cd08a65"
},
"api": {
"request_host": "test.com",
"upstream_url": "http://mockbin.org/",
"created_at": 1432855823000,
"name": "test.com",
"id": "fbaf95a1-cd04-4bf6-cb73-6cb3285fef58"
},
"latencies": {
"proxy": 1430,
"kong": 9,
"request": 1921
},
"started_at": 1433209822425,
"client_ip": "127.0.0.1"
}
A few considerations on the above JSON object:
request
contains properties about the request sent by the clientresponse
contains properties about the response sent to the clientapi
contains Kong properties about the specific API requestedauthenticated_entity
contains Kong properties about the authenticated consumer (if an authentication plugin has been enabled)latencies
contains some data about the latencies involved:proxy
is the time it took for the final service to process the requestkong
is the internal Kong latency that it took to run all the pluginsrequest
is the time elapsed between the first bytes were read from the client and after the last bytes were sent to the client. Useful for detecting slow clients.
Kong Process Errors
This logging plugin will only log HTTP request and response data. If you are looking for the Kong process error file (which is the nginx error file), then you can find it at the following path: {prefix}/logs/error.log