Zabbix: la topología de red es clara y automática

¿Administrar una red más grande que un host local? ¿No controlas, pero quieres aprender? Te invitamos al curso “Linux. Nivel 5. Zabbix. Supervisión de la infraestructura de TI de una empresa " . En el seminario gratuito del Centro de capacitación de especialistas en la Universidad Técnica del Estado de Moscú Bauman, aprenderá a enseñarle a Zabbix a monitorear la red automáticamente: encontrar nodos existentes y agregar nuevos, dibujar y actualizar la topología.



El seminario será impartido por el maestro líder del centro "Especialista" en Bauman MSTU, el administrador principal del sistema de la red de MSTU. N.E.Bauman Vyacheslav Aleksandrovich Lokhturov. Regístrese (o mire las grabaciones) para nuestros seminarios gratuitos .

¡Hola a todos! Mi nombre es Vyacheslav Lokhturov. Trabajo como ingeniero en la Universidad Técnica del Estado de Moscú Bauman. Desde que me gradué en 1997, he estado trabajando como ingeniero. Al mismo tiempo, enseño en el centro de capacitación No. 1 "Especialista", una compañía que es amigable MSTU. Muchos otros maestros y personal trabajan allí.

El tema del seminario web será parte de mi trabajo como ingeniero: un maravilloso sistema de monitoreo ...

Topología de red: antecedentes, Wikipedia en Baumanka, fuentes


La grabación del seminario web se puede ver en este enlace: https://wiki.val.bmstu.ru , un formato wiki. Mis direcciones de correo electrónico son: val@bmstu.ru, val@specialist.ru. Este tutorial lo uso como ingeniero. Hay muchos materiales diferentes. Si no le gusta, hay muchos materiales en Internet sobre su tema con nosotros ("Zabbix").

Desde el punto de vista del material didáctico y la enseñanza, utilizo la sección "Materiales sobre la metodología de los cursos de lectura":



y hay una sección con seminarios web. Para cada una de las lecturas realizadas por mí hay un registro aquí:



inmediatamente dije: “Si lo hacemos, ¡hagamos lo mejor! Veamos cómo se crea automáticamente la topología de red en Zabbix. En 45 minutos tengo que decir esto.
En cuanto a la topología de la red: en Bauman MSTU, una red enorme; en consecuencia, la topología de red es lo que realmente necesitamos durante mucho tiempo. Históricamente, Zabbix no era el sistema que utilizamos en la etapa inicial. Al igual que todas las personas de departamentos como ciencias de la computación, administración, sistemas informáticos, complejos y redes, a todos nos gustaba programarnos, y ahora programamos ...

Tenemos una pequeña Wikipedia que se utiliza para el trabajo. Y entre los elementos de esta Wikipedia hay una sección dedicada al cambio de red. El acceso a esta Wikipedia todavía está cerrado por una pequeña VPN:



ahora te mostraré cómo se ve la topología de red en nuestra universidad. Vale la pena verlo; y luego comparar con el resultado:



Me parece que todo está claro: todos los conmutadores y su ruta al conmutador raíz; Si falta algo, nos recuperaremos rápidamente de este archivo de texto. La topología de la red se construye a diario. Todo está bien, pero no espectacular, por supuesto. Es difícil de vender. Por lo tanto, tenemos tal esquema en la universidad.

La topología de red es necesaria cuando algún conmutador ha desaparecido. Para entender dónde estaba conectado


Intentaremos ver algo más espectacular. Y una cierta referencia a lo que haremos es este artículo en el foro:





dice que hay algún tipo de script maravilloso escrito en mi antiguo idioma Perl favorito, que el equipo de la red encuesta, hace algunos conclusiones y de alguna manera alimenta milagrosamente los resultados a Zabbix. Pero no usaremos Perl, sino que utilizaremos algo más.

Nos despedimos de lo que tenemos. Pasemos a practicar.



Seré feliz si puedes reproducir todo esto en casa y tratar de prepararte para todo lo que sea posible. Después del seminario web, querrá repetir todo y comenzar con el hecho de que necesita implementar Zabbix, una máquina virtual, una red. ¿Como hacer esto?

En casa, escribe el comando ipconfig y ve que tiene una red IP de este tipo en casa (tal vez una diferente, pero a menudo esta): tengo la



quinta dirección (192.168.1.5) aquí, y puede tener la 20 o 30 ... Seguramente hay un enrutador Wi-Fi que emite estas direcciones. Por lo tanto, ahora dibujaré una topología basada en lo que puede haber en su hogar para que pueda reproducirla:



  • Tienes un enrutador WIFI.
  • El sistema en el que quieres jugar el webinar.
  • 192.168.1/24 – 1- WI-FI-, 5-, , – .
    . , – , 2, 10, 20 , . , linux-, «». , 100. , 192.168.1.100.

¿Dónde conseguir un auto? Nada impide tomar la distribución de Linux. Soy un gran admirador de esta distribución. No criaremos holivares: lo amo, lo elijo, lo uso en cursos. Puede tomar e instalar desde este sitio:



para que no pasemos 45 minutos instalando Debian, tomaré una imagen preinstalada lista para usar. Quién lo necesita: escriba al correo, le enviaré esta imagen, aunque no hay nada particularmente sobresaliente (solo para no perder el tiempo instalando):



mientras está instalado, puede ver la sección en el manual ...

Despliegue de stand


Hay una historia sobre el comando ipconfig:



Y luego, cuando la máquina se da vuelta:



puede dar un nombre en la configuración, darle más RAM:



hay diferentes virtualizaciones: VirtualBox es bueno para uso doméstico. En la empresa, nosotros y mis amigos usamos VSphere (estamos muy satisfechos con el producto de VMware), pero hay cursos más que suficientes para VirtualBox.

Red:



dado que estamos diciendo que esta máquina estará conectada a nuestra red, podemos trabajar con ella; debe estar conectada por un puente a un adaptador físico. Regeneraré la dirección Mac. Lanzo nuestra máquina virtual:



Y después de comenzar, hago una configuración. El manual enumera los archivos que deben editarse: asigne un nombre a la máquina, es conveniente editar el archivo hosts, resolv.conf (responsable del cliente DNS) y la dirección IP elegida por nosotros; estos cuatro archivos deben editarse. Intentaré hacerlo lo más rápido posible.

Despliegue de Zabbix


La contraseña de este usuario (root) se establece inmediatamente en la imagen, ¡nunca la use en la práctica! Solo para ahorrar tiempo, uso una cuenta privilegiada:



el manual enumera los archivos que deben editarse.



A continuación, le doy el nombre a nuestra máquina (servidor de monitoreo Zabbix):



archivo Hosts:



cambie la dirección a la centésima y el nombre de nuestro dominio inventado (cada oyente en nuestros cursos tiene su propio, individual, como una red con un dominio):



¿Qué más queda? Resolv.conf (cliente DNS):



Corp1.un se acoplará a nombres cortos, y su enrutador WIFI generalmente funcionará como un servidor DNS:



¿qué queda? El archivo grande más importante es la red / interfaces. Aquí hay una plantilla para diferentes cursos, muchas interfaces:



Pero nuestro automóvil tendrá una interfaz. Será un servidor de monitoreo con la dirección número 100 e irá a Internet a través del primero:



tal vez, no es necesario, pero es más rápido usar todos los archivos: reinicie la máquina.

Instalar e iniciar un servicio en Debian


Los zabbiks se pueden instalar de varias maneras. Según Zabbix, hay un excelente sitio web con documentación (por cierto, en ruso se admite la sección activa). En consecuencia, se ofrecen varias opciones aquí. Soy un gran defensor de la instalación de software desde un repositorio regular. No es casualidad por eso elegí Debian:





por cierto, si todo se hace bien, ahora debería poder conectarme a mi sistema. Intentemos hacerlo. Tomo mi cliente SSH favorito y me conecto al sistema 192.168.1.100:



Afortunado:



De nuevo, no es muy correcto que la raíz esté permitida aquí: ¡



Nunca haga esto en una empresa! Aquí solo ahorra tiempo.



Ahora tenemos que instalar Zabbix. Siendo un gran amante y partidario del uso de software básico y un oponente de conectar repositorios de terceros, pondré la versión que está en este Debian. Una vez más, gracias a los autores de "Debian", simplemente marque la instalación de dicho paquete: ¡



recordé una cosa más! Acabamos de instalar el sistema; necesitamos sincronizar el repositorio (actualización apta): por lo



tanto, es suficiente escribir el comando de instalación del servidor zabbix con soporte para la base de datos (DB) de su información en SQL, ya que se instalarán muchos componentes (se instalarán un par de minutos) :



¿En qué consiste Zabbix?


Zabbix consta de los siguientes componentes:

  • Servidor "Zabbix";
  • Él está trabajando activamente con la configuración, que configuraremos de forma manual y automática;
  • , ; MySQL ( – ), ( «» – PostgreSQL, Oracle ).

Para que podamos trabajar con Zabbix, se utiliza el llamado frontend. Frontend Zabbix es una aplicación escrita probablemente en PHP (tal vez no todo, pero la mayoría). En consecuencia, la propia aplicación utiliza un servidor web. Hasta ahora, solo se ha puesto esta parte (ahora esperaremos su instalación):



Terminado. Ahora, dado que Zabbix usa la base de datos, necesitamos crearla siguiendo la documentación. Para crear una base de datos, usaré un script simple:



no detallaré qué comandos significan qué. Si alguien trabajó con el DBMS, verá algo familiar: el nombre de la base de datos, etc.



Ahora, usando este script, creo la base de datos:



Y llene esta base de datos con metadatos. Hay varios archivos que describen qué tablas deberían ser, qué atributos, parámetros, etc. (todo esto se hace, nuevamente, de acuerdo con la documentación):



Es decir, ahora en MySQL estamos acumulando metadatos que Zabbix usará para almacenar la configuración y los resultados:



No Pasaré un tiempo mirando lo que él creará allí (habrá una gran cantidad de tablas creadas). Zabbix como producto se ha desarrollado durante más de diez años y se esfuerza constantemente por mejorar cada vez más, por lo tanto, la estructura de datos allí es bastante pesada. Pero todo esto está "bajo el capó". Nosotros, como administradores, trabajaremos con una aplicación front-end externa, con la cual todo será simple, claro y accesible.

Según la documentación, por algún motivo, varios archivos. Pero como lo hicieron, ¡eso significa que saben lo que necesitan! La base de datos está lista:



ahora, de acuerdo con la documentación, este componente debe explicarse:



explique que debe funcionar con la base de datos, conectándose con un nombre de usuario y contraseña específicos. Esto se hace a través del archivo de configuración: Insertar al



final del archivo:





Aquí describimos que el servidor de la base de datos está aquí bajo nuestra cuenta: El



paquete "Debian" para "Zabbix" no significa inicio automático. Aquí hay un equipo del gran y terrible SystemD, sobre el que hay una gran cantidad de holivars:



hace que el lanzamiento de Zabbix sea automático después del arranque del servidor. Inicie Zabbix:



estos dos componentes se están ejecutando:



Ya puede monitorear, completar la configuración. Pero es difícil hacer algo bueno hasta que la interfaz esté configurada ... Sin embargo, al principio, la etapa perdida ...

Despliegue de Zabbix Localización de zona horaria


Desplegué la imagen y el momento equivocado: la



fecha es correcta. Nuestra zona horaria está mal, así que la corregí de tal manera:



Llegando a la interfaz. Instalar e iniciar la interfaz web


Debian debería instalar dicho paquete (después de instalar el servidor web Apache): se instalará



PHP, una biblioteca para conectar programas escritos en PHP con MySQL. En general, estoy lanzando:



no es necesario realizar ninguna acción durante mucho tiempo, todo se hará automáticamente:



ahora estamos poniendo este componente aquí: la interfaz de Zabbix; un servidor web, y le explicaremos que necesita trabajar con el servidor Zabbix y el DBMS: a



través del servidor web gestionaremos el Zabbix y a través de él veremos qué supervisó allí.

Está casi establecido, y ahora veremos que tiene una relación cercana con nuestro país. Fue desarrollado como una aplicación de alguna persona que trabajaba en un banco. Decidió configurar el monitoreo y lo tomó y escribió su programa en lugar de usar el terminado. Trabajó en Riga, y usted y yo estamos en Moscú:



en este archivo ↑ es necesaria la inicialización de PHP ↓ para hacer esto:





no profundizaré sobre cómo se configura la aplicación web en Debian. Es suficiente para conectar la configuración que vino del paquete Zabbix y reiniciar el servidor web Apache:



Conéctese a la interfaz para configurar Zabbix


Casi listo para conectarse a la interfaz. Solo queda explicarle dónde se encuentra el servidor de la base de datos. Hay dos opciones, y lo haremos a través del asistente. Para ello, necesita un archivo donde se escribirán las configuraciones:



un servidor web debe tener permisos de escritura para este archivo:



después de lo cual puede intentar conectarse en un navegador. Puedes hacerlo por dirección IP. Mi DNS está configurado, así que aprovecharé esta oportunidad:



tenemos el Asistente Zabbix, donde haré clic en Siguiente, ya que la mayoría ya lo ha instalado:













Nuestro Zabbix está listo para conectarse. Ingresamos el nombre de usuario y la contraseña:



Configuración, hosts ... No monitorea ningún host - "Zabbix" hasta ahora solo está listo para monitorearse a sí mismo, si instalamos el Agente Zabbix:



Expande la nube de interruptores


Pero no habrá agentes de Zabbix para nuestro seminario web. ¡Es demasiado simple y poco interesante! Usted y yo estaremos monitoreando una red distribuida, cadenas de interruptores de comunicación, por lo que necesitamos esta cadena de interruptores. ¿Dónde conseguirlos?

Sugerí usar la virtualización de Virtual Box. Le permite emular PC (computadoras), y ahora le presentaré otro emulador, también utilizado en nuestros cursos. Un gran producto se llama Graphical Network Simulator (GNS):



este emulador le permite emular equipos Cisco. Aquí implementaremos nuestra nube de conmutadores. Será necesario volver a encontrar el nombre del proyecto (guardemos la configuración, ¿y si se necesita mañana?):



Si desea aprender a trabajar con equipos Cisco en casa, instale este GNS por usted mismo y haga lo que hacemos en el seminario, es decir, ahora implementaremos una nube de conmutadores. El problema es que GNS no tiene conmutadores (no hay emulación aquí), solo emulación de enrutador. Por lo tanto, tenemos que poner el enrutador (arrastrar con el cursor del mouse):



y de alguna manera convertirlo en un interruptor. ¿Cómo hacer una emulación de interruptor en GNS? Necesitamos tomar el enrutador de la serie 36. Puede llamarlo un interruptor (haga clic derecho en el interruptor):



Puede dibujar un interruptor: ¿







Parece? Pero se convertirá en un verdadero interruptor solo cuando agregue dicha placa allí:



En esta línea de enrutadores Cisco, puede colocar una placa Ethernet de 16 puertos. Y para una gran cantidad de trabajo de laboratorio relacionado con interruptores, esta placa es bastante adecuada.
Debemos tener una nube de interruptores, así que ahora haré esta nube (cambiar el nombre, la imagen e insertar el tablero). Comencemos con tres interruptores, y si tenemos tiempo, agregaremos un cuarto:



nos conectaremos, sin apuntar particularmente hacia dónde. Nuestra topología tendrá que construirse automáticamente:





Listo:



ahora estoy comenzando este negocio:



Felicitaciones a quienes están viendo por primera vez cómo funciona Cisco, para que pueda configurar rápidamente el conmutador Cisco. Mientras tanto, comienzan con nosotros ...

Este es nuestro sistema Windows (Windows 7) y Debian:



aquí la virtualización GNS3 y la nube de conmutadores:



Ahora está claro lo que está sucediendo: se utilizan dos sistemas de virtualización en el marco de una máquina. Virtualización de sistemas de PC (a la derecha) y virtualización de sistemas de Cisco (a la izquierda):



es necesario hacer que el servidor monitoree el equipo:



y para que pueda monitorearlo, este equipo debe tener direcciones en la misma red: por lo



tanto, sin pensar por mucho tiempo, Decidí darles direcciones a estos interruptores (puntos 101, 102, 103 para los interruptores primero, segundo y tercero, respectivamente). El número 100 es nuestro Linux:



puede configurarlo de la siguiente manera: vaya a un curso autorizado de Cisco y le informarán de forma económica.

Para que el conmutador sea accesible para la administración, debe realizar las siguientes configuraciones: ingrese al modo de configuración, asigne un nombre adecuado, asigne una dirección IP a la interfaz y copie el resultado en la memoria a largo plazo:



prepararé el pescado para no perder mucho tiempo en él. El primer switch se llamará switch1, la dirección IP es la 101. Copio esta configuración al conmutador:



haga doble clic en el conmutador deseado (ahora - conmutador1): configure el conmutador1





. Ahora, la configuración para el segundo conmutador: llamado switch2, IP - 102: en





consecuencia, actuamos con el tercer conmutador.

Bueno, será genial si no solo nuestro servidor está disponible desde nuestra computadora con Windows, sino también lo que hemos configurado ahora:



GNS3 es un buen sistema. Hago tanto énfasis porque hay suficientes problemas: es un poco defectuoso, un poco ... Pero para aprender, es suficiente. Esta pausa es alarmante para mí: espero que todo salga bien y nuestro interruptor responda después de un tiempo: ¡Pero



