Tuning Tyk’s Garbage Collector
section.
Also note that it is not Tyk or Golang specific.
The problem described above will happen with any webserver on high scale.
So in general if you see a lot of “context” errors on high load, use it as a sign that the process is really struggling with the given load, and you need scale it up, either vertically or horizontally.
meta_data
key.
Solution
The user will need to add the key-value pair meta_data: {}
to their key as per the Tyk Gateway REST API Documentation.
pprof
.
The Tyk Gateway can generate various profiles in the pprof
supported format, which you can analyze by yourself, using the go tool pprof
command, or you can send the profiles to our support team for analysis.
There are two way to get profiles:
--memprofile
- memory profile, generates tyk.mprof
file--cpuprofile
- CPU usage profile, generates tyk.prof
file--blockprofile
- Blocking profile, generates tyk.blockprof
file--mutexprofile
- Mutex profile, generates tyk.mutexprof
file--httpprofile
flag, or set enable_http_profiler
to true
in tyk.conf, which will run a special /debug/pprof/
public web page, containing dynamic information about the running process, and where you can download various profiles:
stderr
and stdout
. In a typical installation, these will be handled or redirected by the service manager running the process, and depending on the Linux distribution, will either be output to /var/log/
or /var/log/upstart
.
Tyk will try to output structured logs, and so will include context data around request errors where possible.
How do I increase Logging Verbosity?
You can set the logging verbosity in two ways:
tyk.conf
config fileTYK_LOGLEVEL
.
By default, the setting is info
. You also have the following options:
debug
warn
error
tyk.conf
by adding the following:
info
. You also have the following options:
debug
warn
error
5.0.8
or 5.2.3
you can inspect detailed build information by running tyk version
. The information also includes the Go version it was built with, the operating system and architecture.
tyk --version
prints out the release version for your Gateway binary.
/opt/tyk-gateway/tyk
by default. If your binary is not available in your PATH
environment, invoke it from there.
Profile Information
You can provide various profile information for us in pprof format. See Gateway Profiling for more details.
authorization
header authentication, and assumes that the Gateway is located at 127.0.0.1:8080
and the Tyk secret is 352d20ee67be67f6340b4c0605b044b7
- update these as necessary to match your environment.
To import a key called mycustomkey
, save the JSON contents as token.json
(see example below), then run the following Curl command:
The Example token.json
file
redis.conf
into the container to customize the configuration, but again, we don’t recommend it.
Log Warning:
DRL not ready, skipping this notification
Cause
There can be a couple of reasons for seeing this error about the Distributed Rate Limiter:
SIGUSR2
signal to the process, for example:
/etc/ssl/certs
folder.
Docker:
tyk.conf
, but you can modify the actual initialisation files to specify the log location, we supply initialisation scripts for SysV
, systemd
and upstart
.
/var/log
or /var/log/upstart
.
Code | Text | Recommended action |
---|---|---|
400 | Access to this API has been disallowed | Check if the key has access to the right API version or definition. Check if the authentication key used is still valid. Check if the certificate used for authentication is present. Check if the authentication key is created and present in the database. You can use Gateway Keys APIs for confirmation. Check if API definition is using JWT auth and if auth header key and or value is empty or missing. |
400 | API is not OAuth2 | Check if OAuth2 is integrated into the API by auth tokens or using Tyk OAuth flow. |
400 | Attempted access with malformed header | Values not in basic auth format or auth data not encoded correctly. |
400 | Authorization Field Missing | Check if the authorization field is missing. Check if the OAuth authorization field is missing. |
400 | Batch request creation failed, request structure malformed | Attempted to construct unsafe requests. Check if request structure is in correct format. |
400 | Batch request malformed | Attempted to decode request but failed. Check if request structure is in correct format. |
400 | Bearer token malformed | Check if the OAuth authorization field is malformed. |
400 | Body do not contain password or username | Check if body contains both password and username. If not, then insert the correct login credentials. |
400 | Cannot parse form. Form malformed | Attempted to revoke token but could not parse the request form. Check if the request form is malformed. |
400 | Content length is not a valid Integer | Check the value provided in the Content-Length field in the header. |
400 | Couldn’t decode instruction | Attempted to decode policy record from an update request. Check if the request body is malformed and is valid. |
400 | Couldn’t decode OAS object | Attempted to import OAS Tyk API but failed to retrieve object from request. Check if request body is valid. |
400 | Error API not migrated | The supplied API definition is in OAS format. Please use the Tyk native format for this API. |
400 | Failed to create key, keys must have at least one Access Rights record set | Attempted to create a key with master keys disabled in configurations. |
400 | Failed to remove the key | Failed to delete requested key. Make sure orgID and keyname are correct. |
400 | Health checks are not enabled for this node | Enable health checks for the gateway. |
400 | Key not authorized | Check if OAuth key is present. Check if the OAuth client is not deleted. Check if there is a valid policy associated with the key/token used. Check if the policy associated with the key is not expired or if the owner is valid. Check if JWT default policies exist. |
400 | Key cannot be used without a certificate | Check if key contains a certificate. If not, add a certificate to the key. |
400 | Key must be used with an existent certificate | Check if the certificate on the key exist within the system. |
400 | Missing parameter api_id | Check if API_ID is missing. If so, fill in the api_ID field with the correct value. |
400 | OAuth client doesn’t exist | Check if API_ID is missing. If so, fill in the api_ID field with the correct value. |
400 | OAuth client ID is empty | Check if OAuth client ID field is empty. If so, fill in with the correct client ID value. |
400 | OAuth is not enabled for this API | Check if OAuth is enabled for the API. |
400 | Policy access rights doesn’t contain API this OAuth client belongs to | Check if the policy rights contains the proper api_ID for the API. |
400 | Request apiID does not match that in Definition! For Update operations these must match | Attempted a PUT operation using different api_ID’s. Make sure the api_ID’s are the same. |
400 | Request field is missing | Check if the request field is missing. If so, fill in the request field. |
400 | Request ID does not match that in policy! For Update operations these must match | Attempted a PUT operation using different policy ID’s. Make sure both policy ID’s are the same. |
400 | Request is too large | The request body exceeds the configured size limit for the API endpoint. |
400 | Request with empty authorization header | Fill in authorization header for the request. |
400 | Spec field is missing | Attempted to trace a request but spec field is missing. Fill in the spec field. |
400 | The provided request is empty | Check if request in the GraphQL playground is correct. |
401 | Authorization Field Missing | Check if the authorization field is missing. Check if the OAuth authorization field is missing. |
401 | Header missing | Check if header field exist when making request. |
401 | Key has expired, please renew | Current key has expired. Please request for a new key. |
401 | OAuth Client Id Empty | Fill in the Client ID field. |
401 | OAuth Client Secret Empty | Client secret is empty. Insert the required client secret. |
401 | Request signature verification failed | Possible empty signature header or validation failed. |
401 | Wrong Password | Enter the correct password. Contact an administrator if further help is needed. |
403 | Access to this API has been disallowed | Request access to the API from an administrator. |
403 | Access to this resource has been disallowed | Request access to the resource from an administrator. |
403 | Attempted access with non-existent cert | Check if authentication certificate exist. |
403 | Attempted administrative access with invalid or missing key! | Check if there is correct security credentials of the Tyk API. |
403 | Certificate with SHA256 $certID not allowed | Certificate ID is nil or invalid. Please have a valid certificate. |
403 | Client authorize request in with invalid redirect URI | Check if Auth Redirect URI is malformed or use a valid redirect URI. |
403 | Client TLS certificate is required | Check if theres multiple APIs on the same domain with no certificates. |
403 | Certificate has expired | Please update the certificate with one that is currently valid and has not expired. |
403 | Depth limit exceeded | Exceeded the depth limit that has been applied. Check the key/policy global limits and quota section or the API limits and quota section. |
403 | Empty Signature Header | Fill in a signature for auth keys. |
403 | Empty Signature Path | Check if path for signature is empty. |
403 | Failed with 403 after $x-amount of requests over quota | Process request off thread with quota or process request live with rate limit or process request off thread with rate limit. |
403 | Found an empty user ID in predefined base field claim user_id | Request with valid JWT/RSA or signature/empty user_id/sub claim, or signature/no base field or no sub or no id claim. |
403 | GraphQL Depth Limit Exceeded | Exceeded the depth limit that has been applied. Check the key/policy global limits and quota section or the API limits and quota section. |
403 | Invalid Token | Check if JWT token is valid and not malformed. |
403 | Invalid Signature Header | Insert correct signature header value. |
403 | Invalid Signature Path | Make sure signature path is correct and valid. |
403 | Key is not active, please renew | Create a new key. |
403 | Key not authorised: Unexpected signing method | Invalid JWT signature, JWT access with non-existent key. |
403 | Key not authorised: OAuth client access was revoked | Check if OAuth client exists. |
403 | Key not authorised: no matching policy | Request with invalid policy in JWT, or checking session and identity for valid key for openID. |
403 | No matching policy found in scope claim | Check if scope is wrong for JWT request. |
403 | Quota Exceeded | Quota limit has been exceeded. Check quota limit settings. |
403 | Run Go-plugin auth failed | Used an invalid token for authentication. Please use a valid token to authenticate. |
403 | This API version does not seem to exist | Attempted to extract version data from a request. Version does not exist when loading version data. |
403 | This organisation access has been disabled, please contact your API administrator | Organisation session is inactive. Contact API administrator. |
403 | This organisation quota has been exceeded, please contact your API administrator | Organisation’s quota limit has been exceeded. Contact API administrator. |
403 | This organisation rate limit has been exceeded, please contact your API administrator | Organisation’s rate limit has been exceeded. Contact API administrator. |
403 | TLS: bad certificate | Check if the certificates exist and have valid ID’s. |
403 | Version Information not found | Checking version data from request. No default version has been set or found. |
404 | API doesn’t exist | Checking if API exists when rotating OauthClient or if ApiSpec value is nil. |
404 | API for this refresh token not found | When invalidating OAuth refresh or if ApiSpec value is nil. |
404 | API ID not found | Check if API ID exists in the Gateway. |
404 | API not found | Check if API exists. |
404 | Bundle not found | No bundles found within the Gateway. |
404 | Certificate with given SHA256 fingerprint not found | No certificates exist in the certificate manager list. |
404 | Couldn’t find organisation session in active API list | Attempted to update session object. However, spec for organisation is nil. Make sure to have the correct organisation ID. |
404 | Error getting oauth client | See if OAuth client id exists in the system. |
404 | Key not found | Failed to update hashed key. |
404 | No such organisation found in Active API list | Make sure organisation ID is correct. |
404 | OAuth client doesn’t exist | Attempted to retrieve APIs for OAuth or client ID. Client ID was not found |
404 | OAuth client ID not found | Check if OAuth client ID exist in storage. Check if OAuth tokens or client details are valid. Failed to retrieve OAuth client list. Failed to revoke OAuth client list. |
404 | Org not found | Could not retrieve record of org ID or failed to delete org keys. Spec for org is nil, make sure orgID value is correct |
404 | Policy not found | Could not retrieve policy data. Make sure policy ID is correct. |
404 | There is no such key found | Check if key is already deleted. Check if hashed key has been deleted already. |
404 | Version Does Not Exist | Check if version path is filled and correct. |
405 | Malformed request body | Attempted a POST request with a malformed request body. Make sure the request body is valid. |
405 | Method not supported | Attempting to add a method that is not supported by our system. |
411 | Content length is required for this request | You need to provide the Content-Length field in the request header. |
429 | API Rate Limit Exceeded | Check the rate of the requests on the API level. Check the rate of requests on the API key (Auth token, certs, etc). |
499 | Client closed request | Check if the client closed the TCP connection |
500 | Cache invalidation failed | Attempted to scan or delete the cache, which failed, causing cache invalidation to fail. |
500 | Can’t detect loop target | Verify target API exsists. Check if URL scheme is “tyk://”. Refer to 404 errors |
500 | Could not write key data | Failed to update hashed key. Make sure key name is valid. |
500 | Delete failed | Attempted to delete policy with invalid filename. Attempted to delete API with invalid filename. Attempted to delete OAuth Client with incorrect OAuth client ID. |
500 | Due to enabled service policy source, please use the Dashboard API | Attempted to add/update a policy and rejected due to Policysource=service. Please use the Dashboard API. |
500 | Due to enabled use_dp_app_configs, please use Dashboard API | When trying to import OAS, when Dashboard config is set to true. Please use Dashboard API. |
500 | Error writing to key store | Attempted to update session with a new session. Make sure orgID is correct. |
500 | Failed to create file | When add/update policy, failed to create a file. Make sure the policy file path is correct |
500 | Failed to create key | Check if key already exist or if the key exists with a given certificate. Ensure security settings are correct |
500 | Failure in storing client data | Attempted to store data when creating a new OAuth client but failed. Make sure the storageID, or orgID is correct and valid. |
500 | Get client tokens failed | Failed to retrieve OAuth tokens. Make sure client ID is valid or keyName is valid. |
500 | Marshalling failed | Attempted to import printDef but failed. Marshalling of policy failed. Unmarshal object into the file failed when writing to file. |
500 | There was a problem proxying the request | Check if the target URL is unavailable to the Gateway. |
500 | Unmarshalling failed | Key creation failed. Failed to create OAuth client. Failed to update OAuth client. |
500 | Unsupported schema, unable to validate | Check if GraphQL schema is valid. |
500 | Upstreaming host lookup failed | Check if the target URL is not resolvable in DNS. |
503 | Service temporarily unavailable | Check if a circuit breaker middleware is enforced. |
503 | All hosts are down | Attempted to reverse proxy a URL rewrite to a scheme and host, but all the hosts in hostlist are down. |
504 | Upstream service reached hard timeout | Timeout awaiting response headers during a request round trip. |
507 | Status Insufficient Storage | Attempted to update an API through a POST request but failed to due insufficient storage. |
tyk.conf
has:
enable_analytics
set to true
. This sets the Gateway to record analytics data.analytics_config.storage_expiration_time
set to a value larger than the Pump’s purge_delay
. This allows the analytics data to exist long enough in Redis to be processed by the Pump.analytics_config.ignored_ips
set to []
. This ensures the Gateway will create analytics for requests from any IP address.enforce_org_data_age
set to false
. This prevents the data from being removed based on it reaching a certain age.pump.conf
has:
analytics_storage_type
set to redis
.analytics_storage_config
settings are set to the same Redis instance that the Gateway is connected to.tyk_analytics.conf
has:
mongo_url
set to the same MongoDB instance that the Pump is connected to.sink.conf
has:
analytics.mongo_url
set to the same MongoDB instance that the Dashboard is connected to.forward_analytics_to_pump
set to the correct value for your solution. false
if MDCB is directly recording the analytics itself, true
if it is forwarding analytics data for the Pump to process. For the forwarding scenario, set the storage
settings to the same Redis instance that the Pump is connected to.Host
header in the request by the browser. If this
conflicts with the hostname of the dashboard UI the dashboard service will not know whether to serve the dashboard or
developer portal.
Solution
Firstly, we will need to disable hostnames from within the Dashboard configuration file in order to get the dashboard
service started again.
Change host_config.enable_host_names
from true
to false
portal.tyk-dashboard.com
Edit the Dashboard configuration file to re-enable host names.
Restart the Dashboard service.
DashboardCredential
setting has not been populated with the user’s Tyk Dashboard API Access Credentials.
You can check this from:
DashboardCredential
setting is setDashboardCredential
setting is empty ("DashboardCredential": ""
), you can manually add the user’s Tyk Dashboard API Access Credentials by performing the following:
DashboardCredential
setting. For example - "DashboardCredential": "887dad0de40b4ff05b6b50739b311099"
Key object validation failed, most likely malformed input
when calling the Dashboard API.
Cause
Issue caused by invalid character passed in the JSON body of the request.
Solution
Validate the JSON using JSON validator.
Further, please see this community forum post for additional guidance.
NOTE: Port 5000 is no longer required from v2.9.3.Description You see a lot of
net::ERR_CONNECTION_REFUSED
errors in the browser console.
Cause
The Dashboard is trying to connect to https://<Your Dashboard URL>:5000/socket.io/?chan=ui_notifications
and you don’t have port 5000 open.
Solution
Port 5000 is used for WebSocket connections for real-time Dashboard notifications. You can change the port by changing the default notifications_listen_port
in your tyk_analytics.conf
. Otherwise you can ignore the errors in the browser console.
./bootstrap.sh new-tyk-instance.com:3000
bootstrap.sh
as it is very specific once you set up a Dashboard service with hostname set
mongo_ssl_ca_file
- path to the PEM file with trusted root certificatesmongo_ssl_pem_keyfile
- path to the PEM file which contains both client certificate and private key. This is required for Mutual TLS.mongo_ssl_allow_invalid_hostnames
- ignore hostname check when it differs from the original (for example with SSH tunneling). The rest of the TLS verification will still be performed.active
property to false
, then PUT it back.
See Dashboard API - API Definitions for more details on how to GET and PUT an API definition.
no 'access-control-allow-origin' header is present on the requested resource
.
CORS.options_passthrough
here.
CORS middleware is allowing headers which I did not allow
This may be the case when you enable CORS but don’t provide any headers explicitly (basically providing an empty array). In this case the CORS middleware will use some sensible defaults.
To allow all headers, you will need to provide *
(although this is not recommended).
The same can happen with Allowed Origins and Allowed Methods. Read more about it here.
CORS middleware is blocking my authenticated request
Please make sure that you did allow the authorization header name (e.g. Authorization
) or else the request will be blocked by the CORS middleware. If you’re having trouble on the developer portal with authenticated requests make sure to also allow the Content-Type
header.
X-Custom-Header
to a new header called X-New-Custom-Header
in all requests.
We do this by setting the following in our API Definition Version section:
tyk.conf
file into a new volume and declaring a new Gateway service but exposed on a different port.
You will need to make some minor modifications to docker-compose.yml
and start your services as usual with docker-compose up
.
docker-compose.yml
(after the tyk-gateway
definition)
omit_detailed_recording
in your Tyk Pump configuration file to true
. This will disable the detailed logging for a specific pump.
For example, if we have an ElasticSearch, Kafka and CSV stores, and you want to save the detailed recording in all of them except Kafka you can use the following configuration:
Enable detailed analytics on the Gateway tyk.conf
using:
pump.conf
.omit_detailed_recording
variable to the Kafka pump:mongo_selective_pump
(e.g. store data in a collection per organization), ensure that the Dashboard configuration setting use_sharded_analytics
is set to true
.
The same applies in the reverse direction. If you are using mongo-pump-aggregate
in your pump configuration, set use_sharded_analytics
to false.
This is because you’ve enabled use_sharded_analytics
as per above and you’re using the mongo-pump-aggregate
, but you now also have to add a mongo-pump-selective
in order to save individual requests to Mongo, which the Dashboard can read into the Log Browser.
no Elasticsearch node available
message in log.
elasticsearch_url
configuration property in the pump.conf
is missing the HTTP prefix e.g.
elasticsearch_url
configuration property e.g.
purge_delay
and an optimisation_max_active
value that’s greater than 0. Packages are available to download from Packagecloud.io and further details on how to upgrade can be found here
analytics_config.enable_detailed_recording
to false
in the Gateway configuration file tyk.conf
. Detailed analytics records contain much more data and are more expensive to process, by disabling detailed analytics recording the Pump will be able to process higher volumes of data.
Reduce the Pump purge delay
Set purge_delay
to a low value e.g. 1
in the Pump configuration file pump.conf
. This value is the number of seconds the Pump waits between checking for analytics data. Setting it to a low value will prevent the analytics data set from growing too large as the pump will purge the records more frequently.
Reduce analytics record expiry time
Set analytics_config.storage_expiration_time
to a low value e.g. 5
in the Gateway configuration file tyk.conf
. This value is the number of seconds beyond which analytics records will be deleted from the database. The value must be higher than the purge_delay
set for the Pump. This will allow for analytics records to be discarded in the scenario that the system is becoming overwhelmed. Note that this results in analytics record loss, but will help prevent degraded system performance.
purge_delay
configuration. It is also going to flush all the data of the pumps that have an inner buffer.
Why are we doing that?
We are adding this mechanism since we were losing data on Kubernetes environments or ephemeral containers, whenever a pump instance finishes. Now, with this change, we aren’t going to lose analytics records anymore.
When is it triggered?
This is triggered when Tyk Pump catches one of the following signals from the OS:
os.Interrupt, syscall.SIGINT
syscall.SIGTERM
SIGKILL
, it will not gracefully stop its execution.
What pumps are affected?
The main affected pumps are:
ElasticSearch
dogstatd
Influx2
/hello
endpoint, the dashboard is downSudo systemctl status mongod
or sudo service mongodb status
/var/log/mongo/mongo.log
should also outline any outagetyk_analytics
collections.
In some cases, enable_detailed_logging: true
adds fuel to the fire, as this parameter should only be set temporarily during debugging. This configuration exists on the gateway and the API levels, so ensure this is off after debugging.
We advise everyone to cap every collection in Mongo, as this prevents collections from growing out of control and bringing your dashboard down by hitting resource limits.
You can determine each collection’s cap size by visiting our MongoDB sizing calculator.
Here’s more information on how and why you want to cap your collections.
.pem
files
?authSource=$external&authMechanism=MONGODB-X509"
:
character into %40
. So replace any :
in the username field into the URL encoded version.
tyk_analytics.conf
should include these fields at the root level:
Config File | Environment Variable | Type | Examples |
---|---|---|---|
”mongo_url” | TYK_DB_MONGOURL | string | ”mongodb://@:/?authSource=$external&authMechanism=MONGODB-X509" |
"mongo_use_ssl” | TYK_DB_MONGOUSESSL | bool | true, false |
”mongo_ssl_ca_file” | TYK_DB_MONGOSSLCAFILE | string | ”certificates/ca.pem" |
"mongo_ssl_pem_keyfile” | TYK_DB_MONGOSSLPEMKEYFILE | string | ”certificates/key.pem" |
"mongo_ssl_insecure_skip_verify” | TYK_DB_MONGOSSLINSECURESKIPVERIFY | bool | true, false |
”mongo_ssl_allow_invalid_hostnames” | TYK_DB_MONGOSSLALLOWINVALIDHOSTNAMES | bool | true, false |
”mongo_session_consistency” | TYK_DB_MONGOSESSIONCONSISTENCY | string | ”strong”, “eventual”, or “monotonic”. default is “strong" |
"mongo_batch_size” | TYK_DB_MONGOBATCHSIZE | int | Default “2000”, min “100” |
mongo
, mongo_aggregate
, and mongo_selective
), each of which must be separately configured for X509 certificate authentication.
The following fields must be set under the meta
section of each pump (or set as environment variable):
Config File | Type | Examples |
---|---|---|
”mongo_url” | string | ”mongodb://@:/?authSource=$external&authMechanism=MONGODB-X509" |
"mongo_use_ssl” | bool | true, false |
”mongo_ssl_ca_file” | string | ”certificates/ca.pem” |
“mongo_ssl_pem_keyfile” | string | ”certificates/key.pem" |
"mongo_ssl_insecure_skip_verify” | bool | true, false |
”mongo_ssl_allow_invalid_hostnames” | bool | true, false |
Config File | Environment Variable | Type | Examples |
---|---|---|---|
”analytics.mongo_url” | TYK_MDCB_ANALYTICSCONFIG_MONGOURL | string | ”mongodb://@:/?authSource=$external&authMechanism=MONGODB-X509" |
"analytics.mongo_use_ssl” | TYK_MDCB_ANALYTICSCONFIG_MONGOUSESSL | bool | true, false |
”analytics.mongo_ssl_ca_file” | TYK_MDCB_ANALYTICSCONFIG_MONGOSSLCAFILE | string | ”certificates/ca.pem" |
"analytics.mongo_ssl_pem_keyfile” | TYK_MDCB_ANALYTICSCONFIG_MONGOSSLPEMKEYFILE | string | ”certificates/key.pem" |
"analytics.mongo_ssl_insecure_skip_verify” | TYK_MDCB_ANALYTICSCONFIG_MONGOSSLINSECURESKIPVERIFY | bool | true, false |
”analytics.mongo_ssl_allow_invalid_hostnames” | TYK_MDCB_ANALYTICSCONFIG_MONGOSSLALLOWINVALIDHOSTNAMES | bool | true, false |
”analytics.mongo_session_consistency” | TYK_MDCB_ANALYTICSCONFIG_MONGOSESSIONCONSISTENCY | string | ”strong”, “eventual”, or “monotonic”. default is “strong" |
"analytics.mongo_batch_size” | TYK_MDCB_ANALYTICSCONFIG_MONGOBATCHSIZE | int | Default “2000”, min “100” |
/hello
endpoint/hello
health endpoint is the quickest way to determine the status of your Tyk instance. You can find more information in our docs about the Gateway Liveness health check.
This endpoint is important as it allows the user to isolate the problem’s origin. At a glance, the /hello
endpoint reports the Gateways connectivity to Redis, and the control plane components eg. Tyk Dashboard, Tyk Multi-Data Center Bridge (MDCB), and Tyk Cloud.
info
and debug
log-level modes.
Here is the output when using info
as the log level:
debug
as the log level:
debug
log level mode provides more information which will help during your debugging stage, i.e when the API call was started, when it was finished, how long it took for the call to finish, the endpoint that was called, the upstream that was called, the organization that the API belongs to, and more.
*.conf
for your configuration parameters:
values.yaml
:
*.conf
for your configuration parameters:
values.yaml
: