docs/en/setup/backend/backend-kong-monitoring.md
kong prometheus pluginThe 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.
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
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.
| 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 |
| 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 |
| 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 |
| 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 |
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.