LPI-2: LPIC 201 - Tópico 200

Tópico 200 - Peso 8

Conteúdo sintetizado do livro Certificação LPI-2 do Lucioano Antonio Siqueira e de vários links da internet. Embora seja completo os itens foram tratados de forma objetiva. Ficou errado? Comente.


200.1 Avaliar e Resolver Problemas no Uso de Recursos - Peso 6
Peso 6


O Pacote Systat


Usado para monitorar a performance do sistema monitorando o processador e a comunicação entre dispositivos, podendo obter dados mediante a execução ou agendamento. Já se encontra disponível na maioria das distribuições mas pode ser instalado também.


#apt-get install sysstat
ou
#yum install sysstat


Destacam-se dois comandos, iostat e sar:


iostat : CPU e de E/S de dispositivos e partições.
- Sem argumentos retorna uso de CPU, E/S e partições de forma resumida.
-d Para marcar o tempo de atualização. Sendo que apenas a parte dos dispositivos e partições se atualiza. (na versão testada)
-x Forma detalhada. Sendo que apenas os dispositivos entram na forma detalhada.


#iostat
avg-cpu:   %user %nice %system %iowait %steal %idle
          11,21 0,04 1,98 7,82 0,00 78,96


Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 23,81 372,66 375,56 1691530 1704708
%user: Uso de CPU no nível usuário, aplicações.
%nice: Processos com prioridade modificada.
%system: Sistema, kernel.
%iowait: Ociosa aguardando retorno de E/S.
%steal: Ociosidade devido o hipervisor estar servido outra CPU virtual.
%idle: CPU Ocioso.


sar : CPU, IO, RAM.
Requisitos para funcionar, editar /etc/default/systat ENABLED=true ou systemctl enable sysstat.service e iniciar o processo. /etc/init.d/systat start.
- Sem argumentos retorna uso de CPU.
-b : Resumo das entradas/saídas.
-d : Entrada e saida de dados por dispositivos.
-B : Informações sobre paginação.
-r : Utilização de memória RAM.
-S : Utilização do swap.
-n DEV : Tráfego de dados das interfaces de rede. Semelhante ao netstat -i.


netstat - Mostra as conexões estabelecidas, roteamentos, mascaramentos e multicasts.
-i : Interface.
-r : Roteamento.
-v : Verbose.
-s : Estatística.
-M : Mascarados.[
-c : contínuos


vmstat - Relatório de memória, disco, IO, CPU.
vmstat -[option] [delaynumber [countnumber]]
-a : Mostra o que está ativo e inativo na memória, mantendo as outras informações padrão.
-p : Informações sobre as partições.
-d : Informações sobre o disco.


ps - Snapshot dos processos atuais.
-ely : Informações detalhadas com o primeiro campo indicando o estado do processo.
-aux : Informações detalhadas dos processos.


top - Informações em tempo real de carga de cpu e memória dos processos.


pstree - Árvore de processos.


w - Quais usuários estão conectados.


lsof - Verificar todos arquivos e pseudo-arquivos que um processo está atingindo.
-p PID : Listar arquivos atingidos por um processo.
-u : Todos arquivos por processo por usuário.
[caminho do arquivo] : Lista todos os processos do arquivo.


uptime : Mostra o tempo em que o sistema está ligado, número de usuários, cpu de 1,5,15 minutos.


200.2 Prever necessidades futuras e recursos
rrdtool - collectd - cacti - MRTG - nagios


Todas as ferramentas contam com tutoriais na internet, sendo assim e visto a forma superficial que se é cobrado no exame tratarei cada tópico com exemplos de links e referências.


rrdtool




RRDTool - você sabe trabalhar com ele?
Esta é uma ferramenta que acredito eu ser uma das mais utilizadas em todo o mundo! Vemos sua utilização em muitos aplicativos open-source como Cacti, Munin, Zenoss, Torrus, Smokeping entre muitos outros. Você pode ver uma lista deles aqui! RRDTools foi desenvolvido por Tobias Oetiker.


Basicamente é possível criar uma base de dados onde serão armazenadas informações como temperatura ou os bytes trafegados por uma interface ao longo do tempo. Qualquer coisa que possui um valor numérico você pode guardar aqui. Primeiramente é necessário instalar esta ferramenta, caso ela já não esteja. Atualmente eu tenho servidores baseado em Debian, então minha instalação é feita com a ferramenta aptitude. Consulte a ferramenta de sua distribuição (yast, emerge, rpm) por este pacote!
aptitude install rrdtool
Com este comando será instalado o aplicativo e suas dependências serão satisfeitas. Depois da instalação você verá que ele possui algumas funções. Aqui iremos falar de algumas somente que são:


create: cria uma nova base de dados rrd
update: atualiza com novos valores uma base de dados rrd
graph: cria um grafico apartir de uma base de dados rrd
fetch: possibilita extrair informação de uma base de dados rrd
info: mostra informações sobre uma base de dados rrd


Existem outras funções e elas estão descritas (em inglês) neste site. Uma característica muito importante deste tipo de base de dados é que possui um comportamento cíclico, isso faz com que ela mantenha seu tamanho fixo e permite um planejamento de espaço em disco. Claro que com isso se faz necessário a definição de quanto tempo se deseja guardar uma informação, pois quando não existir mais espaço disponível, automaticamente as informações mais antigas serão sobrescritas. Em minha opnião acredito ser uma forma bastante escalonável de se manter dados armazenados por um período.


A forma que você utilizará para "alimentar" esta base de dados de informações (Data Sources) depende do que você possui e da forma que você julgar mais prático. O mais comum creio eu é por consultas SNMP (Simple Network Management Protocol) onde é possível verificar a memória utilizada por um sistema, quantos usuários estão conectados em um sistema operacional, e muitas outras possibilidades. Para isso pode-se usar um Script Shell, Perl, PHP. O fato é você conseguir passar valores para esta ferramenta, a forma você decide! :D


Tudo muito simples e muito bonito, porém as diversas informações que você possui em geral podem representar tipos de dados distintos, como por exemplo, temperatura de uma cpu e os bytes trafegados em uma interface! Isso é muito importante no momento de criar uma base de dados rrd pois definirá o comportamento de como esses dados serão interpretados e consolidados dentro dela. Com isso em mente, temos disponível para trabalhar os seguintes tipos de dados com características específicas:


COUNTER - Este tipo espera que o valor sempre aumente, ou seja, a diferença do valor atual e o anterior é maior que zero, e salva a variação deste sobre o tempo.
DERIVE - Este é muito similar ao comportamento do COUNTER porém ele permite valores negativos.
ABSOLUTE - Este tambem salva a variação de valores porém ele sempre considera que o anterior é zero.
GAUGE - Este possui um comportamento diferente e não faz nenhum tipo de matematica com o valor recebido, ele simplesmente insere o valor como ele chega!
COMPUTE - Este armazena um valor oriundo de uma fórmula que usa valores de outros dados definidos dentro de um arquivo rrd.


As informações dentro de um arquivo rrd são armazenadas efetivamente em arquivos RRA (Round Robing Archive). São estas estruturas que terão os espaços para armazenar dados. Antes de avançarmos um pouco mais é necessário entender duas definições utilizadas pelo RRDTools que são os PDPs (Primary Data Point) e CDPs (Consolidated Data Point). Quando um novo valor é inserido ele recebe a classificação de PDP, ou seja, enviamos um determinado valor para essa base de dados e se cria um PDP, porém um CDP é composto por um número pré determinado de PDPs. Uma nova informação só é inserida quando se torna um CDP!


Com estas informações que temos até agora podemos entender um pouco sobre essa poderosa ferramenta de armazenamento de dados, porém, existem alguns detalhes importantes que são utilizados antes de inserir definitivamente uma nova informação dentro de um arquivo rrd que são as funções de consolidação, o fator xff, steps e rows:


step: aqui é definido quantos PDPs são necessários para formar um CDP.
função de consolidação: é uma função aplicada nos valores quando atingir o número necessário de PDPs para criar um CDP. Ela pode ser AVERAGE, MIN, MAX, LAST.
fator xff: é a razão entre a quantidade de informação desconhecida (UNKN) e a de conhecida em um determinado intervalo (step), ou seja, quantos PDPs podem ser desconhecidos para formar um CDP.
rows: aqui é informado quantos CDPs serão armazenados.


Passando por tudo isso, uma informação consegue ser armazenada em um RRA e posteriormente plotada em um gráfico. Com isto entendido podemos passar dois novos conceitos usados nesta ferramenta que é o step (não é o mesmo que o anterior) e o heart beat. Como explicamos acima, esta é uma base de dados que guarda informação ao longo do tempo e ela recebe informações em intervalos de tempo pré determinados, o mais comum são 300 segundos (5min). Este step é utilizado na hora da criação da base de dados e é definido em segundos. O heart beat é utilizado no momento de se definir um DS (Data Source) e ele representa o tempo máximo que se esperará por um valor antes de inserir um valor desconhecido (UNKN) e geralmente esta configurado para 600 segundos (10min). Abaixo esta um exemplo para criar uma base de dados rrd que irá armazenar valores das variáveis SNMP ifInOctets e ifOutOctets:


rrdtool create interface.rrd \
--step 300 \
DS:in:COUNTER:600:0:U \
DS:out:COUNTER:600:0:U \
RRA:AVERAGE:0.5:12:24 \
RRA:MAX:0.5:12:24


Com este comando estamos dizendo algumas coisas:
Crie (rrdtool create) um arquivo chamado interface.rrd
Receberá informações a cada 300 segundos (--step 300)
Com um Data Source chamado in, de tipo COUNTER, receberá informações com no máximo 600 segundos (se não UNKN), com valor mínimo em 0 e o valor máximo é desconhecido (U). O mesmo ocorrerá com o Data Source chamado out.
Crie um RRA com função de consolidação AVERAGE, com um xff de 0.5%, forme um CDP quando acumular 12 PDPs e armazene 24 vezes.
Crie um RRA com função de consolidação MAX com um xff de 0.5%, forme um CDP quando acumular 12 PDPs e armazene 24 vezes.


Ok!!!! Vamos traduzir um pouco isso ai, criaremos um arquivo com aquele nome, irá receber novos valores a cada 5 minutos e esperará no máximo até 10 minutos. Não recebendo nenhum valor novo irá colocar um valor especial chamado UNKN. Estamos criando dois arquivos RRA com funções de consolidação diferentes. Com o xff configurado para 0.5 e o step em 12, estamos dizendo que até 6 valores (12*0.5) podem conter UNKN. Com estes 12 valores aplicaremos uma função de média (AVERAGE) e armazenarei o resultado e com outra aplicarei a função de máxima (MAX) e também armazenarei o resultado. Os dois armazenarão 24 valores. Fazendo as contas 300*12*24 chegamos ao valor 86400 segundos ou 1 dia. Será necessário um dia completo para encher este arquivo rrd. Se você criar uma base de dados com esta configuração levará uma hora (300*12) para que seja possível ter alguma informação dentro da base de dados e que apareça em um gráfico.


Bom já temos bastante informação sobre as base de dados rrd até agora, porém ainda não vimos como inserir informações nela. É um procedimento bem simples e iremos usar a segunda função que apresentamos acima que é a update. Com esta função iremos inserir novos dados a cada 5 minutos (nossa base de dados espera isso, mas pode ser diferente). O comando para fazer isso é o seguinte:
update:


rrdtool update interface.rrd N:32378634:U


O que isto fará é o seguinte, atualizará o arquivo interface.rrd com um valor conhecido e outro desconhecido (fiz assim só para dar um exemplo) e a hora de atualização será a atual (N). Com isso teremos um novo PDP dentro desta base de dados. Cada RRA irá receber estes valores e acumulará até alcançar o número de steps configurado, aplicando então sua função de consolidação.


Se você quiser criar uma base de dados para armazenar um tempo específico são necessários alguns passos e cálculos. Vamos simular aqui que precisamos de uma base de dados que guarde informação por um ano completo e que antes de criar uma entrada nova (CDP) dentro do nosso RRA serão necessários 4 PDPs (steps) e a coleta será a cada 300 segundos ou 5 minutos.


Vamos primeiro descobrir quantos segundos possui um ano:
1 ano -> 365 dias -> 8760 horas -> 525600 segundos


Um ano é isso ai, 525600 segundos, então podemos chegar na seguinte fórmula:
((525600)/(4*300)) = 438


O resultado desta fórmula nos permite criar uma base de dados para nossa necessidade:


rrdtool create interface2.rrd \
--step 300 \
DS:in:COUNTER:600:0:U \
DS:out:COUNTER:600:0:U \
RRA:AVERAGE:0.5:4:438


Este é um assunto bastante comprido e só estamos no começo de sua abordagem porém acredito que o básico e o início teórico são muito importantes para se avançar. Espero estar mostrando mais desta ferramenta pois é muito poderosa e útil para o dia a dia de um administrador de sistemas.


Como sempre, se existir qualquer sugestão, crítica, dúvida ou ainda uma correção, podem entrar em contato comigo!


Fonte: http://andrezenun.blogspot.com.br/2008/09/rrdtool-voc-sabe-trabalhar-com-ele.html


Cacti


Fonte: https://openmaniak.com/pt/cacti.php


Classicamente, Ele pode gerar gráficos de banda usando o SNMP. De fato, uma série de diferentes gráficos podem ser feitos com o scripts shell ou perl. Nas screenshots, você pode ver quais tipos de gráficos podem ser feitos com o Cacti. A força do Cacti reside no fato de que pode ser instalado e utilizado de forma incrivelmente fácil. Você não precisa ser um guru ou gastar toneladas de horas sobre a ferramenta para configurá-la. Mesmo um iniciante pode usá-lo muito rapidamente.
No muito ativo fórum do Cacti, você pode compartilhar "Modelos do Cacti" com outros usuários que podem poupar muito tempo. Você pode facilmente também adicionar plugins no Cacti, habilitando a possibilidade de integrar outras ferramentas free como o ntop ou o php Mapa do tempo. Na nossa opinião,este é, de longe, o melhor RRDtool frontend. Para detalhes de como usar o Cacti, veja o muito bom Cacti Manual.
RRDtool é um programa desenvolvido por Tobi Oeticker que havia criado o famoso MRTG. RRDtool é desenvolvido usando a linguagem de programção "C" e ele guarda os dados coletados em aquivos ".rrd". O número de registros em um arquivo ".rrd" nunca aumenta, significando que antigos registros são frequentementes removidos. Isto implica que ele obtem figuras precisas para dados recentemente logados, onde as figuras baseadas em dados muito antigos possuem valores aproximados. Por padrão, você pode obter gráficos diários, semanais, mensais e anuais. Algumas das vantagens do RRDtool sobre o MRTG são as seguintes:


  • Ele é muito mais rápido.
  • Ele pode usar valores negativos.
  • Ele pode usar mais de uma fonte de dados em um gráfico.
  • Os gráficos gerados são muito customizáveis.
  • Ele pode ser usado por uma grande variedade de front-ends, como o Cacti.
  • Os registros do RRDtool armazenados nos arquivos “.rrd” mantem o mesmo tamanho e não aumentam.


MRTG


O Multi Router Traffic Grapher (MRTG) é uma ferramenta de monitoração que gera páginas HTML com gráficos de dados coletados a partir de SNMP ou scripts externos. É conhecido principalmente pelo seu uso na monitoração de tráfego de rede, mas pode monitorar qualquer coisa desde que o host forneça os dados via SNMP ou script.
Foi desenvolvido por Tobias Oetiker e Dave Rand. Foi escrito em Perl mas utiliza um módulo em C para gerar os gráficos.
Características:
  • Mede sempre 2 valores, no caso de tráfego, pode ser Entrada e Saída.
  • Faz as leituras via SNMP ou através de script que retorna um formato padrão.
  • Coleta dados a cada 5 minutos por padrão, mas este tempo pode ser aumentado ou diminuído.
  • Cria uma página HTML com 4 gráficos (diário, semanal, mensal e anual). Se algum deles não for necessário pode ser suprimido.
  • O MRTG pode avisar caso o valor do gráfico atinja um valor pré-estabelecido. Por exemplo: se determinado servidor atinge 95% do espaço do disco, o MRTG pode mandar um e-mail para o administrador informando o ocorrido.
  • Possui uma ferramenta para gerar os arquivos de configuração: o CFGMAKER.
  • Possui uma ferramenta para gerar um página de índice para os casos em que muitos itens são monitorados: o INDEXMAKER.
O MRTG é software livre distribuído nos termos da GNU General Public License.


Após a instalação, com a ferramenta CFGMAKER gera-se os arquivos de configuração. Caso existam muitos itens sendo monitorados, com a ferramenta INDEXMAKER gera uma página com índice para os casos em que muitos itens são monitorados.  


#cfgmaker
#indexmaker


Nagios


O Nagios pode monitorar tanto serviços quanto hosts, por ser modular pode-se adicionar várias funções através de plugins. Pode enviar email, mensagens SMS, até mesmo mensagens por Whatsapp a comunidade conseguiu adicionar.


Segue um tutorial bem prático da comunidade de exemplo:
https://www.vivaolinux.com.br/script/Instalacao-do-Nagios-por-script