Skip to content

Commit

Permalink
added screenshots and extra info about inheritance
Browse files Browse the repository at this point in the history
  • Loading branch information
Trikke76 committed Jun 14, 2024
1 parent 73a991d commit 169943a
Show file tree
Hide file tree
Showing 5 changed files with 105 additions and 27 deletions.
6 changes: 6 additions & 0 deletions How-to-instlall-mkdocs.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,3 +55,9 @@ python3 -m mkdocs serve
```
python3 -m mkdocs build
```

## Some guidlines

Have a look at our page with guidlines when you like to contribute or translate pages.

https://trikke76.github.io/Zabbix-Book/Guidlines-for-translations/
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/configuration/image/macros/macros-order.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
56 changes: 45 additions & 11 deletions docs/configuration/zabbix-macros.fr.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

Les macros sont l'un des concepts que vous devez comprendre dans Zabbix. Il existe différents types et ils rendent Zabbix plus évolutif et moins statique.

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


## Built-in macros

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.

Expand All @@ -11,7 +13,9 @@ ou encore la macro `{HOST.IP}` qui fera la même chose mais en récupérant l'IP

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)


## Function macros

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)}`
Expand All @@ -23,33 +27,52 @@ La syntaxe d'une fonction de macro est la suivante : `{macro.func(params)}`
|[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)


## 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- macros au niveau de l'hôte (vérifié en premier).
2- macros définies pour les modèles de premier niveau de l'hôte (c'est-à-dire les modèles liés directement à l'hôte), triées par ID de modèle.
3- macros définies pour les modèles de deuxième niveau de l'hôte, triées par ID de modèle.
4- macros définies pour les modèles de troisième niveau de l'hôte, triées par ID de modèle, etc.
5- macros globales (vérifiées en dernier)
1. macros au niveau de l'hôte (vérifié en premier).
2. macros définies pour les modèles de premier niveau de l'hôte (c'est-à-dire les modèles liés directement à l'hôte), triées par ID de modèle.
3. macros définies pour les modèles de deuxième niveau de l'hôte, triées par ID de modèle.
4. macros définies pour les modèles de troisième niveau de l'hôte, triées par ID de modèle, etc.
5. macros globales (vérifiées en dernier)

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.
Il est également conseillé de ne pas utiliser de macros globales lorsqu'elles ne sont pas nécessaires, car elles ne sont pas portables lors de l'exportation d'hôtes ou de modèles.

Ainsi, lorsque nous définissons des ```macros globales```, elles seront écrasées par des ```macros de modèle``` et nos macros de modèle seront écrasées par des ```macros hôtes```.

![macro order](image/macros/macros-order.png)

C'est facile, alors écrasez une macro par accident pour résoudre ce problème. Zabbix a l'option au niveau ```Host``` et au niveau ```Template``` pour voir s'il y a déjà des macros définies avec le même nom. Cela permet de voir facilement si cette macro est déjà définie et si elle sera écrasée.

![macro inheritance](image/macros/inherited-macros.png)

Dans cette capture d'écran, nous pouvons voir qu'il existe une ``macro globale``` définie avec une valeur de 100 et que nous avons la même macro au niveau du modèle qui remplace la valeur de la ```macro globale```. Cependant, la valeur effective provient de notre ```macro Host```.

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


## Low-level discovery 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)


## Expression macro

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)


## User macro with 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"}`
Expand All @@ -60,3 +83,14 @@ _Exemple:_
{$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%.



## Some useful links

- [https://www.zabbix.com/documentation/7.0/en/manual/appendix/macros/supported_by_location](https://www.zabbix.com/documentation/7.0/en/manual/appendix/macros/supported_by_location)
- [https://www.zabbix.com/documentation/7.0/en/manual/config/macros/macro_functions](https://www.zabbix.com/documentation/7.0/en/manual/config/macros/macro_functions)
- [https://www.zabbix.com/documentation/7.0/en/manual/config/macros/user_macros](https://www.zabbix.com/documentation/7.0/en/manual/config/macros/user_macros)
- [https://www.zabbix.com/documentation/7.0/en/manual/config/macros/lld_macros](https://www.zabbix.com/documentation/7.0/en/manual/config/macros/lld_macros)
- [https://www.zabbix.com/documentation/7.0/en/manual/config/macros/expression_macros](https://www.zabbix.com/documentation/7.0/en/manual/config/macros/expression_macros)
- [https://www.zabbix.com/documentation/7.0/en/manual/config/macros/user_macros_context](https://www.zabbix.com/documentation/7.0/en/manual/config/macros/user_macros_context)
70 changes: 54 additions & 16 deletions docs/configuration/zabbix-macros.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,18 @@

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)


## Built-in macros

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.


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

## Function macros

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)}`
Expand All @@ -22,40 +25,75 @@ The syntax of a macro function is as follows: `{macro.func(params)}`
|[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)


## 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 on first level templates of the host (i.e., templates linked directly to the host), sorted by template ID
3- macros defined on the second level templates of the host, sorted by template ID
4- macros defined on the third level templates of the host, sorted by template ID, etc.
5- global macros (checked last)
1. host level macros (checked first)
2. macros defined on first level templates of the host (i.e., templates linked directly to the host), sorted by template ID
3. macros defined on the second level templates of the host, sorted by template ID
4. macros defined on the third level templates of the host, sorted by template ID, etc.
5. global macros (checked last)

These macros can be used in many [locations](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 the majority of the situations, users macros must be used.
It's also adviced to not use global macros when not needed as they are not portable when exporting hosts or templates.

So when we define ```global macros``` they will be overwritten by ```template macros``` and our template macros will be overwritten by ```host macros```.

![macro order](image/macros/macros-order.png)

It's easy so overwrite a macro by accident to solve this problem Zabbix has the option on ```Host``` and on ```Template``` level to see if there are any macros defined yet with the same name.
This makes it easy to see if you have this macro defined already and if it will be overwritten.

![macro inheritance](image/macros/inherited-macros.png)

These macros can be used in many [locations](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 this screenshot we can see that there is a ```Global macro``` defined with a value of 100 and that we have the the same macro on Template level that overrides the value of the ```Global macro```.
However the effective vale is coming from our ```Host macro```.

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

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

## Low-level discovery 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 variabilize 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)


## Expression macro

These macros are very specific, they are used exclusively in name graphs and in maps, they use the following syntax: `{?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)


## User macro with 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


### 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%.


## Some useful links

- [https://www.zabbix.com/documentation/7.0/en/manual/appendix/macros/supported_by_location](https://www.zabbix.com/documentation/7.0/en/manual/appendix/macros/supported_by_location)
- [https://www.zabbix.com/documentation/7.0/en/manual/config/macros/macro_functions](https://www.zabbix.com/documentation/7.0/en/manual/config/macros/macro_functions)
- [https://www.zabbix.com/documentation/7.0/en/manual/config/macros/user_macros](https://www.zabbix.com/documentation/7.0/en/manual/config/macros/user_macros)
- [https://www.zabbix.com/documentation/7.0/en/manual/config/macros/lld_macros](https://www.zabbix.com/documentation/7.0/en/manual/config/macros/lld_macros)
- [https://www.zabbix.com/documentation/7.0/en/manual/config/macros/expression_macros](https://www.zabbix.com/documentation/7.0/en/manual/config/macros/expression_macros)
- [https://www.zabbix.com/documentation/7.0/en/manual/config/macros/user_macros_context](https://www.zabbix.com/documentation/7.0/en/manual/config/macros/user_macros_context)

0 comments on commit 169943a

Please sign in to comment.