The following configure the metrics that will be logged:
Metric
|
Description
|
Namespace syntax
|
request_count
|
The number of requests.
|
kong.service.<service_identifier>.request.count
|
request_size
|
The request’s body size in bytes.
|
kong.service.<service_identifier>.request.size
|
response_size
|
The response’s body size in bytes.
|
kong.service.<service_identifier>.response.size
|
latency
|
The time interval in milliseconds between the request and response.
|
kong.service.<service_identifier>.latency
|
status_count
|
Tracks each status code returned in a response.
|
kong.service.<service_identifier>.status.<status>
|
unique_users
|
Tracks unique users who made requests to the underlying Service or Route.
|
kong.service.<service_identifier>.user.uniques
|
request_per_user
|
Tracks the request count per Consumer.
|
kong.service.<service_identifier>.user.<consumer_identifier>.request.count
|
upstream_latency
|
Tracks the time in milliseconds it took for the final Service to process the request.
|
kong.service.<service_identifier>.upstream_latency
|
kong_latency
|
Tracks the internal Kong Gateway latency in milliseconds that it took to run all the plugins.
|
kong.service.<service_identifier>.kong_latency
|
status_count_per_user
|
Tracks the status code per Consumer per Service.
|
kong.service.<service_identifier>.user.<consumer_identifier>.status.<status>
|
status_count_per_workspace
|
The status code per Workspace.
|
kong.service.<service_identifier>.workspace.<workspace_identifier>.status.<status>
|
status_count_per_user_per_route
|
The status code per consumer per Route.
|
kong.route.<route_id>.user.<consumer_identifier>.status.<status>
|
shdict_usage
|
The usage of a shared dict, sent once every minute.
Monitors any lua_shared_dict used by Kong Gateway. You can find all the shared dicts Kong Gateway has configured using the Status API.
For example, the metric might report on shdict.kong_locks or shdict.kong_counters .
|
kong.node.<node_hostname>.shdict.<lua_shared_dict>.free_space
kong.node.<node_hostname>.shdict.<lua_shared_dict>.capacity
|
cache_datastore_hits_total
|
The total number of cache hits. (Kong Gateway Enterprise only)
|
kong.service.<service_identifier>.cache_datastore_hits_total
|
cache_datastore_misses_total
|
The total number of cache misses. (Kong Gateway Enterprise only)
|
kong.service.<service_identifier>.cache_datastore_misses_total
|
If a request URI doesn’t match any Routes, the following metrics are sent instead:
Metric
|
Description
|
Namespace
|
request_count
|
The request count.
|
kong.global.unmatched.request.count
|
request_size
|
The request’s body size in bytes.
|
kong.global.unmatched.request.size
|
response_size
|
The response’s body size in bytes.
|
kong.global.unmatched.response.size
|
latency
|
The time interval between when the request started and when the response is received from the upstream server.
|
kong.global.unmatched.latency
|
status_count
|
The status count.
|
kong.global.unmatched.status.<status>.count
|
kong_latency
|
The internal Kong Gateway latency in milliseconds that it took to run all the plugins.
|
kong.global.unmatched.kong_latency
|
If you enable the tag_style
configuration for the StatsD plugin, the following metrics are sent instead:
Metric
|
Description
|
Namespace
|
request_count
|
The number of requests.
|
kong.request.count
|
request_size
|
The request’s body size in bytes.
|
kong.request.size
|
response_size
|
The response’s body size in bytes.
|
kong.response.size
|
latency
|
The time interval in milliseconds between the request and response.
|
kong.latency
|
request_per_user
|
Tracks the request count per consumer.
|
kong.request.count
|
upstream_latency
|
Tracks the time in milliseconds it took for the final Service to process the request.
|
kong.upstream_latency
|
shdict_usage
|
The usage of shared dict, sent once every minute.
|
kong.shdict.free_space and kong.shdict.capacity
|
cache_datastore_hits_total
|
The total number of cache hits. (Kong Gateway only)
|
kong.cache_datastore_hits_total
|
cache_datastore_misses_total
|
The total number of cache misses. (Kong Gateway only)
|
kong.cache_datastore_misses_total
|
The StatsD Plugin supports Librato, InfluxDB, DogStatsD, and SignalFX-style tags, which are used like Prometheus labels.
-
Librato-style tags: Must be appended to the metric name with a delimiting #
, for example:
metric.name#tagName=val,tag2Name=val2:0|c
See the Librato StatsD documentation for more information.
-
InfluxDB-style tags: Must be appended to the metric name with a delimiting comma, for example:
metric.name,tagName=val,tag2Name=val2:0|c
See the InfluxDB StatsD documentation for more information.
-
DogStatsD-style tags: Appended as a |#
delimited section at the end of the metric, for example:
metric.name:0|c|#tagName:val,tag2Name:val2
See the Datadog StatsD Tags documentation for more information about the concept description and Datagram Format.
AWS CloudWatch also uses the DogStatsD protocol.
-
SignalFX dimension: Add the tags to the metric name in square brackets, for example:
metric.name[tagName=val,tag2Name=val2]:0|c
See the SignalFX StatsD documentation for more information.
When config.tag_style
is enabled, Kong Gateway uses a filter label, like service
, route
, workspace
, consumer
, node
, or status
, on the metrics tags to see if these can be found. For shdict_usage
metrics, only node
and shdict
are added.
For example:
kong.request.size,workspace=default,route=d02485d7-8a28-4ec2-bc0b-caabed82b499,status=200,consumer=d24d866a-020a-4605-bc3c-124f8e1d5e3f,service=bdabce05-e936-4673-8651-29d2e9eca382,node=c80a9c5845bd:120|c
The StatsD plugin can be configured with any combination of metrics, with each entry containing the following fields:
Field
|
Description
|
Datatype
|
Allowed values
|
name required
|
StatsD metric’s name.
|
String
|
Metrics
|
stat_type required
|
Determines what sort of event a metric represents.
|
String
|
gauge , timer , counter , histogram , meter and set
|
sample_rate required conditional
|
Sampling rate.
|
Number
|
number
|
consumer_identifier conditional
|
Authenticated user detail.
|
String
|
One of the following options: consumer_id , custom_id , username , null
|
service_identifier conditional
|
Service detail.
|
String
|
One of the following options: service_id , service_name , service_host , service_name_or_host , null
|
workspace_identifier conditional
|
Workspace detail.
|
String
|
One of the following options: workspace_id , workspace_name , null
|
- All metrics are logged by default.
- Metrics with a
stat_type
of counter
or gauge
require the sample_rate
field.
- The
unique_users
metric only supports the set
stat type.
- The following metrics only support the
counter
stat type:
status_count
status_count_per_user
status_count_per_user_per_route
request_per_user
- The
shdict_usage
metric only supports the gauge
stat type.
- The following metrics require a
consumer_identifier
:
status_count_per_user
request_per_user
unique_users
status_count_per_user_per_route
- The
service_identifier
field is optional for all metrics. If not set, it defaults to service_name_or_host
.
- The
status_count_per_workspace
metric requires a workspace_identifier
.