eval_non_string

Diagnostic `nanook::eval::non_string`

Summary

expected metric selector for string operation

Help

string operators require a metric selector on the left-hand side

Details

When this fires

A string operator (contains, is, like, matches, not) was used with a left-hand side that isn't a metric selector. The evaluator only knows how to read string values out of selectors, not out of arbitrary subexpressions.

What to check

The LHS must be a bare metric path like host.name or, for filters, name / src / a label key.

# broken
expr = "(cpu.usage + 1) contains \"5\""
# fixed
expr = "host.name contains \"web\""

See @/docs/reference/dsl/filter.md for which fields are stringy in filter contexts.