====== Configuración de un clúster Elasticsearch ====== {{indexmenu_n>37}} ===== Requisitos ===== * Primero debe seguir los pasos de [[:es:documentation:pandorafms:monitoring:09_log_monitoring#configuracion|instalación y configuración en cada nodo]]. * El tamaño mínimo de un clúster de servidores Elasticsearch es de 3 nodos y siempre debe ir creciendo en números impares para poder hacer uso del sistema de //quorum// y garantizar la integridad de los datos. * Asegúrese de que tiene conectividad entre los 3 nodos y que los puertos 9200 y 9300 son accesibles entre todos y cada uno de los nodos. Recuerde configurar el cortafuegos (//firewall//) de cada nodo para que permita conexión por dichos números de puertos. ===== Configuración ===== Detenga el servicio Elasticsearch en todos y cada uno de los nodos: systemctl stop elasticsearch.service Modifique en el fichero de configuración ''/etc/elasticsearch/elasticsearch.yml'' las siguientes líneas: #discovery.seed_hosts: ["host1", "host2"] #cluster.initial_master_nodes: ["host1", "host2"] //[[:es:documentation:pandorafms:introduction:03_glossary#comentar_o_descomentar_un_parametro|Descomente]]// las líneas y agregue las direcciones IP o URL de cada uno de los nodos : discovery.seed_hosts: ["host1", "host2", "host3"] cluster.initial_master_nodes: ["host1", "host2", "host3"] Ejemplo con direcciones IP: discovery.seed_hosts: ["172.42.42.101", "172.42.42.102", "172.42.42.103"] cluster.initial_master_nodes: ["172.42.42.101", "172.42.42.102", "172.42.42.103"] \\ Asegúrese que la línea ''cluster.initial_master_nodes'' esté definida solo una vez en el fichero de configuración, **en algunos casos la misma línea aparece en dos bloques diferentes del mismo fichero.** \\ Antes de iniciar el servicio, debido a que los nodos se iniciaron por primera vez por sí solos (//standalone//), debe borrarse el contenido de la carpeta data (por defecto ''/var/lib/elasticsearch/'') para poder iniciar por primera vez el clúster. Hágalo con el comando: rm -rf /var/lib/elasticsearch/* Ahora es momento de iniciar los servicios en todos y cada uno de los nodos. Inicie y compruebe que se están ejecutando con los comandos: systemctl start elasticsearch.service && systemctl status elasticsearch.service Debe obtener una salida similar a: {{ :wiki:pfms-systemctl_status_elasticsearch.service.png }} Una vez iniciados los servicios debe confirmar que los 3 nodos están unidos al clúster correctamente, por lo que al ejecutar en cualquiera de los nodos el siguiente comando debe dar la misma respuesta: curl -XGET http://127.0.0.1:9200/_cat/nodes {{ :wiki:pfms-elasticsearch-curl-x-get-_cat-nodes.png }} Vuelva a revisar la configuración del //firewall// siempre tomando en cuanta que los nodos deben comunicarse por los puertos ''9200'' y ''9300'' y que desde el servidor PFMS y la Consola web PFMS debe poder accederse al puerto ''9200'' también. Con estos pasos ya tendrá instalado y configurado el clúster de Elasticsearch para ser usado como motor de almacenamiento de //logs// de Pandora FMS. ===== Modelos de datos y plantillas ===== Antes de poner en producción un entorno, bien sea de un solo nodo o un clúster de datos, se recomienda aplicar las configuraciones correspondientes a este nodo o clúster en función a su utilización. En el caso de los índices generados por **Pandora FMS** la forma más efectiva de hacerlos es definiendo una plantilla (//template//) para definir la configuración de los campos y los datos almacenados. Las plantillas o //templates// son configuraciones que solo se aplican en el momento de la creación del índice. Cambiar un //template// no tendrá ningún impacto en los índices ya existentes. * Para crear un ** //template// básico** siga los instrucciones en "[[:es:documentation:pandorafms:monitoring:09_log_monitoring#modelos_de_datos_y_plantillas|Modelos de datos y plantillas para un nodo]]": * Para definir un **//template// multinodo** debe tener en cuenta la siguiente información: * Cuando realice la configuración del //template// (formato JSON), **necesita configurar tantos //search// como nodos tenga**, sin embargo para configurar correctamente las réplicas **debe restar 1 al número de nodos del entorno**. Por ejemplo, en un entorno de Pandora FMS con Elasticsearch con 3 nodos configurados, cuando modifique los campos ''number_of_search'' y ''number_of_replicas'' debe quedar de la siguiente manera: { "index_patterns": ["pandorafms*"], "settings": { "number_of_shards": 3, "auto_expand_replicas" : "0-1", "number_of_replicas" : "2" }, \\ Esto es una definición muy básica, para poder definir correctamente el dimensionamiento del entorno de Elasticsearch es recomendable tener en cuenta los factores descritos en este artículo: * [[https://www.elastic.co/blog/how-many-shards-should-i-have-in-my-elasticsearch-cluster|https://www.elastic.co/blog/how-many-shards-should-i-have-in-my-elasticsearch-cluster]] Desde la línea de comando puede listar los templates del entorno ejecutando: curl -X GET "localhost:9200/_cat/templates/*?v=true&s=name&pretty" También puede ver los detalles de un, template, por ejemplo el que hemos creado para pandorafms ejecutando: curl -X GET "localhost:9200/_template/pandorafms*?pretty" el cual devolverá en formato JSON la configuración que tenga definida. Puede realizar estas operaciones a través de la interfaz de Elasticsearch en Pandora FMS utilizando los comandos nativos de Elasticsearch. * **PUT _template/ {json_data}**: permite introducir los datos del //template// a crear. * **GET _template/>**: permite visualizar el //template// creado. {{ :wiki:getinterface.png }} [[:es:documentation:start| Volver al índice de documentación de Pandora FMS]]