Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
Última revisión Ambos lados, revisión siguiente
es:documentation:03_monitoring:09_log_monitoring [2022/05/26 12:23]
jimmy.olano [Configuración] Estilo. Boleto GitLab # 8129 .
es:documentation:03_monitoring:09_log_monitoring [2022/05/27 11:11]
jimmy.olano [Configuración]
Línea 89: Línea 89:
  
  
-==== Configuración ====+==== Configuración de nodo ====
  
 <WRAP center round important 60%>\\ <WRAP center round important 60%>\\
Línea 232: Línea 232:
  
   * [[https://www.elastic.co/guide/en/elasticsearch/reference/current/system-config.html#dev-vs-prod|https://www.elastic.co/guide/en/elasticsearch/reference/current/system-config.html#dev-vs-prod]]   * [[https://www.elastic.co/guide/en/elasticsearch/reference/current/system-config.html#dev-vs-prod|https://www.elastic.co/guide/en/elasticsearch/reference/current/system-config.html#dev-vs-prod]]
 +
 +
 +=== Configuración de un cluster Elasticsearch ===
 +  * El tamaño mínimo de un //cluster//  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.
 +
 +<WRAP center round tip 60%>Recuerde configurar el cortafuegos (//firewall//) de cada nodo para que permita conexión por dichos números de puertos.</WRAP>
 +
 +Detenga el servicio Elasticsearch en todos y cada uno de los nodos:
 +<code>
 +
 +systemctl stop elasticsearch.service
 +
 +</code>
 +
 +Modifique en el fichero de configuración ''/etc/elasticsearch/elasticsearch.yml''  las siguientes líneas:
 +
 +<code>
 +#discovery.seed_hosts: ["host1", "host2"]
 +#cluster.initial_master_nodes: ["host1", "host2"]
 +
 +</code>
 +
 +//[[:es:documentation:01_understanding:03_glossary#comentar_o_descomentar_un_parametro|Descomente]]//las líneas y agregue las direcciones IP o URL de cada uno de los nodos :
 +<code>
 +
 +discovery.seed_hosts: ["host1", "host2", "host3"]
 +cluster.initial_master_nodes: ["host1", "host2", "host3"]
 +
 +</code>
 +
 +Ejemplo con direcciones IP:
 +
 +<code>
 +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"]
 +
 +</code>
 +
 +<WRAP center round important 60%> \\ 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.** \\ </WRAP>
 +
 +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 //cluster.//  Hágalo con el comando:
 +
 +<code>
 +rm -rf /var/lib/elasticsearch/*
 +
 +</code>
 +
 +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:
 +
 +<code>
 +systemctl start elasticsearch.service && systemctl status elasticsearch.service
 +
 +</code>
 +
 +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 //cluster//  correctamente, por lo que al ejecutar en cualquiera de los nodos el siguiente comando debe dar la misma respuesta:
 +
 +<code>
 +curl -XGET http://127.0.0.1:9200/_cat/nodes
 +
 +</code>
 +
 +{{  :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 //cluster//  de Elasticsearch para ser usado como motor de almacenamiento de //logs//  de Pandora FMS.
  
  
Línea 332: Línea 401:
  
   * **GET _template/<nombredeltemplate>**: en este ejemplo ''GET _template/pandorafms''  .   * **GET _template/<nombredeltemplate>**: en este ejemplo ''GET _template/pandorafms''  .
 +==== Templates multinodo ====
 +
 +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:
 +
 +<code>
 +{
 + "index_patterns": ["pandorafms*"],
 + "settings": {
 +   "number_of_shards": 3,
 +   "auto_expand_replicas" : "0-1",
 +   "number_of_replicas" : "2"
 + },
 +
 +</code>
 +
 +<WRAP center round info 75%> \\ 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:</WRAP>
 +
 +  * [[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:
 +<code>
 +
 +curl -X GET "localhost:9200/_cat/templates/*?v=true&s=name&pretty"
 +
 +</code>
 +
 +También puede ver los detalles de un, template, por ejemplo el que hemos creado para pandorafms ejecutando:
 +
 +<code>
 +curl -X GET "localhost:9200/_template/pandorafms*?pretty"
 +
 +</code>
 +
 +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/<nombre_del_template> {json_data}**: permite introducir los datos del //template//  a crear.
 +  * **GET _template/><nombre_del_template>**: permite visualizar el //template//  creado.
 +{{  :wiki:getinterface.png  }}
 +
 {{  :wiki:getinterface.png  }} {{  :wiki:getinterface.png  }}
  
ºº