¿Como puedo extraer información de un windows server a un ubuntu server?

Hola a todos!
Hace un mes que me he introducido a este gran mudo de elasticsearch y por supuesto estoy en pañales con el tema, pero sin duda me esta gustando muchísimo. El caso es que tengo un problema el cual no he podido resolver. No se como puedo extraer información de un windows server 2012 a un server ubuntu 18.04. Cabe mencionar que en el server de ubuntu ya tengo instalado todo elasticsearch junto con logstash y la majoria de los beats, mientras que en windows server solo instale el elasticsearch. Las versiones que estoy usando son ELK 7.6.2 tanto en ubuntu como en windows; configuraciones por default, incluso instale logstash pero no lo he usado como output, también estoy usando jdk 11. Es decir, todo funciona bien, el problema es que he querido hacer la conexión entre los dos servers siguiendo varios tutoriales para extraer la información de windows hacia el de ubuntu, pero no he podido. Ojala alguno de ustedes pueda ayudarme por favor, se los agradeceré muchísimo.

Hola @Serge2020

¿Te refieres a que quieres que tus dos nodos de Elasticsearch estén en el mismo cluster? Si es así tienes que asegurarte de que ambos tienen conectividad por los puertos (por defecto 9300 a 9305), además de compartir el mismo nombre de cluster y configurar la propiedad discovery.seed_hosts.

Tienes documentación detallada sobre cómo añadir nodes a tu claster en esta guía.

Espero haberte apuntado en la dirección correcta.

Hola @jsanz .
Tu ayuda me sirvió de mucho, ahora comprendo un poco mas de la jerga de elasticsearch. Ya he configurado is dos nodos para hacer un solo cluster, como me lo dice en la documentación que me recomendaste. Pero no logro ver una conección entre mis dos nodos, tal vez estoy configurandolos mal. Aquí esta el archivo yml de cada uno de ellos:

Para mi nodo ubuntu, el cual se llama "node1" tengo esta configuración en elasticsearch.yml:

# ---------------------------------- Cluster -----------------------------------
#
# Use a descriptive name for your cluster:
#
cluster.name: MyCluster
#
# ------------------------------------ Node ------------------------------------
#
# Use a descriptive name for the node:
#
node.name: "node1"
#
# Add custom attributes to the node:
#
#node.attr.rack: r1
#
# ----------------------------------- Paths ------------------------------------
#
# Path to directory where to store the data (separate multiple locations by comma):
#
path.data: /var/lib/elasticsearch
#
# Path to log files:
#
path.logs: /var/log/elasticsearch
#
# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: 10.115.5.13
#
# Set a custom port for HTTP:
#
#http.port: 9200
#
# For more information, consult the network module documentation.
#
# --------------------------------- Discovery ----------------------------------
#
# Pass an initial list of hosts to perform discovery when this node is started:
# The default list of hosts is ["127.0.0.1", "[::1]"]
#
discovery.seed_hosts: ["10.115.5.13", "10.115.5.9"]
#
# Bootstrap the cluster using an initial set of master-eligible nodes:
#
cluster.initial_master_nodes: ["node1"]
#
# For more information, consult the discovery and cluster formation module documentation.
_________________________________________________________________________________

Y para el nodo 2 que se llama "node2" del server de windows tengo esto:

# ---------------------------------- Cluster -----------------------------------
#
# Use a descriptive name for your cluster:
#
cluster.name: MyCluster
#
# ------------------------------------ Node ------------------------------------
#
# Use a descriptive name for the node:
#
node.name: "node2"
#
# Add custom attributes to the node:
#
#node.attr.rack: r1
#
# ----------------------------------- Paths ------------------------------------
#
# Path to directory where to store the data (separate multiple locations by comma):
#
path.data: /var/lib/elasticsearch
#
# Path to log files:
#
path.logs: /var/log/elasticsearch
#
# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: 10.115.5.9
#
# Set a custom port for HTTP:
#
#http.port: 9200
#
# For more information, consult the network module documentation.
#
# --------------------------------- Discovery ----------------------------------
#
# Pass an initial list of hosts to perform discovery when this node is started:
# The default list of hosts is ["127.0.0.1", "[::1]"]
#
discovery.seed_hosts: ["10.115.5.13", "10.115.5.9"]
#
# Bootstrap the cluster using an initial set of master-eligible nodes:
#
cluster.initial_master_nodes: ["node2"]
#
# For more information, consult the discovery and cluster formation module documentation.

Pero aun no puedo ver los nodos conectados entre si, me imagino que estoy configurando algo mal, aquí un estatus en Kibana:


Ojala alguien me pueda ayudar. Gracias

Lo único que veo raro en tu configuración (mira que he editado to post para leerlo mejor), es que en cluster.initial_master_nodes puedes dejar uno de los dos nodos o los dos, pero no de manera excluyente.

¿Has revisado los logs de Elasticsearch a ver si te dicen algo?

Yo lo que haría es:

  1. parar los dos nodos
  2. arrancar node1 y ver sus logs, a ver no hay errores
  3. arrancar node2 y comprobar si se une al cluster o no, con un ojo en los logs de node1 para ver si lo registra
  4. si todo va bien, ya puedes usar la API para ver info de tus nodos GET /_cat/nodes?v desde la consola de Kibana por ejemplo

Muchas gracias Jorge!

Otra vez me ayudaste mucho.

He dejado los dos nodos en cluster.initial_master_nodes y de después los reinicie. Ahora ya puedo ver ambos.

1 Like