The second half of Loghound. The same account email and API key that provision its own two indexes also unlock analytics over the Opensolr search indexes you already run.
Loghound never contacts a Solr server belonging to a user — not over SSH, not by reading a log file off a node, not by opening a connection to a cluster host. Everything on these pages was learned by asking the Opensolr platform, which already holds the data and already enforces ownership on it. There is nothing to install on your search nodes and no second copy of anybody’s query log.
| Card | What it answers |
|---|---|
| Headline | How much this index is being asked, over the selected range |
| Volume | Request volume over time |
| Query time | The distribution of how long answers take |
| Handlers | Which request handlers the traffic is hitting |
| Nodes | Which nodes answered |
Plus a picker at the top, filled from the platform, listing the indexes your account holds.
Not one card fetches a request document. A facet answers all of it, and shipping a customer’s query log through the panel in order to count it would be both slower and a larger privacy surface for no gain. Nothing is stored — the platform already holds this data, and Loghound reads it live.
The platform’s request-log endpoint rewrites any parameter name containing an underscore into a dotted Solr parameter and strips braces and quotes out of its value. So a JSON facet — and with it Solr’s exact percentile function — cannot survive the trip. Classic range faceting can, so the distribution is a fixed-width histogram and the percentiles read off it are reported as “at most” a bucket edge.
An approximate number labelled approximate is honest; a precise-looking number that is not precise is not.
| State | What the page does |
|---|---|
| Credentials configured, Loghound on the web server | Everything works, including the correlation. |
| Credentials configured, Loghound elsewhere | The search analytics are shown in full; the correlation card explains concretely what installing Loghound at the web server would add — the specific question, not a vague upsell. |
| No credentials | A page explaining what this section is for and where the two values go. No broken cards, no failed requests. |
Two more conditions are handled once rather than in each card. Demo mode returns a stub: there is no fabricated search data and there should not be, because the alternatives are inventing somebody’s query log or quietly making a real billed API call from a session showing a “these numbers are fake” banner. And no index chosen yet returns a stub too, because the picker is filled from the platform and the first render can legitimately have nothing selected.
The index name is validated for shape before it is sent. Whether this account owns it is left to the platform, which answers with a specific error for an index the account does not hold — and that is rendered as an ordinary sentence rather than as a failure. A second API call per request to answer a question the first call already answers would buy nothing.
Next: query analysis, which is where the actionable number in this section lives.