Skip to content

Commit

Permalink
Merge pull request #6 from david-moreau/zabbix-macro
Browse files Browse the repository at this point in the history
Add section zabbix-macros
  • Loading branch information
Trikke76 authored Jun 14, 2024
2 parents 796999d + 18bfb9d commit a726c6e
Show file tree
Hide file tree
Showing 2 changed files with 121 additions and 9 deletions.
62 changes: 62 additions & 0 deletions docs/configuration/zabbix-macros.fr.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# Macros

Macros are one of the concepts you need to understand in Zabbix. There are different types, and they make Zabbix more scalable and less static.

## [Built-in macros](https://www.zabbix.com/documentation/7.0/en/manual/appendix/macros/supported_by_location)

Elles correspondent à des macros interne à Zabbix, elles sont représentées via cette notation `{MACRO}`, la liste complète est disponible [ici](https://www.zabbix.com/documentation/7.0/en/manual/appendix/macros/supported_by_location). Chaque built-in macro peut-être utilisée dans un ou plusieurs cas.

Par exemple la built-in macro `{HOST.HOST}` permettra de récupérer le host dans une trigger expression.
ou encore la macro `{HOST.IP}` qui fera la même chose mais en récupérant l'IP du host.

Lorsque vous souhaitez utilser une information interne de Zabbix, il y a de forte chance qu'une built-in macro existe.

## [Function macros](https://www.zabbix.com/documentation/7.0/en/manual/config/macros/macro_functions)

Vous serez peut etre amenez à vouloir manipuler la valeur d'une macro, pour raccourcir ou extraire une partie par exemple.
La syntaxe d'une fonction de macro est la suivante : `{macro.func(params)}`

|Function|Description|
|--|--|
|[fmtnum](https://www.zabbix.com/documentation/7.0/en/manual/config/macros/macro_functions#fmtnum)|Number formatting to control the number of digits printed after the decimal point.|
|[fmttime](https://www.zabbix.com/documentation/7.0/en/manual/config/macros/macro_functions#fmttime)|Time formatting.|
|[iregsub](https://www.zabbix.com/documentation/7.0/en/manual/config/macros/macro_functions#iregsub)|Substring extraction by a regular expression match (case-insensitive).|
|[regsub](https://www.zabbix.com/documentation/7.0/en/manual/config/macros/macro_functions#regsub)|Substring extraction by a regular expression match (case-sensitive).|

## [User macros](https://www.zabbix.com/documentation/7.0/en/manual/config/macros/user_macros)

Ce sont c'est macro qui apporte à Zabbix sa grandre flexibilité, elles peuvent être défini de façon global, ou au niveau d'un template ou d'un host.
Elles sont toujours précédé d'un **\$** et se note ainsi: `{$MACRO}`.

Il est important de noter que Zabbix priorise les user macros comme ceci:

1- host level macros (checked first)
2- macros defined for first level templates of the host (i.e., templates linked directly to the host), sorted by template ID
3- macros defined for second level templates of the host, sorted by template ID
4- macros defined for third level templates of the host, sorted by template ID, etc.
5- global macros (checked last)

Ces macros sont utilisable à beaucoup d'[endrois](https://www.zabbix.com/documentation/7.0/en/manual/appendix/macros/supported_by_location_user), elles servent courrament à définir un seuil et servent de valeur par défaut dans un template qu'on peut surcharger au niveau des host-level macro.

Afin d'avoir des templates réutilisables et fonctionnel dans une majorités de situation, il faut abuser des users macros.

## [Low-level discovery macros](https://www.zabbix.com/documentation/7.0/en/manual/config/macros/lld_macros)

Ce type de macros est un peu spéciale, elles s'utilisent dans le cas d'une [Low-level discovery](https://www.zabbix.com/documentation/7.0/en/manual/discovery/low_level_discovery) et sont précédées d'un **#** `{#MACRO}`, elles sont utiles pour variabbilisés la création d'item prototype, de trigger prototype ou d'host prototype.

## [Expression macro](https://www.zabbix.com/documentation/7.0/en/manual/config/macros/expression_macros)

Ces macros sont très spécifiques, elles s'utilisent exclusivement dans les graphs name et dans les maps, elles utilisent la syntaxe suivantes: `{?EXPRESSION}`.
`{?avg(/{HOST.HOST}/{ITEM.KEY},1h)}`

## [User macro with context](https://www.zabbix.com/documentation/7.0/en/manual/config/macros/user_macros_context)

Il reste un dernier sujet concernant les macros est pas des moindres, très rapidement après avoir utilisé vos premières user macros pour définir des seuils vous rendre compte que vous souhaitez
avoir un seuil différent en fonction ... du context, elles utilisent la syntaxe: `{$MACRO:"static text"}`
Vous souhaitez définir un seuil global à 80% mais sur une partition particulière passer ce seuil à 90%, nous allons pour cela utiliser le contexte.

_Exemple:_
{$LOW_SPACE_LIMIT}: 80
{$LOW_SPACE_LIMIT:/tmp}:90

Dans cette exemple l'ensemble l'ensemble des points de montage de notre server auront comme seuil par défaut 80% sauf /tmp qui lui aura un seuil custom à 90%.
68 changes: 59 additions & 9 deletions docs/configuration/zabbix-macros.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,62 @@
# Macros

Macros are one of the concepts you need to understand in Zabbix. There are different types, and they make Zabbix more scalable and less static.

| test | test | test | test |
| ---- | ---- | ---- | ---- |
| een | een | een | een |
| twee | twee | twee | twee |
| een | een | een | een |
| twee | twee | twee | twee |
| een | een | een | een |
| twee | twee | twee | twee |

## [Built-in macros](https://www.zabbix.com/documentation/7.0/en/manual/appendix/macros/supported_by_location)

They correspond to Zabbix internal macros, they are represented using this notation `{MACRO}`, the complete list is available [here](https://www.zabbix.com/documentation/7.0/en/manual/appendix/macros/supported_by_location). Each built-in macro can be used in one or more cases.

For example, the `{HOST.HOST}` built-in macro can be used to retrieve the host in a trigger expression.
or the macro `{HOST.IP}` which does the same thing but retrieves the IP of the host.

When you wa

## [Function macros](https://www.zabbix.com/documentation/7.0/en/manual/config/macros/macro_functions)

You may want to manipulate the value of a macro, to shorten or extract a part for example.
The syntax of a macro function is as follows: `{macro.func(params)}`

|Function|Description|
|--|--|
|[fmtnum](https://www.zabbix.com/documentation/7.0/en/manual/config/macros/macro_functions#fmtnum)|Number formatting to control the number of digits printed after the decimal point.|
|[fmttime](https://www.zabbix.com/documentation/7.0/en/manual/config/macros/macro_functions#fmttime)|Time formatting.|
|[iregsub](https://www.zabbix.com/documentation/7.0/en/manual/config/macros/macro_functions#iregsub)|Substring extraction by a regular expression match (case-insensitive).|
|[regsub](https://www.zabbix.com/documentation/7.0/en/manual/config/macros/macro_functions#regsub)|Substring extraction by a regular expression match (case-sensitive).|

## [User macros](https://www.zabbix.com/documentation/7.0/en/manual/config/macros/user_macros)

Macros are what give Zabbix its great flexibility. They can be defined globally, or at template or host level.
They are always preceded by a **\$** and are noted thus: `{$MACRO}`.

It is important to note that Zabbix prioritises user macros like this:

1- host level macros (checked first)
2- macros defined for first level templates of the host (i.e., templates linked directly to the host), sorted by template ID
3- macros defined for second level templates of the host, sorted by template ID
4- macros defined for third level templates of the host, sorted by template ID, etc.
5- global macros (checked last)

These macros can be used for many [endrois](https://www.zabbix.com/documentation/7.0/en/manual/appendix/macros/supported_by_location_user), they are commonly used to define a threshold and serve as a default value in a template that can be overloaded with host-level macros.

In order to have templates that are reusable and functional in a majority of situations, users macros must be abused.

## [Low-level discovery macros](https://www.zabbix.com/documentation/7.0/en/manual/config/macros/lld_macros)

This type of macro is a little special, it is used in the case of [Low-level discovery](https://www.zabbix.com/documentation/7.0/en/manual/discovery/low_level_discovery) and is preceded by a **#** `{#MACRO}`, it is useful for variabbilising the creation of a prototype item, prototype trigger or prototype host.

## [Expression macro](https://www.zabbix.com/documentation/7.0/en/manual/config/macros/expression_macros)

Ces macros sont très spécifiques, elles s'utilisent exclusivement dans les graphs name et dans les maps, elles utilisent la syntaxe suivantes: `{?EXPRESSION}`.
`{?avg(/{HOST.HOST}/{ITEM.KEY},1h)}`

## [User macro with context](https://www.zabbix.com/documentation/7.0/en/manual/config/macros/user_macros_context)

There's one last subject concerning macros, and it's not the least important: very soon after using your first user macros to define thresholds, you'll realise that you want to
have a different threshold depending on ... the context, they use the syntax: `{$MACRO: "static text"}`
You want to set the global threshold to 80%, but on a particular partition you want to increase the threshold to 90%. To do this, we'll use the context.

_Example:_
{$LOW_SPACE_LIMIT}: 80
{$LOW_SPACE_LIMIT:/tmp}:90

In this example, all the mount points on our server will have a default threshold of 80% except for /tmp, which will have a custom threshold of 90%.

0 comments on commit a726c6e

Please sign in to comment.