Instalação do Zabbix 5 + notificações pelo Telegram nativo + Grafana 7 + Debian 10 Buster

Aqui está o nosso kit de primeiros socorros! 😀

O Zabbix é uma solução de nível enterprise, de código aberto. O Zabbix é um software que monitora vários parâmetros da rede, dos servidores e da saúde dos serviços. Utiliza-se de um mecanismo flexível de notificação que permite configurar alertas por e-mail entre outros como Telegram, para praticamente qualquer evento. As notificações permitem que se reaja rapidamente à problemas no ambiente. O Zabbix oferece excelentes recursos de relatórios e visualização de dados armazenados. Isso faz com que o Zabbix seja a ferramenta ideal para planejamento de capacidade.

O Grafana é um software livre que permite a visualização de formato de dados métricos. Ele permite criar painéis e gráficos a partir de várias fontes, mas aqui iremos vamos aprender a integra-lo com o Zabbix.

Este tutorial está também disponível no youtube:

Requisitos:

* Debian 10 (Buster) -> Instalação Limpa
* Passo-a-passo como criar um servidor WEB Apache + PHP + MariaDB + phpMyAdmin no Debian 10 Buster “LAMP” (Opcional phpMyAdmin)

Zabbix

Para instalação do Zabbix vamos incluir o repositório do oficial do Zabbix.

Atualize o repositório e realize a instalação

Vamos criar uma base de dados chamada zabbix e um usuário também chamado de zabbix no MariaDB.
Não esqueça de alterar a senha: Use o gerador de senha: https://senhasegura.remontti.com.br/

Senha

Importe o esquema de tabelas e dados padrões. (Demora um pouco!)

Digite a senha de seu usuário zabbix criada no passo anterior para importar as tabelas.

Edite o arquivo zabbix_server.conf para informar os dados para conexão com o MySQL.

Procure por # DBPassword= descomente e sete sua senha.

Ajuste o timezone pela sua região.

Este é modelo padrão, altere então para sua região, também irei alterar alguns valores padrões se quiser pode remover as conf do mod_php5.c

Se você quiser um modelo para acessa-lo por ex: zabbix.remontti.com.br, vou deixar um em seguida como proceder, bem como fechar o acesso apenas a determinado IP ou bloco.

Caso você queira o modelo acima então mova o /etc/zabbix/apache.conf para /etc/zabbix/apache.conf.old. Faça uma apontamento em seu DNS do subdomínio zabbix para o IP do seu servidor. Agora crie um novo arquivo:

Altere em Require ip para os ips que terão acesso.

Ative a o serviço junto com a inicialização do sistema, e restarte os mesmos.

Acesse em seu navegador http://seu_ip/zabbix ou http://zabbix.seudominio.com.br

Next Step

Se tudo estiver ok: Next step

Informe a senha do banco de dados criada anteriormente para o zabbix, e clique em Next step.

Next step

Next step

Finish

Entre com Usuário Admin e senha zabbix

Ualaaa 🙂

Para dexa-lo em Português / Tema escuro:

Alertas no Telegram

No Zabbix 5 temos o Telegram/Webhook, então bora aprender mexer nisso! Mas antes de mais nada será necessário criarmos um bot no Telegram.

Criando Bot no telegram

Abra o Telegram e procure por @BotFather.
Inicie a conversa com ele.

– Digite o comando /newbot para iniciar a criação de um novo bot.
– Após o comando você vai dar um nome para seu bot. Ex.: “Bot Legal RR”.
– Em seguida é necessário digitar o nome de usuário para o bot, sendo obrigatório terminar com bot. Ex.: “legallrr_bot”.
– Ao finalizar você receber informações com seu TOKEN, que vamos utilizar em seguida.

Neste exemplo nosso token para acessar a API HTTP ficou:
757396508:AAHpaoyVN-95maOCax1vDPDQBnSaZd9P5r0

Agora que o token abra o menu Administração –> Tipos de mídias

Localize o Telegram e clique nele

Edite o ParseMode para HTML e Token para o token q você acabou de criar. Marque Process tags.

Neste momento que escrevo na própria descrição da mídia telegram ele recomenda você add o bot @myidbot para descobrir o seu ID, mas parace que este bot está “dormindo”. Vamos ao metodos tradicional. Você pode receber notificações direta do seu bot ou então adiciono-lo em um grupo.

Procure pelo seu bot e comece uma conversa com ele e envie uma mensagem de teste para o mesmo, pois vamos precisar descobrir o ID do seu usuário, para que ele possa lhe enviar as mensagens.

Abra em seu seu navegador a seguinte URL https://api.telegram.org/botTOKEN/getUpdates para descobrir o ID do usuário que enviou a mensagem ou de um grupo.
Ex.: https://api.telegram.org/bot757396508:AAHpaoyVN-95maOCax1vDPDQBnSaZd9P5r0/getUpdates

