Frequently asked questions

How do I pronounce “linkerd”?


Why is it called linkerd?

linkerd can be thought of as a dynamic linker for microservices. In an operating system, the dynamic linker takes runtime information about the name of a library and function call to be executed, and performs whatever work is necessary to make that function invokable to an executable. linkerd does the analogous task for microservices: it takes the name of a service and of a call to make on that service (HTTP, gRPC, etc.), and does the work required to make the call successful—including routing, load-balancing, and retrying.

How do I get to the linkerd dashboard (or “admin”) page?

By default, the admin page can be accessed at http://localhost:9990. You can specify a different port in the admin section of the linkerd config.

How do I get upstream service metrics?

linkerd exposes machine-readable metrics in JSON format at http://localhost:9990/admin/metrics.json. This is configurable–see above.

Where do linkerd logs go?

linkerd logs to stderr. For HTTP routers, additional access logging can be configured via the httpAccessLog key in the config file.

Does linkerd support dynamic config reloading?

No. We prefer to avoid this pattern and to offload mutable things to separate services. For example, linkerd talks to service discovery for changes in deployed instances, and to namerd for changes in routing policy.

How does linkerd handle service errors?

Errors generated by downstream services are passed through linkerd unmodified.

For HTTP, errors are served with Content-type text/plain, and an explanatory error message is available in both the response body and the l5d-err header.

When the configured namers cannot resolve a service to handle the request, linkerd responds with 400 Bad Request. This could be caused by misconfiguration of linkerd, problems with service discovery, or by an incorrect l5d-dtab header attached to the request.

All other failures communicating with downstream services (including timeouts, inability to establish a connection, etc.) are represented as 503 Bad Gateway.

Why do I see a “No hosts available” error?

If you see a No hosts are available error message in the linkerd logs or in a response, it means that linkerd was unable to translate the request’s service name into a physical destination. This may be because of an incorrect dtab, an error with the service discovery lookup, or because the destination service is not running.

To debug this error, you can use the “dtab playground” in the linkerd admin dashboard. Simply visit <linkerd host>:9990/delegator in your browser. This UI will demonstrate each step of how the request’s name is transformed by the dtab and namers.

(For more information on how linkerd handles names, see the Routing page.)