Instalação do Zabbix com Grafana e Telegram (Debian 11)

Criada por Danilo Tomich, Modificado em Mon, 05 Sep 2022 na (o) 05:01 PM por Danilo Tomich

Kit de Primeiro socorros!

Zabbix


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.


Requisitos:

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


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

Debian 11 


wget https://repo.zabbix.com/zabbix/5.0/debian/pool/main/z/zabbix-release/zabbix-release_5.0-1+bullseye_all.deb
dpkg -i zabbix-release_5.0-1+bullseye_all.deb


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

apt update ; apt upgrade
apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-agent


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/ 

mariadb -u root -p


Senha

create database zabbix character set utf8 collate utf8_bin;
create user zabbix@localhost identified by 'SUA_SENHA';
grant all privileges on zabbix.* to zabbix@localhost;
quit;



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

zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mariadb -uzabbix -p zabbix


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.

nano /etc/zabbix/zabbix_server.conf


Procure por # DBPassword= descomente e sete sua senha. 


#...
DBPassword=SUA_SENHA
#...

Ajuste o timezone pela sua região. 


nano /etc/zabbix/apache.conf


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

        php_value memory_limit 512M
        php_value post_max_size 48M
        php_value upload_max_filesize 24M
        
        php_value date.timezone America/Sao_Paulo



# Define /zabbix alias, this is the default
<IfModule mod_alias.c>
    Alias /zabbix /usr/share/zabbix
</IfModule>
 
<Directory "/usr/share/zabbix">
    Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
 
  #  <IfModule mod_php5.c>
  #     php_value max_execution_time 300
  #      php_value memory_limit 128M
  #      php_value post_max_size 16M
  #      php_value upload_max_filesize 2M
  #      php_value max_input_time 300
  #      php_value max_input_vars 10000
  #      php_value always_populate_raw_post_data -1
  #      # php_value date.timezone Europe/Rig
  #  </IfModule>
    <IfModule mod_php7.c>
        php_value max_execution_time 300
        php_value memory_limit 512M
        php_value post_max_size 48M
        php_value upload_max_filesize 24M
        php_value max_input_time 300
        php_value max_input_vars 10000
        php_value always_populate_raw_post_data -1
        php_value date.timezone America/Sao_Paulo
    </IfModule>
</Directory>
 
<Directory "/usr/share/zabbix/conf">
    Order deny,allow
    Deny from all
    <files *.php>
        Order deny,allow
        Deny from all
    </files>
</Directory>
 
<Directory "/usr/share/zabbix/app">
    Order deny,allow
    Deny from all
    <files *.php>
        Order deny,allow
        Deny from all
    </files>
</Directory>
 
<Directory "/usr/share/zabbix/include">
    Order deny,allow
    Deny from all
    <files *.php>
        Order deny,allow
        Deny from all
    </files>
</Directory>
 
<Directory "/usr/share/zabbix/local">
    Order deny,allow
    Deny from all
    <files *.php>
        Order deny,allow
        Deny from all
    </files>
</Directory>



Se você quiser um modelo para acessa-lo por ex: zabbix.tomich.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 abaixo, 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: 


mv /etc/zabbix/apache.conf /etc/zabbix/apache.conf.default
nano /etc/zabbix/apache.conf


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


<VirtualHost *:80>
        ServerName zabbix.tomich.com.br
        ServerAlias localhost
        ServerAdmin noc@tomich.com.br
        DocumentRoot /usr/share/zabbix
        ErrorDocument 403 http://www.tomich.com.br
        <Directory "/usr/share/zabbix">
            Options FollowSymLinks
            AllowOverride all
            Require ip 127.0.0.1 ::1 200.200.200.0/26 2001:db8::/32 192.168.0.0/16
 
            <IfModule mod_php7.c>
                php_value max_execution_time 300
                php_value memory_limit 512M
                php_value post_max_size 48M
                php_value upload_max_filesize 24M
                php_value max_input_time 300
                php_value max_input_vars 10000
                php_value always_populate_raw_post_data -1
                php_value date.timezone America/Sao_Paulo
            </IfModule>
        </Directory>
 
        <Directory "/usr/share/zabbix/conf">
            Order deny,allow
            Deny from all
            <files *.php>
                Order deny,allow
                Deny from all
            </files>
        </Directory>
 
        <Directory "/usr/share/zabbix/app">
            Order deny,allow
            Deny from all
            <files *.php>
                Order deny,allow
                Deny from all
            </files>
        </Directory>
 
        <Directory "/usr/share/zabbix/include">
            Order deny,allow
            Deny from all
            <files *.php>
                Order deny,allow
                Deny from all
            </files>
        </Directory>
 
        <Directory "/usr/share/zabbix/local">
            Order deny,allow
            Deny from all
            <files *.php>
                Order deny,allow
                Deny from all
            </files>
        </Directory>
 
        LogLevel warn
 
        ErrorLog ${APACHE_LOG_DIR}/zabbix_error.log
        CustomLog ${APACHE_LOG_DIR}/zabbix_access.log combined