:: Chat privado ::

ID do chat privado: 999999999

Se desejar criar um grupo também, basta adicionar seu bot a ele, após adiciona-lo envia uma mensagem como /teste para que possamos coletar o ID do grupo.

:: Chat em Grupo ::

ID do chat grupo: -88888888888

Atenção para os grupos que sempre tem um sinal “-” na frente do ID.

Com o ID do grupo/usuário precisamos vincular ao usuário do Zabbix (Neste caso Admin)
AdministraçãoUsuários Clique no usuário Admin

Com as opções do usuário aberto clique na aba Mídia em seguita clique no Adicionar, selecione o Tipo Telegram e insira o em Enviar para o ID.

Atualize

Agora vamos criar a ação que fará o envios dos alertas.
ConfiguraçõesAçõesCriar ação

De um nome para sua ação
Em Condição clique em adicionar: Selecione Incidente suprimido e marque Não

Na aba Operações primeiro item Operações clique em adicionar

Enviar para usuário: Selecione o Admin
Enviar apenas para: Telegram
Marque Custom message, preencha com:
Assunto:

Mensagem

No item Operações de recuperação faremos praticamente o mesmo:

Assunto:

Mensagem padrão

No item Operações de atualização
Assunto:

Mensagem padrão

Operações configurada, clique em atualizar.

Pronto! Agora precisamos gerar um incidente para ver se nosso alerta será enviado para o Telegram.

O sistema de envio de mensagem está concluído! 🙂

Grafana 7

Pacotes necessários:

Vamos baixar a key do repositório e adiciona-lo

Atualize o repositório e instale o grafana

Antes de iniciar o grafana, se deseja alterar a porta padrão 3000 (recomendo) edite:

Localize http_port e defina a porta de sua escolha.

Exemplo:

Já instalamos também o plugin Zabbix com ferramenta grafana-cli:

É recomendado que mensalmente você faça atualizações dos plugins instalados, com o comando:

Agora sim colocamos o Grafana para iniciar junto com a inicialização, ativamos e inicializamos o serviço:

Acesse em seu navegador http://IP_URL:3000 ou pela porta que você alterou. O nome de usuário padrão é admin e a senha padrão é admin.

Ao fazer login pela primeira vez, você será solicitado a alterar sua senha.

Uhull 🙂

Integração do grafana com o Zabbix

Acesse o Configuration –> Plugins:

Localize o Zabbix e clique no mesmo

Agora ative clicando em Enable.

Volte em Configuration –> Data Sources

Clique em Add data source.

Uma nova tela com varias fontes, localize Zabbix e clique em Select

Nas opções HTTP em URL informe o endereço do seu servidor Zabbix http://IP_URL/zabbix/api_jsonrpc.php. Em Access selecione Browser. Em Zabbix API details informe seu usuário e senha do Zabbix e selecione a versão correspondente.

Role até o final e e clique em Save & Test Se tudo ocorreu bem uma altera positivo com“Zabbix API version: 5.x.x” aparecerá.

Você pode também pode fazer uma conexão MySQL (MariaDB) com o banco de dados do zabbix, para tornar as coisas mais rápidas. Para isso basta “Add data source” pesquisar por mysql, e informar os dados de conexões, provavelmente seu grafana esteja junto com seu zabbix, então basta informa nome do banco, usuário e senha.

Vá para as configurações do data source do zabbix, localize Direct DB Connection, ative-o e selecione MySQL.

Agora vem a parte mais “chata/legal” que é você montar seus gráficos, como isso é algo bem peculiar de cada um, o intuito aqui era ensinar instalar. Recomendo a leitura de Introdução ao Grafana-Zabbix do autor do plugin.

Simples né? Gostou e quer me ajudar? 🙂

Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!

Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato clique aqui.

Abraço!

Fontes:
https://www.zabbix.com/download
https://www.zabbix.com/documentation/
https://grafana.com/docs/grafana/latest/installation/debian/
https://grafana.com/grafana/plugins/alexanderzobnin-zabbix-app
https://alexanderzobnin.github.io/grafana-zabbix/configuration/
https://core.telegram.org/bots

Rudimar Remontti

Trabalho atualmente como Gerente de Redes em um Provedor de Internet no Rio Grande do Sul.

Você pode gostar...

