Zabbix Documentation 2.0

3.04.05.0 (current)| In development:5.2 (devel)| Unsupported:1.82.02.22.43.23.44.24.4Guidelines

User Tools

Site Tools


manual:config:items:itemtypes:calculated

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Previous revision
Last revision Both sides next revision
manual:config:items:itemtypes:calculated [2014/09/30 12:54]
manual:config:items:itemtypes:calculated [2016/10/25 05:37]
martins-v clarifying the meaning of 'parameter'
Line 1: Line 1:
 +==== - #7 Calculated items ====
  
 +=== - Overview ===
 +
 +With calculated items you can create calculations on the basis of other items.
 +
 +Thus, calculated items are a way of creating virtual data sources. The values will be periodically calculated based on an arithmetical expression.
 +
 +The resulting data will be stored in the Zabbix database as for any other item - this means storing both history and trend values for fast graph generation. Calculated items may be used in trigger expressions,​ referenced by macros or other entities same as any other item type.
 +
 +To use calculated items, choose the item type **Calculated**. ​
 +
 +=== - Configurable fields ===
 +
 +The **key** is a unique item identifier (per host). You can create any key name using supported symbols.
 +
 +Calculation definition should be entered in the **Formula** field (named '​Expression'​ in 1.8.1 and 1.8.2). There is virtually no connection between the formula and the key. The key parameters are not used in formula in any way.
 +
 +The correct syntax of a simple formula is: 
 +  func(<​key>​|<​hostname:​key>,<​parameter1>,<​parameter2>,​...)
 +
 +Where:
 +
 +^ARGUMENT^DEFINITION^
 +|**func** ​        |One of the [[manual:​appendix:​triggers:​functions|functions]] supported in trigger expressions:​ last, min, max, avg, count, etc|
 +|**key** ​    |The key of another item whose data you want to use. It may be defined as **key** or **hostname:​key**.\\ //Note:// Putting the whole key in double quotes ("​..."​) is strongly recommended to avoid incorrect parsing because of spaces or commas within the key.\\ If there are also quoted parameters within the key, those double quotes must be escaped by using the backslash (\). See **Example 5** below.|
 +|**parameter(s)** |Function parameter(s),​ if required.|
 +
 +<note tip>All items that are referenced from the calculated item formula must exist and be collecting data. Also, if you change the item key of a referenced item, you have to manually update any formulas using that key.</​note>​
 +
 +<note important>​[[manual:​config:​macros:​usermacros|User macros]] in the formula will be expanded if used to reference a function parameter or a constant. User macros will NOT be expanded if referencing a function, host name, item key, item key parameter or operator.</​note>​
 +
 +A more complex formula may use a combination of functions, operators and brackets. You can use all functions and [[:​manual/​config/​triggers/​expression#​operators|operators]] supported in trigger expressions. Note that the syntax is slightly different, however logic and operator precedence are exactly the same.
 +
 +Unlike trigger expressions,​ Zabbix processes calculated items according to the item update interval, not upon receiving a new value.
 +
 +A calculated item may become unsupported in several cases:
 +
 +  - referenced item(s) not found
 +  - no data to calculate a function
 +  - division by zero
 +  - incorrect syntax used
 +
 +<​note>​Support for calculated items was introduced in Zabbix 1.8.1</​note>​
 +
 +=== - Usage examples ===
 +
 +== Example 1 ==
 +Calculating percentage of free disk space on '/'​.
 +
 +Use of function **last**: ​
 +  100*last("​vfs.fs.size[/,​free]"​)/​last("​vfs.fs.size[/,​total]"​)
 +
 +Zabbix will take the latest values for free and total disk spaces and calculate percentage according to the given formula.
 +
 +== Example 2 ==
 +Calculating a 10-minute average of the number of values processed by Zabbix.
 +
 +Use of function **avg**:
 +  avg("​Zabbix Server:​zabbix[wcache,​values]",​600)
 +
 +Note that extensive use of calculated items with long time periods may affect performance of Zabbix server.
 +
 +== Example 3 ==
 +Calculating total bandwidth on eth0.
 +
 +Sum of two functions:
 +  last("​net.if.in[eth0,​bytes]"​)+last("​net.if.out[eth0,​bytes]"​)
 +
 +== Example 4 ==
 +Calculating percentage of incoming traffic.
 +
 +More complex expression:
 +  100*last("​net.if.in[eth0,​bytes]"​)/​(last("​net.if.in[eth0,​bytes]"​)+last("​net.if.out[eth0,​bytes]"​))
 +
 +== Example 5 ==
 +Using aggregated items correctly within a calculated item.
 +
 +Take note of how double quotes are escaped within the quoted key:
 +  last("​grpsum[\"​video\",​\"​net.if.out[eth0,​bytes]\",​\"​last\",​\"​0\"​]"​) / last("​grpsum[\"​video\",​\"​nginx_stat.sh[active]\",​\"​last\",​\"​0\"​]"​) ​