# Digital Ocean Discovery

# Introducción

**Este plugin tiene como finalidad monitorizar droplets de Digital Ocean**, mediante métricas claves referentes al CPU, memoria, disco, bandwith y status de estos , que son esenciales para llevar un control y seguimiento de estos recursos.

El plugin se conecta al API REST de Digital Ocean y monitoriza el entorno mediante las métricas anteriormente mencionadas, generando un agente para cada zona e instancia via XML que envía al servidor de pandora.

# Prerrequisitos

- Conectividad a la API de Digital Ocean

# Parámetros

**Parámetros**

<table border="1" id="bkmrk---conf-ruta-al-archi"><tbody><tr><td>--conf</td><td>Ruta al archivo de configuración</td></tr></tbody></table>

**Archivo de configuración (--conf)**

```
token                = < Token Bearer de autenticación >
agents_group_name    = < Nombre del grupo de destino para los agentes creados >
threads              = < Número máximo de threads utilizados >
interval             = < Intervalo en segundos para los agentes >
use_prefix           = < Activar con 1 para habilitar el uso de prefijos >
prefix               = < Prefijo para el nombre de los agentes >
applicate_project    = < Activar con 1 para poder especificar un proyecto al que apuntar >
filter_project       = < Si se especifica un proyecto, solo se crearan agentes de estos >
transfer_mode        = tentacle
data_dir             = /var/spool/pandora/data_in
tentacle_ip          = < IP de la máquina destino para los agentes creados >
tentacle_port        = < Puerto de tentacle, por defecto : 41121 >

discard_activate     = < Activar con 1 para poder especificar droplets que descartar en la monitorizacion >
discard_droplets     = < Especifica droplets para descartar, ejemplo : ["droplet1","droplet2"]
```

<span style="text-decoration: underline;">Ejemplo</span>

```
token                = dop_v1_JSUzI1NiIsImtpZCI6IkVpeVhfTFFzSWpmcGtjZzM0blZrZDY3YUtMbzNqTWZmcmdLZ2NKbl

agents_group_name    = Applications
threads              = 2
interval             = 300
use_prefix           = 1
prefix               = DigitalOcean.
applicate_project    = 1
filter_project       = SeraCents
transfer_mode        = tentacle
data_dir             = /var/spool/pandora/data_in
tentacle_ip          = 172.42.42.101
tentacle_port        = 41121

discard_activate     = 1
discard_droplets     = ["ubuntu-s-1vcpu-1gb-sfo3-01","ubuntu-s-1vcpu-4gb-sfo3-03"]
```

# Ejecución manual

El formato de la ejecución del plugin es el siguiente:

```
./pandora_digitalocean --conf < ruta al fichero de configuración >
```

Por ejemplo:

```
./pandora_digitalocean --conf /usr/share/pandora_server/util/plugin/digitalocean.conf
```

La ejecución devolverá una salida en formato JSON con información sobre la ejecución, y generará un fichero XML para cada agente monitorizado que enviará al servidor de Pandora FMS por el método de transferencia indicado en la configuración.

Por ejemplo:

```
{"summary": {"Total agents": 18}}
```

# Discovery

Este plugin puede integrarse con el *Discovery* de Pandora FMS.

Para ello se debe cargar el paquete ".disco" que puede descargar desde la librería de Pandora FMS:

[https://pandorafms.com/library/](https://pandorafms.com/library/)

[![image.png](https://pandorafms.com/guides/public/uploads/images/gallery/2024-03/scaled-1680-/bUeimage.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2024-03/bUeimage.png)

Una vez cargado, se podrán monitorizar entornos de Kubernetes creando tareas de *Discovery* desde la sección *Management &gt; Discovery &gt; App*

Para cada tarea se solicitarán los siguientes datos mínimos:

- **Token:** Token de digital ocean.
- **Use prefix**: Para especificar un prefijo en los agentes
- **Filter project :** Para apuntar a un proyecto determinado
- **Discard droplets :** Para descartar droplets
- **Max threads:** Número máximo de threads
- **Tentacle IP**: IP del servidor de Tentacle al que enviar los datos de los agentes. Normalmente este parámetro no se modificará.
- **Tentacle port**: Puerto del servidor de Tentacle al que enviar los datos. Normalmente este parámetro no se modificará.

[![image.png](https://pandorafms.com/guides/public/uploads/images/gallery/2024-03/scaled-1680-/HE3image.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2024-03/HE3image.png)

Las tareas completadas con éxito tendrán un resumen de ejecución con la siguiente información:

- **Total agents** : Número total de agentes generados por la tarea.

[![image.png](https://pandorafms.com/guides/public/uploads/images/gallery/2024-03/scaled-1680-/i97image.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2024-03/i97image.png)

# Agentes y módulos generados por el plugin

La ejecución del plugin, creara los siguientes agentes y módulos:

- **Agente global**

<table border="1" id="bkmrk-%3C-prefix.kubernetes-"><colgroup><col></col></colgroup><tbody><tr><td>&lt; prefix &gt;&lt;Digital Ocean &gt;</td></tr></tbody></table>

**Modules**

<table border="1" id="bkmrk-api-status-%3C-endpoin" style="width: 32.2222%; height: 119.188px;"><colgroup><col style="width: 100%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;">Account balance </td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">Droplets</td></tr><tr style="height: 29.7969px;"><td class="datos2 " id="bkmrk-month-to-data-balanc" style="height: 29.7969px;">Month to data balance</td></tr><tr style="height: 29.7969px;"><td class="datos " id="bkmrk-month-to-date-usage" style="height: 29.7969px;">Month to date usage</td></tr></tbody></table>

- **Un agente por cada droplet**

<table border="1" id="bkmrk-%3C-prefix.-nombre-dep" style="width: 26.1728%;"><colgroup><col style="width: 100%;"></col></colgroup><tbody><tr><td>&lt; prefix &gt;&lt; Nombre Droplet &gt;</td></tr></tbody></table>

**Modules**

<table border="1" id="bkmrk-replicas-updated-rep" style="width: 31.358%; height: 225.375px;"><colgroup><col style="width: 100%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;">Status</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">Cpu %</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">Mem %</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">Load 1</td></tr><tr style="height: 46.5938px;"><td style="height: 46.5938px;">Load 5</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">Load 15</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">Public inbound</td></tr><tr><td>Public outbound</td></tr><tr><td>Private inbound</td></tr><tr><td>Private outbound</td></tr><tr><td>&lt; Nombre del último backup &gt;</td></tr><tr><td>&lt; Nombre del último snapshot &gt;</td></tr><tr><td>&lt; Nombre disco &gt; %</td></tr></tbody></table>