no, no responderá, no importa cuánto espere! La comunicación no es suficiente entre nuestra computadora y GNS. GNS en sí, por lo que falta un elemento más:



Connect Cloud


Para que estos conmutadores estén disponibles, debe usar el objeto Cloud:



hoy, Cloud lo usa en un sentido completamente diferente. Autores de GNS como proveedor de servicios de internet. En la configuración de este objeto, puedo conectarlo a mi tarjeta de red:



parece aterrador, pero esta es la misma tarjeta de red:





puse Cloud. Ahora debe conectar uno de los conmutadores a la nube (solo entonces puede aparecer una conexión):



sospecho que en nuestro caso es más rápido reiniciar el conmutador para que todo esté activo. Lo único que quiero es asegurarme de que se guarde su configuración. Por cierto, dentro de los conmutadores de ping ya debería ir:



¡Cisco real! El primer paquete desaparece, todo lo demás está ahí:



En realidad, no se usa emulación natural aquí, sino iOS. Por lo tanto, detengo el primer interruptor y comienzo de nuevo:





si todo está en orden, entonces deberíamos ver la conexión a través de la nube: mi Windows 7 se conectará a este equipo a través de una tarjeta de red (el equipo tiene direcciones IP en la misma red que Windows) . En general, este es el punto de conexión entre GNS y Windows. Veamos que hay una conexión:



veamos cómo se siente ... Desde aquí responde:



¡ Joder ! Verá, la conexión ha aparecido:



me encanta GNS porque es gratis, funciona ... ¡Pero no todo es simple! Aquí hay una situación divertida: nuestro Linux responde al sistema Windows, nuestro conmutador responde a Windows, pero el conmutador no responde al sistema Linux:



¡Para que el profesor pueda ponerse gris! Estás dando una lección, pero el stand no funciona para las personas ... Bueno, nada, ¡lo convenceremos! Gratis, barato y alegre.

La experiencia ha demostrado: para que la conexión sea entre los tres elementos (desde Windows - a Linux, desde Linux - a GNS), debe ir a la configuración de la tarjeta de red y seleccionar la opción extraña - “Modo inaudible” (“Permitir todo”):





Venga a Virtualización! Este modo indiscriminado está en todas las decisiones (y también en la "Esfera"). Está asociado con el paso de paquetes Ethernet, direcciones mac, etc. Vamos curso sobre virtualización, los detalles están ahí.

Comenzamos nuestro sistema nuevamente con la esperanza de que se restablezca la conectividad:



solo ahora será posible configurar el monitoreo de nuestros conmutadores desde Zabbix. Veamos cómo sucede esto:



Se ponen los cimientos. Si tenemos una conexión ahora, entonces todo estará listo. En "Zabbix" muchos "Tsiska", inteligentemente conectados entre sí, puede comenzar a monitorear. Nos conectamos con el usuario root con una contraseña y verificamos el ping:





todo está listo:



como administrador del DNS local, también hice posible enviar por nombres de ping.

¿Cómo puede Zabbix monitorear el equipo de Cisco?


El agente no se puede instalar en el equipo de Cisco. Muchos de ustedes saben que el equipo de Cisco se supervisa perfectamente mediante SNMP. Ahora prepararemos el escenario para esto.

Ahora prepararemos el escenario para esto. Para monitorear el equipo usando el protocolo SNMP, primero debe instalar el soporte SNMP en el servidor de monitoreo:



Zabbix no incluye este soporte, usa bibliotecas externas incluidas en estos paquetes:



no le diré qué es la base de información de administración: venga a cursos sobre interacción de Lunux y Cisco, allí se describe en detalle. Y ahora solo ponemos los paquetes necesarios para monitorear en Linux:





Y ponemos elementos de configuración en nuestro Cisco que nos permitirán monitorearlos a su vez.



Aquí, el servidor SNMP simplemente comienza con la siguiente contraseña:



Y lo hacemos en nuestros tres conmutadores:



Después de estos pasos, verificaremos si nuestro servidor de monitoreo puede acceder al equipo de Cisco (cualquiera de estos conmutadores) a través de SNMP y, por ejemplo, descubre algo Aquí hay opciones de prueba:



puede sondear nuestros conmutadores utilizando los llamados OID (identificadores de objeto). Aquí interrogamos al conmutador (solicitamos los valores del parámetro switch1):



y vemos que este Oid se refiere al nombre del conmutador, es decir, podemos extraer su nombre de cada conmutador (es muy útil para la topología):



y puede usar más textos humanos - solicitamos sysName del conmutador (se puede pedir lo mismo desde el conmutador2, etc.):



Instalar la consola SNMP


Otra acción no es obvia:







según el acuerdo de licencia, debe comentar las líneas en este archivo ... Este es un maravilloso comando de pájaro carpintero que borró el contenido del archivo, que decía: "Para confirmar la licencia, comente todo lo que está allí".

En consecuencia, el servidor Zabbix debe reiniciarse porque hemos instalado las bibliotecas que utilizará:





muchas personas saben que ahora es suficiente ingresar a la sección Host, crear un host y seleccionar el protocolo SNMP. Especificar dirección IP:





Pero no estamos aquí para eso. Intentemos que Zabbix encuentre automáticamente todos nuestros interruptores. Tenemos tres de ellos, y en Baumanka hay más de cien (al parecer, 120). No sería tan divertido agregar 100 interruptores, por lo que es una ventaja: veremos cómo Zabbix encuentra nuestros interruptores.

Agregar dispositivos automáticamente a Zabbix


Página "Agregar dispositivos automáticamente a Zabbix":



Para hacer esto, iremos a la sección "Configuración" (subsección Discovery) y no crearemos una nueva regla allí, pero usaremos la existente:

  • Esto dice correctamente que necesita escanear esta red ... ¿Reconoce la nuestra? Para no esperar mucho, indicaré un rango limitado de 100-110 (suficiente para mí).
  • Escanear una vez por hora es demasiado; poner - cada 60 segundos.
  • En dispositivos escaneados, nuestro Zabbix ahora está buscando un agente Zabbix. Prometí que usted y yo no tendremos agentes, así que lo elimino.
  • Y digo que, de hecho, nuestro dispositivo es accesible a través de SNMPv2, comunidad - público; solicitamos tal OID:
  • , . , . ( ):

Ahora, cada minuto, Zabbix recorre estas direcciones IP y solicita el nombre del dispositivo a través de SNMP. Si hay un dispositivo y es compatible con el protocolo SNMP, responderá:



Esto no es suficiente para que nuestros dispositivos aparezcan en esta lista:



debe configurar acciones. Crearemos uno nuevo (lo nombraré, copiando del manual de capacitación):





Condición: la solicitud debe devolver información de que se trata de un cambio. Por "coincidencia afortunada", tenemos todos los interruptores llamados switch (switch1, switch2, switch3), por lo que el valor recibido debería verse como (like) en el interruptor:



todo esto está en el manual Queda por indicar qué hacer con él: “Operaciones”: en



primer lugar, debe agregarlo a algún grupo. Usaré el grupo de hosts descubiertos ya preparado:





A continuación, lo más importante, debemos explicar qué monitorear en este equipo. En este caso, utilizaremos una plantilla preparada que sea adecuada para una gran cantidad de dispositivos SNMP diferentes:















si todo se hace correctamente, después de un tiempo aparecerán milagrosamente 3 interruptores en nuestro Zabbix. Esperamos. Aparecerán en la sección Hosts. Hay una conexión (marcada por si acaso):



Aparecida:



si tuviéramos 100 interruptores, aparecerían 100 interruptores. Ahora podemos hablar sobre el tema principal: la construcción automática de la topología de la red.

Crea un mapa de red


En "Zabbix" en la sección "Monitoreo" - subsección "Mapas de red". Puede crear su propio mapa con cualquier nombre arbitrario (lo llamaré, como en el manual de instrucciones - Mapa de interruptores):







puede agregar dispositivos a este mapa:



tenemos una operación bastante aburrida para agregar nuestros cien interruptores completos aquí: agrego un



nuevo elemento y le digo al sistema que está encendido en realidad el host que está monitoreando; host switch1:





La gente a menudo pregunta si este proceso se puede hacer automáticamente. Respuesta: "¡Es posible!". Pero luego tenemos que resolver el fascinante problema: "¿Cómo entendemos dónde colocar qué interruptores?" Esa es la geometría. Posible solución: puede especificar una marca de geolocalización en el interruptor (un parámetro como “usted está parado en el sexto piso, edificio AZLK, auditorio 666), dibujar el edificio del laboratorio educativo, todos sus públicos ... En general, este es un buen estudiante para el cuarto estudiante Curso de computación. ¡No tenemos planes para esto!

Ahora agregaré los 3 interruptores manualmente, pero prometo que no trazaré líneas de comunicación entre ellos. Agrega el interruptor 101, lo agregamos automáticamente a Zabbix; si lo dibuja en el mapa con bolígrafos. Un momento desagradable, pero hay un lugar para estar. No hay una solución simple para este problema, por 45 minutos seguro. Y lo que obtenemos me parecerá interesante.

Agrego rápidamente 3 interruptores:



¿Dije que no agregaré líneas? Lo haré, pero solo para que luego podamos entender cómo dibujarlos. Conectaré estos dos interruptores (no



conectamos el primero al tercero): los conectaré (el interruptor 1 y el interruptor 3 están resaltados):



nuestro sistema tendrá que solucionar este problema:



es importante no olvidar guardar el resultado:





Por cierto, sobre GNS, puedes hacerlo maravillosamente ... Ocultar su nombre de host, convertirlo en un interruptor y ponerlo uno debajo del otro, formando una nube de interruptores:











¿Cómo construimos una topología? Configurar la creación y actualización automática de líneas de comunicación.


Para que la topología se construya automáticamente, necesitamos recibir información sobre ella automáticamente. En la universidad, utilizamos equipos de Cisco, por lo que nos enamoramos del protocolo llamado protocolo de descubrimiento de Cisco: simplemente escriba show cdp neighbours en cualquier dispositivo y le dirá que switch1 está conectado a la quinta interfaz: la





alternativa a cdp es lldp (tenemos un segmento interruptores de la empresa "de miedo" Nortel - hay lldp). Verá, hay dos conmutadores:



el servidor Zabbix de alguna manera debe extraer esta información (lo veo en el propio Cisco). Hay muchas maneras. Uno de los más rápidos, pero más tontos, es usar el protocolo RSH. Un protocolo muy denso, y lo sé solo por mi edad:





Las personas normales de RSH no lo saben, pero puede usarlo rápidamente para hacer algo de forma remota con Cisco. O, si estamos hablando de algún tipo de red de administración donde no hay ningún extraño, entonces puede usarlo en producción. Sin embargo, los puntos de seguridad siguen siendo una costura completa.

Entonces, configuré el soporte para acceder al protocolo RSH a mis servidores Cisco desde esta dirección IP:



ahora puedo instalar el cliente RSH en el servidor ...





... y demostrar cuán fácil es ahora seguir las instrucciones que acabamos de seguir conectándonos directamente al equipo Cisco desde la estación de administración - en el switch1 Seguiré esta instrucción: en





consecuencia, debería aparecer en el switch2:



Conexión desde el servidor de monitoreo


Más lejos. Los gerentes me escriben: “Vyacheslav, ha recibido una solicitud del oyente. Quiere profundizar en Bash, Csh, Sed y Awk ". Estas son densas utilidades de Unix que la gente conocía en un año peludo. En este momento habrá un poco denso Unix. Instalaremos este paquete (necesitamos formatear el resultado para que esté mejor estructurado):



y todo el equipo se verá así:



no diré cómo el código de retorno en Dos difiere de Unix. A continuación, filtraré solo las líneas que contienen el interruptor, eliminaré los espacios adicionales y cortaré los campos necesarios a través de los espacios:





Veamos el resultado, y verá cómo difiere del anterior. Un poco más "mágico" de Unix. Procesar la transformación de información en estructurada (por ejemplo, switch2). En lugar de esta información no estructurada (muchos espacios, algunas teclas extrañas):



aparece la salida:



Switch2 está conectado al switch3 a través de las interfaces Fas 0/6 (del switch2) y Fas 0/5 (del switch3). Resulta que la tabla: algún tipo de interruptor con el cual a través de qué interfaces está conectado.
Mientras están en este protocolo, RSH y CDP se van. Ahora que hemos recibido esta información, dibujamos estos enlaces en todos los conmutadores. Para hacer esto, necesitamos información sobre a qué conmutadores conectarse. Puede obtener un archivo de texto, donde enumerar todos los interruptores ... ¡Pero no son deportes!

Solo necesitamos agregar el interruptor físicamente, y Zabbix debería detectarlo automáticamente. Ya tenemos una base de datos de conmutadores en Zabbix. ¿Cómo puede una aplicación obtener información sobre los interruptores de Zabbix?

API de Zabbix


La API de Zabbix está escrita usando el "maravilloso" protocolo JSON. Terminé de programar en esos días cuando JSON aún no estaba, por lo tanto para mí, como para el administrador ... ¡Hoy en día, no había tanta basura! Aquí hay un archivo de texto para mí, esto es normal, pero JSON ... (
es broma ) ¡ JSON es tan JSON!

JSON es el formato utilizado para intercambiar datos con el servidor web, y la utilidad cURL es una de esas prácticas utilidades que le permiten enviar cualquier solicitud al servidor web:





no profundizaré en lo que es una solicitud POST, solicitud GET y Diré brevemente En Zabbix, que funciona aquí:



esta aplicación viene en:



Que está lista para aceptar dicha solicitud en llaves "aterradoras" (esto es JSON):



Esta solicitud indica lo que quiero hacer con Zabbix, los parámetros están indicados:



un Zabbix da una respuesta. Aquí hay un ejemplo que dice: "Zabbix", por favor, dame una cadena de autenticación para que pueda enviarte más solicitudes ". Confirmo mis credenciales con inicio de sesión y contraseña:



una solicitud JSON de este tipo ahora nos devolverá una respuesta JSON:



y en esta respuesta JSON habrá una línea de



este tipo : este es un autenticador que se puede utilizar para las solicitudes restantes.

Trabajar con objetos host


Recordamos por qué comenzamos a estudiar JSON: queremos obtener la base de datos de conmutadores de Zabbix. ¿Qué interruptores para interrogar? ¡Vamos a sacarlo!

Conozca: la API de Zabbix incluye, entre otras cosas, el método host.get:



Host: estos son nuestros hosts. Obtener es un regalo. Luego señalo: ¡dame información de host!



En los parámetros que digo: muestra todo lo que sabes sobre los hosts:



pero debo acompañar mi solicitud con esta línea:



demostrémoslo. Para que sea conveniente para mí,



copiaré esta solicitud: e insertaré el autenticador que me devolvió Zabbix:



Entonces, Zabbix Api: vimos cómo pedirle al Zabbix un autenticador para acceder. Y luego demuestro cómo usar este autenticador para obtener algún tipo de respuesta:



Creo que todo está claro. Incluso puedes ver si llevas una lupa. ¿Reconoces switch1? En algún lugar hay un switch2 ...



Me quebré los ojos durante mucho tiempo y luego decidí leer cómo trabajar con este JSON en la línea de comandos. Y una de las recomendaciones fue: usar JSON Query. Ella es muy saludable, aclara la respuesta, vea: en





primer lugar, todo se ha coloreado, ya está bien; en segundo lugar, switch2, switch1 son claramente visibles aquí:



Además, un poco jugando con JSON Query, veremos muchas cosas interesantes. Y para no copiar estos "cocodrilos" del cuaderno cada vez, sugiero determinar en qué programaremos el trabajo con nuestro "Zabbix". Hay una API de Zabbix: este es JSON, hay un montón de lenguajes de programación. JSON parece estar relacionado con un script Java, pero de hecho, otros lenguajes se usan con mayor frecuencia para trabajar con Zabbix, por ejemplo, Perl, un script Perl que hace algo.

Hacer solicitudes en forma de scripts Bash


Perl no es un lenguaje de moda hoy en día, obsoleto. Si volviera a comenzar la vida, probablemente comenzaría a aprender Pyton. Y definitivamente se sabe que bajo "Python" hay una biblioteca conveniente para trabajar con "Zabbix". Pero, dado que nos hemos reunido aquí y no daremos preferencia a ningún idioma, utilizo este idioma:



el idioma del administrador del sistema, es decir, yo - ¡Bash! Por lo tanto, haré estas solicitudes a Zabbix: las emitiré



en forma de guiones: los



guiones están listos, los copiaré. Se ven como el infierno. Creo que un buen código de Python será mucho más legible. Pero, como yo mismo no conozco "Python" y no quiero dar ninguna preferencia, escribiré sobre lo que está cerca del corazón del administrador del sistema:



No te diré cuáles son estas barras invertidas (y que Dios las bendiga). Pero la cadena de autenticación estará enmarcada en la forma de una variable que debemos exportar antes:





¿Qué valor tenía para nosotros? Y ahora, en lugar de copiar las líneas largas, simplemente puedo ejecutar el script:



el script devuelve una costura completa. Usando JSON Query, puede obtener esto hermoso:





recuerde la tarea: ¡obtenga la base de datos de conmutadores que están en Zabbix!

Dibujaré inmediatamente el resultado. Durante mucho tiempo no diré qué es lo que hay aquí y cómo. Tenemos una tarea desalentadora:



este es el resultado, vea lo que contiene. Aquí dice que tenemos tales interruptores en Zabbix, y este (10105, 10106, 10107) es el identificador interno del interruptor "Zabbiksk":



