Zabbix configure template
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: