Skip to content

livro

Errata #3

Olá, leitores!

Queremos mais uma vez agradecer pela confiança ao comprarem o nosso livro. Esperamos que ele esteja sendo útil no dia a dia.

Esta errata corrige um problema na configuração do SELinux.

No capítulo 19, na página 406 faltou informar a instalação do pacote selinux-policy-devel, para que seja criado o diretório: /usr/share/selinux.

Fonte: https://www.centos.org/docs/5/html/Deployment_Guide-en-US/rhlcommon-chapter-0001.html

Resumindo, a alteração da página 406 fica assim:

Antes:

yum -y install policycoreutils-python

Depois:

yum -y install policycoreutils-python selinux-policy-devel

Obrigado a Renato Barradas por nos avisar sobre este problema. 🙂

Abraço.

Errata #2

Olá, leitores!

Queremos novamente agradecer pela confiança ao comprarem o nosso livro. Esperamos sinceramente que ele seja útil no dia a dia.

Esta errata corrige dois pequenos problemas no texto.

1) Na página 166, a Figura 6.10 não está com o mapeamento de imagens aplicado na área que contém os ícones do grupo de host.

A Figura 6.10 deverá ficar do jeito que está na imagem mostrada abaixo.

 

capitulo_6_figura_6.10_new

 

2)  Na página 124 é mostrada a Tabela 4.15 para criar um item que obtém o percentual do espaço livre. O campo Unidade deve ficar com o valor %, ao invés de B.

 

Agradecemos a Carlos Markennedy por nos avisar sobre estes problemas. 🙂

Estas correções já foram aplicadas nos livros da terceira impressão (Jan/2016).

 

AVISOS:

a) As máquinas virtuais que antes estavam hospedadas no serviço Copy.com, agora estão hospedadas no Google Drive. Os links de download podem ser vistos nesta página http://zabbixone.com/?page_id=51.

b) Na página 189 é citado o uso do template fase_1_slide_show.xml, que está no diretório Capitulo_6 do repositório de arquivos do livro https://goo.gl/yRKuWB. Em algumas distribuições GNU/Linux, este template pode falhar e nestes casos deve ser usado o template fase_1_slide_show_enp0s3.xml, que também está no diretório Capitulo_6.

Abraço e bons estudos!

1000!

1000Muito obrigado, leitores!

Já conseguimos passar de mil livros vendidos em cinco meses.

Isso superou a melhor de nossas expectativas e torcemos para que o livro ajude cada um de vocês a realizarem o trabalho de monitoramento e gerenciamento de redes e serviços.

 

Ainda não comprou o livro?

Então acesse a página http://www.novatec.com.br/livros/zabbix/ e informe o código promocional ZABBIX para ganhar 20% de desconto.

Exercício com LLD personalizado e log no formato CSV

No livro De A a Zabbix, o assunto LLD é mostrado nas páginas 272 a 278.

Neste post vamos fazer um exercício adicional sobre este assunto.

Mas antes de começarmos o exercício, vamos entender alguns conceitos.

Conceitos:

LLD – Low Level Discovery => André Déo (um dos três autores do livro) publicou a seguinte definição em seu blog: “LLD é uma função do Zabbix responsável por detectar determinadas características de um objeto, de forma dinâmica. Por exemplo, o Zabbix vai achar dinamicamente todas as partições da sua máquina (o objeto são as partições), e coletar dados como tamanho da partição, espaço livre, espaço utilizado (essas são as características do objeto).”

JSON – JavaScript Object Notation => Segundo André: “é uma formatação para intercâmbio de dados computacionais, que para seres humanos é fácil de ler e escrever e, para as máquinas é fácil de interpretar e gerar. Se você entende como um XML funciona, entende como um JSON funciona ;-)”

CSV – Comma-separated values => é um formato que permite a separação de valores por vírgula, ponto e vírgula, enfim. Mais detalhes em: https://pt.wikipedia.org/wiki/Comma-separated_values

Parser => “Em Português conhecemos como Análise Sintática, mas a maioria das pessoas usa o termo em inglês, de maneira simples, significa ler uma entrada de dados, nesse caso um arquivo JSON, e interpretar a sua estrutura gramatical” (esta também é um definição que peguei do site do Déo).

Como funciona o LLD no Zabbix?

De forma resumida, o LLD no Zabbix funciona assim:

Você gera um arquivo ou executa um script que exiba os resultados no formato JSON utilizando o padrão de macros do Zabbix “{#OBJETO}”. Essas macros representarão os objetos, por exemplo: a lista de placas de rede, a lista de partições, a lista de base de dados, a lista de tabelas de uma base de dados, a lista de servidores, a lista de informações de um arquivo de log. Isso é a Regra de Descoberta de um LLD.
Em seguida você instrui o Zabbix a coletar características de um desses objetos da lista. Isso é o Protótipo de itens associado a uma regra de descoberta do LLD.

Por exemplo: para cada partição do sistema, o Zabbix coleta o tamanho da partição, o espaço livre e o espaço utilizado. Com esses itens gerados, podemos criar outros protótipos como triggers e gráficos, telas. Tudo automaticamente. Isso dentro de um template facilita o uso em vários hosts.

O LLD tem suporte as chaves suportadas pelo Zabbix, OIDs SNMP ou Scripts Personalizados, que é o alvo deste exercício.

Arquivos usados no exercício

Baixe o pacote Alarmes_via_LLD. Descompacte o pacote e veja os seguintes arquivos:

alarm_zabbix.log => Arquivo de log no padrão CSV.

get_alarm_ldd.sh => Script que lê um arquivo de log no padrão CSV e exibe os dados no padrão JSON.

UserParameter.conf => Contém o UserParameter.

zbx_Alarmes_via_LLD.xml => Template que obtém, automaticamente, alarmes registrados em um arquivo de log. Ele já contém uma regra de descoberta do LLD cadastrado, que por sua vez contém protótipos de itens e triggers.

Objetivo do exercício

Vamos imaginar que temos uma aplicação fictícia que alimente um arquivo de log no formato CSV. Neste exercício temos o arquivo alarm_zabbix.log com o conteúdo abaixo.

1
O significado de cada campo do arquivo separado por vírgula é:

  • O primeiro campo de cada linha do arquivo de log exibe um número de identificação, que no template é representado pela variável {#ID}.
  • O segundo campo de cada linha exibe a hora em que o evento foi registrado.
  • O terceiro campo de cada linha exibe o tipo de equipamentos em que houve um evento.
  • O quarto campo de cada linha exibe o nome dos equipamento em que houve um evento.
  • O quinto campo de cada linha exibe o nome do componente de software, hardware ou serviço que foi afetado pelo evento, que no template é representado pela variável {#COMPONENT}. Neste exercício ele é o objeto.
  • O sexto campo de cada linha exibe o nome do evento, que no template é representado pela variável {#EVENT}.
  • O sétimo campo de cada linha exibe a severidade ou gravidade do evento. Embora seja possível obter a severidade automaticamente, o Zabbix não dá suporte a alterar a severidade automaticamente. Foi aberto este ticket sugerido a modificação https://support.zabbix.com/browse/ZBXNEXT-2769
  • O oitavo e último campo de cada linha exibe uma descrição do evento e até informações de solução do mesmo.

Foi desenvolvido o script get_alarm_ldd.sh, que também está no pacote, para ler cada linha do arquivo de alarme e exibir os dados no padrão JSON. O resultado do script foi homologado no site http://jsonlint.com/

O objetivo do exercício é usar um template que contém uma regra de descoberta para que exibe todos os eventos registrados no formato CSV no arquivo de log.
Esta regra de descoberta é acionada se o script for executado assim:

/usr/local/share/zabbix/externalscripts/get_alarm_ldd.sh LLD /usr/local/share/zabbix/externalscripts/alarm_zabbix.log

Como o objeto LLD deste exercício é o nome do componente, o resultado do comando acima pode ser filtrado quando o comando for executado da seguinte forma:

/usr/local/share/zabbix/externalscripts/get_alarm_ldd.sh LLD /usr/local/share/zabbix/externalscripts/alarm_zabbix.log NOME_COMPONENTE NOME_EVENTO

O comando exibe todos os registros relacionados a determinado evento e componente.
Com este resultado ainda não é possível usá-lo num LLD, pois ele não suporta a exibição de várias linhas de resultado para uma mesma chave de pesquisa. Para resolver isso, pode ser executado o comando da forma abaixo:

/usr/local/share/zabbix/externalscripts/get_alarm_ldd.sh LLD /usr/local/share/zabbix/externalscripts/alarm_zabbix.log NOME_COMPONENTE NOME_EVENTO ID_DO_EVENTO

Claro que não é necessário você saber cada ID os valores possíveis de cada campo do arquivo. Este é um trabalho do LLD. Ele vai coletar todas as características dos eventos e componentes e na interface Web do Zabbix você poderá saber o que é que está sendo registrado no arquivo de log e vai receber os alarmes conforme a ocorrência dos eventos para depois decidir que ação tomar (se vai enviar alguma notificação ou executar algum comando ou ação).

Executando o exercício

1) Acesse um host GNU/Linux que está sendo monitorado pelo Zabbix, via agente Zabbix, e insira no final do arquivo /usr/local/etc/zabbix_agentd.conf a seguinte linha:

UserParameter=GET_ALARM_LLD[*], $1 $2 $3 $4 $5 $6

2) Copie os arquivos get_alarm_ldd.sh e alarm_zabbix.log para o diretório: /usr/local/share/zabbix/externalscripts/

3) Depois reinicie o Agente Zabbix.

Com isso, foi criada a chave GET_ALARM_LLD[*], que pode receber 6 parâmetros, onde cada um deles significa:

$1 => caminho do script que no template está em uma macro de template. Ex.: /usr/local/share/zabbix/externalscripts/get_alarm_ldd.sh
$2 => a nossa regra de descoberta. EX.: LLD.
$3 => caminho do arquivo de log no formato CSV. Ex.: /usr/local/share/zabbix/externalscripts/alarm_zabbix.log
$4 => NOME_COMPONENTE. Ex.: BACKUP
$5 => NOME_EVENTO. Ex.: NEW_FILE
$6 => ID. EX.: 14

4) Acesse a interface Web do Zabbix e clique em Configuração > Templates > Importar. Importe o template zbx_Alarmes_via_LLD.xml.

Este template possui duas macros:

{$SCRIPT_ALARM} => /usr/local/share/zabbix/externalscripts/get_alarm_ldd.sh
{$FILE_ALARM} => /usr/local/share/zabbix/externalscripts/alarm_zabbix.log

Localize o template Alarmes via LLD e clique em Regras de Descoberta. A regra geral de descoberta possui a seguinte sintaxe: GET_ALARM_LLD[{$SCRIPT_ALARM},LLD,{$FILE_ALARM}]

O protótipo de item cadastrado neste template possui a seguinte sintaxe: GET_ALARM_LLD[{$SCRIPT_ALARM},LLD,{$FILE_ALARM},{#COMPONENT},{#EVENT},{#ID}]

O protótipo de trigger cadastrada neste template possui a seguinte sintaxe: {Alarmes via LLD:GET_ALARM_LLD[{$SCRIPT_ALARM},LLD,{$FILE_ALARM},{#COMPONENT},{#EVENT},{#ID}].str({#EVENT})}=1

Isto permite que sempre que houver a ocorrência de um determinado evento para um determinado componente, vai ser acionada uma trigger.

Associe o template ao host que contém o arquivo de log e o script.

Os resultados serão exibidos na página Monitoramento > Dashboard e em Monitoramento > Triggers.

 

2

3

4Fonte:

http://andredeo.blogspot.com.br/2014/11/lld-no-zabbix-com-shell-script.html

https://enrise.com/2014/12/automated-ssl-monitoring-low-level-discovery-zabbix/

https://www.reconnix.com/blog/2015/03/19/chris-davidson-using-zabbix-to-make-magic/

http://spinola.net.br/blog/?p=402

https://www.zabbix.com/documentation/2.4/manual/discovery/low_level_discovery

http://jsonlint.com/

http://thobias.org/doc/sosed.html

http://sed.sourceforge.net/sed1line_pt-BR.html

 

Feedback de um dos leitores do livro

Anderson_Freitas

 

Anderson Freitas, um dos leitores do livro “De A a Zabbix”, publicou um post em seu site contando suas impressões sobre o livro.

Eu, André Déo e Adail Spinola ficamos muito alegres com este feedback e pedimos autorização do leitor para copiar um trecho desses comentários.

 

 

 

 

 Desde o primeiro até o último capítulo, a obra aborda e mostra os tópicos mais importantes para você monitorar seu ambiente. O livro foi feito do jeito certo, para que qualquer novato no assunto consiga ler e dar os primeiros passos, até para aqueles que já tem certa experiência aprimorar alguns conceitos e descobrir novas funcionalidades. Composto por 416 páginas, o livro traz uma linguagem de fácil compreensão e método de lecionar genial, algo prático, com teorias alinhada as práticas de ambiente.

Além do “ideal”, o livro ainda apresenta tópicos de como otimizar o banco de dados e dicas de segurança, que enriquecem ainda mais o assunto, justificando a compra até dos mais experientes.

Os capítulos fornecem, de maneira equilibrada, conteúdo teórico e exercícios práticos de uso da ferramenta, personalizações e atalhos úteis do dia a dia, além de melhores práticas com base na experiência dos autores. São abordadas recomendações de segurança para reduzir as vulnerabilidades de seu ambiente, além de uma série de plugins para ampliar o potencial da ferramenta. – Editora Novatec – Acessado em 26/07/2015.

Completamente ilustrado e com uma gama enorme de explicações, o livro se torna indispensável para quem deseja aprender mais sobre monitoramento com Zabbix ou até mesmo iniciar o monitoramento de seu parque tecnológico. Para quem estiver afim, abaixo o link para a compra do livro:

http://www.novatec.com.br/livros/zabbix/

Pode ter certeza que vai ser um investimento muito benéfico para sua carreira e ambiente. O meu está garantido 😛

Att.

Anderson Freitas

 

Fonte: http://dialplanreload.blogspot.com.br/2015/07/de-a-a-zabbix.html

Errata #1

Bom dia, leitores!

Queremos agradecer pela confiança ao comprar o nosso livro. Esperamos sinceramente que ele seja útil no dia a dia.

Avisamos que o repositório epel.gtdinternet.com, usado na instalação de pacotes requisitos no CentOS 6 e 7 e no Red Hat 6 e 7, está inacessível hoje (08/06/2015).

Isso afeta diretamente quem quer instalar o Zabbix seguindo as nossas instruções mostradas no capítulo 2 nas páginas 29 e 30.

Abaixo estão os links certos a serem usados:

Seção em que o link é citado no capítulo 2 página 29: Comum entre CentOS 6.x e Red Hat 6.x

Antes:

 wget http://epel.gtdinternet.com/6/i386/epel-release-6-8.noarch.rpm

Depois:

wget  --no-check-certificate https://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

 

Seção em que o link é citado no capítulo 2 página 30: Comum entre CentOS 7.x e Red Hat 7.x

Antes:

rpm -Uvh http://epel.gtdinternet.com/7/x86_64/e/epel-release-7-5.noarch.rpm

Depois:

rpm -Uvh https://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm

 

Agradecemos ao leitor Ikaro Bezerra, que nos reportou este problema e ao mesmo tempo nos deu uma solução.