Decision at Kong about Go, Lua, OpenResty, nginx, Logstash, Prometheus

Avatar of hbagdi
GoGo
LuaLua
OpenRestyOpenResty
nginxnginx
LogstashLogstash
PrometheusPrometheus

At Kong while building an internal tool, we struggled to route metrics to Prometheus and logs to Logstash without incurring too much latency in our metrics collection.

We replaced nginx with OpenResty on the edge of our tool which allowed us to use the lua-nginx-module to run Lua code that captures metrics and records telemetry data during every request’s log phase. Our code then pushes the metrics to a local aggregator process (written in Go) which in turn exposes them in Prometheus Exposition Format for consumption by Prometheus. This solution reduced the number of components we needed to maintain and is fast thanks to NGINX and LuaJIT.

2 upvotes·6.5K views
Avatar of hbagdi