KONG monitoring

KONG performance from kong prometheus plugin

The kong-prometheus is a lua library that can be used with Kong to collect metrics. It exposes metrics related to Kong and proxied upstream services in Prometheus exposition format, which can be scraped by a Prometheus Server. SkyWalking leverages OpenTelemetry Collector to transfer the metrics toOpenTelemetry receiver and into the Meter System.

Data flow

  1. KONG Prometheus plugin collects metrics data from KONG.
  2. OpenTelemetry Collector fetches metrics from KONG Prometheus plugin via Prometheus Receiver and pushes metrics to SkyWalking OAP Server via OpenTelemetry gRPC exporter.
  3. The SkyWalking OAP Server parses the expression with MAL to filter/calculate/aggregate and store the results.

Set up

  1. Enable KONG KONG Prometheus plugin. Note that if need to monitor per_consumer, status_code_metrics, ai_metrics, latency_metrics, bandwidth_metrics or upstream_health_metrics, need to enable them manually as needed, which can be enabled in the konga dashboard or through the Admin API, such as the following command
    curl -i -X POST http://{KONG-HOST}:{KONG_ADMIN_PORT}/plugins \
     --data name=prometheus \
     --data config.per_consumer=true \
     --data config.status_code_metrics=true \
     --data config.ai_metrics=true \
     --data config.latency_metrics=true \
     --data config.bandwidth_metrics=true \
     --data config.upstream_health_metrics=true
    
  2. Set up OpenTelemetry Collector. For details on Prometheus Receiver in OpenTelemetry Collector, refer to here.
  3. Config SkyWalking OpenTelemetry receiver.

KONG Monitoring

KONG prometheus plugin provide multiple dimensions metrics for KONG server, upstream, route etc. Accordingly, SkyWalking observes the status, requests, and latency of the KONG server, which is cataloged as a LAYER: KONG Service in the OAP. Each Kong server is cataloged as a LAYER: KONG instance, meanwhile, the route rules would be recognized as a LAYER: KONG endpoint.

Kong Request Supported Metrics

Monitoring PanelUnitMetric NameDescriptionData Source
Bandwidthbytesmeter_kong_service_http_bandwidth
meter_kong_instance_http_bandwidth
meter_kong_endpoint_http_bandwidth
Total bandwidth (ingress/egress) throughputKong
HTTP Statuscountmeter_kong_service_http_status
meter_kong_instance_http_status
meter_kong_endpoint_http_status
HTTP status codes per consumer/service/route in KongKong
HTTP Requestcountmeter_kong_service_http_requests
meter_kong_instance_http_requests
Total number of requestsKong

Kong Database Supported Metrics

Monitoring PanelUnitMetric NameDescriptionData Source
DBcountmeter_kong_service_datastore_reachable
meter_kong_instance_datastore_reachable
Datastore reachable from KongKong
DBbytesmeter_kong_instance_shared_dict_bytesAllocated slabs in bytes in a shared_dictKong
DBbytesmeter_kong_instance_shared_dict_total_bytesTotal capacity in bytes of a shared_dictKong
DBbytesmeter_kong_instance_memory_workers_lua_vms_bytesAllocated bytes in worker Lua VMKong

Kong Latencies Supported Metrics

Monitoring PanelUnitMetric NameDescriptionData Source
Latencymsmeter_kong_service_kong_latency
meter_kong_instance_kong_latency
meter_kong_endpoint_kong_latency
Latency added by Kong and enabled plugins for each service/route in KongKong
Latencymsmeter_kong_service_request_latency
meter_kong_instance_request_latency
meter_kong_endpoint_request_latency
Total latency incurred during requests for each service/route in KongKong
Latencymsmeter_kong_service_upstream_latency
meter_kong_instance_upstream_latency
meter_kong_endpoint_upstream_latency
Latency added by upstream response for each service/route in KongKong

Kong Nginx Supported Metrics

Monitoring PanelUnitMetric NameDescriptionData Source
Nginxcountmeter_kong_service_nginx_metric_errors_totalNumber of nginx-lua-prometheus errorsKong
Nginxcountmeter_kong_service_nginx_connections_total
meter_kong_instance_nginx_connections_total
Number of connections by subsystemKong
Nginxcountmeter_kong_service_nginx_timers
meter_kong_instance_nginx_timers
Number of Nginx timersKong

Customizations

You can customize your own metrics/expression/dashboard panel. The metrics definition and expression rules are found in /config/otel-rules/kong. The KONG dashboard panel configurations are found in /config/ui-initialized-templates/kong.