El resultado fue un archivo plano. Cuando agrega cada nuevo modificador, debe ejecutar este script para crear un archivo. Para que no tengamos tales "cocodrilos", incluiré esta línea en el script en sí:





y nos devolverá una vista ordenada de la tabla. Ahora lo mostraré. Ejecuto el script, muestra e inmediatamente guarda este archivo:



la utilidad tee es una buena utilidad que escribe el resultado en un archivo y lo pasa. Ahora tenemos 3 interruptores y tenemos un archivo de texto en el que se enumeran todos los interruptores:



ahora puede consultar cada uno de estos interruptores a través de RSH y averiguar quién está conectado con qué.
Entonces, tenemos la base de datos de conmutadores. ¡Nuestro objetivo final son los mapas!

Obtener una lista de mapas y sus elementos de Zabbix


¿Cómo trabajar con tarjetas? Aprendamos a leer información sobre tarjetas de Zabbix. Copiaré este script: a





quien le guste, puede tomar todos estos scripts. Traté de simplificarlos lo más posible, no funciona más fácilmente. Si encuentra cómo simplificarlo, escriba, lo corregiré:



este script ↑ se dirige a Zabbix con una solicitud de map.get y dice: "Hábleme de los enlaces y hábleme de los elementos que estos enlaces se conectan entre sí".

Ahora ejecuto este script:



y muestro el resultado: al



igual que la información sobre hosts, es muy fácil obtener información sobre tarjetas de Zabbix. Cada tarjeta tiene su nombre: Los



siguientes son los elementos en esta tarjeta. ¿Reconoces el número? Este es el elemento interno de Zabbix:



Lo más desagradable es que en Zabbix los elementos se vuelven a numerar. A la izquierda está el elemento id, a la derecha está la numeración del elemento dentro del mapa:



es decir, en Zabbix cada host tiene un número, y en el mapa hay otro número: se obtiene esta cadena. Es decir, el interruptor switch1 se llama 10105 en el Zabbix y 2 en el mapa (se obtiene una ligera complicación de la tarea).

Reunimos todo a través de CDP y RSH, descubra la conexión de conmutadores con interfaces


La parte final de este script es que tengo que obtener información sobre qué identificadores de Zabbix están asociados con qué identificadores en el mapa. Mire, en "Zabbix" este identificador (10105, 10106, etc.), y en el mapa - 2, 3, etc.:



Tradicionalmente, lo guardaré en un archivo de texto:



ahora tenemos casi todo. Hay información sobre qué interruptores hay en este archivo (qué identificadores se usan dentro de Zabbix):



y tenemos información sobre qué identificador de la tarjeta está asociado con qué identificador de Zabbix (por ejemplo, el interruptor 1 tiene el número 10105 en Zabbix, y en el número de tarjeta 10105 tiene el identificador 2):





¡Esa no es mi culpa! Los chicos escribieron esto en Zabbix. Pero estoy seguro de que hay una razón por la cual no usan identificadores directos en el mapa. Quizás porque el mismo objeto se puede mostrar en el mapa varias veces y debe tener un identificador único. Por lo tanto, la cadena es más larga.

Y aquí, probablemente comentaré sobre este pequeño infierno. Reproducir:



en el bucle, leo las líneas que describen qué interruptor con qué identificador Zabbix



:



me conecto a cada interruptor desde el Zabbix a través de RSH: leo a qué hosts está conectado. Redirijo este resultado a otro ciclo:



que, a su vez, lee los identificadores y descubre quién está conectado con quién:



mostraré los resultados de este script (chmod + x):



En el mapa, el segundo interruptor está conectado al tercero (recuerde que los identificadores en el mapa) a través de las interfaces correspondientes (Fas 0/5 - para el segundo, Fas 0/6 - para el tercero ↑). Debemos dibujar estos nombres en los enlaces, crear.

Si hasta este momento solo leemos información de Zabbix (hosts, se leyeron tarjetas, etc.), ahora tendremos que escribir información a Zabbix.

Guardemos el resultado:



Dibujando líneas de comunicación en Zabbix


Decidí escribir un guión simple que cambiará algo en Zabbix. Honestamente, estudié la API de esta manera: era importante para mí que algo simple funcionara:





el primer script no estará relacionado con las tareas, cambiará el nombre del mapa (para ver cómo se hace). Si queremos cambiar algo en Zabbix, entonces también debemos aplicar a través de la solicitud POST y describirlo en JSON, pero usando el método map.update. Entre los parámetros, debemos indicar explícitamente: MAPID, que encontrará el mapa deseado, y MAPNAME, que cambiará el nombre del mapa:



este es el conjunto mínimo de parámetros. Estos parámetros en sí mismos:



Pasan a través de las variables los argumentos del script. Hago el script ejecutable (chmod + x): lo ejecuto



, como está escrito en el manual de capacitación. Si todo está correcto, la tarjeta debería llamarse Super MAP:



Monitoreo - Mapas - voila:



Fácil de cambiar - Super MAP2:



Todo funciona:



Pero nuestra tarea es complicada: ¡cambiar las líneas de comunicación!



Es necesario generar JSON, que describirá nuestro mapa y todas las líneas de comunicación. Para hacer esto, hago otro script:





el hecho de que tenga muchos scripts no significa que esto deba hacerse en la empresa. En la empresa, debe tomar un lenguaje normal que conozca ("Python", "Pearl" u otra cosa) y programar lo que está aquí usando un lenguaje normal. Estos ladrillos, cada uno de los cuales es simple, permiten comprender qué, por qué y cómo hacerlo.

Otro script que sirve más para comprender lo que hay que hacer y no copiar (no le venderé el producto terminado aquí):





Este script lee este archivo:



Qué establece qué elemento en el mapa con qué elemento en el mapa a través de qué interfaces está conectado. Más precisamente, tomaremos un elemento en el mapa, un elemento en el mapa y una etiqueta. Este es un elemento en el mapa:



