# Migrador de elasticsearch a opensearch

# Introducción

**Ver**. 131123

Utilidad CLI para migrar un entorno de elastic search a opensearch

Enlace de descarga: [link](https://firefly.pandorafms.com/pandorafms/utils/elastic_to_opensearch)

**Tipo**: utilidad

# Matriz de compatibilidad

<table id="bkmrk-sistemas-donde-se-ha"><tbody><tr><td>**Version de opensearch probada**

</td><td>2.11.0

</td></tr><tr><td>**Versión de elástic probada**

</td><td>6.4.3

8.10.3

</td></tr><tr><td>**Sistemas OS donde se ha probado**

</td><td>CentOS 7

Rocky 8

Ubuntu 22.04

</td></tr><tr><td>**Sistemas donde debería funcionar**

</td><td>Cualquier sistema operativo Linux que tenga un servidor de Pandora FMS instalado

</td></tr></tbody></table>

# Pre requisitos

Para poder ejecutar esta utilidad se necesita:

- Tener conectividad con el entorno de elastic search
- Tener conectividad con el entorno de opensearch
- Contar con las credenciales de autenticación de opensearch (en caso de tener la autenticación básica configurada)

# Configuración previa

Comprobar que se tiene acceso a Elasticsearch.   
Desde la máquina en la que se ejecutara el migrador, ejecutar una prueba con curl para verificar conectividad.

```
curl http://<hostname_or_ip>:9200
```

[![image.png](https://pandorafms.com/guides/public/uploads/images/gallery/2023-11/scaled-1680-/fUkimage.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2023-11/fUkimage.png)

Realizar la misma comprobación, pero esta vez al entorno de opensearch, se puede realizar con el mismo comando y cambiando el hostname o ip en el caso de no tener autenticación básica.

En caso de tener autenticación se debe ejecutar:

```bash
curl -X GET -ku 'user:pass' https://<hostname_or_ip>:9200
```

[![image.png](https://pandorafms.com/guides/public/uploads/images/gallery/2023-11/scaled-1680-/TKWimage.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2023-11/TKWimage.png)

Si la comprobación es correcta y tenemos acceso a ambos entornos, ya podemos usar el mirador.

# Parámetros y configuración

**Parámetros**

<table border="1" id="bkmrk---conf-ruta-al-archi" style="width: 100%; height: 266.4px;"><tbody><tr style="height: 29.6px;"><td style="width: 48.0734%; height: 29.6px;">-s SOURCE\_URL, --source\_url SOURCE\_URL</td><td style="width: 51.9019%; height: 29.6px;">URL del entorno fuente de elastic a migrar</td></tr><tr style="height: 29.6px;"><td style="width: 48.0734%; height: 29.6px;">-d DESTINATION\_URL, --destination\_url DESTINATION\_URL</td><td style="width: 51.9019%; height: 29.6px;">URL del entorno destino de opensearch </td></tr><tr style="height: 29.6px;"><td style="width: 48.0734%; height: 29.6px;">-P INDEX\_PATTERN, --index\_pattern INDEX\_PATTERN</td><td style="width: 51.9019%; height: 29.6px;">Patrón de índices a migrar, por defecto: pandorafms\*</td></tr><tr style="height: 29.6px;"><td style="width: 48.0734%; height: 29.6px;"> -a, --use\_auth</td><td style="width: 51.9019%; height: 29.6px;">Flag, usar autenticación basica</td></tr><tr style="height: 29.6px;"><td style="width: 48.0734%; height: 29.6px;">-u USER, --user USER</td><td style="width: 51.9019%; height: 29.6px;">Usuario para autenticación basica, por defecto: admin</td></tr><tr style="height: 29.6px;"><td style="width: 48.0734%; height: 29.6px;"> -p PASSWORD, --password PASSWORD</td><td style="width: 51.9019%; height: 29.6px;">Contraseña autenticación Basica, por defecto: admin</td></tr><tr style="height: 29.6px;"><td style="width: 48.0734%; height: 29.6px;">-t TIMEOUT, --timeout TIMEOUT</td><td style="width: 51.9019%; height: 29.6px;">Tiempo que se espera entre migracion de indices </td></tr><tr style="height: 29.6px;"><td style="width: 48.0734%; height: 29.6px;">-f, --force</td><td style="width: 51.9019%; height: 29.6px;">Borra el índice en el destino si existe y fuerza la migración</td></tr><tr style="height: 29.6px;"><td style="width: 48.0734%; height: 29.6px;"> -C, --compare</td><td style="width: 51.9019%; height: 29.6px;">Compara los índices de fuente y destino y el estado de cada una.</td></tr><tr><td style="width: 48.0734%;">-v, --verbose</td><td style="width: 51.9019%;">Flag, muestra paso a paso todas las acciones de migracion, para debug</td></tr></tbody></table>

[![image.png](https://pandorafms.com/guides/public/uploads/images/gallery/2023-11/scaled-1680-/wboimage.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2023-11/wboimage.png)

# Ejecución manual

Ejecución de migración:

```
./elastic_to_opensearch -s 192.168.80.44:9200 -d 192.168.50.92:9200 -a \
-u admin -p admin
```

Ejecución de migración filtrando por un solo índice.

```
./elastic_to_opensearch -s 192.168.80.44:9200 -d 192.168.50.92:9200 -a \
-u admin -p admin -f \
-P pandorafms-b8ef1b65799a11ee94810242ac100002-2023.11.02
```

[![image.png](https://pandorafms.com/guides/public/uploads/images/gallery/2023-11/scaled-1680-/MdAimage.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2023-11/MdAimage.png)

Ejecución comprobación:

```
./elastic_to_opensearch -s 192.168.80.44:9200 -d 192.168.50.92:9200 -a \
-u admin -p admin -C
```

[![image.png](https://pandorafms.com/guides/public/uploads/images/gallery/2023-11/scaled-1680-/Q6fimage.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2023-11/Q6fimage.png)

La comprobación también se puede realizar filtrando por índices usando un patron de busqueda:

```
./elastic_to_opensearch -s 192.168.80.44:9200 -d 192.168.50.92:9200 \
-a -u admin -p admin -C \
-P "pandorafms-b8ef1b65799a11ee94810242ac100002*"
```

[![image.png](https://pandorafms.com/guides/public/uploads/images/gallery/2023-11/scaled-1680-/Senimage.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2023-11/Senimage.png)

# Recomendaciones

Para realizar una migración es importante tomar en cuenta el dimensionamiento de los entornos a migrar y la cantidad de índices y documentos que tenemos almacenados. La migración es un proceso demandante que transfiere muchos datos a gran velocidad.

En general indicamos ciertas recomendaciones para entornos con una gran cantidad de datos:

- Realizar la migración antes de conectar el entorno de pandorafms al nuevo opensearch
- Realizar una migración escalonada, año a año, mes a mes o incluso índice a índice, utilizando el filtro por patrones. Dependiendo de la cantidad de datos almacenados.
- Dimensionar correctamente el entorno.
- Para una gran cantidad de datos, utilizar un clúster de opensearch en lugar de un único nodo.