It seems the new syntax of calculated (and, especially, aggregated) checks was not documented enough. At least, I could not find a lot of details in the documentation.
The attached document "New unified syntax for triggers, aggregated and calculated checks.pdf" has the following sentence:
BNF grammar must be created and documented
Where can we find this grammar? Probably, the best place for it – some appendix (like the list of Macro's, functions, or detailed description of Zabbix protocols).
Additional quote from the same document:
Must support expressions as function parameters like func3(10*func1(), func2(), 123)
Unfortunately, this moment is also not documented (was it implemented?) and has no examples.
Some additional notes and questions:
- there should be a clearly description of rules about the star character ("*") usage as a wildcard for aggregation functions:
- is it possible to use it in any aggregate function or in the foreach functions only?
- what part of key could be replaced by star? For example, what of the following constructions is valid:
- /*/some.key (star replaces the entire hostname)
- /host/* (star replaces the entire key)
- /*/* (star replaces both entire hostname and entire key simultaneously)
- /host/some.key[*] (star replaces entire key parameter)
- /host/some.key[param1,*,param2] (star replaces some of key parameters)
- /host*/some.long.key.* (star replaces some part of hostname or key)
- /host*ends/some.long.*.key (the same as previous, but star is in the middle of string)
- /host/net.if.in[eth*] (star replaces the part of key parameter)
- the common syntax of filters for aggregations must be described. Documentation has some examples (like: /*/key?[group="ABC" and tag="tagname:value"]), but:
- all examples include the question mark and square brackets, but it is not mentioned explicitly;
- it is not clear if spaces are allowed (around the question mark, brackets, equal mark);
- it is not clear if quotes characters (") are mandatory or optional (for readability only);
- it is not clear if the filtering is performed by exact matching or just as a substring, case-sensitive or not (for all possible cases: group names, tag names and tag values).
At the moment we've migrated to version 6.0.3; but all these questions are still actual.