29 Resultados

  1. Emerson disse:

    Belo tutorial, meus parabens tudo de bom para você.

  2. Magdiel disse:

    Primeiramente parabéns pelo seu tutorial, muito bem explicado e de facil implementação.

    Minha duvida é sobre o Telegram, ao configurar o Bot, e jogar o token na api, o erro que me retorna é {“ok”:false,”error_code”:401,”description”:”Unauthorized”}

    sabe como pode ser resolvido?

  3. Ronnei disse:

    Olá Rudmar!
    Primeiramente parabéns pelo blog.
    Fiz todo o passo a passo conforme o seu tutorial, só que, quando testo a mídia me aparece o seguinte erro : Falha no teste do tipo de mídia.
    SyntaxError: invalid object literal (line 1)….

  4. Ronaldo Pedrosa disse:

    Remontti, tuso bem… Estou com esse erro logo depois que vou criar a base de dados mariadb -u root -p.

    ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)

    sabe informar a solução ?

    Obs: Ja fiz a reinstalação 2x e mesmo assim quando chega nessa parte acontece esse erro e durante a instalação do Linux Debian tudo normal seguindo o passo a passo.

  5. James disse:

    Muito Obrigado, assim que sair dessa crise eu irei doar 😀

  6. Charles Iapp disse:

    Primeiramente, parabéns pelo trabalho impecável. Uso seu blog como referência pra tudo relacionado ao zabbix.
    Remontti, seguinte. Ao configurar a mensagem personalizada para envio de notificações via telegram, ando tendo um pouco de dor de cabeça, lhe ocorreu algum problema semelhante?
    O erro em questão é esse: Sending failed: Bad Request: can´t parse entities: Unsupported start tag “” at byte offset, e ele consta no dashboard, no status do envio.
    Limpei todos os possíveis carácteres especiais como , etc. Mas não vai.

    E aí, se apago toda a mensagem padrão disponibilizada por você e insiro apenas “teste” no corpo da msg, ai vai normalmente.

    Alguma dica?

  7. Ronaldo Pedrosa disse:

    Bom dia! Como consigo resolver esse erro >> Sending failed: Error: cannot get URL: Timeout was reached.

    Isso acontece quando não consegue enviar a msg para o Telegram, não sei se pode ser o numero de requisições que foi demais, tem como alterar alguma coisa ?

  8. Peterson Reimberg disse:

    Caso alguém esteja com erro no DPKG segue os comandos pra solução:

    export PATH=xxxxxxxxxxxxxxxxxxxxxxxx
    sudo export PATH=xxxxxxxxxxxxxxx

    • Peterson, fazendo isso (removi para ninguém fazer) você quebra com a segurança do servidor, no debian 10 vc precisa virar root com su – q vai incorporar isso q vc passou (q apaguei) rsrsr

      Existe diferença entre su e su –

      O novo ‘su’ (sem args, ou seja, ao preservar o ambiente) também preserva o PATH e o IFS, enquanto o antigo su sempre reiniciava o PATH e o IFS, mesmo no modo ‘preservar o ambiente’.
      su ” (string de usuário vazia) usada para dar root, mas agora retorna um erro.
      anteriormente su tinha apenas uma configuração pam, mas agora ‘su -‘ é configurado separadamente em /etc/pam.d/su-l
      A primeira diferença é provavelmente a mais visível do usuário. Fazer o ‘su’ simples é realmente uma má idéia por muitas razões, então é altamente recomendável usar ‘su -‘ para sempre obter um ambiente recém-configurado semelhante a um login normal. Se você quiser restaurar um comportamento mais semelhante ao anterior, você pode adicionar ‘ALWAYS_SET_PATH yes’ em /etc/login.defs.

      Fonte: https://sources.debian.org/src/util-linux/2.33.1-0.1/debian/util-linux.NEWS/

  9. Ed Gilson disse:

    segui o tutorial e funcionou perfeitamente, Parabens, porem não estou conseguinto acessar o grafana fora da minha rede, faço redirecionamento do ip xxx.xxx.xxx.xxx: 45000 para o ip do grafana:3000 o mesmo carrega faz login porem nos grafico fica failed to fetch e não abre os graficos mas no zabbix funciona normalmente o acesso redirecionado, alguem ja passou por isso?

  10. Ronaldo Pedrosa disse:

    Bom dia! Rudimar não estou conseguindo resolver esse problema o que faço nesse caso tenho que mudar minha /etc/apt/sources.list

    Problema:

    root@zbxpiernet:/home/piernet# apt-get install snmp-mibs-downloader
    Lendo listas de pacotes… Pronto
    Construindo árvore de dependências
    Lendo informação de estado… Pronto
    O pacote snmp-mibs-downloader não está disponível, mas é referenciado por outro pacote.
    Isto pode significar que o pacote está faltando, ficou obsoleto ou
    está disponível somente a partir de outra fonte

    E: O pacote ‘snmp-mibs-downloader’ não tem candidato para instalação

  11. Ronaldo Pedrosa disse:

    Parabéns pelo material muito bem explicado…

    Uma duvida depois que finalizado precisa instalar algum pacote de MIBs no Servidor Zabbix ?

  12. Diego disse:

    Acompanho o site a muito tempo, parabéns e muito obrigado por compartilhar conhecimento.

  13. Alisson disse:

    Seria legal um tutorial, com instalação com banco de dados separado do zabbix

  14. Roberto disse:

    muito bom seu tutorial!!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *