Zabbix: la topologie du réseau est claire et automatique

Gérer un réseau plus grand qu'un hôte local? Vous ne contrôlez pas, mais vous voulez apprendre? Nous vous invitons au cours «Linux. Niveau 5. Zabbix. Surveillance de l'infrastructure informatique d'une entreprise . » Lors du séminaire gratuit du centre de formation spécialisée de l'Université technique d'État Bauman de Moscou, vous apprendrez à enseigner à Zabbix à surveiller automatiquement le réseau: rechercher des nœuds existants et en ajouter, dessiner et mettre à jour la topologie.



Le séminaire sera organisé par l'enseignant principal du centre "spécialiste" du Bauman MSTU, principal administrateur système du réseau du MSTU. N.E.Bauman Vyacheslav Aleksandrovich Lokhturov. Inscrivez-vous (ou regardez les enregistrements) pour nos séminaires gratuits .

Bonjour à tous! Je m'appelle Vyacheslav Lokhturov. Je travaille comme ingénieur à l'Université technique d'État Bauman de Moscou. Depuis l'obtention de mon diplôme en 1997, je travaille comme ingénieur. En même temps, j'enseigne au centre de formation n ° 1 "spécialiste" - une entreprise qui est sympathique MSTU. De nombreux autres enseignants et employés y travaillent.

Le thème du webinaire fera partie de mon travail d'ingénieur - un merveilleux système de surveillance ...

Topologie du réseau: historique, Baumanka Wikipedia, sources


L'enregistrement du webinaire peut être consulté à ce lien: https://wiki.val.bmstu.ru - un format wiki. Mes adresses e-mail sont: val@bmstu.ru, val@specialist.ru. Ce tutoriel que j'utilise en tant qu'ingénieur. Il existe de nombreux matériaux différents. Si vous ne l'aimez pas, il y a beaucoup de documents sur Internet sur votre sujet avec nous («Zabbix»).

Du point de vue du matériel pédagogique et de l'enseignement, j'utilise la section "Matériel sur la méthodologie des cours de lecture":



Et il y a une section avec des webinaires. Pour chacune de mes lectures, il y a un record ici:



j'ai immédiatement dit: «Si nous le faisons, faisons le plus cool! Montrons comment la topologie du réseau est automatiquement construite dans Zabbix. Dans 45 minutes, je dois dire ceci.
Concernant la topologie du réseau: au Bauman MSTU un immense réseau; en conséquence, la topologie du réseau est ce dont nous avions vraiment besoin depuis longtemps. Historiquement, Zabbix n'était pas le système que nous utilisions au stade initial. Comme tous les gens de départements comme l'informatique, la gestion, les systèmes informatiques, les complexes et les réseaux, nous aimions tous nous programmer nous-mêmes, et maintenant nous programmons ...

Nous avons un petit Wikipédia qui est utilisé pour le travail. Et parmi les éléments de ce Wikipedia, il y a une section consacrée à la commutation de réseau. L'accès à ce Wikipedia est toujours fermé par un petit VPN:



je vais maintenant vous montrer à quoi ressemble la topologie du réseau dans notre université. Cela vaut la peine de le voir; puis comparer avec le résultat:



Il me semble que tout est clair: tous les commutateurs et leur chemin vers le commutateur racine; si quelque chose manque, nous récupérerons rapidement de ce fichier texte. La topologie du réseau est construite au quotidien. Tout va bien, mais pas spectaculaire, bien sûr. C'est difficile à vendre. Par conséquent, nous avons un tel programme à l'université.

La topologie du réseau est nécessaire lorsqu'un commutateur a disparu. Pour comprendre où il était connecté


Nous allons essayer de voir quelque chose de plus spectaculaire. Et une certaine référence à ce que nous ferons est cet article sur le forum:





Il indique qu'il existe une sorte de script merveilleux écrit dans mon ancienne langue préférée Perl, que l'équipement réseau interroge, en fait conclusions et alimente miraculeusement les résultats à Zabbix. Mais nous n'utiliserons pas Perl, mais nous utiliserons autre chose.

Nous disons au revoir à ce que nous avons. Passons à la pratique.



Je serai heureux si vous pouvez reproduire tout cela à la maison et essayer de vous préparer à tout cela. Après le webinaire, vous voudrez tout répéter et commencer par le fait que vous devez déployer Zabbix, une machine virtuelle, un réseau. Comment faire ça?

À la maison, vous tapez la commande ipconfig et vous voyez que vous avez un tel réseau IP à la maison (peut-être un autre, mais le plus souvent celui-ci): j'ai ici la



cinquième adresse (192.168.1.5), et vous pouvez avoir la 20e ou la 30e ... Il y a sûrement un routeur Wi-Fi qui délivre ces adresses. Par conséquent, je vais maintenant dessiner une topologie basée sur ce qui peut être dans votre maison afin que vous puissiez la reproduire:



  • Vous avez un routeur WIFI.
  • Le système dans lequel vous souhaitez jouer le webinaire.
  • 192.168.1/24 – 1- WI-FI-, 5-, , – .
    . , – , 2, 10, 20 , . , linux-, «». , 100. , 192.168.1.100.

Où trouver une voiture? Rien n'empêche de prendre la distribution Linux. Je suis un grand fan de cette distribution. Nous n'élèverons pas d'holivars - je l'aime, je le choisis, je l'utilise dans les cours. Vous pouvez prendre et installer à partir de ce site:



Afin que nous ne passions pas 45 minutes à installer Debian, je vais prendre une image pré-installée prête à l'emploi. Qui en a besoin - écrivez à l'e-mail, je vous enverrai cette image, bien qu'il n'y ait rien de particulièrement remarquable (juste pour ne pas perdre de temps à installer):



Pendant qu'elle est installée, vous pouvez voir la section dans le manuel ...

Déploiement du stand


Il y a une histoire à propos de la commande ipconfig:



Et puis, lorsque la machine se retourne:



Vous pouvez donner un nom dans les paramètres, lui donner plus de RAM: Il



existe différentes virtualisations - VirtualBox est bon pour un usage domestique. Dans l'entreprise, nous et mes amis utilisons VSphere (nous sommes très satisfaits du produit de VMware), mais il y a plus qu'assez de cours pour VirtualBox.

Réseau:



Puisque nous disons que cette machine sera connectée à notre réseau, nous pouvons travailler avec elle - elle doit être connectée par un pont à un adaptateur physique. Je régénérerai l'adresse Mac. Je lance notre machine virtuelle:



Et après avoir commencé, je fais une configuration. Le manuel répertorie les fichiers à éditer: attribuez un nom à la machine, il est souhaitable d'éditer le fichier hosts, resolv.conf (responsable du client DNS) et l'adresse IP choisie par nous - ces quatre fichiers doivent être édités. J'essaierai de le faire le plus rapidement possible.

Déploiement Zabbix


Le mot de passe de cet utilisateur (root) est immédiatement défini dans l'image - ne l'utilisez jamais en pratique! Pour gagner du temps, j'utilise un compte privilégié:



le manuel répertorie les fichiers à éditer.



Ensuite, je donne le nom à notre machine (serveur de surveillance Zabbix):



Fichier Hosts:



Changez l'adresse au 100ème et le nom de notre domaine inventé (chaque auditeur de nos cours a le sien, individuel, comme un réseau avec un domaine):



Que reste-t-il? Resolv.conf (client DNS):



Corp1.un se connectera aux noms courts et votre routeur WIFI fonctionnera généralement comme un serveur DNS:



Que reste-t-il? Le fichier volumineux le plus important est le réseau / les interfaces. Voici un modèle pour différents cours, de nombreuses interfaces:



Mais notre voiture aura une seule interface. Ce sera un serveur de surveillance avec la 100e adresse et aller sur Internet par le 1er:



Peut-être, il n'est pas nécessaire, mais plus rapide d'utiliser tous les fichiers - redémarrez la machine.

Installer et démarrer un service dans Debian


Les Zabbiks peuvent être installés de différentes manières. Selon Zabbix, il existe un excellent site Web avec de la documentation (en passant, en russe, la section active est prise en charge). En conséquence, diverses options sont proposées ici. Je suis un grand partisan de l'installation de logiciels à partir d'un référentiel régulier. Ce n'est pas une coïncidence, c'est pourquoi j'ai choisi Debian:





Au fait, si tout est bien fait, maintenant je devrais pouvoir me connecter à mon système. Essayons de le faire. Je prends mon client SSH préféré et me connecte au système 192.168.1.100:



Chanceux:



Encore une fois, il n'est pas très correct que la racine soit autorisée ici:



ne faites jamais cela dans une entreprise! Voici seulement un gain de temps.



Nous devons maintenant installer Zabbix. Étant un grand amoureux et partisan de l'utilisation des logiciels de base et un adversaire de la connexion de tout référentiel tiers, je mettrai la version qui se trouve dans cette Debian. Encore une fois, merci aux auteurs de "Debian" - composez simplement l'installation d'un tel paquet: je



me suis souvenu d'une dernière chose! Nous venons d'installer le système - nous devons synchroniser le référentiel (mise à jour apt):



Ainsi, il suffit de taper la commande d'installation de zabbix-server avec prise en charge de la base de données (DB) de vos informations dans SQL, car de nombreux composants seront installés (quelques minutes devraient être consacrées à l'installation) :



En quoi consiste Zabbix


Zabbix se compose des composants suivants:

  • Serveur "Zabbix";
  • Il travaille activement avec la configuration, que nous allons configurer manuellement et automatiquement;
  • , ; MySQL ( – ), ( «» – PostgreSQL, Oracle ).

Pour que nous puissions travailler avec Zabbix, le soi-disant frontend est utilisé. Frontend Zabbix est une application écrite probablement en PHP (peut-être pas tout, mais la plupart). En conséquence, l'application elle-même utilise un serveur Web. Jusqu'à présent, seule cette partie a été mise (maintenant nous attendrons son installation):



Terminé. Maintenant, puisque Zabbix utilise la base de données, nous devons la créer en suivant la documentation. Pour créer une base de données, j'utiliserai un script simple:



je ne détaillerai pas quelles commandes signifient quoi. Si quelqu'un a travaillé avec le SGBD, il verra quelque chose de familier - le nom de la base de données et ainsi de suite ...



Maintenant, en utilisant ce script, je crée la base de données:



Et remplissez cette base de données avec des métadonnées. Il y a plusieurs fichiers qui décrivent quelles tables doivent être, quels attributs, paramètres, etc. (tout cela est fait, encore une fois, selon la documentation):



c'est-à-dire que maintenant dans MySQL nous empilons des métadonnées que Zabbix utilisera pour stocker la configuration et les résultats:



Non Je vais passer du temps à regarder ce qu'il va créer là-bas (il y aura un grand nombre de tableaux créés). Zabbix en tant que produit se développe depuis plus de dix ans et s'efforce constamment de devenir de mieux en mieux, la structure des données y est donc assez lourde. Mais tout cela est «sous le capot». En tant qu'administrateurs, nous travaillerons avec une application frontale externe, avec laquelle tout sera simple, clair et accessible.

Selon la documentation, pour une raison quelconque, plusieurs fichiers. Mais comme ils l'ont fait, cela signifie qu'ils savent de quoi ils ont besoin! La base de données est prête:



maintenant, selon la documentation, ce composant doit être expliqué:



expliquez qu'il devrait fonctionner avec la base de données, en se connectant sous un identifiant et un mot de passe spécifiques. Cela se fait via le fichier de configuration: Insérer à la



fin du fichier:





Nous décrivons ici que le serveur de base de données est ici sous notre compte:



«Debian» -package pour «Zabbix» ne signifie pas le démarrage automatique. Voici une équipe du grand et terrible SystemD, sur laquelle il existe un grand nombre d'holivars:



Il rend le lancement de Zabbix automatique après le démarrage du serveur. Lancez Zabbix:



Ces deux composants sont en cours d'exécution:



Vous pouvez déjà surveiller, remplir la configuration. Mais il est difficile de faire quelque chose de bien jusqu'à ce que le frontend soit défini ... Cependant, au début - l'étape manquée ...

Déploiement Zabbix Localisation du fuseau horaire


J'ai déplié l'image et le mauvais moment: la



date est correcte. Notre fuseau horaire est incorrect, alors je l'ai corrigé en un clin d'œil:



Se rendre au frontend. Installation et lancement de l'interface Web


Debian devrait installer un tel paquet (après l'installation du serveur web Apache):



PHP, une bibliothèque pour connecter des programmes écrits en PHP avec MySQL, sera installé. En général, je lance:



Vous n'avez pas besoin d'effectuer d'actions pendant longtemps, tout sera fait automatiquement:



Maintenant, nous installons ce composant - le frontend Zabbix; un serveur Web, et nous lui expliquerons qu'il doit travailler avec le serveur Zabbix et le SGBD:



via le serveur Web, nous gérerons le Zabbix et à travers lui, nous verrons ce qu'il y a surveillé.

Il est presque établi et nous allons maintenant voir qu'il a une relation étroite avec notre pays. Il a été développé comme une application d'une personne qui travaillait dans une banque. Il a décidé de mettre en place un suivi et l'a pris et a écrit son programme au lieu d'utiliser celui terminé. Il a travaillé à Riga, et vous et moi sommes à Moscou:



Dans ce fichier ↑ l'initialisation PHP est nécessaire ↓ pour ce faire:





je ne vais pas approfondir la façon dont l'application web est configurée dans Debian. Il suffit de connecter la configuration issue du package Zabbix et de redémarrer le serveur Web Apache:



Connectez-vous au frontend pour configurer Zabbix


Presque prêt à se connecter au frontend. Il ne reste plus qu'à lui expliquer où se trouve le serveur de base de données. Il y a deux options, et nous le ferons via l'assistant. Pour cela, vous avez besoin d'un fichier dans lequel les configurations seront écrites:



Un serveur Web doit avoir des autorisations d'écriture sur ce fichier:



Après quoi, vous pouvez essayer de vous connecter dans un navigateur. Vous pouvez par adresse IP. Mon DNS est configuré, je vais donc saisir cette opportunité:



Nous avons l'assistant Zabbix, où je clique sur Suivant, car la plupart l'ont déjà installé:













Notre Zabbix est prêt à se connecter. Nous entrons le nom d'utilisateur et le mot de passe:



Configuration, hôtes ... Ne surveille aucun hôte - "Zabbix" n'est jusqu'à présent prêt à se surveiller que si nous installons l'agent Zabbix:



Développez le nuage de commutateurs


Mais il n'y aura pas d'agent Zabbix pour notre webinaire. C'est trop simple et sans intérêt! Vous et moi surveillerons un réseau distribué, des chaînes de commutateurs de communication, nous avons donc besoin de cette chaîne de commutateurs. Où les obtenir?

J'ai suggéré d'utiliser la virtualisation Virtual Box. Il vous permet d'émuler des PC (ordinateurs), et maintenant je vais vous présenter un autre émulateur, également utilisé dans nos cours. Un excellent produit est appelé Simulateur de réseau graphique (GNS):



cet émulateur vous permet d'émuler un équipement Cisco. Ici, nous déploierons notre nuage de commutateurs. Il sera nécessaire de retrouver le nom du projet (sauvegardons la configuration, et si demain est nécessaire):



Si vous voulez apprendre à travailler avec des équipements Cisco à la maison, installez ce GNS par vous-même et faites comme nous le faisons lors du séminaire, à savoir, nous allons maintenant déployer un nuage de commutateurs. Le problème est que GNS n'a pas de commutateurs (il n'y a pas d'émulation ici) - seulement une émulation de routeur. Par conséquent, nous devons mettre le routeur (faites glisser avec le curseur de la souris):



Et en quelque sorte en faire un commutateur. Comment faire une émulation de commutateur dans GNS? Nous devons prendre le routeur de la 36e série. Vous pouvez l'appeler un commutateur (clic droit sur le commutateur):



Vous pouvez dessiner un commutateur:







ressemble à? Mais cela ne deviendra un véritable interrupteur que lorsque vous y ajouterez une telle carte:



Dans cette gamme de routeurs Cisco, vous pouvez insérer une carte Ethernet à 16 ports. Et pour un grand nombre de travaux de laboratoire liés aux interrupteurs, cette carte convient parfaitement.
Nous devons avoir un nuage de commutateurs, alors maintenant je vais faire ce nuage (changer le nom, l'image et insérer le tableau). Commençons par trois commutateurs, et si nous avons le temps, nous en ajouterons un quatrième:



nous nous connecterons, sans viser particulièrement où. Notre topologie devra être construite automatiquement:





Terminé:



Maintenant, je commence cette entreprise:



Félicitations à ceux qui regardent pour la première fois comment Cisco fonctionne - afin que vous puissiez configurer rapidement le commutateur Cisco. En attendant, ils démarrent avec nous ...

Voici notre système Windows (Windows 7) et Debian:



Voici la virtualisation GNS3 et le cloud de commutateurs:



Maintenant, ce qui se passe est clair: deux systèmes de virtualisation sont utilisés dans le cadre d’une machine. Virtualisation des systèmes PC (à droite) et virtualisation des systèmes Cisco (à gauche):



Il est nécessaire de faire surveiller le matériel par le serveur:



Et pour qu'il puisse le surveiller, cet équipement doit avoir des adresses dans le même réseau:



Par conséquent, sans réfléchir longtemps, je J'ai décidé de donner à ces commutateurs des adresses (points 101, 102, 103 pour les 1er, 2e et 3e commutateurs, respectivement). Le 100ème est notre Linux:



vous pouvez configurer ceci comme suit: allez dans un cours Cisco autorisé et ils vous diront pour peu de frais.

Pour que le commutateur soit accessible à l'administration, vous devez effectuer les réglages suivants - passer en mode de configuration, donner un nom approprié, attribuer une adresse IP à l'interface et copier le résultat dans la mémoire à long terme:



je préparerai le poisson afin de ne pas y passer beaucoup de temps. Le premier commutateur sera appelé switch1, l'adresse IP est la 101e. Je copie cette configuration sur le commutateur:



Double-cliquez sur le commutateur souhaité (maintenant - commutateur1):





Configurez commutateur1. Maintenant - la configuration pour le deuxième commutateur: appelé switch2, IP - 102: En





conséquence, nous agissons avec le troisième commutateur.

Eh bien, ce sera très cool si non seulement notre serveur est disponible à partir de notre ordinateur Windows, mais aussi ce que nous avons configuré maintenant:



GNS3 est un bon système. J'insiste tellement parce qu'il y a assez de problèmes avec ça: c'est un peu buggé, un peu ... Mais pour apprendre, ça suffit. Cette pause est alarmante pour moi - j'espère que tout ira bien, et notre commutateur répondra après un certain temps: Mais



non, il ne répondra pas, peu importe combien j'attends! La communication ne suffit pas entre notre ordinateur et GNS. GNS lui-même, il manque donc un élément supplémentaire:



Connecter le cloud


Pour que ces commutateurs deviennent disponibles, vous devez utiliser l'objet Cloud:



Aujourd'hui, Cloud l'utilise dans un sens complètement différent. Auteurs GNS en tant que fournisseur de services Internet. Dans les paramètres de cet objet, je peux le connecter à ma carte réseau:



Il a l'air effrayant, mais c'est la même carte réseau:





je mets Cloud. Maintenant, vous devez connecter l'un des commutateurs au Cloud (seulement alors une connexion peut apparaître): je



soupçonne que dans notre cas, il est plus rapide de redémarrer le commutateur pour que tout soit en place. La seule chose que je veux m'assurer que sa configuration est enregistrée. Soit dit en passant, à l'intérieur des commutateurs ping devraient déjà aller:



Real Cisco! Le premier paquet disparaît, tout le reste est là:



En fait, ce n'est pas l'émulation naturelle qui est utilisée ici, mais iOS. Par conséquent, j'arrête le 1er interrupteur et recommence:





si tout est en ordre, alors nous devrions voir la connexion via le cloud - mon Windows 7 sera connecté à cet équipement via une carte réseau (l'équipement a des adresses IP sur le même réseau que Windows) . En général, c'est le point de connexion entre GNS et Windows. Vérifions qu'il y a une connexion:



Voyons comment il se sent ... De là, il répond: Putain



! Vous voyez, la connexion est apparue:



j'adore GNS car c'est gratuit, ça marche ... Mais tout n'est pas simple! Voici une situation amusante: notre Linux répond au système Windows, notre commutateur répond à Windows, mais le commutateur ne répond pas au système Linux:



Ainsi, l'enseignant peut devenir gris! Vous dirigez une leçon, mais le stand ne fonctionne pas pour les gens ... Eh bien, rien, nous allons convaincre! Gratuit, bon marché et joyeux.

L'expérience a montré: pour que la connexion soit entre les trois éléments (de Windows - à Linux, de Linux - à GNS), vous devez aller dans les paramètres de la carte réseau et sélectionner l'option étrange - "Mode inaudible" ("Autoriser tout"):





Venez à Virtualisation! Ce mode aveugle est dans toutes les décisions (et dans la "Sphère" aussi). Il est associé au passage de paquets Ethernet, d'adresses mac, etc. Allez bien sûr sur la virtualisation, les détails sont là.

Nous redémarrons notre système dans l'espoir que la connectivité sera rétablie: ce



n'est que maintenant qu'il sera possible de configurer la surveillance de nos commutateurs depuis Zabbix. Voyons comment cela se produit:



La fondation est posée. Si nous avons une connexion maintenant, alors tout sera prêt. Dans "Zabbix", beaucoup de "Tsiska", intelligemment connectés les uns aux autres - vous pouvez commencer la surveillance. Nous nous connectons à l'utilisateur root avec un mot de passe et vérifions le ping:





Tout est prêt:



En tant qu'administrateur du DNS local, j'ai également permis d'envoyer par ping des noms.

Comment Zabbix peut-il surveiller les équipements Cisco?


L'agent ne peut pas être installé sur l'équipement Cisco. Beaucoup d'entre vous savent que l'équipement Cisco est parfaitement surveillé à l'aide de SNMP. Nous allons maintenant préparer le terrain pour cela.

Nous allons maintenant préparer le terrain pour cela. Pour surveiller les équipements à l'aide du protocole SNMP, vous devez d'abord installer la prise en charge SNMP sur le serveur de surveillance lui-même:



Zabbix n'inclut pas cette prise en charge, il utilise des bibliothèques externes incluses dans ces packages:



je ne vous dirai pas ce qu'est la base d'informations de gestion - venir à des cours sur l'interaction de Lunux et Cisco, là, il est décrit en détail. Et maintenant, nous venons de mettre les packages nécessaires à la surveillance sur Linux:





Et nous mettons des éléments de configuration sur notre Cisco qui nous permettront de les surveiller à leur tour.



Ici, le serveur SNMP démarre simplement avec le mot de passe suivant:



Et nous le faisons sur nos trois commutateurs:



Après ces étapes, nous vérifierons si notre serveur de surveillance peut accéder à l'équipement Cisco (n'importe lequel de ces commutateurs) via SNMP et, par exemple, découvrir quelque chose. Il existe des options de test ici:



Vous pouvez interroger nos commutateurs à l'aide des soi-disant OID (identificateurs d'objet). Ici, nous interrogeons le commutateur (nous demandons les valeurs du paramètre switch1):



Et nous voyons que cet Oid fait référence au nom du commutateur, c'est-à-dire que nous pouvons retirer son nom de chaque commutateur (c'est très utile pour la topologie):



Et vous pouvez utiliser des textes plus humains, textuels - nous demandons sysName au commutateur (la même chose peut être demandée à partir de switch2, etc.):



Installer la console SNMP


Une autre action n'est pas évidente:







selon l'accord de licence, vous devez commenter les lignes de ce fichier ... Il s'agit d'une merveilleuse commande de pic qui a effacé le contenu du fichier, qui disait: "Pour confirmer la licence, commentez tout ce qui s'y trouve".

En conséquence, le serveur Zabbix doit être redémarré car nous avons installé les bibliothèques qui seront utilisées par lui:





Beaucoup de gens savent que maintenant il suffit d'entrer dans la section Host, de créer un hôte et de sélectionner le protocole SNMP. Spécifiez l'adresse IP:





Mais nous ne sommes pas là pour ça. Essayons d'obtenir que Zabbix trouve automatiquement tous nos commutateurs. Nous en avons trois et à Baumanka, il y en a plus d'une centaine (120, semble-t-il). Ce ne serait pas si amusant d'ajouter 100 commutateurs, c'est donc un bonus: nous verrons comment Zabbix trouve nos commutateurs.

Ajouter automatiquement des appareils à Zabbix


Page "Ajout automatique de périphériques à Zabbix":



Pour ce faire, nous irons dans la section "Configuration" (sous-section Découverte) et nous n'y créerons pas de nouvelle règle, mais nous utiliserons la règle existante:

  • Cela indique correctement que vous devez analyser ce réseau ... Reconnaissez-vous le nôtre? Afin de ne pas attendre longtemps, je vous indiquerai une plage limitée de 100-110 (assez pour moi).
  • Numériser une fois par heure, c'est un peu trop; mettre - toutes les 60 secondes.
  • Sur les appareils scannés, notre Zabbix recherche maintenant un agent Zabbix. J'ai promis que vous et moi n'aurions aucun agent, alors je le supprime.
  • Et je dis qu'en fait, notre appareil est accessible via SNMPv2, communauté - public; nous avons demandé un tel OID:
  • , . , . ( ):

Désormais, chaque minute, Zabbix parcourt ces adresses IP et demande le nom de l'appareil via SNMP. S'il existe un périphérique et prend en charge le protocole SNMP, il répondra:



cela ne suffit pas pour que nos périphériques apparaissent dans cette liste: vous



devez configurer des actions. Nous allons en créer un nouveau (je vais le nommer, en copiant le manuel de formation):





Condition: la demande doit renvoyer des informations indiquant qu'il s'agit d'un commutateur. Par «chance coïncidence», nous avons tous les interrupteurs appelés interrupteur (interrupteur1, interrupteur2, interrupteur3), de sorte que la valeur reçue devrait ressembler (comme) à l'interrupteur:



Tout cela est dans le manuel de formation. Il reste à indiquer quoi en faire - "Opérations":



Tout d'abord, vous devez l'ajouter à un groupe. J'utiliserai le groupe d'hôtes découverts prêt à l'emploi:





Ce qui suit, le plus important, nous devons expliquer ce qu'il faut surveiller sur cet équipement. Dans ce cas, nous utiliserons un modèle prêt à l'emploi qui convient à un grand nombre de divers périphériques SNMP:















si tout est fait correctement, alors après un certain temps, 3 commutateurs apparaîtront miraculeusement dans notre Zabbix. Nous attendons. Ils apparaîtront dans la section Hôtes. Il y a une connexion (cochée juste au cas où):



Apparue:



Si nous avions 100 commutateurs, 100 commutateurs apparaîtraient. Maintenant, nous pouvons parler du sujet principal - la construction automatique de la topologie du réseau.

Créer une carte réseau


Dans "Zabbix" dans la section "Surveillance" - sous-section "Cartes réseau". Vous pouvez créer votre propre carte avec n'importe quel nom arbitraire (je l'appellerai, comme dans les manuels - Carte des commutateurs):







Vous pouvez ajouter des appareils à cette carte:



Nous avons une opération assez ennuyeuse pour ajouter nos cent commutateurs ici: j'ajoute un



nouvel élément et je dis au système qu'il est sur en fait l'hôte que vous surveillez; hôte switch1:





Les gens demandent souvent si ce processus peut être effectué automatiquement. Réponse: "C'est possible!". Mais alors nous devons résoudre le problème fascinant: "Comment pouvons-nous comprendre où mettre quels commutateurs?" Telle est la géométrie. Une solution potentielle: vous pouvez spécifier une marque de géolocalisation dans l'interrupteur (un paramètre tel que «vous vous tenez au 6ème étage, bâtiment AZLK, 666e auditorium), dessiner le bâtiment du laboratoire pédagogique, tous ses publics ... En général, c'est un bon élève pour le 4ème élève Cours d'informatique. Nous n'avons aucun plan pour cela!

Je vais maintenant ajouter les 3 commutateurs manuellement, mais je promets de ne pas tracer de lignes de communication entre eux. Vous ajoutez le 101e commutateur, nous l'ajoutons automatiquement à Zabbix - si vous le souhaitez, dessinez-le sur la carte avec des stylos. Un moment désagréable, mais il y a un endroit où être. Il n'y a pas de solution simple à ce problème, pendant 45 minutes à coup sûr. Et ce que nous obtenons me semblera intéressant.

J'ajoute rapidement 3 commutateurs:



j'ai dit que je n'ajouterai pas de lignes? Je le ferai, mais seulement pour que plus tard nous puissions comprendre comment les dessiner. Je vais connecter ces deux commutateurs (nous ne



connectons pas le 1er au 3ème): Je vais les connecter (switch1 et switch3 sont surlignés):



Notre système devra résoudre ce problème:



Il est important de ne pas oublier de sauvegarder le résultat:





Soit dit en passant, à propos de GNS - vous pouvez très bien le faire ... Cachez son nom d'hôte, faites-en un commutateur et mettez-le l'un sous l'autre, créant un nuage de commutateurs:











Comment construire une topologie? Configurer la création et la mise à jour automatiques des lignes de communication


Pour que la topologie soit construite automatiquement, nous devons recevoir automatiquement des informations à son sujet. À l'université, nous utilisons des équipements Cisco, nous sommes donc tombés amoureux d'un protocole appelé Cisco discovery protocol - tapez simplement show cdp voisins sur n'importe quel appareil et il vous dira que switch1 est connecté à la 5ème interface:





Alternative à cdp est lldp (nous avons un segment commutateurs de la société "effrayante" Nortel - il lldp). Vous voyez, il y a deux commutateurs:



le serveur Zabbix doit en quelque sorte extraire ces informations (je les vois sur Cisco lui-même). Il y a plusieurs façons. L'un des plus rapides mais des plus stupides consiste à utiliser le protocole RSH. Un protocole très dense, et je ne le connais qu'à cause de mon âge:





Les personnes RSH normales ne le savent pas, mais vous pouvez rapidement l'utiliser pour faire quelque chose à distance avec Cisco. Ou, si nous parlons d'une sorte de réseau de gestion où il n'y a pas d'étranger, vous pouvez l'utiliser en production. Cependant, les points de sécurité sont toujours une couture complète!

J'ai donc configuré la prise en charge de l'accès au protocole RSH à mes serveurs Cisco à partir de cette adresse IP:



Maintenant, je peux installer le client RSH sur le serveur ...





... et démontrer à quel point il est facile de suivre les instructions que nous venons de suivre en se connectant directement à l'équipement Cisco depuis la station de gestion - sur switch1 je vais suivre cette instruction: En





conséquence, elle devrait apparaître sur switch2:



Connexion depuis le serveur de surveillance


Plus loin. Les managers m'écrivent: «Vyacheslav, une requête est arrivée de l'auditeur. Il veut approfondir Bash, Csh, Sed et Awk. » Ce sont des utilitaires Unix denses que les gens connaissaient dans une année hirsute. En ce moment, il y aura un peu d'un Unix dense. Nous allons installer ce paquet (nous devons formater la sortie pour qu'elle soit mieux structurée):



Et toute l'équipe ressemblera à ceci:



je ne dirai pas en quoi le code de retour dans Dos diffère d'Unix. Ensuite, je filtrerai uniquement les lignes qui contiennent le commutateur, supprimer les espaces supplémentaires et couper les champs nécessaires à travers les espaces:





Voyons le résultat, et vous verrez comment il diffère du précédent. Unix un peu plus «magique». Traitement de la transformation des informations en structures (par exemple, switch2). Au lieu de ces informations non structurées (beaucoup d'espaces, quelques touches étranges):



La sortie apparaît:



Switch2 est connecté à switch3 via les interfaces Fas 0/6 (depuis switch2) et Fas 0/5 (depuis switch3). Le tableau s'avère: une sorte de commutateur avec lequel à travers quelles interfaces il est connecté.
Pendant ce protocole, RSH et CDP partent. Maintenant, après avoir reçu ces informations, nous établissons ces liens sur tous les commutateurs. Pour ce faire, nous avons besoin d'informations sur les commutateurs auxquels se connecter. Vous pouvez obtenir un fichier texte, où lister tous les interrupteurs ... Mais ce n'est pas du sport!

Il suffit d'ajouter physiquement le commutateur, et il devrait être automatiquement détecté par le Zabbix. Nous avons déjà une base de données de commutateurs dans Zabbix. Comment une application peut-elle obtenir des informations sur les commutateurs de Zabbix?

API Zabbix


L'API Zabbix est écrite en utilisant le "merveilleux" protocole JSON. J'ai fini de programmer à l'époque où JSON n'était pas encore, donc pour moi, comme pour l'administrateur ... De nos jours, il n'y avait pas de telles ordures! Voici un fichier texte pour moi - c'est normal, mais JSON ... (
je plaisante ) JSON est tellement JSON!

JSON est le format utilisé pour échanger des données avec le serveur Web, et l'utilitaire cURL est l'un de ces utilitaires pratiques qui vous permettent d'envoyer toute demande au serveur Web:





je n'entrerai pas dans le détail de ce qu'est une demande POST, une demande GET et Je vais dire brièvement. Dans le "Zabbix" qui fonctionne ici:



Cette application arrive:



Qui est prête à accepter une telle demande entre accolades "effrayantes" (c'est JSON):



Cette requête indique ce que je veux faire avec Zabbix, les paramètres sont indiqués:



Un Zabbix donne une réponse. Voici un exemple qui dit: «Zabbix», veuillez me donner une chaîne d'authentification afin que je puisse vous envoyer d'autres demandes. » Je confirme mes informations d'identification avec un identifiant et un mot de passe:



Une telle demande JSON va maintenant nous renvoyer une réponse JSON:



Et dans cette réponse JSON, il y aura une telle ligne:



Ceci est un authentificateur qui peut être utilisé pour les demandes restantes.

Travailler avec des objets hôtes


Nous nous rappelons pourquoi nous avons commencé à étudier le JSON: nous voulons obtenir la base de données des commutateurs de Zabbix. Quels commutateurs interroger? Sortons-le!

Apprenez à connaître: l'API Zabbix inclut, entre autres, la méthode host.get:



Host - ce sont nos hôtes. Obtenir, c'est donner. Ensuite, je fais remarquer: donnez-moi des informations sur l'hôte!



Dans les paramètres, je dis: sortie tout ce que vous savez sur les hôtes:



Mais je dois accompagner ma demande avec cette ligne:



Démontrons. Pour me faciliter la tâche, je vais



copier cette demande: Et je vais insérer l'authentificateur que Zabbix m'a retourné:



Donc, Zabbix Api: nous avons regardé comment demander au Zabbix un authentificateur pour l'accès. Et puis je montre comment utiliser cet authentificateur pour obtenir une sorte de réponse:



Je pense que tout est clair. Vous pouvez même voir si vous prenez une loupe. Reconnaissez-vous switch1? Quelque part, il y a un switch2 ...



Je me suis cassé les yeux pendant longtemps, puis j'ai décidé de lire comment travailler avec ce JSON sur la ligne de commande. Et l'une des recommandations était: utiliser JSON Query. Elle est en très bonne santé, illumine la réponse, voyez:





Premièrement, tout est devenu coloré - c'est déjà bien; deuxièmement, switch2, switch1 sont clairement visibles ici:



De plus, un peu de bricolage avec JSON Query, nous verrons beaucoup de choses intéressantes. Et pour ne pas copier à chaque fois ces «crocodiles» du cahier, je propose de déterminer sur quoi nous allons programmer le travail avec notre «Zabbix». Il y a une API Zabbix - c'est JSON, il y a un tas de langages de programmation. JSON semble faire référence à un script Java, mais en fait, d'autres langages sont le plus souvent utilisés pour fonctionner avec Zabbix - par exemple, Perl, un script Perl qui fait quelque chose.

Faire des requêtes sous forme de scripts Bash


Perl n'est pas un langage à la mode aujourd'hui, obsolète. Si je recommençais la vie, je commencerais probablement à apprendre Pyton. Et il est bien connu que sous "Python" il y a une bibliothèque pratique pour travailler avec "Zabbix". Mais, puisque nous nous sommes réunis ici et ne donnerons la préférence à aucune langue, j'utilise cette langue:



la langue de l'administrateur système, c'est-à-dire moi - Bash! Par conséquent, je ferai ces demandes à Zabbix: Je les émettrai



sous forme de scripts: Les



scripts sont prêts, je les copierai. Ils ressemblent à l'enfer. Je pense qu'un bon code Python sera beaucoup plus lisible. Mais, comme je ne connais pas moi-même "Python" et ne veux pas donner de préférence, je vais écrire sur ce qui est proche du cœur de l'administrateur système:



Je ne vous dirai pas ce que sont ces contre-obliques (et que Dieu les bénisse). Mais la chaîne d'authentification sera encadrée sous la forme d'une variable que nous devons exporter avant:





Quelle valeur cela a-t-il eu pour nous? Et maintenant, au lieu de copier les longues lignes, je peux simplement exécuter le script:



le script renvoie une couture complète. En utilisant JSON Query, vous pouvez obtenir cette beauté:





rappelez-vous la tâche: obtenir la base de données des commutateurs qui sont dans Zabbix!

Je vais immédiatement dessiner le résultat. Je ne dirai pas longtemps et en rond-point ce qui se trouve ici et comment. Nous avons une tâche intimidante:



voici un tel résultat, voyez ce qu'il contient. Il est dit ici que nous avons de tels commutateurs dans Zabbix, et ceci (10105, 10106, 10107) est l'identifiant interne du commutateur «Zabbiksk»:



Le résultat était un fichier plat. Lorsque vous ajoutez chaque nouveau commutateur, vous devez exécuter ce script pour créer un fichier. Pour que nous n'ayons pas de tels "crocodiles", j'inclurai cette ligne dans le script lui-même:





Et cela nous retournera une vue de table soignée. Maintenant, je vais montrer. J'exécute le script, il affiche et enregistre immédiatement ce fichier:



L'utilitaire tee est un bon utilitaire qui écrit le résultat dans un fichier et le distribue. Nous avons maintenant 3 commutateurs et nous avons un fichier texte dans lequel tous les commutateurs sont répertoriés:



Maintenant, vous pouvez interroger chacun de ces commutateurs via RSH et découvrir qui est connecté à quoi.
Nous avons donc obtenu la base de données des commutateurs. Notre objectif ultime est les cartes!

Obtenir une liste des cartes et de leurs éléments depuis Zabbix


Comment travailler avec des cartes? Apprenons à lire les informations sur les cartes de Zabbix. Je vais copier ce script:





celui qui l'aime, vous pouvez prendre tous ces scripts. J'ai essayé de les simplifier autant que possible - cela ne fonctionne pas plus facilement. Si vous trouvez comment le simplifier, écrivez, je vais le corriger:



Ce script ↑ se transforme en Zabbix avec une requête map.get et dit: "Parlez-moi des liens et parlez-moi des éléments que ces liens se connectent les uns aux autres."

Maintenant, je lance ce script:



Et je montre le résultat:



Tout comme les informations sur les hôtes, il est très facile d'obtenir des informations sur les cartes de Zabbix. Chaque carte a son nom:



Voici les éléments de cette carte. Reconnaissez-vous le numéro? C'est l'élément interne de Zabbix:



Le plus désagréable est que dans Zabbix les éléments sont à nouveau numérotés. À gauche, l'élément id, à droite, la numérotation de l'élément à l'intérieur de la carte:



c'est-à-dire que dans Zabbix, chaque hôte a un numéro, et sur la carte il y a un autre numéro - cette chaîne est obtenue. Autrement dit, le commutateur switch1 est appelé 10105 dans le Zabbix, et 2 sur la carte (une légère complication de la tâche est obtenue).

Nous rassemblons tout via CDP et RSH, découvrez la connexion des commutateurs avec les interfaces


La dernière partie de ce script est que je dois obtenir des informations sur les identifiants de Zabbix associés à quels identifiants sur la carte. Regardez, dans "Zabbix", voici cet identifiant (10105, 10106, etc.), et sur la carte - 2, 3, etc.:



Traditionnellement, je l'enregistre dans un fichier texte:



Maintenant, nous avons presque tout. Il y a des informations sur les commutateurs dans ce fichier (quels identifiants à l'intérieur de Zabbix sont utilisés):



Et nous avons des informations sur quel identifiant sur la carte est associé à quel identifiant Zabbix (par exemple, switch1 a le numéro 10105 dans Zabbix, et sur la carte numéro 10105 a l'identifiant 2):





Ce n'est pas de ma faute! Les gars ont écrit ça dans Zabbix. Mais je suis sûr qu'il y a une raison pour laquelle ils n'utilisent pas d'identifiants directs sur la carte. Peut-être parce que le même objet peut être affiché plusieurs fois sur la carte, et il doit avoir un identifiant unique. Par conséquent, la chaîne est plus longue.

Et ici, je vais probablement commenter ce petit enfer. Play it:



Dans la boucle, je lis les lignes décrivant à quel commutateur avec quel identifiant Zabbix



:



je me connecte à chaque commutateur du Zabbix via RSH: je lis à quels hôtes il est connecté. Je redirige ce résultat vers un autre cycle:



qui, à son tour, lit les identifiants et découvre qui est connecté avec qui: je vais



montrer les résultats de ce script (chmod + x):



Sur la carte, le deuxième interrupteur est connecté au troisième (rappelez-vous que les identifiants sur la carte) via les interfaces correspondantes (Fas 0/5 - pour le second, Fas 0/6 - pour le troisième ↑). Nous devons dessiner ces noms sur les liens, créer.

Si jusqu'à ce moment, nous ne lisons que les informations de Zabbix (hôtes, cartes lues, etc.), nous allons maintenant devoir écrire des informations sur Zabbix.

Sauvegardons le résultat:



Dessiner des lignes de communication dans Zabbix


J'ai décidé d'écrire un script simple qui changera quelque chose dans Zabbix. Honnêtement, j'ai étudié l'API de cette façon - il était important pour moi que quelque chose de simple fonctionne:





le premier script ne sera pas lié aux tâches - il changera le nom de la carte (pour voir comment cela se fait). Si nous voulons changer quelque chose dans Zabbix, nous devons également appliquer via la demande POST et le décrire en JSON, mais en utilisant la méthode map.update. Parmi les paramètres, nous devons indiquer explicitement: MAPID, qui trouvera la carte souhaitée, et MAPNAME, qui changera le nom de la carte:



il s'agit de l'ensemble minimal de paramètres. Ces paramètres eux-mêmes:



Passez à travers les variables les arguments du script. Je rend le script exécutable (chmod + x): je le lance



, comme écrit dans le manuel de formation. Si tout est correct, la carte devrait s'appeler Super MAP:



Surveillance - Cartes - voila:



Facile à changer - Super MAP2:



Tout fonctionne:



Mais notre tâche est compliquée - changer les lignes de communication!



Il est nécessaire de générer du JSON, qui décrira notre carte et toutes les lignes de communication. Pour ce faire, je crée un autre script:





le fait que j'ai plusieurs scripts ne signifie pas que cela doit être fait en entreprise. Dans l'entreprise, vous devez prendre un langage normal que vous connaissez ("Python", "Pearl" ou autre) et programmer ce qui est ici en utilisant un langage normal. Ces briques, chacune simple, permettent de comprendre quoi, pourquoi et comment le faire.

Un autre script qui sert plus à comprendre ce qui doit être fait, et non à copier (je ne vous vendrai pas le produit fini ici):





Ce script lit ce fichier:



Qui indique quel élément sur la carte avec quel élément sur la carte à travers quelles interfaces il est connecté. Plus précisément, nous prendrons un élément sur la carte, un élément sur la carte et une étiquette. Ceci est un élément sur la carte:



Et cette signature devrait être:



je lis ce fichier. Je trie tous les éléments de la carte: je



programme les liens - description des liens sous forme de JASON. La demande finale ressemble à ceci: mettre à jour la carte (numéro de carte ↓): les



liens seront décrits dans cette variable:



qui a été formée dans ce cycle (tous les éléments et signatures des cartes ont été énumérés):



encore une fois, nous avons une tâche intimidante et la décrivons en détail sur Shell ... Beaucoup d'entre vous n'ont sûrement pas programmé sur Shell. Il vous suffit de regarder ces textes et de programmer ce qui vous convient.

Je m'attends à ce que maintenant tout se passe. Lancement d'un script:



Recharger la page Maps:



Eh bien, comment? Au moins ça marche! Ajoutons un autre commutateur et réexécutons le script.

Nous prenons le commutateur, appelons-le switch4:



Nous dessinons que c'est le commutateur:





Configurer : Nous le connectons



comme nous voulons (avec un astérisque, vous pouvez dessiner une saucisse): Nous configurons le



commutateur. Je lance:



Tout ce que nous avons fait précédemment (il suffit de passer à switch4 et l'adresse est 104):



Double-cliquez sur le commutateur (collez ce que vous avez copié):



Encore une fois, il sera plus rapide de redémarrer le troisième commutateur (switch3), en enregistrant la configuration:



En attendant, il redémarre, vérifiez s'il est disponible sur notre nouveau commutateur via SNMP. Lorsque Zabbik le trouve, la première chose à demander est le nom d'hôte SNMP. Par conséquent, nous ajoutons cette conception à notre nouveau commutateur:





nous attendons maintenant que le commutateur soit disponible. Les 101ème, 102ème sont disponibles, le 103ème redémarre:



Le 103ème a



répondu : le 104ème a répondu. Vérifiez si SNMP est disponible via SNMP4:



Disponible! Nous avons toutes les chances de le voir dans la liste des hôtes. Attendons une minute (chaque minute que nous avons un réseau analysé):



Une fois qu'il est apparu, nous revenons au premier script. Il nous a déchargé des informations sur les commutateurs en général:



Vos câblo-opérateurs ont couru, ils ont bloqué un nouvel interrupteur, vous avez levé le lien et il est apparu automatiquement dans Zabbix. En conséquence, nous devons voir ici que le quatrième commutateur est apparu:



Notre base de données est automatiquement remplie.

Nous réparons le matériel (ajoutez switch4), exécutons le script final


Ensuite, malheureusement, vous devez vous enfuir et afficher notre commutateur sur la carte:



Non seulement vos câblo-opérateurs ont couru, non seulement vous avez configuré le lien - vous devez toujours aller ici et dire: "Nous ajoutons un nouveau commutateur."



Localisez où il devrait être et indiquez que nous avons l'hôte, switch4, et dessinez également ce qu'est ce commutateur:



Et mettez à jour (nous ne dessinons pas encore la ligne de communication!):



Nous rappelons maintenant que nos scripts de ligne de communication sont construits sur la base du protocole CDP. Et pour obtenir des informations CDP du commutateur, vous devez configurer l'accès RSH à celui-ci. Rappelez-vous, j'ai décidé d'utiliser cette méthode?





Si tout va bien, je peux essayer, puis je peux essayer RSH - demander des informations sur sa connexion à partir du 4ème commutateur. Ici, il dit: "Je suis connecté au troisième, de mon côté - le 10ème, d'autre part - la 8ème interface."



Ils l'ont ajouté à la carte, et nous avons une table de correspondance entre les identifiants dans le Zabbix et les identifiants sur la carte (voir, c'est le 5ème sur la carte): ils ont





soulevé RSH. Maintenant, nous pouvons créer une connexion: quels commutateurs sont connectés via quels liens (nous avons le fichier texte):





Essayons d'exécuter le script final, qui lira ce fichier texte et générera une demande JASON pour la mise à jour des cartes, redessinant tous les liens sur la carte:







Eh bien, comment? Impressionnant? Je n'ai pas réussi en 45 minutes prévues, mais tout de même rapidement (environ 75 minutes) - probablement, cela ne fonctionnera pas plus vite.

Tout! Je suis des amis très heureux - ça a fonctionné. Le manuel de formation est ici: https://wiki.val.bmstu.ru . Si vous ne le trouvez pas, écrivez à l'e-mail: val@bmstu.ru, val@specialist.ru - je vous l'enverrai avec plaisir. Un webinaire apparaîtra sur specialist.ru - je vais vérifier cela à coup sûr.

Et surtout, mes amis, que tout cela n'a pas été en vain, mais dans le but rusé de vous convaincre, vous ou vos collègues, de notre cours de 2 jours, qui comprend un grand nombre de tâches liées à Zabbix: détection et réglage de bas niveau ... Pas au sommet, comme c'est le cas actuellement, mais en détail, avec les laboratoires - vous le ferez: jusqu'à ce que vous le fassiez, je ne vous laisserai pas sortir.
Je serai ravi de vous voir, vos collègues! Écrire des lettres.

À bientôt!


Un peu de publicité :)


Merci de rester avec nous. Aimez-vous nos articles? Vous voulez voir des matériaux plus intéressants? Soutenez-nous en passant une commande ou en recommandant à vos amis, le cloud VPS pour les développeurs à partir de 4,99 $ , un analogue unique de serveurs d'entrée de gamme que nous avons inventé pour vous: Toute la vérité sur VPS (KVM) E5-2697 v3 (6 cœurs) 10 Go DDR4 480 Go SSD 1 Gbit / s à partir de 19 $ ou comment diviser le serveur? (les options sont disponibles avec RAID1 et RAID10, jusqu'à 24 cœurs et jusqu'à 40 Go de DDR4).

Dell R730xd 2 fois moins cher au centre de données Equinix Tier IV à Amsterdam? Nous avons seulement 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV à partir de 199 $ aux Pays-Bas!Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - à partir de 99 $! En savoir plus sur la création d'un bâtiment d'infrastructure. classe c utilisant des serveurs Dell R730xd E5-2650 v4 coûtant 9 000 euros pour un sou?

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


All Articles