# Configuration Guide for External Service Alert Zabbix on the Elven Platform

The **External Services Center** of the **Elven Platform** is the bridge that connects you to the best tools on the market to **monitor**, **manage**, and **resolve incidents** in a simple and efficient way.\
Within it, you can **integrate** **Zabbix** with the **Elven Platform**, allowing the reception of **alerts** and **events** related to **incidents** directly on the platform. This enables you to **monitor** and analyze your **applications** and **services** from an **Incident Management** perspective, using the best **practices** and **methodologies** available, all in one place.

{% embed url="<https://demo.elven.works/demo/cmd3ge6v602833l0ilogect2j?utm_source=link>" %}

## **API Token**&#x20;

To integrate the **Elven Platform** with **Zabbix**, we need to create an **API Token**. This unique key is essential for the two platforms to connect securely, ensuring reliable and authenticated information exchange. Simply access the **Organization Settings** in the **Elven Platform**, navigate to the **API** section, and generate it.

## **Creating an API Token**

* In the top menu, under your user settings, click on **Organization Settings**.
* In the **API** tab, click the **+** button to create a new **API Token**.

<figure><img src="https://content.gitbook.com/content/NbD6tAAcbxaY8pw1cchL/blobs/zr4x4ZFmjKWyNwUA0ttz/iza01.png" alt=""><figcaption></figcaption></figure>

## **Accessing External Service Alert Zabbix**&#x20;

* Navigate to the main menu and click on **Services Hub**.
* In **External Services Monitoring**, select the **Alert Zabbix** item.

<figure><img src="https://content.gitbook.com/content/NbD6tAAcbxaY8pw1cchL/blobs/SyJ9lTMs44GuvYDjOTGz/iza02.png" alt=""><figcaption></figcaption></figure>

## **Creating the External Services for Alert Zabbix**&#x20;

In the **form**, start by filling in the **External Service Name** field, which will be the name of the external service, and define the **Responders**, that is, the people or teams who will receive **notifications** related to this service. After that, click **CREATE** to proceed. This action will create the initial record of your **external service**.

<figure><img src="https://content.gitbook.com/content/NbD6tAAcbxaY8pw1cchL/blobs/jF3nekR2fIavLZIGY4WA/iza03.png" alt=""><figcaption></figcaption></figure>

Next, locate the **API Token** you generated earlier and select it to configure the **integration** with **Zabbix**.

<figure><img src="https://content.gitbook.com/content/NbD6tAAcbxaY8pw1cchL/blobs/1I1Y4B8SYjoLEelLCLBK/iza04.png" alt=""><figcaption></figcaption></figure>

## **Configuring Webhooks in Zabbix**

The **integration** between **Zabbix** and the **Elven Platform** was designed to simplify your **incident management**, centralizing **alerts** in a single place. By connecting these tools, you ensure a more efficient and agile **operation**, with accurate **information** always at hand.

### **Configuring the Media Type in Zabbix**

The first step of the **integration** is to create a **communication channel** between the platforms. In **Zabbix**, this channel is called a **Media Type**, and it will be responsible for transmitting **alerts** to the **Elven Platform**.\
\
To configure it, access the **Zabbix** side menu, click on **Alerts**, and select **Media types**. On this screen, locate the **Import** button in the upper right corner and click it.\
\
You will need to import a specific **configuration file** for your version of **Zabbix**. To make it easier, you can download it directly from the link below:

{% file src="<https://content.gitbook.com/content/NbD6tAAcbxaY8pw1cchL/blobs/jHIr1rVwNHlRdB62z2tl/ElvenPlatform-V5.x-V6.x.zip>" %}

During the **import**, it is essential to check the **Create new** option, ensuring that the **Media Type** is added correctly without overwriting any other configuration. Once the **import** is complete, the **Elven Platform** will appear in the list of available **Media types**. This will be the channel through which **Zabbix** sends alerts to the **Elven Platform**.\
\
With all steps completed, your integration is almost ready. When **Zabbix** detects a problem, an **alert** will automatically be sent to the **Alerts** tab in the **Elven Platform**. Once the issue is resolved in **Zabbix**, the alert will be marked as **Resolved** in the platform.

<figure><img src="https://content.gitbook.com/content/NbD6tAAcbxaY8pw1cchL/blobs/LrxBmJWZXPJd5lhFrlOw/iza05.png" alt=""><figcaption></figcaption></figure>

<figure><img src="https://content.gitbook.com/content/NbD6tAAcbxaY8pw1cchL/blobs/Pr4ps9TBdhM7PitHvPYd/iza06.png" alt=""><figcaption></figcaption></figure>

<figure><img src="https://content.gitbook.com/content/NbD6tAAcbxaY8pw1cchL/blobs/X5mNrVes2BcfxUUU2S3n/iza07.png" alt=""><figcaption></figcaption></figure>

### **Customizing the Media Type**

Now that the **communication channel** is created, we need to customize it so that **notifications** are properly directed.

To do this, click on **Elven Platform** and fill in the following fields:

* **Organization ID** (`elven_platform_organization`), which identifies your organization in the **Elven Platform**.
* **API URL** (`elven_platform_url`), provided during the initial **integration** setup.

It’s important to remember that the **Organization ID** is present in the body of the **URL** and is essential for correct configuration. If you have any questions, the **Elven Platform** support team can help.

After filling in all the information correctly, click **Update** to save the changes.

<figure><img src="https://content.gitbook.com/content/NbD6tAAcbxaY8pw1cchL/blobs/uZ3BFSncvjgaMhsNFiy7/iza08.png" alt=""><figcaption></figcaption></figure>

The other **parameters** define the information sent to the **Elven Platform** whenever an **event** occurs. When an **event** happens in **Zabbix**, it sends essential data to the **Elven Platform**. The **alert\_message** details the alert, while the **alert\_subject** summarizes what happened. The **event\_id** facilitates tracking, and the **event\_value** indicates whether the event is **Alarmed** or **Resolved**. The **severity** defines the criticality, and the **tags** help with organization. These **parameters** ensure an efficient and customizable **integration**.

With this in mind, in **Zabbix**, we can add **custom tags** to **triggers** to strategically organize and categorize **alerts**. Simply access the **Hosts** section, go to **Triggers**, and select the **Tags** tab. This makes **alert triage** easier, improves **integration** with the **Elven Platform**, and allows for a faster response to **alerts**. With this approach, **monitoring** becomes more efficient and **alert management** much more agile and organized.

<figure><img src="https://content.gitbook.com/content/NbD6tAAcbxaY8pw1cchL/blobs/4M9K7DY8Rzp0M4hVBB3X/iza09.png" alt=""><figcaption></figcaption></figure>

### **Defining Who Will Receive the Alerts**&#x20;

With the **communication channel** configured, the next step is to determine who will be notified when an **alert** is generated.

In the **Zabbix** side menu, go to **Alerts**, click on **Actions**, and select **Trigger Actions**. Within this section, click on **Create action** to create a new **notification rule**.

Choose a descriptive name for this action, such as **Critical Service Monitoring**, to make identification easier. Then, go to the **Operations** tab and define the **user groups** and **individual users** for both **Operations** and **Recovery operations**. These will be the ones to receive the **alerts**. In our case, we selected the **Admin** user, but this choice depends on your team’s and organization’s structure.

<figure><img src="https://content.gitbook.com/content/NbD6tAAcbxaY8pw1cchL/blobs/ESdkvOT0yLzjEsI9LhfO/iza10.png" alt=""><figcaption></figcaption></figure>

<figure><img src="https://content.gitbook.com/content/NbD6tAAcbxaY8pw1cchL/blobs/e4d2ftrGBmKZCGl49OPT/iza11.png" alt=""><figcaption></figcaption></figure>

<figure><img src="https://content.gitbook.com/content/NbD6tAAcbxaY8pw1cchL/blobs/4LZOOBzBdr32ZuULPsjh/iza12.png" alt=""><figcaption></figcaption></figure>

### **Configuring the User to Receive Notifications**

Now that the **notification rule** has been created, we need to ensure that the **user** configured in **Zabbix** receives the **alerts** correctly.

