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.

Por segurança recomendo remover a assinatura do servidor, evitando os “espertinhos”

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:

Localize em [plugins] ;allow_loading_unsigned_plugins descomente removendo o “;” e adicionando:


Caso contrário o plugin de integração com o zabbix não irá funcionar.

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...

44 Resultados

  1. Ricardo Souza disse:

    Rudimar, depois de um tempo meu zabbix ficou extremamente lento e recebo vários alertas de LLD, hausekkeper, cache entre outros, em determinada situação o zabbix parou mesmo literalmente, aí fiz uns ajustes no zabbix_server.conf porém alguns alertas continuam e o frontend extremamente lento.

  2. Mateus disse:

    Boa noite, estou com o seguinte problema quando acesso pelo IP para finalizar a instalação

    Details Cannot connect to the database.

    Unable to determine current Zabbix database version: the table “dbversion” was not found.

    OBS: na hora da instalação eu utilizei mysql -u root -p, inves de utilizar o mariadb -u root -p, pois no mariadb estava pedindo uma senha e quando eu colocava não funcionava

    e também utilizei o zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p zabbix

  3. ARI EDUARDO FERREIRA RICARDO disse:

    Boa tarde!
    Ocorreu esse erro ao tentar acesso ao mysql.

    # mariadb -u root -p
    Enter password:
    ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)

    Refiz todos os passo até aí. Refiz a instalação do SO (DEbian 10), porém o erro é o mesmo.
    Oque pode estar ocorrendo?

    Grato.

  4. Ricardo Souza disse:

    Bom dia, quando vou importar as tabelas iniciais do arquivo create.sql.gz ele demora e não conclui o processo, esperei mais de 20 min e nada, sabem me falar o que possa ter feito errado ?

  5. JOABE SANTOS disse:

    Tutorial perfeito! Só me restou uma dúvida quanto ao disparo de mensagens pelo telegram, se teria algum tipo de filtro para só enviar notificações sobre incidentes de determinados hosts. E outra, quero saber quando que você vai fazer um tutorial bem completo sobre a integração do monitoramento do Downdetector ao Grafana?

  6. Gabriel Rezende disse:

    top demaaais esse tutorial, valeu mesmo

  7. Jonathan disse:

    Tutorial top d+! PARABÉNS!

  8. Fábio disse:

    Remontti, como vc vê o sizing dos servers para o Zabbix em Provedor? Estou dando os primeiros passos, porém gosto de analisar bem antes de por a mão na massa (principalmente para colocar em produção). vi alumas documentações que exploram a configuração do Database (server1) + Aplicação (server2) + Graficos (server3)… e se tiver em Cloud, colocar um Proxy no local… em contrapartida vi Appliances prontos em VPS’s e em Cloud’s por aí… qual sua ótica em relação a esses cenários? Desde já grato.

  9. Mauricio disse:

    no meu caso o zabbix apareceu em Plugins e habilitei mais em Add data source ele não apareceu, ja limpei o cookies do navegador limpei o historico e troquei de navegador mais nada, todos apresentam o mesmo problema.

    • Gustavo disse:

      Mauricio, tive o mesmo problema. Achei a solução no Github do plugin.

      Installation
      Prerequisites: plugin requires Grafana 7.0 to run.

      Use the grafana-cli tool to install Zabbix from the commandline:

      grafana-cli plugins install alexanderzobnin-zabbix-app
      Unsigned plugins are not loading by default, so allow it in the Grafana config file:
      allow_loading_unsigned_plugins = alexanderzobnin-zabbix-datasource
      restart Grafana server
      Refer to allow_loading_unsigned_plugins option description for more information.

      Tive que adicionar na config do arquivo do Zabbix a informação acima, espero que te ajude.

      Abraços.

      PS: Rudimar você sempre faz ótimos tutoriais como sempre, muito obrigado por compartilhar conhecimento.

    • eduardo disse:

      aconteceu comigo tambem

  10. Emerson disse:

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

  11. 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?

  12. 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)….

  13. 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.

  14. James disse:

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

  15. 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?

  16. 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 ?

  17. 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/

  18. 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?

  19. 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

  20. Ronaldo Pedrosa disse:

    Parabéns pelo material muito bem explicado…

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

  21. Diego disse:

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

  22. Alisson disse:

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

  23. 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 *