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
= "(cpu.usage + 1) contains \"5\""
# fixed
= "host.name contains \"web\""
See @/docs/reference/dsl/filter.md for which fields are stringy in filter contexts.