Access the **Zabbix** side menu, click on **Users** and then **Users** again. From the list of users, select **Admin**.\
Next, go to the **Media** tab and click **Add** to add a new **notification channel**.

On the configuration screen, choose **Elven Platform** as the **Type**, and in the **Send to** field, enter a reference name, such as *Elven Platform*. Keep in mind that, in the case of a **Webhook**, this reference is only for organization purposes, since the actual **service URL** has already been defined in the **Media Type**.

After filling everything out correctly, click **Update** to save the changes.

<figure><img src="https://content.gitbook.com/content/NbD6tAAcbxaY8pw1cchL/blobs/jrm55JxWy1vFm91wD8O0/isa13.png" alt=""><figcaption></figcaption></figure>

<figure><img src="https://content.gitbook.com/content/NbD6tAAcbxaY8pw1cchL/blobs/YaumfVFQkedkbO50ZNRJ/iza14.png" alt=""><figcaption></figcaption></figure>

<figure><img src="https://content.gitbook.com/content/NbD6tAAcbxaY8pw1cchL/blobs/lsoOFmDxhg5QMtRidh5U/iza15.png" alt=""><figcaption></figcaption></figure>

### **Testing and Ensuring the Functionality of the Integration**

When the issue is resolved in **Zabbix**, the **Elven Platform** will also record this resolution, marking the alert as **Resolved**.

This ensures efficient **monitoring**, with **real-time alerts** and faster **incident management**. If you need support at any stage, the **Elven Platform** team is available to help.

Once configured, the service will appear in the **External Services Monitoring Center**, categorized by **status**, making it easier to monitor **incidents** with priority given to those in an **alarm** state.

## **Additional security and performance settings**

* **IP Whitelist**: API communication can be configured to allow only authorized IPs. To enable or modify this setting, please contact Elven Platform support.
* **Rate Limiting**: The default request limiting time is **5 minutes**, but it can be adjusted as needed. For changes, please contact Elven Platform support.

These settings ensure greater **security** and **control** over the data traffic between integrated systems.

## **Glossary of Technical Terms**

**API Token**: A unique key that authenticates and authorizes communication between Elven Platform and Zabbix, ensuring secure information exchange.\
**External Services Monitoring**: A feature in Elven Platform that allows integration with external services, such as Zabbix, for centralized monitoring and alerting.\
**Organization Settings**: The area in Elven Platform where organization-related settings are managed, including the creation of API tokens.\
**Responders**: Individuals or teams designated to receive notifications and act in response to incidents reported by the integration.\
**Media Type**: A component in Zabbix used to configure communication channels, enabling alerts to be sent to external destinations such as Elven Platform.\
**Elven Platform**: The specific Media Type in Zabbix configured to integrate and send notifications to Elven Platform.\
**Organization ID**: A unique identifier provided by Elven Platform support to associate the Media Type with the correct organization during integration.\
**API URL**: The address provided by Elven Platform to route alerts sent from Zabbix, connecting it to the appropriate endpoint.\
**Trigger Actions**: Actions configured in Zabbix to monitor specific events (such as issues on hosts or services) and send alerts based on those conditions.\
**Conditions**: Criteria defined in Zabbix that determine when a Trigger Action will be activated, such as the occurrence of a problem on a host or host group.\
**Operations**: Configuration in Zabbix that defines what should happen when a Trigger Action is activated, such as sending notifications to users or groups.\
**Recovery Operations**: Actions configured to notify about the resolution of problems detected in Zabbix.\
**Triggers**: Rules in Zabbix used to detect specific conditions on monitored hosts or services, such as failures or out-of-range values.\
**Severity**: Levels assigned to incidents detected by Zabbix, helping categorize and prioritize alerts in Elven Platform:

* **Informational**: General information or low-impact events.
* **Low**: Low-priority issues that require eventual attention.
* **Moderate**: Medium-impact incidents.
* **High**: Critical problems requiring immediate action.
* **Critical**: High-impact events needing urgent response.\
  **Import**: A feature in Zabbix that allows importing configurations, such as the Media Type, to facilitate integration with external tools.