Y esta firma debería ser:



Estoy leyendo este archivo. Ordeno todos los elementos en el mapa:



programo enlaces - descripción de enlaces en forma de JASON. La solicitud final se ve así: actualice el mapa (número de tarjeta ↓): los



enlaces se describirán en esta variable:



que se formó en este ciclo (se enumeraron todos los elementos y firmas de las tarjetas): una



vez más, tenemos una tarea desalentadora y la describimos en detalle en Shell ... Seguramente muchos de ustedes no programaron en Shell. Solo necesita mirar estos textos y programar lo que sea conveniente para usted.

Tengo la expectativa de que ahora todo debería suceder. Lancé un script:



Recargar la página de Mapas:



Bueno, ¿cómo? ¡Al menos funciona! Agreguemos otro interruptor y ejecutemos el script nuevamente.

Tomamos el interruptor, lo llamamos switch4:



Dibujamos que es el interruptor:





Configurar : Lo conectamos



como queramos (con un asterisco, puede dibujar una salchicha): Configuramos el



interruptor. Comienzo:



todo lo que hicimos anteriormente (solo cambie al switch4 y la dirección es 104):



haga doble clic en el switch (pegue lo que copió):



nuevamente, será más rápido reiniciar el tercer switch (switch3), guardando la configuración:



Mientras tanto, se reinicia, verifique si está disponible en nuestro nuevo conmutador a través de SNMP. Cuando Zabbik lo encuentra, lo primero que debe preguntar es el nombre de host SNMP. Por lo tanto, agregamos este diseño a nuestro nuevo conmutador:





ahora estamos esperando que el conmutador esté disponible. El 101º, 102º están disponibles, el 103º se reinicia:



el 103º



respondió : el 104º respondió. Compruebe si SNMP está disponible a través de SNMP4:



¡Disponible! Tenemos todas las posibilidades de verlo en la lista de hosts. Esperemos un minuto (cada minuto que tenemos una red escaneada): una



vez que ha aparecido, volvemos al primer script. Él descargó información de nosotros que los interruptores en general son:



Sus hombres de cable corrieron, pusieron un nuevo interruptor, usted levantó el enlace y apareció automáticamente en Zabbix. En consecuencia, aquí deberíamos ver que ha aparecido el cuarto interruptor:



nuestra base de datos se rellena automáticamente.

Arreglamos el material (agregamos switch4), ejecutamos el script final


Luego, desafortunadamente, tiene que huir y mostrar nuestro interruptor en el mapa:



no solo sus hombres de cable corrieron, no solo configuró el enlace, sino que también tiene que ir aquí y decir: "Estamos agregando un nuevo interruptor".



Localice donde se supone que debe hacerlo, e indique que tenemos un host, switch4, y también dibuje que es un switch:



y actualice (¡todavía no estamos dibujando una línea de comunicación!):



Ahora recuerde que nuestros scripts de línea de comunicación se basan en el protocolo CDP. Y para obtener información CDP del conmutador, debe configurar el acceso RSH al mismo. ¿Recuerdas que decidí usar este método?





Si todo está bien, entonces puedo intentarlo, luego puedo probar RSH: solicite información sobre su conexión desde el cuarto interruptor. Aquí dice: "Estoy conectado al tercero, de mi lado, el décimo, por otro lado, la octava interfaz".



Lo agregaron a la tarjeta, y tenemos una tabla de correspondencia entre los identificadores en el Zabbix y los identificadores en la tarjeta (ver, es el quinto en el mapa):





plantearon RSH. Ahora podemos construir una conexión: qué interruptores están conectados a través de qué enlaces (obtuvimos el archivo de texto):





Intentemos ejecutar el script final, que leerá este archivo de texto y generará una solicitud JASON para actualizar los mapas, redibujando todos los enlaces en el mapa:







Bueno, ¿cómo? ¿Impresionante? No me las arreglé en 45 minutos planificados, pero aún así rápidamente (unos 75 minutos), probablemente, no funcionará más rápido.

¡Todas! Soy muy feliz amigos, funcionó. El manual de capacitación está aquí: https://wiki.val.bmstu.ru . Si no lo encuentra, escriba al correo: val@bmstu.ru, val@specialist.ru. Lo enviaré con gusto. Aparecerá un seminario web en specialist.ru: lo comprobaré con seguridad.

Y lo más importante, mis amigos, que todo esto no fue en vano, sino con el astuto propósito de persuadirlo a usted o a sus colegas a nuestro curso de 2 días, que comprende una gran cantidad de tareas relacionadas con Zabbix: detección y ajuste de bajo nivel ... No en la cima, como lo es ahora, pero en detalle, con los de laboratorio: lo harás: hasta que lo hagas, no te dejaré salir.
¡Estaré encantado de verte, tus colegas! Escribir cartas.

¡Te veo pronto!


Un poco de publicidad :)


Gracias por estar con nosotros. ¿Te gustan nuestros artículos? ¿Quieres ver más materiales interesantes? Apóyenos haciendo un pedido o recomendando a sus amigos VPS basado en la nube para desarrolladores desde $ 4.99 , un análogo único de servidores de nivel básico que inventamos para usted: toda la verdad sobre VPS (KVM) E5-2697 v3 (6 núcleos) 10GB DDR4 480GB SSD 1Gbps desde $ 19 o cómo dividir el servidor? (las opciones están disponibles con RAID1 y RAID10, hasta 24 núcleos y hasta 40GB DDR4).

Dell R730xd 2 veces más barato en el centro de datos Equinix Tier IV en Amsterdam? ¡Solo tenemos 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV desde $ 199 en los Países Bajos!Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - ¡desde $ 99! Lea sobre Cómo construir un edificio de infraestructura. clase c con servidores Dell R730xd E5-2650 v4 que cuestan 9,000 euros por un centavo?

Source: https://habr.com/ru/post/undefined/


All Articles