</VirtualHost>

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


sed -i 's/ServerTokens OS/ServerTokens Prod/' /etc/apache2/conf-available/security.conf
sed -i 's/ServerSignature On/ServerSignature Off/' /etc/apache2/conf-available/security.conf


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


systemctl enable zabbix-server zabbix-agent
systemctl restart zabbix-server zabbix-agent apache2


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


Finish


Entre com Usuário Admin e senha zabbix 


Bingo!


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



Possível bug na instalação 

Caso se deparar com essa tela não se assuste, faça o seguinte: 


touch /etc/zabbix/web/zabbix.conf.php
chown www-data. /etc/zabbix/web/zabbix.conf.php


De um [Back] depois [Next] q é sucesso!




Grafana 7




Pacotes necessários: 

apt install gnupg2 apt-transport-https software-properties-common


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

wget -q -O - https://packages.grafana.com/gpg.key | apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | tee -a /etc/apt/sources.list.d/grafana.list


Atualize o repositório e instale o grafana 

apt update
apt install grafana



OBS Julho/2021:
O grafana que está sendo instalado é a versão 8, o mesmo ate essa data está passando por um bug com o plugin do Zabbix, caso ainda tenha bug:


Solução fazer downgrade para última versão 7: 


nano /etc/apt/sources.list.d/grafana.list


Comente a linha do repositório (quando o bug for corrigido você pode descomenta-la para fazer o upgrade para versão 8). 

deb https://packages.grafana.com/oss/deb stable main


apt update
cd /tmp/
wget https://dl.grafana.com/oss/release/grafana_7.5.9_amd64.deb
apt install ./grafana_7.5.9_amd64.deb
grafana-cli plugins update-all
systemctl restart grafana-server


Continue aqui!

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

nano  /etc/grafana/grafana.ini


Localize http_port e defina a porta de sua escolha. 

# The http port  to use
;http_port = 3000


Exemplo: 

http_port = 53000


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

allow_loading_unsigned_plugins = alexanderzobnin-zabbix-datasource


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:

grafana-cli plugins install alexanderzobnin-zabbix-app

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


systemctl daemon-reload
systemctl enable grafana-server
systemctl start grafana-server

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.

OU

http://zabbix.tomich.com.br/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 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!

Bônus – Proxy grafana


Vou no DNS Autoritativo e vou apontar um nome para o IP do Grafana

nano /var/cache/bind/master-aut/tomich.com.br/tomich.com.br.hosts


grafana                 A       179.48.68.98


Depois volto no servidor e adiciono esses comandos

1
2
3
4
5
a2enmod rewrite
a2enmod headers
a2enmod proxy
a2enmod proxy_http
mkdir /var/www/grafana
1
nano /etc/apache2/sites-available/grafana.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<VirtualHost *:80>
    Protocols h2 http/1.1
    ServerName grafana.tomich.com.br
    ServerAdmin noc@tomich.com.br
    DocumentRoot /var/www/grafana
 
    ErrorDocument 403 http://www.tomich.com.br
 
    <Directory /var/www/grafana/>
        Options Indexes FollowSymLinks
        AllowOverride all
        Require ip 127.0.0.1 ::1 200.200.200.0/26 2001:db8:cafe::/48
    </Directory>
 
    LogLevel warn
 
    ProxyPreserveHost On
    ProxyPass / http://localhost:53000/
    ProxyPassReverse / http://localhost:53000/
 
    ErrorLog ${APACHE_LOG_DIR}/grafana_error.log
    CustomLog ${APACHE_LOG_DIR}/grafana_access.log combined
    TransferLog ${APACHE_LOG_DIR}/grafana_access.log
 
</VirtualHost>
1
2
a2ensite grafana
systemctl restart apache2


sref



 


 


Este artigo foi útil?

Que bom!

Obrigado pelo seu feedback

Desculpe! Não conseguimos ajudar você

Obrigado pelo seu feedback

Deixe-nos saber como podemos melhorar este artigo!

Selecione pelo menos um dos motivos

Feedback enviado

Agradecemos seu esforço e tentaremos corrigir o artigo