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
- KONG Prometheus plugin collects metrics data from KONG.
- OpenTelemetry Collector fetches metrics from KONG Prometheus plugin via Prometheus Receiver and pushes metrics to SkyWalking OAP Server via OpenTelemetry gRPC exporter.
- The SkyWalking OAP Server parses the expression with MAL to filter/calculate/aggregate and store the results.
Set up
- 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
- Set up OpenTelemetry Collector. For details on Prometheus Receiver in OpenTelemetry Collector, refer to here.
- 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 Panel | Unit | Metric Name | Description | Data Source |
---|---|---|---|---|
Bandwidth | bytes | meter_kong_service_http_bandwidth meter_kong_instance_http_bandwidth meter_kong_endpoint_http_bandwidth |
Total bandwidth (ingress/egress) throughput | Kong |
HTTP Status | count | meter_kong_service_http_status meter_kong_instance_http_status meter_kong_endpoint_http_status |
HTTP status codes per consumer/service/route in Kong | Kong |
HTTP Request | count | meter_kong_service_http_requests meter_kong_instance_http_requests |
Total number of requests | Kong |
Kong Database Supported Metrics
Monitoring Panel | Unit | Metric Name | Description | Data Source |
---|---|---|---|---|
DB | count | meter_kong_service_datastore_reachable meter_kong_instance_datastore_reachable |
Datastore reachable from Kong | Kong |
DB | bytes | meter_kong_instance_shared_dict_bytes | Allocated slabs in bytes in a shared_dict | Kong |
DB | bytes | meter_kong_instance_shared_dict_total_bytes | Total capacity in bytes of a shared_dict | Kong |
DB | bytes | meter_kong_instance_memory_workers_lua_vms_bytes | Allocated bytes in worker Lua VM | Kong |
Kong Latencies Supported Metrics
Monitoring Panel | Unit | Metric Name | Description | Data Source |
---|---|---|---|---|
Latency | ms | meter_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 Kong | Kong |
Latency | ms | meter_kong_service_request_latency meter_kong_instance_request_latency meter_kong_endpoint_request_latency |
Total latency incurred during requests for each service/route in Kong | Kong |
Latency | ms | meter_kong_service_upstream_latency meter_kong_instance_upstream_latency meter_kong_endpoint_upstream_latency |
Latency added by upstream response for each service/route in Kong | Kong |
Kong Nginx Supported Metrics
Monitoring Panel | Unit | Metric Name | Description | Data Source |
---|---|---|---|---|
Nginx | count | meter_kong_service_nginx_metric_errors_total | Number of nginx-lua-prometheus errors | Kong |
Nginx | count | meter_kong_service_nginx_connections_total meter_kong_instance_nginx_connections_total |
Number of connections by subsystem | Kong |
Nginx | count | meter_kong_service_nginx_timers meter_kong_instance_nginx_timers |
Number of Nginx timers | Kong |
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
.