SigNoz/signoz · error

error in prom queries

Error message

error in prom queries

What it means

Aggregated error returned by runPromQueries when one or more PromQL sub-queries of a composite query fail. The individual per-query errors are returned in the errQueriesByName map keyed by query name; this top-level error just signals that at least one query in the batch errored.

Source

Thrown at pkg/query-service/app/querier/querier.go:263

	results := make([]*v3.Result, 0)
	errQueriesByName := make(map[string]error)
	var errs []error

	for result := range channelResults {
		if result.Err != nil {
			errs = append(errs, result.Err)
			errQueriesByName[result.Name] = result.Err
			continue
		}
		results = append(results, &v3.Result{
			QueryName: result.Name,
			Series:    result.Series,
		})
	}

	var err error
	if len(errs) > 0 {
		err = fmt.Errorf("error in prom queries")
	}

	return results, errQueriesByName, err
}

func (q *querier) runClickHouseQueries(ctx context.Context, params *v3.QueryRangeParamsV3) ([]*v3.Result, map[string]error, error) {
	channelResults := make(chan channelResult, len(params.CompositeQuery.ClickHouseQueries))
	var wg sync.WaitGroup
	for queryName, clickHouseQuery := range params.CompositeQuery.ClickHouseQueries {
		if clickHouseQuery.Disabled {
			continue
		}
		wg.Add(1)
		go func(queryName string, clickHouseQuery *v3.ClickHouseQuery) {
			defer wg.Done()
			series, err := q.execClickHouseQuery(ctx, clickHouseQuery.Query)
			channelResults <- channelResult{Err: err, Name: queryName, Query: clickHouseQuery.Query, Series: series}
		}(queryName, clickHouseQuery)

View on GitHub (pinned to 5069bf80b0)

Solutions

  1. Inspect the returned errQueriesByName map to identify which query failed and its underlying error
  2. Validate the PromQL expression (e.g. via the Prometheus /api/v1/query endpoint) before sending the composite query
  3. Check the query-service to Prometheus connectivity and limits (timeout, max samples) and retry
  4. Reduce the time range or step to keep cardinality/samples within limits
Defensive patterns

Strategy: try-catch

Try / catch

results, errByName, err := querier.QueryRange(ctx, orgID, params)
if err != nil {
    if strings.Contains(err.Error(), "error in prom queries") {
        for name, qerr := range errByName {
            log.Printf("prom query %s failed: %v", name, qerr)
        }
        // degrade: drop failed queries, keep rest
    }
    return err
}

Prevention

When it happens

Trigger: Calling QueryRange with a composite query containing PromQL builder/prom queries where one of the queries executed against Prometheus/Prometheus-compatible backend fails (bad PromQL expression, unreachable Prometheus, timeout, rate limit).

Common situations: Invalid or experimental PromQL syntax in a panel, Prometheus endpoint misconfigured/unreachable in the SigNoz deployment, query range/step exceeding Prometheus limits, metric name typos.

Related errors


AI-assisted analysis of SigNoz/signoz@5069bf80b0 (2026-08-28). Data as JSON: /api/errors/66bc2898837845ae. Report an issue: GitHub.