Ad Widget

Collapse

Monitorizar muchas ips que rotan en unas pocas maquinas

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • kk003
    Junior Member
    • Apr 2017
    • 10

    #1

    Monitorizar muchas ips que rotan en unas pocas maquinas

    Buenas,
    acabo de de instalar Zabbix server 3.2.
    El sistema que pretendo monitorizar es un tanto "especial".

    Elementos de hardware:
    2 Servidores principales (correo, mysql, web, ssh, etc) --> dos interfaces de red cada con 2 ips fijas cada que salen ambas a internet
    15 servidores (correo, ssh, etc) --> dos interfaces de red cada con 2 ips fijas que cambio regularmente de las cuales solo una sale a internet en cualquier momento
    1 Servidor adicional con 2 interfaces de red y 2 ips fijas y ambas salen a internet
    2 switches, uno por cada rango C (ver mas abajo)

    Red:
    2 rangos C, digamos 192.168.30.0/24 y 192.168.224.0/24 --> ambos rangos se "ven" sin salir a internet por medio de regla en cortafuegos

    Os:
    Linux

    Bien, los 2 servidores principales siempre estaran visibles para Zabbix puesto que no cambio nunca sus ips.

    La duda que tengo es como puedo monitorizar el resto de ips teniendo en cuenta que si añadiera todas ellas solo tendria 15 (en realidad 30, regla del cortafuegos permite esto aunque no salen a internet se ven localmente) visibles para Zabbix en cada momento.

    Planteamientos:
    1. Hacer grupos de 15 hosts para todas las ip (las ips ya estan distribuidas en grupos, no hablo de Zabbix) y habilitar solo el grupo activo.
    2. Como no estoy realmente interesado en monitorizar las ips sino las 15 maquinas, de algun modo cambiar la ip en el registro del host de modo que conserve toda la info (en particular el campo "host name") y de este modo que el cambio de ip sea transparente para Zabbix. Imagino que esto se podria hacer accediendo a la ip en la base de datos (imagino que por ahi andara). Este cambio lo haria a la vez que cambio la ip en el mismo script. No se como se lo tomara Zabbix o si es posible pero a priori parece la mejor opcion desde un punto de vista practico.

    En fin, me gustaria, si alguien ha pasado por una situacion similar que me comente su punto de vista y quien no tambien desde luego.
    Gracias.
  • sancho
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Mar 2015
    • 295

    #2
    Hola kk003,
    Creo que en cada host puedes asignarle más de una IP:



    Las IP`s que se van cambiando en los servidores son siempre las mismas???

    Comment

    • kk003
      Junior Member
      • Apr 2017
      • 10

      #3
      Hola, buenas.
      Si, en lineas generales son siempre las mismas.
      Ahora q lo mencionas no cai en la cuenta de que puede que al tener el host varias ips asignadas en tanto una este online no salten trigers, etc por estar las demas inaccesibles.
      Imagino que el campo default is irrelevante para mi caso y que la apli ira buscando por la lista de ips hasta que encuentre una online.
      Lo probare en cuento pueda y voy comentando.

      Comment

      • kk003
        Junior Member
        • Apr 2017
        • 10

        #4
        Bien, he añadido las ips al host con el que estoy experimentando, en total 26 ips de ambos rangos. El interface que uso para estas es "Agent".
        En archivo "zabbix_agentd.conf" en la maquina que quiero monitorizar tengo esta config (bueno, lo que considero relevante):

        Server=192.168.30.252 (el server tambien escucha en 192.168.224.252)
        ListenIP=192.168.30.21 (uso este parametro xq la maquina tiene otra ip mas, 192.168.224.135 (q no sale a internet) y q resulta tambien esta en la lista de 26 ips)
        ServerActive=192.168.30.252
        Hostname=Smtp2

        Basicamente lo que hago es enviar todo por el rango 192.168.30.0/24 ya que el ping entre las ips de un mismo rango se contestan desde ambas maquinas, servidor y cliente.

        Con esta config lo que me encuentro es que los logs de servidor y cliente no me arrojan ningun error, pero en la parte del servidor me sale en rojo el cuadrito que hace referencia el interface "ZBX" (en configuration/hosts) con el siguiente mensaje:
        Get value from agent failed: cannot connect to [[192.168.30.2]:10050]: [113] No route to host

        La ip a la que hace referencia es la anterior que tenia cuando si conectaba correctamente. Una vez cambiada la ip de la maquina que quiero monitorizar a 192.168.30.21 y añadida toda la lista de ips, aparentemente sigue intentando conectarse a 192.168.30.2 he ignora la lista. He probado a poner por defecto la 192.168.30.21 en el interface del host en Zabbix server pero el mensaje persiste.Obviamente he reiniciado el cliente y por lo que pueda ser tambien el servidor.

        Alguna idea de como hacer que intente accerder a la lista de ips que he añadido?
        Last edited by kk003; 12-04-2017, 15:25.

        Comment

        • Hernandes Martins
          Senior Member
          Zabbix Certified SpecialistZabbix Certified Professional
          • Apr 2011
          • 900

          #5
          ya tentado por el nombre DNS ?
          __

          Att.
          Hernandes Martins - Zabbix Trainer

          Zabbix Brazil Partner - www.luniobr.com

          Zabbix Brazil Community - www.zabbixbrasil.org

          Blog: hernandesmartins.blogspot.com.br

          Skype: hernandss
          Telegram: @MrHernandes

          Español
          Facebook: facebook.com/groups/zabbixlatam
          Telegram: https://t.me/ZabbixEspañol

          Português
          Facebook: facebook.com/groups/zabbixbrasil/
          Telegram: https://t.me/ZabbixBrasil

          Comment

          • kk003
            Junior Member
            • Apr 2017
            • 10

            #6
            Con el nombre DNS el mensaje de error persiste:
            "Get value from agent failed: cannot connect to [[192.168.30.2]:10050]: [113] No route to host"

            y como se aprecia continua haciendo mencion a la ultima ip con la que se conecto "192.168.30.2" cuando la ip del cliente es "192.168.30.21".

            AUnque no me agrada la idea cuando tenga un rato voy a intentar mantener un solo interface Agent ver si se puede meter la ip directamente en la DB a la vez que roto mis servidores. En fin no se como le sentara a Zabbix pero hay que ir viendo opciones.
            Por casualidad alguien sabe en que tabla se guardan las ips de los hosts?

            Comment

            • sancho
              Senior Member
              Zabbix Certified SpecialistZabbix Certified Professional
              • Mar 2015
              • 295

              #7
              Se puede probar a eliminar el host y luego crearlo solo con el nombre dns, o crear otro desde cero solo con el dns y ver como se comporta sin haberle asignado una ip.
              La solución puede ir por donde indica Hernandes.

              Comment

              • kk003
                Junior Member
                • Apr 2017
                • 10

                #8
                Cada ip tiene un nombre dns asignado. Eso significa que tendria que añadir todos los nombres dns para ese host, igual que hice con las ips (que como ya he comentado solo esta online una ip la vez). Es posible que efectivamente zabbix busque el interface online basandose en el dns y no se comporte como hace con las ips (que yo creo que no he entendido bien el funcionamiento, lo mas probable es que este funcionando como debe).
                De todos modos he encontrado las ips de los hosts en la db, tabla interface y cambiando la ip alli directamente se establece la conexion.
                Esto me permitiria tener un solo interface agent configurado y al rotar ip modificar la db directamente con la nueva ip. Esto me funciona con el rango 192.168.30.0/24. Esta por ver si funcionara el 192.168.224.0/24. En fin, deberia tener un rato esta tarde para implementar la solucion y ya comento por aqui encuanto teste.

                Comment

                • kk003
                  Junior Member
                  • Apr 2017
                  • 10

                  #9
                  Ok, aqui dejo mi solucion esperando que le pueda ser util a otros.
                  Resumen:
                  2 rangos C, digamos 192.168.30.0/24 y 192.168.224.0/24 --> ambos rangos se "ven" sin salir a internet por medio de regla en cortafuegos
                  25 servidores (correo, ssh, etc) --> dos interfaces de red cada con 2 ips fijas (un interface dedicado a cada rango) que cambio regularmente de las cuales solo una sale a internet en cualquier momento. Todas corren en centos 6.x 32bits
                  1 Servidor adicional ejecutando Zabix server con 2 interfaces de red y 2 ips fijas, 192.168.224.252 192.168.30.252 (una por rango). La ip 192.168.30.252 se encarga de sacar todas las conexiones originadas en la maquina para fuera y ademas recibe trafico generado desde internet o en la red local. La ip 192.168.224.252 contesta unicamente a las conexiones entrantes por esa ip, desde internet o desde la red local. Esto se hizo con iproute2. Corre en centos 7.x 64Bits
                  2 switches, uno por cada rango C y a tener en cuenta que cada interface va conectado fisicamente a uno de estos switches, osea el interface de una maquina que va conectado al switch A que sirve el rango 192.168.30.0/24 nunca adquirira ips del rango 192.168.224.0/24 y viceversa con el switch B que sirve el rango 192.168.224.0/24. Obvio pero a recordar!!.

                  Problema:
                  A cada una de estas 25 maquinas se les va cambiando la ip periodicamente aunque por lo general siempre son las mismas.
                  Cuando se le cambia la ip se pierde la conexion con Zabbix server.
                  Si se añaden todas las ips que usara ese host en los campos "Agent interfaces" la conexion no se restablece, sigue fallando.
                  Que las ips esten en 2 rangos diferentes agrava el problema, pero incluso ips en el mismo rango fallan a reconectar.

                  Objetivo:
                  Monitorizar las 25 maquinas y sus servicios, por lo tanto las ips son indiferentes en lo que a este contexto de monitorizacion se refiere.

                  Solucion:
                  Lo que hago es, a la vez que roto la ip modifico la config del agente de zabbix para ajustarla al rango al que peretenece:
                  Datos para 192.168.30.0/24
                  Server=192.168.30.252
                  ListenIP=192.168.30.X --> la nueva ip a la que rota la maquina
                  ServerActive=192.168.30.252
                  Hostname=Smtp4 ----> permanece invariable

                  Datos para 192.168.224.0/24
                  Server=192.168.224.252
                  ListenIP=192.168.224.x --> la nueva ip a la que rota la maquina
                  ServerActive=192.168.30.252
                  Hostname=Smtp4 ----> permanece invariable

                  Despues en la DB de Zabbix actualizo la ip cambiandola por la nueva que usare en la rotacion tal como muestro en el codigo:

                  Code:
                  #!/bin/bash
                  .........
                  .........
                  .........
                  # Variables mysql para el servidor de control que ejecuta Zabbix server
                  SQL_HOST_ZABBIX_SERVER_30="192.168.30.252"
                  SQL_HOST_ZABBIX_SERVER_224="192.168.224.252"
                  SQL_ZABBIX_USUARIO="el_usuario_zabbix"
                  SQL_ZABBIX_PASSWORD="la_pass_de_la_db_de_zabbix"
                  SQL_ZABBIX_DATABASE="nombre_zabbix_db"
                  
                  # Argumentos sql para el servidor de control que ejecuta Zabbix server
                  SQL_ARGS_ZABBIX_SERVER_30="-h $SQL_HOST_ZABBIX_SERVER_30 -u $SQL_ZABBIX_USUARIO -p$SQL_ZABBIX_PASSWORD -D $SQL_ZABBIX_DATABASE -s -e"
                  SQL_ARGS_ZABBIX_SERVER_224="-h $SQL_HOST_ZABBIX_SERVER_224 -u $SQL_ZABBIX_USUARIO -p$SQL_ZABBIX_PASSWORD -D $SQL_ZABBIX_DATABASE -s -e"
                  SQL_ARGS_ZABBIX_SERVER=""
                  
                  RUTA_ZABBIX_AGENT="/etc/zabbix/zabbix_agentd.conf"
                  ID_SERVIDOR=4 # Consigo este valor en mis datos de rotacion en otra parte del codigo
                  
                  # Configuro los datos para el agente de Zabbix (aqui roto al rango 192.168.30.0/24 que averiguo con anterioridad en el codigo del script)
                  # Si rotara al rango 192.168.224.0/24 usaria las variables SQL_HOST_ZABBIX_SERVER_224 y SQL_ARGS_ZABBIX_SERVER_224
                  SERVER_ZABBIX=$SQL_HOST_ZABBIX_SERVER_30
                  SERVER_ACTIVE=$SQL_HOST_ZABBIX_SERVER_30
                  
                  # Configuro la cadena para conectar a la DB de Zabbix
                  SQL_ARGS_ZABBIX_SERVER=$SQL_ARGS_ZABBIX_SERVER_30
                  
                  
                  # Preparo el agente de Zabbix para el reinicio y a continuacion modifico la ip
                  # en la DB de Zabbix server cambiandola por la nueva que corresponde a la rotacion
                  /bin/echo -n "Modificando $RUTA_ZABBIX_AGENT ....."
                  /bin/sed -i "/Server=192.168./ cServer=${SERVER_ZABBIX}" $RUTA_ZABBIX_AGENT # Modifico la varible Server
                  /bin/sed -i "/ListenIP=192.168./ cListenIP=${IP}" $RUTA_ZABBIX_AGENT # Modifico la varible ListenIP
                  /bin/sed -i "/ServerActive=192.168./ cServerActive=${SERVER_ZABBIX}" $RUTA_ZABBIX_AGENT # Modifico la varible ServerActive
                  /bin/echo "Finalizado."
                  
                  # En la DB de Zabbix actualizo la nueva ip de esta maquina que he adquirido en los datos de rotacion
                  # Extraigo el hostid para esta maquina segun la DB de Zabbix
                  # echo Smtp$ID_SERVIDOR mostraria "Smtp4" que seria el "Host name" unico para este host en la configuracion Zabbix server  
                  HOSTID=$(/usr/bin/mysql $SQL_ARGS_ZABBIX_SERVER "Select hostid from hosts where host='Smtp$ID_SERVIDOR'")
                  
                  # Compruebo que no hay error
                  if [[ $? -ne 0 ]]; then
                      /bin/echo "ERROR: No se ha podido leer el campo hostid en la tabla hosts para el smtp $ID_SERVIDOR. Continuo con la rotacion."
                  else
                      /bin/echo "Hostid para el smtp $ID_SERVIDOR en Zabbix DB:" $HOSTID
                      # Si no hay error sustituyo la ip
                      /usr/bin/mysql $SQL_ARGS_ZABBIX_SERVER "update interface set ip='$IP' where hostid='$HOSTID'"
                  
                      # Leo la ip y me aseguro de que coincide con la de mi rotacion
                      IP_EN_ZABBIX_DB=$(/usr/bin/mysql $SQL_ARGS_ZABBIX_SERVER "Select ip from interface where hostid='$HOSTID'")
                  
                      # Compruebo que coinciden
                      if [[ "$IP_EN_ZABBIX_DB" = "$IP" ]]; then
                          /bin/echo "Ok, ip en DB de Zabbix actualizada correctamente"
                      else
                          /bin/echo "ERROR: No se ha actualizado la ip en la DB de Zabbix. Las ips no coinciden. Continuo con la rotacion."
                      fi
                  fi
                  
                  # Mostramos los detalles de la rotacion en la terminal
                      /bin/echo "El smtp $ID_SERVIDOR se ha configurado con los siguientes parametros:"
                      /bin/echo "IP                        :" $IP
                      /bin/echo "IP en Zabbix DB           :" $IP_EN_ZABBIX_DB
                      /bin/echo "Valor hostid en Zabbix DB :" $HOSTID
                      /bin/echo "Host name en Zabbix DB    :" Smtp$ID_SERVIDOR
                      /bin/echo "** Reiniciando servicios..."
                      ........
                      ........
                      etc.....
                  exit
                  Last edited by kk003; 14-04-2017, 12:12.

                  Comment

                  • sancho
                    Senior Member
                    Zabbix Certified SpecialistZabbix Certified Professional
                    • Mar 2015
                    • 295

                    #10
                    Muchas gracias kk003

                    Comment

                    • elyroha
                      Junior Member
                      • Mar 2016
                      • 12

                      #11
                      Monitorear Equipos por DNS en Zabbix

                      Buenas Tardes

                      Quisiera saber si hay manera de que monitoree solo por el DNS los equipos en Zabbix.

                      He colocado en el hostname el nombre como aparece en los DNS, pero ni siquiera el agente zabbix levanta.
                      Necesito validar esto, porque las Ip's rotan cada cierto tiempo en la empresa, y pierdo la conexión del equipo. Cabe destacar que estoy nueva en esto, y me gustaria la explicación paso a paso del mismo.

                      Gracias

                      Comment

                      • kk003
                        Junior Member
                        • Apr 2017
                        • 10

                        #12
                        Buenas,
                        si vas usar los dns imagino que habras pensado en solicitar la resolucion inversa de tus ips a tu proveedor de internet. No se si te servira con los dinamicos. De todos modos si sabes las ips no necesitas los dns.
                        Sin mas detalles no sabria que recomendarte la verdad.

                        Comment

                        • elyroha
                          Junior Member
                          • Mar 2016
                          • 12

                          #13
                          Buenos Dias

                          Tengo entendido que zabbix es capaz de monitorear con los DNS, a través de las IP's no lo puedo realizar, ya que en la empresa son dinamicas, y varían por medidas de seguridad interna. Y necesito que todos los equipos de la empresa se encuentre en zabbix, adicionalmente que tengo equipos conectados en WIFI, que es otra VLAN totalmente distinta, por eso es que necesito conocer si Zabbix puede leer a través de DNS y levantar el agente para que me traiga los datos del equipo

                          Comment

                          • kk003
                            Junior Member
                            • Apr 2017
                            • 10

                            #14
                            que yo sepa (aunque yo no trabajo con el dns en el campo host de zabbix server) si lo hace.
                            Es posible que configurando el dns con la nueva ip y añadiendo el host en zabbix server tengas la parte server resuelta, por ejemplo en un dns dinamico?? ya q las ips dices no saberlas.
                            Ahora bien, en el agente de todas todas le tienes que dar la ip a menos que exista otro modo de identificar la maquina en la red, por ejemplo si el agente permitiera dns en lugar de ip en la variable ListenIP, q si no se le da valor creo recordar que escucha en todas las ips con lo cual tambien tendrias resuleto el lado del agente:

                            ### Option: ListenIP
                            # List of comma delimited IP addresses that the agent should listen on.
                            # First IP address is sent to Zabbix server if connecting to it to retrieve list of active checks.
                            #
                            # Mandatory: no
                            # Default:
                            # ListenIP=0.0.0.0

                            Si se hacen los cambios en el agente hay que reiniciarlo.

                            Imagino que con eso deberias tener conectividad siempre y cuando uses siempre las mismas maquinas y nombres dns en el server de Zabbix.

                            Si no te va aqui otro metodo mas lioso pero que deberia funcionarte

                            1. Una vez la maquina con el agente adquiere una nueva ip averiguas dicha ip mediante el nombre dns o accediendo a los parametros de red (no se q OS usas). Esto implica que tienes que saber cuando la maquina cambia de ip, o tener un script que periodicamente compruebe haciendo estos tests:
                            a) que la ip no ha cambiado ----> no se haria nada
                            b) que la ip ha cambiado ----> tomas nota de la nueva ip
                            2. Una vez sabes la ip manipulas la DB de Zabbix server (el ejemplo del script te vale como referencia aunque no uses linux)

                            Creo que si dejas ListenIP=0.0.0.0 no tendrias que hacer nada en el agente salvo reiniciarlo pues ha cambiado la ip.
                            Con este procedimiento tambien te saltas el tema de los dns.
                            Con la info que tengo no se me ocurre mucho mas que añadir.

                            Por otra parte los clientes han de ser de confianza obviamente, puesto que ahi tendrias los datos de acceso de la db de Zabbix server y no se si es tu caso, si lo era el mio.
                            Imagino que con algo mas de trabajo podrias acondicionar una maquina de confianza a la que se conectaran las maquinas que quieres monitorizar. Estas pasarian la nueva ip a dicha maquina y desde alli sin problema (es tu maquina de confianza) actualizarias la db de Zabbix server con las nuevas ips. Eso si, recuerda que el nombre del host es unico.

                            Otra via que se me ocurre ahora mismo es que desde una maquina de confianza averigues si los clientes que quieres monitorizar han cambiado de ip. Para esto si necesitas un dns, de modo que haces el ping (o cualquer herramienta que te devuelva la ip y te permita guardarla para su proxima manipulacion) a dicho nombre dns.
                            Comparas la ip con ip previa de la maquina (que tienes que saberla obviamente), si ha cambiado accedes a la db de zabbix server y actualizas (siempre basandote en el nombre del host que ha de ser unico). Creo q esta es la manera mas fiable y no dependes vulnerabilidades en los clientes.

                            El unico problema es que los clientes han de ser "receptivos" a tus solicitudes para comprobar si han cambiado de ip. (no se de que OSs estamos hablando)

                            Espero te sea de ayuda

                            Comment

                            Working...