Zabbix: a topologia de rede é clara e automática

Gerenciar uma rede maior que um host local? Não controle, mas quer aprender? Convidamos você para o curso “Linux. Nível 5. Zabbix. Monitorando a infraestrutura de TI de uma empresa . No seminário gratuito do centro de treinamento de especialistas da Universidade Técnica do Estado de Bauman Moscou, você aprenderá como ensinar o Zabbix a monitorar a rede automaticamente: encontre os existentes e adicione novos nós, desenhe e atualize a topologia.



O seminário será realizado pelo professor principal do centro "Especialista" em Bauman MSTU, o principal administrador do sistema da rede do MSTU. N.E. Bauman Vyacheslav Aleksandrovich Lokhturov. Inscreva-se (ou veja as gravações) em nossos seminários gratuitos .

Olá a todos! Meu nome é Vyacheslav Lokhturov. Trabalho como engenheiro na Universidade Técnica Estadual de Bauman Moscou. Desde que me formei em 1997, trabalho como engenheiro. Ao mesmo tempo, ensino no centro de treinamento nº 1 "especialista" - uma empresa amiga do MSTU. Muitos outros professores e funcionários trabalham lá.

O tema do webinar fará parte do meu trabalho como engenheiro - um maravilhoso sistema de monitoramento ...

Topologia de rede: plano de fundo, Wikipedia Baumanka, fontes


A gravação do webinar pode ser visualizada neste link: https://wiki.val.bmstu.ru - um formato wiki. Meus endereços de email são: val@bmstu.ru, val@specialist.ru. Este tutorial eu uso como engenheiro. Existem muitos materiais diferentes. Se você não gostar, existem muitos materiais na Internet sobre o seu tópico conosco ("Zabbix").

Do ponto de vista do material didático e do ensino, uso a seção "Materiais sobre a metodologia dos cursos de leitura":



E há uma seção com webinars. Para cada uma das leituras feitas por mim, há um registro aqui:



eu imediatamente disse: “Se fizermos, vamos fazer o melhor! Vamos mostrar como a topologia de rede é criada automaticamente no Zabbix. Em 45 minutos tenho que contar isso.
Em relação à topologia de rede: na Bauman MSTU, uma enorme rede; consequentemente, a topologia de rede é o que realmente precisamos por um longo tempo. Historicamente, o Zabbix não era o sistema que usamos no estágio inicial. Como todas as pessoas de departamentos como ciência da computação, gerenciamento, sistema de computadores, complexo e rede, todos gostamos de nos programar e agora programamos ...

Temos uma pequena Wikipedia usada para o trabalho. E entre os elementos desta Wikipedia, há uma seção dedicada à comutação de rede. O acesso a esta Wikipedia ainda está fechado por uma pequena VPN:



agora mostrarei a aparência da topologia de rede em nossa universidade. Vale a pena ver; e depois compare com o resultado:



Parece-me que tudo está claro: todos os comutadores e seu caminho para o comutador raiz; se algo estiver faltando, recuperaremos rapidamente desse arquivo de texto. A topologia de rede é criada diariamente. Tudo está bem, mas não espetacular, é claro. Difícil de vender. Portanto, temos esse esquema na universidade.

A topologia de rede é necessária quando algum switch desaparece. Para entender onde ele estava conectado


Vamos tentar ver algo mais espetacular. E uma certa referência ao que faremos é este artigo no fórum:





Diz que há algum tipo de script maravilhoso escrito em minha antiga linguagem favorita, Perl, que o equipamento de rede pesquisa, faz algumas conclusões e, de alguma forma, milagrosamente fornece os resultados ao Zabbix. Mas não usaremos o Perl, mas usaremos outra coisa.

Nós dizemos adeus ao que temos. Vamos seguir praticando.



Ficarei feliz se você puder reproduzir tudo isso em casa e tentar se preparar para isso tudo o que for possível. Após o webinar, você desejará repetir tudo e começar com o fato de precisar implantar o Zabbix, uma máquina virtual, uma rede. Como fazer isso?

Em casa, você digita o comando ipconfig e vê que possui uma rede IP em casa (talvez uma diferente, mas geralmente essa): Eu tenho o



quinto endereço (192.168.1.5) aqui e você pode ter o 20 ou 30 ... Certamente, existe um roteador Wi-Fi que emite esses endereços. Portanto, agora vou desenhar uma topologia baseada no que pode estar em sua casa, para que você possa reproduzi-la:



  • Você tem um roteador WIFI.
  • O sistema em que você deseja reproduzir o webinar.
  • 192.168.1/24 – 1- WI-FI-, 5-, , – .
    . , – , 2, 10, 20 , . , linux-, «». , 100. , 192.168.1.100.

Onde conseguir um carro? Nada impede a distribuição Linux. Eu sou um grande fã desta distribuição. Não criaremos holívoros - eu o amo, eu o escolho, eu o uso em cursos. Você pode instalar e instalar neste site:



Para que não passemos 45 minutos instalando o Debian, vou tirar uma imagem pré-instalada. Quem precisa - escreva para o correio, enviarei a você esta imagem, embora não exista nada particularmente destacado (para não perder tempo instalando):



Enquanto estiver instalado, você pode ver a seção no manual ...

Implantação de estande


Há uma história sobre o comando ipconfig:



E então, quando a máquina gira:



Você pode dar um nome nas configurações, dar mais RAM:



existem virtualizações diferentes - o VirtualBox é bom para uso doméstico. Na empresa, nós e meus amigos usamos o VSphere (estamos muito satisfeitos com o produto da VMware), mas existem cursos mais do que suficientes para o VirtualBox.

Rede:



como estamos dizendo que esta máquina será conectada à nossa rede, podemos trabalhar com ela - ela deve ser conectada por uma ponte a um adaptador físico. Regenerarei o endereço do Mac. Eu lancei nossa máquina virtual:



E depois de iniciar, faço uma configuração. O manual lista os arquivos que precisam ser editados: atribua um nome à máquina, é desejável editar o arquivo hosts, resolv.conf (responsável pelo cliente DNS) e o endereço IP escolhido por nós - esses quatro arquivos devem ser editados. Vou tentar fazê-lo o mais rápido possível.

Implantação do Zabbix


A senha deste usuário (root) é definida imediatamente na imagem - nunca use-a na prática! Apenas para economizar tempo, uso uma conta privilegiada:



O manual lista os arquivos que precisam ser editados.



Em seguida, dou o nome à nossa máquina (servidor de monitoramento Zabbix):



Arquivo Hosts:



Altere o endereço para o 100º e o nome do nosso domínio inventado (cada ouvinte em nossos cursos tem seu próprio indivíduo, como uma rede com um domínio):



O que mais resta? Resolv.conf (cliente DNS): o



Corp1.un se encaixa em nomes curtos, e seu roteador WIFI geralmente funciona como um servidor DNS:



O que resta? O arquivo grande e mais importante é a rede / interfaces. Aqui está um modelo para diferentes cursos, muitas interfaces:



Mas nosso carro terá uma interface. Será um servidor de monitoramento com o 100º endereço e passará à Internet pelo 1º:



Talvez, não seja necessário, mas mais rápido para usar todos os arquivos - reinicie a máquina.

Instalando e iniciando um serviço no Debian


Os Zabbiks podem ser instalados de várias maneiras. De acordo com o Zabbix, existe um excelente site com documentação (a propósito, em russo, a seção ativa é suportada). Nesse sentido, várias opções são oferecidas aqui. Eu sou um grande defensor da instalação de software de um repositório regular. Não é por coincidência que eu escolhi o Debian:





A propósito, se tudo for bem feito, agora eu devo ser capaz de me conectar ao meu sistema. Vamos tentar fazer isso. Pego meu cliente SSH favorito e conecto ao sistema 192.168.1.100:



Lucky:



Novamente, não é muito correto que a raiz seja permitida aqui:



nunca faça isso em uma empresa! Aqui está apenas economizando tempo.



Agora temos que instalar o Zabbix. Sendo um grande amante e defensor do uso de software básico e um oponente da conexão de repositórios de terceiros, colocarei a versão que está neste Debian. Mais uma vez, graças aos autores do "Debian" - basta discar a instalação de um pacote assim:



lembrei de mais uma coisa! Acabamos de instalar o sistema - precisamos sincronizar o repositório (apt update):



Portanto, basta digitar o comando de instalação do zabbix-server com suporte para o banco de dados (DB) de suas informações no SQL, pois muitos componentes serão instalados (alguns minutos devem ser instalados) :



Em que consiste o Zabbix


O Zabbix consiste nos seguintes componentes:

  • Servidor "Zabbix";
  • Ele está trabalhando ativamente com a configuração, que iremos configurar manual e automaticamente;
  • , ; MySQL ( – ), ( «» – PostgreSQL, Oracle ).

Para trabalharmos com o Zabbix, é usado o chamado front-end. O Frontend Zabbix é um aplicativo escrito provavelmente em PHP (talvez não tudo, mas a maioria). Consequentemente, o próprio aplicativo usa um servidor web. Até agora, apenas esta parte foi colocada (agora vamos aguardar sua instalação):



Concluído. Agora, como o Zabbix usa o banco de dados, precisamos criá-lo seguindo a documentação. Para criar um banco de dados, usarei um script simples:



não detalharei quais comandos significam o que. Se alguém trabalhou com o DBMS, verá algo familiar - o nome do banco de dados e assim por diante ...



Agora, usando este script, eu crio o banco de dados:



E preencha esse banco de dados com metadados. Existem vários arquivos que descrevem quais tabelas devem ser, quais atributos, parâmetros e assim por diante (tudo isso é feito novamente, de acordo com a documentação):



Ou seja, agora no MySQL estamos empilhando metadados que o Zabbix usará para armazenar a configuração e os resultados:



Não Passarei um tempo olhando o que ele criará lá (haverá um grande número de tabelas criadas). O Zabbix como um produto está em desenvolvimento há mais de dez anos e está constantemente se esforçando para se tornar cada vez melhor; portanto, a estrutura de dados é bastante pesada. Mas tudo isso está "escondido". Nós, como administradores, trabalharemos com um aplicativo front-end externo, com o qual tudo será simples, claro e acessível.

De acordo com a documentação, por algum motivo, vários arquivos. Mas desde que eles fizeram isso, isso significa que eles sabem o que precisam! O banco de dados está pronto:



Agora, de acordo com a documentação, este componente precisa ser explicado:



Explique que ele deve funcionar com o banco de dados, conectando-se sob um login e senha específicos. Isso é feito através do arquivo de configuração: Insira no



final do arquivo:





Aqui descrevemos que o servidor de banco de dados está aqui em nossa conta: O



pacote “Debian” para o “Zabbix” não significa inicialização automática. Aqui está uma equipe do grande e terrível SystemD, sobre o qual existem muitos holísticos:



Torna o lançamento do Zabbix automático após a inicialização do servidor. Inicie o Zabbix:



Esses dois componentes estão em execução:



Você já pode monitorar, preencher a configuração. Mas é difícil fazer algo bom até que o frontend esteja definido ... No entanto, a princípio - o estágio perdido ...

Implantação do Zabbix Localização do fuso horário


Desdobrei a imagem e a hora errada: a



data está correta. Nosso fuso horário está errado, então eu o corrigi dessa maneira:



Chegando ao frontend. Instalando e Ativando a Interface da Web


O Debian deve instalar esse pacote (após a instalação do servidor Apache):



PHP, uma biblioteca para conectar programas escritos em PHP com MySQL, será instalado. Em geral, estou iniciando:



você não precisa executar nenhuma ação por um longo tempo, tudo será feito automaticamente:



agora estamos instalando esse componente - o front-end do Zabbix; um servidor web, e explicaremos a ele que ele precisa trabalhar com o servidor Zabbix e o DBMS:



através do servidor web, gerenciaremos o Zabbix e através dele veremos o que ele monitorou lá.

Está quase estabelecido, e agora veremos que ele tem um relacionamento próximo com o nosso país. Foi desenvolvido como uma aplicação de alguém que trabalhava em um banco. Ele decidiu configurar o monitoramento e o pegou e escreveu seu programa em vez de usar o programa finalizado. Ele trabalhou em Riga, e você e eu estamos em Moscou:



neste arquivo ↑ a inicialização do PHP é necessária ↓ para fazer isso:





não irei me aprofundar sobre como o aplicativo da Web está configurado no Debian. Basta conectar a configuração que veio do pacote Zabbix e reiniciar o servidor da web Apache:



Conecte-se ao front-end para configurar o Zabbix


Quase pronto para se conectar ao frontend. Resta apenas explicar a ele onde o servidor de banco de dados está localizado. Existem duas opções, e faremos isso através do Assistente. Para isso, é necessário um arquivo no qual as configurações serão gravadas:



Um servidor da web deve ter permissões de gravação para este arquivo:



Após o qual você pode tentar conectar-se a um navegador. Você pode pelo endereço IP. Meu DNS está configurado, então aproveito a oportunidade:



Temos o Assistente do Zabbix, onde clicarei em Avançar, pois a maioria já o instalou:













Nosso Zabbix está pronto para conexão. Nós inserimos o nome de usuário e a senha:



Configuração, hosts ... Não monitora nenhum host - até agora, o “Zabbix” está pronto para se monitorar, se instalarmos o Zabbix Agent:



Expanda a nuvem de switches


Mas não haverá agentes Zabbix para o nosso webinar. É muito simples e desinteressante! Você e eu estaremos monitorando uma rede distribuída, cadeias de comutadores de comunicação, por isso precisamos dessa cadeia de comutadores. Onde consegui-los?

Sugeri o uso da virtualização do Virtual Box. Ele permite que você emule PCs (computadores), e agora vou apresentar outro emulador, também usado em nossos cursos. Um ótimo produto é chamado Graphical Network Simulator (GNS):



este emulador permite emular equipamentos da Cisco. Aqui vamos implantar nossa nuvem de switches. Será necessário criar o nome do projeto novamente (vamos salvar a configuração, e se amanhã for necessário):



Se você quiser aprender a trabalhar com os equipamentos da Cisco em casa, instale esse GNS por conta própria e faça o que fazemos no seminário, a saber, agora implantaremos uma nuvem de switches. O problema é que o GNS não possui comutadores (não há emulação aqui) - apenas emulação do roteador. Portanto, temos que colocar o roteador (arraste com o cursor do mouse):



E, de alguma forma, trocá-lo. Como fazer a emulação de switch no GNS? Precisamos pegar o roteador da 36ª série. Você pode chamá-lo de switch (clique com o botão direito do mouse no switch):



Você pode desenhar um switch:







Parece? Mas isso se tornará uma opção real somente quando você adicionar uma placa assim:



Nesta linha de roteadores Cisco, você pode colocar uma placa Ethernet de 16 portas. E para um grande número de trabalhos de laboratório relacionados a switches, essa placa é bastante adequada.
Precisamos ter uma nuvem de switches, então agora vou fazer essa nuvem (altere o nome, imagine e insira o quadro). Vamos começar com três comutadores e, se tivermos tempo, adicionaremos um quarto:



nos conectaremos, não visando especificamente onde. Nossa topologia terá que ser criada automaticamente:





Concluído:



Agora estou iniciando este negócio:



Parabéns aos que estão assistindo pela primeira vez como a Cisco funciona - para que você possa configurar rapidamente o switch Cisco. Enquanto isso, eles começam conosco ...

Este é o nosso sistema Windows (Windows 7) e o Debian:



Aqui a virtualização GNS3 e a nuvem de switches:



Agora está claro o que está acontecendo: dois sistemas de virtualização são usados ​​na estrutura de uma máquina. Virtualização de sistemas PC (à direita) e virtualização de sistemas Cisco (à esquerda):



É necessário fazer o servidor monitorar o equipamento:



E para que ele possa monitorá-lo, este equipamento deve ter endereços na mesma rede:



Portanto, sem pensar por muito tempo, eu Decidi atribuir esses endereços aos switches (pontos 101, 102, 103 para os 1º, 2º e 3º switches, respectivamente). A centésima é o nosso Linux:



você pode configurar isso da seguinte maneira: vá para um curso autorizado da Cisco e eles lhe dirão a baixo custo.

Para que o switch seja acessível para administração, é necessário fazer as seguintes configurações - entrar no modo de configuração, atribuir um nome adequado, atribuir um endereço IP à interface e copiar o resultado para a memória de longo prazo:



prepararei o peixe para não gastar muito tempo nele. O primeiro comutador será chamado switch1, o endereço IP é o 101º. Copio esta configuração no comutador:



Clique duas vezes no comutador desejado (agora - comutador1):





Configure o comutador1. Agora - a configuração para o segundo comutador: chamada switch2, IP - 102:





Dessa forma, agimos com o terceiro comutador.

Bem, será muito legal se não apenas nosso servidor estiver disponível em nosso computador com Windows, mas também o que configuramos agora:



GNS3 é um bom sistema. Faço essa ênfase porque há problemas suficientes: é um buggy, um pouco ... Mas, para aprender, basta. Essa pausa é alarmante para mim - espero que tudo dê certo e nossa mudança responda depois de algum tempo: Mas



não, não responderá, não importa o quanto eu espere! A comunicação não é suficiente entre o nosso computador e o GNS. GNS, então mais um elemento está faltando:



Connect Cloud


Para que essas opções sejam disponibilizadas, você deve usar o objeto Cloud:



Hoje, a Cloud o usa em um sentido completamente diferente. Autores do GNS como provedor de serviços de Internet. Nas configurações deste objeto, posso conectá-lo à minha placa de rede:



parece assustador, mas é a mesma placa de rede:





coloquei Cloud. Agora você precisa conectar um dos comutadores à nuvem (somente uma conexão poderá aparecer):



suspeito que, no nosso caso, seja mais rápido reiniciar o comutador para que tudo funcione corretamente. A única coisa que quero ter certeza de que sua configuração seja salva. A propósito, dentro dos comutadores de ping já devem estar:



Cisco real! O primeiro pacote desaparece, tudo o resto está lá:



Na verdade, não é usada emulação natural aqui, mas iOS. Portanto, paro o 1º comutador e recomeço:





se tudo estiver em ordem, devemos ver a conexão através da nuvem - meu Windows 7 será conectado a este equipamento através de uma placa de rede (o equipamento possui endereços IP na mesma rede que o Windows) . Em geral, este é o ponto de conexão entre o GNS e o Windows. Vamos



verificar se há uma conexão: Vamos ver como ele se sente ... A partir daqui, ele responde: Foda-se



! Veja bem, a conexão apareceu:



eu amo o GNS porque é gratuito, funciona ... Mas nem tudo é simples! Aqui está uma situação engraçada: nosso Linux responde ao sistema Windows, nosso switch responde ao Windows, mas o switch não responde ao sistema Linux:



Então o professor pode ficar cinza! Você está conduzindo uma lição, mas o estande não funciona para as pessoas ... Bem, nada, vamos convencer! Gratuito, barato e alegre.

A experiência tem mostrado: para a conexão para estar entre os três elementos (a partir do Windows - para Linux, a partir do Linux - a GNS), você precisa ir para as configurações da placa de rede e selecione o estranho opção - “modo Inaudível” ( “Permitir todos”):





Venha Virtualização! Este modo indiscriminado está em todas as decisões (e também na "Esfera"). Está associado à passagem de pacotes Ethernet, endereços MAC e assim por diante. Venha para o curso de virtualização, os detalhes estão lá.

Iniciamos nosso sistema novamente na esperança de que a conectividade seja restaurada:



Somente agora será possível configurar o monitoramento de nossos comutadores a partir do Zabbix. Vamos ver como isso acontece:



A fundação está lançada. Se tivermos uma conexão agora, tudo estará pronto. No "Zabbix" muitos "Tsiska", habilmente conectados entre si - você pode começar a monitorar. Nós nos conectamos ao usuário root com uma senha e verificamos o ping:





Tudo está pronto:



como administrador do DNS local, também possibilitei o envio por nomes de ping.

Como o Zabbix pode monitorar o equipamento Cisco?


O agente não pode ser instalado no equipamento Cisco. Muitos de vocês sabem que o equipamento Cisco é perfeitamente monitorado usando SNMP. Agora vamos preparar o cenário para isso.

Agora vamos preparar o cenário para isso. Para monitorar equipamentos usando o protocolo SNMP, primeiro, você precisa instalar o suporte SNMP no próprio servidor de monitoramento: O



Zabbix não inclui esse suporte, usa bibliotecas externas incluídas nesses pacotes:



não vou lhe dizer o que é a base de informações de gerenciamento - Nos cursos sobre interação entre Lunux e Cisco, é descrito em detalhes. E agora colocamos os pacotes necessários para o monitoramento no Linux:





E colocamos elementos de configuração em nossa Cisco que nos permitirão monitorá-los.



Aqui, o servidor SNMP simplesmente começa com a seguinte senha:



E fazemos isso em todos os três de nossos comutadores:



Após essas etapas, verificaremos se nosso servidor de monitoramento pode acessar o equipamento Cisco (qualquer um desses comutadores) via SNMP e, por exemplo, descobrir alguma coisa. Existem opções de teste aqui:



Você pode pesquisar nossos switches usando os chamados OIDs (identificadores de objeto). Aqui interrogamos o comutador (solicitamos os valores do parâmetro switch1):



E vemos que este Oid se refere ao nome do comutador, ou seja, podemos extrair o nome de cada comutador (é muito útil para a topologia):



E você pode usar mais textos humanos e textuais - solicitamos sysName do switch (o mesmo pode ser solicitado no switch2, etc.):



Instale o console SNMP


Outra ação não é óbvia: de







acordo com o contrato de licença, é necessário comentar as linhas deste arquivo ... Este é um comando maravilhoso do pica-pau que limpou o conteúdo do arquivo, que dizia: “Para confirmar a licença, comente tudo o que estiver lá”.

Assim, o servidor Zabbix deve ser reiniciado porque instalamos as bibliotecas que serão usadas por ele:





muitas pessoas sabem que agora é suficiente entrar na seção Host, criar um host e selecionar o protocolo SNMP. Especifique o endereço IP:





Mas não estamos aqui para isso. Vamos tentar fazer com que o Zabbix encontre automaticamente todos os nossos switches. Temos três deles, e em Baumanka existem mais de cem (120, ao que parece). Não seria tão divertido adicionar 100 switches, portanto é um bônus: veremos como o Zabbix encontra nossos switches.

Adicionar dispositivos automaticamente ao Zabbix


Página "Adicionando dispositivos automaticamente ao Zabbix":



Para fazer isso, iremos para a seção "Configuração" (subseção Descoberta) e não criaremos uma nova regra lá, mas usaremos a existente:

  • Isso indica corretamente que você precisa verificar esta rede ... Você reconhece a nossa? Para não esperar muito, indicarei um intervalo limitado de 100-110 (o suficiente para mim).
  • Digitalizar uma vez por hora é um pouco demais; colocar - a cada 60 segundos.
  • Em dispositivos digitalizados, nosso Zabbix agora está procurando um agente Zabbix. Prometi que você e eu não teríamos nenhum agente, então eu o excluo.
  • E digo que, de fato, nosso dispositivo é acessível via SNMPv2, comunidade - pública; solicitamos esse OID:
  • , . , . ( ):

Agora, a cada minuto, o Zabbix percorre esses endereços IP e solicita o nome do dispositivo via SNMP. Se houver um dispositivo e suportar o protocolo SNMP, ele responderá:



Isso não é suficiente para que nossos dispositivos apareçam nesta lista: Você



precisa configurar ações. Criaremos um novo (eu o nomeio, copiando do manual de treinamento):





Condição: a solicitação deve retornar informações de que essa é uma opção. Por "coincidência de sorte", temos todos os comutadores chamados switch (switch1, switch2, switch3), portanto, o valor recebido deve se parecer com (como) no switch:



tudo isso está no manual de treinamento. Resta indicar o que fazer com ele - “Operações”:



primeiro de tudo, você precisa adicioná-lo a algum grupo. Vou usar o grupo de hosts Descobertos já prontos:





A seguir, mais importante, devemos explicar o que monitorar neste equipamento. Nesse caso, usaremos um modelo pronto que é adequado para um grande número de vários dispositivos SNMP:















Se tudo for feito corretamente, depois de algum tempo, três switches aparecerão milagrosamente em nosso Zabbix. Nós esperamos. Eles aparecerão na seção Hosts. Existe uma conexão (marcada apenas no caso):



Apareceu:



Se tivéssemos 100 switches, 100 switches apareceriam. Agora podemos falar sobre o tópico principal - a construção automática da topologia de rede.

Crie um mapa de rede


Em "Zabbix" na seção "Monitoramento" - subseção "Mapas de rede". Você pode criar seu próprio mapa com qualquer nome arbitrário (assim como nos manuais - mapa de comutadores):







você pode adicionar dispositivos a este mapa:



temos uma operação bastante chata para adicionar centenas de comutadores aqui: adiciono um



novo elemento e digo ao sistema que ele está ativado na verdade, o host que você está monitorando; host switch1:





As pessoas costumam perguntar se esse processo pode ser feito automaticamente. Resposta: "É possível!". Mas então precisamos resolver o problema fascinante: "Como podemos entender onde colocar quais opções?" Essa é a geometria. Uma solução em potencial: você pode especificar uma marca de localização geográfica no comutador (um parâmetro como “você está no 6º andar, prédio AZLK, 666º auditório), desenhar o prédio do laboratório educacional, todas as suas audiências ... Em geral, esse é um bom aluno para o 4º aluno Curso de informática. Não temos planos para isso!

Agora adicionarei todos os 3 switches manualmente, mas prometo que não traçarei linhas de comunicação entre eles. Você adiciona a 101ª opção, nós a adicionamos automaticamente ao Zabbix - se você o desenha no mapa com canetas. Um momento desagradável, mas há um lugar para estar. Não há uma solução simples para esse problema, por 45 minutos, com certeza. E o que obtemos parecerá interessante para mim.

Eu adiciono rapidamente três opções:



eu disse que não adicionarei linhas? Eu vou, mas apenas para que mais tarde possamos entender como desenhá-los. Vou conectar esses dois comutadores (não



conectamos o 1º ao 3º): Vou conectá-los (o comutador1 e o comutador3 estão destacados):



Nosso sistema terá que corrigir esse problema:



É importante não esquecer de salvar o resultado:





A propósito, sobre o GNS - você pode fazê-lo lindamente ... Esconda o nome do host, faça um switch e coloque-o um no outro, criando uma nuvem de switches:











Como construímos uma topologia? Configurar criação e atualização automáticas de linhas de comunicação


Para que a topologia seja criada automaticamente, precisamos receber informações sobre ela automaticamente. Na universidade, usamos equipamentos Cisco, por isso amamos o protocolo chamado Cisco Discovery Protocol - basta digitar show cdp neighbours em qualquer dispositivo e ele informará que o switch1 está conectado à 5a interface: a





alternativa ao cdp é lldp (temos um segmento interruptores da empresa "assustador" Nortel - há LLDP). Veja bem, existem dois comutadores:



o servidor Zabbix deve de alguma forma extrair essas informações (eu as vejo na própria Cisco). Existem muitos caminhos. Um dos mais rápidos, mas mais estúpidos, é usar o protocolo RSH. Um protocolo muito denso, e eu o conheço apenas por causa da minha idade:





As pessoas normais do RSH não sabem, mas você pode usá-lo rapidamente para fazer algo remotamente com a Cisco. Ou, se estamos falando de algum tipo de rede de gerenciamento em que não há estranhos, você pode usá-lo na produção. No entanto, os pontos de segurança ainda são uma costura completa!

Portanto, configurei o suporte para acessar o protocolo RSH nos meus servidores Cisco a partir deste endereço IP:



Agora eu posso instalar o cliente RSH no servidor ...





... e demonstrar como é fácil agora seguir as instruções que acabamos de seguir conectando diretamente ao equipamento Cisco da estação de gerenciamento - no switch1, seguirei esta instrução:





Assim, ele deve aparecer no switch2:



Conexão do servidor de monitoramento


Mais longe. Os gerentes escrevem para mim: “Vyacheslav, um pedido chegou do ouvinte. Ele quer se aprofundar em Bash, Csh, Sed e Awk. ” Estes são utilitários Unix densos que as pessoas conheciam em um ano desgrenhado. Neste momento, haverá um pouco de Unix denso. Instalaremos este pacote (precisamos formatar a saída para que fique melhor estruturada):



E toda a equipe ficará assim:



Não vou dizer como o código de retorno no Dos difere do Unix. Em seguida, filtrarei apenas as linhas que contêm a opção, excluirei os espaços extras e cortarei os campos necessários pelos espaços:





Vamos ver o resultado e você verá como ele difere do anterior. Um pouco mais de Unix "mágico". Processando a transformação de informações em estruturadas (por exemplo, switch2). Em vez dessas informações não estruturadas (muitos espaços, algumas teclas estranhas):



A saída aparece: O



switch2 está conectado ao switch3 através das interfaces Fas 0/6 (do switch2) e Fas 0/5 (do switch3). A tabela mostra: algum tipo de switch com o qual as interfaces estão conectadas.
Enquanto estiver neste protocolo, RSH e CDP partem. Agora, tendo recebido essas informações, desenhamos esses links em todos os switches. Para fazer isso, precisamos de informações sobre quais switches nos conectar. Você pode obter um arquivo de texto, onde listar todas as opções ... Mas não é esporte!

Nós só precisamos adicionar o switch fisicamente, e ele deve ser detectado automaticamente pelo Zabbix. Já temos um banco de dados de switches no Zabbix. Como um aplicativo pode obter informações sobre os switches do Zabbix?

API do Zabbix


A API do Zabbix é escrita usando o protocolo JSON "maravilhoso". Eu terminei de programar naqueles dias em que o JSON ainda não era, portanto, para mim, assim como para o administrador ... Atualmente, não havia esse lixo! Aqui está um arquivo de texto para mim - isso é normal, mas JSON ... (
brincando ) JSON é tão JSON!

JSON é o formato usado para a troca de dados com o servidor da Web, e o utilitário cURL é um daqueles utilitários úteis que permitem enviar qualquer solicitação ao servidor da Web:





Não irei aprofundar o que é uma solicitação POST, solicitação GET e Eu direi brevemente. No Zabbix, que funciona aqui:



Este aplicativo entra: O



que está pronto para aceitar essa solicitação em chaves "assustadoras" (isso é JSON):



Esta solicitação indica o que eu quero fazer com o Zabbix, os parâmetros são indicados:



Um Zabbix fornece uma resposta. Aqui está um exemplo que diz: "Zabbix", por favor, me dê uma string de autenticação para que eu possa enviar mais solicitações. " Confirmo minhas credenciais com login e senha:



Agora, uma solicitação JSON retornará uma resposta JSON para nós:



E nessa resposta JSON haverá uma linha:



Este é um autenticador que pode ser usado para as solicitações restantes.

Trabalhar com objetos host


Lembramos por que começamos a estudar JSON: queremos obter o banco de dados de comutadores do Zabbix. Quais opções para interrogar? Vamos sair daqui!

Conheça: a API do Zabbix inclui, entre outras coisas, o método host.get:



Host - esses são nossos hosts. Obter é um dar. Depois, aponto: me dê informações sobre o host!



Nos parâmetros, eu digo: produza tudo o que você sabe sobre hosts:



Mas devo acompanhar minha solicitação com esta linha:



Vamos demonstrar. Para torná-lo conveniente,



copiarei esta solicitação: E insiro o autenticador que o Zabbix retornou para mim:



Então, Zabbix Api: vimos como solicitar ao Zabbix um autenticador para acesso. E então eu demonstro como usar esse autenticador para obter algum tipo de resposta:



Eu acho que está tudo claro. Você pode até ver se você usa uma lupa. Você reconhece switch1? Em algum lugar existe um switch2 ...



Eu quebrei os olhos por um longo tempo e depois decidi ler como trabalhar com esse JSON na linha de comando. E uma das recomendações foi: use JSON Query. Ela é muito saudável, ilumina a resposta, veja:





Primeiro, tudo ficou colorido - já é bom; segundo, switch2, switch1 são claramente visíveis aqui:



Além disso, um pouco de ajustes no JSON Query, veremos muitas coisas interessantes. E para não copiar esses “crocodilos” do caderno toda vez, proponho determinar o que iremos programar para trabalhar com o nosso “Zabbix”. Existe uma API do Zabbix - isto é JSON, existem várias linguagens de programação. O JSON parece estar relacionado a um script Java, mas, de fato, outras linguagens são usadas com mais freqüência para trabalhar com o Zabbix - por exemplo, Perl, um script Perl que faz alguma coisa.

Fazendo solicitações na forma de scripts Bash


Perl não é uma linguagem da moda hoje, obsoleta. Se eu recomeçasse a vida, provavelmente começaria a aprender Pyton. E é definitivamente sabido que em "Python" existe uma biblioteca conveniente para trabalhar com "Zabbix". Mas, como nos reunimos aqui e não daremos preferência a nenhum idioma, eu uso este idioma:



O idioma do administrador do sistema, ou seja, eu - Bash! Portanto, farei estas solicitações ao Zabbix: Eu as



emitirei na forma de scripts: Os



scripts estão prontos, eu os copiarei. Eles parecem um inferno. Eu acho que um bom código Python será muito mais legível. Mas, como eu mesmo não conheço "Python" e não quero dar nenhuma preferência, escreverei sobre o que está próximo ao coração do administrador do sistema:



Não vou lhe dizer quais são essas barras invertidas (e que Deus as abençoe). Mas a cadeia de autenticação será enquadrada na forma de uma variável que precisamos exportar antes:





que valor isso tinha para nós? E agora, em vez de copiar as linhas longas, posso simplesmente executar o script:



O script retorna uma costura completa. Usando o JSON Query, você pode obter isso bonito:





Lembre - se da tarefa: obtenha o banco de dados de switches que estão no Zabbix!

Vou desenhar imediatamente o resultado. Não vou contar por muito tempo e dar uma olhada no que está aqui e como. Temos uma tarefa assustadora:



aqui está esse resultado, veja o que ele contém. Diz aqui que temos esses comutadores no Zabbix, e este (10105, 10106, 10107) é o identificador interno do comutador "Zabbiksk":



O resultado foi um arquivo simples. Ao adicionar cada nova opção, você deve executar este script para criar um arquivo. Para que não tenhamos esses "crocodilos", incluirei esta linha no próprio script:





E ele retornará uma exibição elegante da tabela conosco. Agora eu vou mostrar. Eu executo o script, ele exibe e salva imediatamente esse arquivo:



O utilitário tee é um bom utilitário que grava o resultado em um arquivo e o distribui. Agora temos 3 comutadores e um arquivo de texto no qual todos os comutadores estão listados:



Agora você pode consultar cada um desses comutadores através do RSH e descobrir quem está conectado com o quê.
Então, nós temos o banco de dados do switch. Nosso objetivo final é mapas!

Obtendo uma lista de mapas e seus elementos no Zabbix


Como trabalhar com cartões? Vamos aprender a ler informações sobre cartões do Zabbix. Copiarei este script:





quem quiser, pode pegar todos esses scripts. Tentei simplificá-los o máximo possível - não funciona mais fácil. Se você descobrir como simplificá-lo, escreva, eu o corrigirei:



Este script ↑ passa para o Zabbix com uma solicitação map.get e diz: “Fale sobre os links e sobre os elementos em que esses links se conectam.”

Agora eu executo este script:



E mostro o resultado:



Assim como as informações sobre hosts, é muito fácil obter informações sobre cartões do Zabbix. Cada cartão tem seu nome: A



seguir, estão os elementos deste cartão. Você reconhece o número? Este é o elemento interno do Zabbix:



O mais desagradável é que no Zabbix os elementos são numerados novamente. À esquerda está o elemento id, à direita está a numeração do elemento dentro do mapa:



Ou seja, no Zabbix, cada host possui um número e no mapa há outro número - essa cadeia é obtida. Ou seja, o switch1 é chamado 10105 no Zabbix e 2 no mapa (uma pequena complicação da tarefa é obtida).

Reunimos tudo através do CDP e RSH, descobrimos a conexão de switches com interfaces


A parte final deste script é que eu tenho que obter informações de quais identificadores do Zabbix estão associados a quais identificadores no mapa. Veja, em “Zabbix”, aqui está este identificador (10105, 10106, etc.) e no mapa - 2, 3, etc .:



tradicionalmente, salvarei isso em um arquivo de texto:



agora temos quase tudo. Há informações sobre quais opções estão neste arquivo (quais identificadores dentro do Zabbix são usados):



E temos informações sobre qual identificador no cartão está associado a qual identificador Zabbix (por exemplo, o switch1 tem o número 10105 no Zabbix e em o número do cartão 10105 tem o identificador 2):





Não é minha culpa! Os caras escreveram isso no Zabbix. Mas tenho certeza de que há uma razão pela qual eles não usam identificadores diretos no mapa. Talvez porque o mesmo objeto possa ser exibido no mapa várias vezes e precise ter um identificador exclusivo. Portanto, a corrente é mais longa.

E aqui, provavelmente vou comentar sobre esse pequeno inferno. Reproduzir:



No loop, li as linhas que descrevem qual comutador com o qual identificador Zabbix



:



eu conecto a cada comutador do Zabbix via RSH: leio em quais hosts ele está conectado. Redireciono esse resultado para outro ciclo: O



qual, por sua vez, lê os identificadores e descobre quem está conectado com quem:



mostrarei os resultados desse script (chmod + x):



No mapa, o segundo comutador é conectado ao terceiro (lembre-se de que os identificadores no mapa) através das interfaces correspondentes (Fas 0/5 - para o segundo, Fas 0/6 - para o terceiro ↑). Devemos desenhar esses nomes nos links, criar.

Se até esse momento apenas lemos informações do Zabbix (hosts, cartões foram lidos etc.), agora teremos que escrever informações no Zabbix.

Vamos salvar o resultado:



Desenhando linhas de comunicação no Zabbix


Decidi escrever um script simples que mudaria algo no Zabbix. Sinceramente, estudei a API dessa maneira - era importante para mim que algo simples funcionasse:





O primeiro script não estará relacionado às tarefas - ele mudará o nome do mapa (para ver como é feito). Se queremos mudar algo no Zabbix, também devemos aplicar a solicitação POST e descrevê-la no JSON, mas usando o método map.update. Entre os parâmetros, devemos indicar explicitamente: MAPID, que encontrará o mapa desejado, e MAPNAME, que alterará o nome do mapa:



Este é o conjunto mínimo de parâmetros. Estes parâmetros são eles mesmos:



Passe pelas variáveis ​​os argumentos do script. Eu faço o script executável (chmod + x): eu o executo



, conforme escrito no manual de treinamento. Se tudo estiver correto, o cartão deve se chamar Super MAP:



Monitoramento - Mapas - voila:



Fácil de alterar - Super MAP2:



Tudo funciona:



Mas nossa tarefa é complicada - alterar as linhas de comunicação!



É necessário gerar JSON, que descreverá nosso mapa e todas as linhas de comunicação. Para fazer isso, crio outro script:





O fato de eu ter muitos scripts não significa que isso deve ser feito na empresa. Na empresa, você precisa usar uma linguagem normal que você conheça ("Python", "Pearl" ou outra coisa) e programar o que está aqui usando uma linguagem normal. Esses tijolos, cada um dos quais é simples, permitem entender o que, por que e como fazê-lo.

Outro script que serve mais para entender o que precisa ser feito e não para copiar (não vou vender o produto final para você aqui):





Este script lê este arquivo:



Que indica qual elemento no mapa com qual elemento no mapa por meio de quais interfaces ele está conectado. Mais precisamente, pegaremos um elemento no mapa, um elemento no mapa e um rótulo. Este é um elemento no mapa:



E esta assinatura deve ser:



Estou lendo este arquivo. Eu ordeno todos os elementos no mapa: eu



programo links - descrição dos links na forma de JASON. A solicitação final é assim: atualize o mapa (número do cartão ↓): Os



links serão descritos nesta variável:



Formada neste ciclo (todos os elementos e assinaturas dos cartões foram enumerados):



Novamente, temos uma tarefa assustadora e a descrevemos em detalhes no Shell ... Certamente muitos de vocês não programaram no Shell. Você só precisa olhar para esses textos e programar o que for mais conveniente para você.

Eu tenho uma expectativa de que agora tudo deve acontecer. Lançou um script:



Recarregue a página Mapas:



Bem, como? Pelo menos funciona! Vamos adicionar outra opção e executar o script novamente.

Nós pegamos o interruptor, chamamos de switch4:



Nós desenhamos que é o interruptor:





Configure : Nós o conectamos



como queremos (com um asterisco, você pode desenhar uma linguiça): Nós configuramos o



interruptor. Eu



inicio : Tudo o que fizemos anteriormente (basta mudar para switch4 e o endereço é 104):



Clique duas vezes no switch (cole o que você copiou):



Novamente, será mais rápido reiniciar o terceiro switch (switch3), salvando a configuração:



Enquanto isso, ele é reinicializado, verifique se está disponível em nosso novo switch via SNMP. Quando o Zabbik encontra, a primeira coisa a perguntar é o nome do host SNMP. Portanto, adicionamos esse design ao nosso novo comutador:





Agora estamos aguardando a disponibilidade do comutador. O 101º, o 102º estão disponíveis, o 103º reinicia:



O 103º



respondeu : o 104º respondeu. Verifique se o SNMP está disponível via SNMP4:



Disponível! Temos todas as chances de vê-lo na lista de hosts. Vamos esperar um minuto (a cada minuto, temos uma rede digitalizada):



Depois que ela aparece, voltamos ao primeiro script. Ele descarregou informações de nós quais comutadores em geral são:



Seu cabo funcionou, eles travaram um novo switch, você levantou o link e ele apareceu automaticamente no Zabbix. Portanto, aqui devemos ver que a quarta opção apareceu:



Nosso banco de dados é preenchido automaticamente.

Consertamos o material (adicionamos switch4), executamos o script final


Então, infelizmente, você precisa fugir e exibir nosso switch no mapa:



não apenas seus telefonistas correram, como também configurou o link - você ainda precisa ir aqui e dizer: "Estamos adicionando um novo switch".



Localize onde deve estar e indique que temos o host, switch4, e também desenhe qual é esse switch:



E atualize (ainda não estamos desenhando a linha de comunicação!):



Agora lembramos que nossos scripts de linha de comunicação são construídos com base no protocolo CDP. E para obter informações do CDP do switch, você precisa configurar o acesso RSH a ele. Lembre-se, eu decidi usar esse método?





Se tudo estiver bem, posso tentar, então posso tentar o RSH - solicitar informações sobre sua conexão no 4º comutador. Aqui ele diz: "Estou conectado à terceira, do meu lado - a 10, por outro lado - à 8ª interface".



Eles o adicionaram ao cartão e temos uma tabela de correspondência entre os identificadores no Zabbix e os identificadores no cartão (veja, é o quinto no mapa): eles





aumentaram o RSH. Agora podemos construir uma conexão: quais comutadores estão conectados por quais links (obtemos o arquivo de texto):





Vamos tentar executar o script final, que lerá esse arquivo de texto e gerará uma solicitação JASON para atualizar os mapas, redesenhando todos os links no mapa:







Bem, como? Impressionante? Não administrei em 45 minutos planejados, mas ainda assim rapidamente (cerca de 75 minutos) - provavelmente não funcionará mais rápido.

Todos! Sou amigos muito felizes - deu certo. O manual de treinamento está aqui: https://wiki.val.bmstu.ru . Se você não encontrar, escreva para o e-mail: val@bmstu.ru, val@specialist.ru - enviarei com prazer. Um webinar será exibido no site especialista.ru - vou verificar isso com certeza.

E o mais importante, meus amigos, que tudo isso não foi em vão, mas com o objetivo astuto de convencer você ou seus colegas ao nosso curso de dois dias, que compreende um grande número de tarefas relacionadas ao Zabbix: detecção e ajuste de baixo nível ... Não no topo, como está agora, mas em detalhes, com os de laboratório - você fará: até que você faça, eu não vou deixar você sair.
Ficarei feliz em vê-lo, seus colegas! Escrever cartas.

Te vejo em breve!


Um pouco de publicidade :)


Obrigado por ficar com a gente. Você gosta dos nossos artigos? Deseja ver materiais mais interessantes? Ajude-nos fazendo um pedido ou recomendando aos seus amigos o VPS na nuvem para desenvolvedores a partir de US $ 4,99 , um analógico exclusivo de servidores de nível básico que foi inventado por nós para você: Toda a verdade sobre o VPS (KVM) E5-2697 v3 (6 núcleos) 10 GB DDR4 480 GB SSD 1 Gbps de US $ 19 ou como dividir o servidor? (as opções estão disponíveis com RAID1 e RAID10, até 24 núcleos e até 40GB DDR4).

Dell R730xd 2 vezes mais barato no data center Equinix Tier IV em Amsterdã? Somente nós temos 2 TVs Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV a partir de US $ 199 na Holanda!Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - a partir de US $ 99! Leia sobre Como criar um prédio de infraestrutura. classe c usando servidores Dell R730xd E5-2650 v4 que custam 9.000 euros por um centavo?

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


All Articles