Skip to content

Commit ed6510a

Browse files
authored
Merge pull request #497 from iplabel/main
fix DFY-18531
2 parents 8a02d7e + 9331491 commit ed6510a

2 files changed

Lines changed: 366 additions & 406 deletions

File tree

Lines changed: 134 additions & 135 deletions
Original file line numberDiff line numberDiff line change
@@ -1,135 +1,134 @@
1-
# Zabbix Ekara Template
2-
3-
## Overview
4-
5-
Ekara is a fully hybrid platform, capable of monitoring 100% of existing applications and ensuring the availability and performance of your environment (intranet and internet).
6-
Ekara robots execute scenarios (user journeys) according to a predefined schedule.
7-
The scenario results are the scenario status and the duration of every step as well as browser's metrics for Web applications.
8-
9-
The Zabbix Ekara Template is useful for real_time monitoring. For user journeys (scenarios) configuration and a deepen analysis, access the Ekara Portal directly.
10-
The template is designed to interface with Ekara APIs to display in customized dashboards :
11-
* Scenarios statuses,
12-
* Trigger problem event based on scenario status,
13-
* Get observability KPIs (performance and availability),
14-
15-
## Setup
16-
17-
### Import the template
18-
19-
*Data collection -> Templates -> Import*
20-
21-
![ImportTemplate](./files/import.png)
22-
23-
### Fill up these macros
24-
25-
*Select the template -> Macros*
26-
27-
### Assign the template to a host
28-
29-
*Data collection -> Hosts -> Select host and assign template*
30-
31-
That host will have items, triggers and graphs created automatically for each scenarios.
32-
33-
### Enjoy (and wait)<br></br>
34-
35-
## Zabbix configuration
36-
37-
You can also modify the {$UPDATE.INTERVAL} macro, which is the number of minutes between each API call for metrics retrieval.<br></br>
38-
39-
## Template links
40-
41-
There are no template links in this template.<br></br>
42-
43-
## Macros used
44-
45-
|Macro|Description|Default value|
46-
|-|-|-|
47-
|{$EKARA.INTERVAL}|Define at which frequency to refresh the data|`15m`|
48-
|{$EKARA.LOGIN}|Put your Ekara login here| - |
49-
|{$EKARA.PASSWORD}|Put your password here|`SECRET_TEXT`|
50-
|{$EKARA.URL}|Url to connect to the Ekara API|`https://api.ekara.ip-label.net/`|
51-
52-
## Items
53-
54-
|Name|Description|Type|Key|Update Interval|Preprocessing|
55-
|-|-|-|-|-|-|
56-
|Get all apps & active scenarios|Get all information of the scenarios|Script|`get.apps.active.scenarios`|10m| - |
57-
|Get all scenarios statuses|Get the statuses of the scenarios|Script|`get.scenarios.statuses`|10m| - |
58-
|Get all apps & active scenarios check|Data collection check|Dependent item|`get.apps.active.scenarios.check`| - | </p><ul><li><p> JSON Path: `$.error` </p><p></p></li><li><p> Discard unchanged with heartbeat: `3h` </p></li></ul> |
59-
|Get all scenarios statuses check|Data collection check|Dependent item|`get.scenarios.statuses.check`| - | </p><ul><li><p> JSON Path: `$.error` </p><p></p></li><li><p> Discard unchanged with heartbeat: `3h` </p></li></ul> |
60-
61-
## Triggers
62-
63-
|Name|Description|Expression|Severity|
64-
|-|-|-|-|
65-
|Get all apps & active scenarios: Failed| - |`length(last(/Ekara Template/get.apps.active.scenarios.check))>0`|Warning|
66-
|Get all scenarios statuses: Failed| - |`length(last(/Ekara Template/get.scenarios.statuses.check))>0`|Warning|
67-
68-
## Discovery rules
69-
70-
### Set Ekara items
71-
72-
|Name|Description|Type|Key|
73-
|-|-|-|-|
74-
|Set Ekara items|This will discover the metrics for each scenarios|Dependent Item|`set.ekara.items`|
75-
76-
**LLD Macros**
77-
78-
|Name|JSON Path|
79-
|-|-|
80-
|{#SCENARIO.APP}|`$.['applicationName']`|
81-
|{#SCENARIO.ID}|`$.['id']`|
82-
|{#SCENARIO.METRIC}|`$.['preferredMetric']`|
83-
|{#SCENARIO.NAME}|`$.['name']`|
84-
|{#SCENARIO.STATE}|`$.['active']`|
85-
|{#SCENARIO.TYPE}|`$.['plugins'][1].['Name']`|
86-
87-
**Filters**
88-
89-
|Macro|| Regular expression|
90-
|-|-|-|
91-
|{#SCENARIO.STATE}|matches|`1`|
92-
93-
**Items prototype**
94-
95-
|Name|Description|Type|Key|Update Interval|Preprocessing|
96-
|-|-|-|-|-|-|
97-
|{#SCENARIO.NAME}: availability|Get the availability of the scenario|Dependent Item|`get.scenarios.availability[{#SCENARIO.ID}]`|-| <p><ul><li><p> JSON Path: `$.kpis[?(@.label=='availability')].value.first()` </p></li></ul> |
98-
|{#SCENARIO.NAME}: results|Get the results for each scenarios|Script|`get.scenarios.results[{#SCENARIO.ID}]`|{$UPDATE.INTERVAL}|-|
99-
|{#SCENARIO.NAME}: results check|Data collection check|Dependent Item|`get.scenarios.results.check[{#SCENARIO.ID}]`|-| <p><ul><li><p> JSON Path: `$.error` </p><p></p></li><li><p> Discard unchanged with heartbeat: `3h` </p></li></ul> |
100-
|{#SCENARIO.NAME}: {#SCENARIO.METRIC}|Get the metric of the scenario if available|Dependent Item|`get.scenarios.metric[{#SCENARIO.ID}]`|-| <p><ul><li><p> JSON Path: `$.kpis[?(@.label=='{#SCENARIO.METRIC}')].value.first()` </p></li></ul> |
101-
102-
**Triggers prototype**
103-
104-
|Name|Description|Expression|Severity|
105-
|-|-|-|-|
106-
|{#SCENARIO.NAME}: Failed to get results| - |`length(last(/Ekara Template/get.scenarios.results.check[{#SCENARIO.ID}]))>0`|Warning|
107-
108-
### Set Ekara status items
109-
110-
|Name|Description|Type|Key|
111-
|-|-|-|-|
112-
|Set Ekara status items|This will discover the status for each scenarios|Dependent Item|`set.ekara.status.items`|
113-
114-
**LLD Macros**
115-
116-
|Name|JSON Path|
117-
|-|-|
118-
|{#SCENARIO.ID}|`$.['scenarioId']`|
119-
|{#SCENARIO.NAME}|`$.['scenarioName']`|
120-
121-
**Items prototype**
122-
123-
|Name|Description|Type|Key|Update Interval|Preprocessing|
124-
|-|-|-|-|-|-|
125-
|{#SCENARIO.NAME}: status|Get the status of the scenario|Dependent Item|`get.scenarios.statuses[{#SCENARIO.ID}]`|-|`$[?(@.scenarioId=='{#SCENARIO.ID}')].currentStatus.first()`|
126-
127-
**Triggers prototype**
128-
129-
|Name|Description|Expression|Severity|
130-
|-|-|-|-|
131-
|{#SCENARIO.NAME}: Status is not success|This will be created for each scenarios and trigger a problem if the scenario's status isn't successful|`last(/Ekara Template/get.scenarios.statuses[{#SCENARIO.ID}])<>1`|Average|
132-
133-
## Feedback
134-
135-
Please report any issues with the template at [https://help.ip-label.net/](https://help.ip-label.net/)
1+
# Zabbix Ekara Template
2+
3+
## Overview
4+
5+
Ekara is a fully hybrid platform, capable of monitoring 100% of existing applications and ensuring the availability and performance of your environment (intranet and internet).
6+
Ekara robots execute scenarios (user journeys) according to a predefined schedule.
7+
The scenario results are the scenario status and the duration of every step as well as browser's metrics for Web applications.
8+
9+
The Zabbix Ekara Template is useful for real_time monitoring. For user journeys (scenarios) configuration and a deepen analysis, access the Ekara Portal directly.
10+
The template is designed to interface with Ekara APIs to display in customized dashboards :
11+
* Scenarios statuses,
12+
* Trigger problem event based on scenario status,
13+
* Get observability KPIs (performance and availability),
14+
15+
## Setup
16+
17+
### Import the template
18+
19+
*Data collection -> Templates -> Import*
20+
21+
![ImportTemplate](./doc/import.png)
22+
23+
### Fill up these macros
24+
25+
*Select the template -> Macros*
26+
27+
### Assign the template to a host
28+
29+
*Data collection -> Hosts -> Select host and assign template*
30+
31+
That host will have items, triggers and graphs created automatically for each scenarios.
32+
33+
### Enjoy (and wait)<br></br>
34+
35+
## Zabbix configuration
36+
37+
You can also modify the {$UPDATE.INTERVAL} macro, which is the number of minutes between each API call for metrics retrieval.<br></br>
38+
39+
## Template links
40+
41+
There are no template links in this template.<br></br>
42+
43+
## Macros used
44+
45+
|Macro|Description|Default value|
46+
|-|-|-|
47+
|{$EKARA.INTERVAL}|Define at which frequency to refresh the data|`15m`|
48+
|{$EKARA.API_KEY}|Put your Ekara API key here|`SECRET_TEXT`|
49+
|{$EKARA.URL}|Ekara API endpoint URL|`https://ekara.ip-label.net/`|
50+
51+
## Items
52+
53+
|Name|Description|Type|Key|Update Interval|Preprocessing|
54+
|-|-|-|-|-|-|
55+
|Get all apps & active scenarios|Get all information of the scenarios|Script|`get.apps.active.scenarios`|10m| - |
56+
|Get all scenarios statuses|Get the statuses of the scenarios|Script|`get.scenarios.statuses`|10m| - |
57+
|Get all apps & active scenarios check|Data collection check|Dependent item|`get.apps.active.scenarios.check`| - | </p><ul><li><p> JSON Path: `$.error` </p><p></p></li><li><p> Discard unchanged with heartbeat: `3h` </p></li></ul> |
58+
|Get all scenarios statuses check|Data collection check|Dependent item|`get.scenarios.statuses.check`| - | </p><ul><li><p> JSON Path: `$.error` </p><p></p></li><li><p> Discard unchanged with heartbeat: `3h` </p></li></ul> |
59+
60+
## Triggers
61+
62+
|Name|Description|Expression|Severity|
63+
|-|-|-|-|
64+
|Get all apps & active scenarios: Failed| - |`length(last(/Ekara Template/get.apps.active.scenarios.check))>0`|Warning|
65+
|Get all scenarios statuses: Failed| - |`length(last(/Ekara Template/get.scenarios.statuses.check))>0`|Warning|
66+
67+
## Discovery rules
68+
69+
### Set Ekara items
70+
71+
|Name|Description|Type|Key|
72+
|-|-|-|-|
73+
|Set Ekara items|This will discover the metrics for each scenarios|Dependent Item|`set.ekara.items`|
74+
75+
**LLD Macros**
76+
77+
|Name|JSON Path|
78+
|-|-|
79+
|{#SCENARIO.APP}|`$.['applicationName']`|
80+
|{#SCENARIO.ID}|`$.['id']`|
81+
|{#SCENARIO.METRIC}|`$.['preferredMetric']`|
82+
|{#SCENARIO.NAME}|`$.['name']`|
83+
|{#SCENARIO.STATE}|`$.['active']`|
84+
|{#SCENARIO.TYPE}|`$.['plugins'][1].['Name']`|
85+
86+
**Filters**
87+
88+
|Macro|| Regular expression|
89+
|-|-|-|
90+
|{#SCENARIO.STATE}|matches|`1`|
91+
92+
**Items prototype**
93+
94+
|Name|Description|Type|Key|Update Interval|Preprocessing|
95+
|-|-|-|-|-|-|
96+
|{#SCENARIO.NAME}: availability|Get the availability of the scenario|Dependent Item|`get.scenarios.availability[{#SCENARIO.ID}]`|-| <p><ul><li><p> JSON Path: `$.kpis[?(@.label=='availability')].value.first()` </p></li></ul> |
97+
|{#SCENARIO.NAME}: results|Get the results for each scenarios|Script|`get.scenarios.results[{#SCENARIO.ID}]`|{$UPDATE.INTERVAL}|-|
98+
|{#SCENARIO.NAME}: results check|Data collection check|Dependent Item|`get.scenarios.results.check[{#SCENARIO.ID}]`|-| <p><ul><li><p> JSON Path: `$.error` </p><p></p></li><li><p> Discard unchanged with heartbeat: `3h` </p></li></ul> |
99+
|{#SCENARIO.NAME}: {#SCENARIO.METRIC}|Get the metric of the scenario if available|Dependent Item|`get.scenarios.metric[{#SCENARIO.ID}]`|-| <p><ul><li><p> JSON Path: `$.kpis[?(@.label=='{#SCENARIO.METRIC}')].value.first()` </p></li></ul> |
100+
101+
**Triggers prototype**
102+
103+
|Name|Description|Expression|Severity|
104+
|-|-|-|-|
105+
|{#SCENARIO.NAME}: Failed to get results| - |`length(last(/Ekara Template/get.scenarios.results.check[{#SCENARIO.ID}]))>0`|Warning|
106+
107+
### Set Ekara status items
108+
109+
|Name|Description|Type|Key|
110+
|-|-|-|-|
111+
|Set Ekara status items|This will discover the status for each scenarios|Dependent Item|`set.ekara.status.items`|
112+
113+
**LLD Macros**
114+
115+
|Name|JSON Path|
116+
|-|-|
117+
|{#SCENARIO.ID}|`$.['scenarioId']`|
118+
|{#SCENARIO.NAME}|`$.['scenarioName']`|
119+
120+
**Items prototype**
121+
122+
|Name|Description|Type|Key|Update Interval|Preprocessing|
123+
|-|-|-|-|-|-|
124+
|{#SCENARIO.NAME}: status|Get the status of the scenario|Dependent Item|`get.scenarios.statuses[{#SCENARIO.ID}]`|-|`$[?(@.scenarioId=='{#SCENARIO.ID}')].currentStatus.first()`|
125+
126+
**Triggers prototype**
127+
128+
|Name|Description|Expression|Severity|
129+
|-|-|-|-|
130+
|{#SCENARIO.NAME}: Status is not success|This will be created for each scenarios and trigger a problem if the scenario's status isn't successful|`last(/Ekara Template/get.scenarios.statuses[{#SCENARIO.ID}])<>1`|Average|
131+
132+
## Feedback
133+
134+
Please report any issues with the template at [https://help.ip-label.net/](https://help.ip-label.net/)

0 commit comments

Comments
 (0)