Difference between revisions of "Zabbix configure template"
m (WikiFreak moved page Zabbix server create new application, items, triggers and actions to Zabbix configure template: Shorter name, simpler, better) |
|||
(7 intermediate revisions by the same user not shown) | |||
Line 20: | Line 20: | ||
− | = | + | =Create a new application= |
− | |||
− | |||
− | |||
* Access applications' list | * Access applications' list | ||
Line 45: | Line 42: | ||
− | == | + | =Items management= |
+ | |||
+ | An item is like a ''datasource'' in the dev. vocable. | ||
+ | |||
+ | |||
+ | '''Important notes''' | ||
+ | |||
+ | ------------------------ | ||
+ | |||
+ | Each ''type'' of item has a different set of ''keys'' (functions). You can find the complete list on Zabbix documentation: | ||
+ | * List of items (v2.2): https://www.zabbix.com/documentation/2.2/manual/config/items/itemtypes | ||
+ | * Item's key for ''Zabbix agent'' (v2.2): https://www.zabbix.com/documentation/2.2/manual/config/items/itemtypes/zabbix_agent | ||
+ | |||
+ | |||
+ | If you're using DNS configuration then the host will report using the '''short name'''. Be sure your discovery is NOT using FQDN or you'll never have any data!!! That's why ''IP'' unique criteria for hosts make more sense! | ||
+ | |||
+ | |||
+ | |||
+ | ==Access items== | ||
+ | |||
+ | → Configuration menu >> Templates >> ''Searched template'' >> Applications >> Application's Item | ||
− | |||
[[File:Zabbix template 06 App Items.png|1024px|caption|Zabbix template 06 App Items]] | [[File:Zabbix template 06 App Items.png|1024px|caption|Zabbix template 06 App Items]] | ||
− | |||
− | + | ==Create / edit item== | |
+ | |||
+ | → Configuration menu >> Templates >> ''Searched template'' >> Applications >> Application's Items >> Item >> Create Item | edit Item | ||
+ | |||
[[File:Zabbix template 07 create edit Item.png|1024px|caption|Zabbix template 07 create edit Item]] | [[File:Zabbix template 07 create edit Item.png|1024px|caption|Zabbix template 07 create edit Item]] | ||
− | |||
− | * | + | ===Test the command=== |
+ | |||
+ | Before registering the new item into Zabbix you should test the command on a running server. | ||
+ | |||
+ | * SSH to a running server that has ''zabbix_agent'' installed | ||
+ | * Try you command on that server and check the output! | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | ## Return the number of JAVA processes for the vehco-smartcard user | ||
+ | sudo zabbix_agent -t proc.num[java,vehco-smartcard,,] | ||
+ | |||
+ | ## ... NOTE ... | ||
+ | ## The test doesn't work with all commands :( For example, it doesn't work with the LOG || LOGRT rules | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===Create LOG item=== | ||
+ | |||
+ | This item will check for errors or warning in a log file. | ||
+ | |||
+ | * '''Type''' : Zabbix agent (active) => the client will report all changes to the server, client's does NOT wait for server interrogation: it's pro-active | ||
+ | * '''Key''' : logrt[/var/log/vehco/smartcard-service.log,ERROR] => to handle log files rotation I'm using ''logrt''. Only the ERROR level will be reported back. | ||
+ | * '''Type of information''' : Log | ||
+ | * '''Log time format''' : This value must match you own application! I'm using ''dd.MM.yyyy HH:mm:ss'' like my < logback.xml > configuration | ||
+ | |||
[[File:Zabbix template 08 Item properties.png|600px|caption|Zabbix template 08 Item properties]] | [[File:Zabbix template 08 Item properties.png|600px|caption|Zabbix template 08 Item properties]] | ||
− | |||
− | '''Key''' : | + | ===Create PROCESS item=== |
+ | |||
+ | This must be a PASSIVE item. | ||
+ | |||
+ | |||
+ | This item will check for a specific running process(es). It will return a numeric value == number of running processes. | ||
+ | |||
+ | * '''Type''' : Zabbix agent | ||
+ | * '''Key''' : proc.num[java,,,vehco-smartcard] => check for 'java' process running with '' 'vehco-smartcard' '' in the command | ||
+ | * '''Type of information''' : Numeric (unsigned) | ||
+ | * '''Data type''' : Decimal | ||
+ | |||
+ | |||
+ | [[File:Zabbix process check.png|none|Zabbix item processus monitoring]] | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===Check that your item is working=== | ||
+ | |||
+ | You can check if your item is working or not. If your configuration is OK then you should retrieve some data. If not, you have a problem! | ||
+ | |||
+ | [!] Note that sometimes you need to reboot the server for the zabbix_agent to use the new configuration. | ||
+ | |||
+ | [!] New data will only appears after a while ~ 5 to 10mn. | ||
+ | |||
+ | |||
+ | → Monitoring >> Latest data >> ''Searched template / hosts'' | ||
+ | |||
+ | [[File:Zabbix latest data 01.png|1024px|caption|Zabbix latest data 01]] | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | If OK you should see something like that: | ||
+ | [[File:Zabbix latest data 02.png|none|Zabbix latest data 02]] | ||
− | |||
− | |||
− | + | If you don't have anything: | |
− | + | * Remember that '''FQDN != simple name''' ==> smartcard-main-00.smartcards.vehco.com != smartcard-main-00 | |
− | * | + | * Use a Zabbix Agent '''IP''' instead of name |
+ | |||
− | |||
− | |||
− | |||
+ | =Triggers management= | ||
− | + | English reminder: A trigger is a specific event condition. When something special append it will raise an event. | |
− | |||
− | ==Access triggers list | + | ==Access triggers list == |
You can access triggers list from an item or a template. | You can access triggers list from an item or a template. | ||
* From an Item: | * From an Item: | ||
+ | |||
+ | |||
+ | → Configuration menu >> Templates >> ''Searched template'' >> Applications >> Application's Items >> Item >> Triggers (purple arrow) | ||
[[File:Zabbix template 09 Trigger access from items.png|1024px|caption|Zabbix template 09 Trigger access from items]] | [[File:Zabbix template 09 Trigger access from items.png|1024px|caption|Zabbix template 09 Trigger access from items]] | ||
− | |||
* From a Template: | * From a Template: | ||
+ | |||
+ | |||
+ | → Configuration menu >> Templates >> ''Searched template'' >> Triggers | ||
[[File:Zabbix template 09 Trigger access from template.png|1024px|caption|Zabbix template 09 Trigger access from template]] | [[File:Zabbix template 09 Trigger access from template.png|1024px|caption|Zabbix template 09 Trigger access from template]] | ||
− | |||
Line 120: | Line 197: | ||
==Create a new trigger== | ==Create a new trigger== | ||
+ | |||
+ | → Configuration menu >> Templates >> ''Searched template'' >> Triggers >> Create trigger | ||
[[File:Zabbix trigger 11 new trigger.png|1024px|caption|Zabbix trigger 11 new trigger]] | [[File:Zabbix trigger 11 new trigger.png|1024px|caption|Zabbix trigger 11 new trigger]] | ||
− | |||
See the excellent Zabbix documentation regarding HOW to create a trigger: https://www.zabbix.com/documentation/2.2/manual/config/triggers | See the excellent Zabbix documentation regarding HOW to create a trigger: https://www.zabbix.com/documentation/2.2/manual/config/triggers | ||
+ | |||
+ | ==Log level Trigger== | ||
For the log you should have something like: | For the log you should have something like: | ||
Line 137: | Line 217: | ||
In my case: | In my case: | ||
− | * Template: '' | + | * Template: ''Template vehco-smartcards'' |
* Item: ''logrt[/var/log/vehco/smartcard-service.log,ERROR]'' | * Item: ''logrt[/var/log/vehco/smartcard-service.log,ERROR]'' | ||
* Condition: ''ERROR'' => react on "ERROR" string | * Condition: ''ERROR'' => react on "ERROR" string | ||
− | '''{ | + | '''{Template vehco-smartcards:logrt[/var/log/vehco/smartcard-service.log,ERROR].str(ERROR)}=1''' |
+ | |||
+ | |||
+ | |||
+ | ==No process Trigger== | ||
+ | |||
+ | This trigger reacts when there is no process or no data from the server. | ||
+ | |||
+ | [[File:Zabbix trigger process monitoring.png|none|Zabbix trigger process monitoring]] | ||
+ | |||
+ | |||
+ | In my case: | ||
+ | * Template: ''Template vehco-smartcards'' | ||
+ | * Item: ''proc.num[java,vehco-smartcard,,]'' | ||
+ | * Condition 1: ''nodata(5m)=1'' ==> no data for five minutes | ||
+ | * Condition 2: ''avg(5m)=0'' ==> value '0' (no process) returned for five minutes | ||
+ | '''{Template vehco-smartcards:proc.num[java,vehco-smartcard,,].avg(5m)}=0 | {Template vehco-smartcards:proc.num[java,vehco-smartcard,,].nodata(5m)}=1''' | ||
− | |||
Latest revision as of 14:07, 25 June 2015
Contents
Vocable
Key points:
- Zabbix configuration rely on templates = set of applications, items, triggers and actions.
- Each template has a list of applications
- Each application has a set of items = datasource
- Each item has some triggers = conditions to raise an event with a specific alert level and type
- Each trigger is bound to some actions = action to perform on when the trigger event is sent. A trigger can rely on many items.
- Each host belongs to one or more groups. Each group has some related templates they apply to their hosts
Create a new application
- Access applications' list
→ Configuration menu >> Templates >> Searched template >> Applications
- Create new application
→ Configuration menu >> Templates >> Searched template >> Applications >> Create application
==> Give a name to the new application and save.
==> It should appears it the applications list
Items management
An item is like a datasource in the dev. vocable.
Important notes
Each type of item has a different set of keys (functions). You can find the complete list on Zabbix documentation:
- List of items (v2.2): https://www.zabbix.com/documentation/2.2/manual/config/items/itemtypes
- Item's key for Zabbix agent (v2.2): https://www.zabbix.com/documentation/2.2/manual/config/items/itemtypes/zabbix_agent
If you're using DNS configuration then the host will report using the short name. Be sure your discovery is NOT using FQDN or you'll never have any data!!! That's why IP unique criteria for hosts make more sense!
Access items
→ Configuration menu >> Templates >> Searched template >> Applications >> Application's Item
Create / edit item
→ Configuration menu >> Templates >> Searched template >> Applications >> Application's Items >> Item >> Create Item | edit Item
Test the command
Before registering the new item into Zabbix you should test the command on a running server.
- SSH to a running server that has zabbix_agent installed
- Try you command on that server and check the output!
## Return the number of JAVA processes for the vehco-smartcard user
sudo zabbix_agent -t proc.num[java,vehco-smartcard,,]
## ... NOTE ...
## The test doesn't work with all commands :( For example, it doesn't work with the LOG || LOGRT rules
Create LOG item
This item will check for errors or warning in a log file.
- Type : Zabbix agent (active) => the client will report all changes to the server, client's does NOT wait for server interrogation: it's pro-active
- Key : logrt[/var/log/vehco/smartcard-service.log,ERROR] => to handle log files rotation I'm using logrt. Only the ERROR level will be reported back.
- Type of information : Log
- Log time format : This value must match you own application! I'm using dd.MM.yyyy HH:mm:ss like my < logback.xml > configuration
Create PROCESS item
This must be a PASSIVE item.
This item will check for a specific running process(es). It will return a numeric value == number of running processes.
- Type : Zabbix agent
- Key : proc.num[java,,,vehco-smartcard] => check for 'java' process running with 'vehco-smartcard' in the command
- Type of information : Numeric (unsigned)
- Data type : Decimal
Check that your item is working
You can check if your item is working or not. If your configuration is OK then you should retrieve some data. If not, you have a problem!
[!] Note that sometimes you need to reboot the server for the zabbix_agent to use the new configuration.
[!] New data will only appears after a while ~ 5 to 10mn.
→ Monitoring >> Latest data >> Searched template / hosts
If OK you should see something like that:
If you don't have anything:
- Remember that FQDN != simple name ==> smartcard-main-00.smartcards.vehco.com != smartcard-main-00
- Use a Zabbix Agent IP instead of name
Triggers management
English reminder: A trigger is a specific event condition. When something special append it will raise an event.
Access triggers list
You can access triggers list from an item or a template.
- From an Item:
→ Configuration menu >> Templates >> Searched template >> Applications >> Application's Items >> Item >> Triggers (purple arrow)
- From a Template:
→ Configuration menu >> Templates >> Searched template >> Triggers
... You should see something like:
Create a new trigger
→ Configuration menu >> Templates >> Searched template >> Triggers >> Create trigger
See the excellent Zabbix documentation regarding HOW to create a trigger: https://www.zabbix.com/documentation/2.2/manual/config/triggers
Log level Trigger
For the log you should have something like:
Expression = {<Template>:<ITEM>.str(<condition>)}=1
In my case:
- Template: Template vehco-smartcards
- Item: logrt[/var/log/vehco/smartcard-service.log,ERROR]
- Condition: ERROR => react on "ERROR" string
{Template vehco-smartcards:logrt[/var/log/vehco/smartcard-service.log,ERROR].str(ERROR)}=1
No process Trigger
This trigger reacts when there is no process or no data from the server.
In my case:
- Template: Template vehco-smartcards
- Item: proc.num[java,vehco-smartcard,,]
- Condition 1: nodata(5m)=1 ==> no data for five minutes
- Condition 2: avg(5m)=0 ==> value '0' (no process) returned for five minutes
{Template vehco-smartcards:proc.num[java,vehco-smartcard,,].avg(5m)}=0 | {Template vehco-smartcards:proc.num[java,vehco-smartcard,,].nodata(5m)}=1
Action
Access actions
→ Configuration menu >> Actions >> Create Action
Create action
The following example will react upon log file alert and send an email.
Action
On this 1st screen, you must:
- Give the action a name
- Set a custom email's body. You can use Zabbix variables
- enabled the new action
Conditions
No matter what conditions you choose, remember:
- Select and or or condition BEFORE adding a new condition
- You must select the matching trigger. That's the only minimal condition (see my example)
Operations
Just choose the email operation. An operation is the result of the previous action and conditions.
Conclusion
That's all. You should receive your alerts by now !
Sources: