Zabbix Server 4.4 + Azure – Debian 10 (IaaS) e MariaDB (PaaS)

Fala Galera!

Dando continuidade ao post anterior Configurando Zabbix Proxy 4.4 com Raspberry PI 3 vamos agora dar início a configuração de nosso Zabbix Server na infraestrutura de cloud da Azure.

Para aqueles que não conhecem, o Zabbix é uma ferramenta de monitoramento de código aberto e pode ser utilizada para monitorar toda sua infraestrutura de rede, além de aplicações.

O Zabbix oferece uma interface Web para administração e exibição de dados. Os alertas do sistema de monitoramento podem ser configurados para utilizar vários métodos de comunicação, como SMS, e-mail, jabber, telegram entre outros.

O Zabbix permite o monitoramento:

  • Via Agente disponíveis para Linux, Solaris, HP-UX, AIX, FreeBSD, OpenBSD, OS X, Tru64/OSF1, Windows.
  • Via SNMP com suporte nativo ao protocolo.
  • Auto Discovery
  • Low Level Discovery       

Além de scripts personalizados onde você pode fazer praticamente tudo que imaginar!

Bom, não quero me estender muito nas funcionalidades do Zabbix pois são muitas!

Vou deixar o link da página oficial para que você conheça mais sobre a ferramenta: http://www.zabbix.com/features.php e http://www.zabbix.com/whats_new.php.

Agora vamos ao nosso projeto!

Todo projeto deve ter uma motivação, e em nosso caso são:

  • Diminuir custos com infraestrutura (Servidores, Nobreaks, Switches, Energia, Refrigeração).
  • Diminuir custos operacionais (Implantação, manutenção e suporte).

Na grande maioria dos cenários o serviço de monitoramento tem como premissa monitorar a infraestrutura local, então a pergunta principal é: porque leva-la para longe da rede local?

A resposta está no primeiro parágrafo, motivação! Por isso devemos definir muito bem os escopos de nosso projeto.

Nunca, e em hipótese alguma, saia levando suas aplicações para a nuvem, sem antes montar um bom projeto.

Se fizer isso, creio que estará fadado a grandes dores de cabeça!

Eu não vou entrar em detalhes sobre Design de projetos, pois ainda quero escrever um artigo sobre.

Seguindo com nosso propósito, vamos levar nosso Zabbix Server para a nuvem da Azure, e até aí tudo bem.

Agora, como vamos monitorar nossa rede interna, nossos ranges de IPs não roteáveis, serviços de integridade confidencial entre outros dispositivos?

Como será a comunicação entre Zabbix Server e nossa rede interna? Cloud x On Premise.

Ponto importante: daqui para a frente, vou assumir que você tenha pelo menos um IP Público configurado na WAN de seu serviço de internet, pois caso você receba somente IPs com NAT ou CGNAT em sua WAN, não será possível realizar a projeto da forma correta.

PS: Claro que existe maneiras de contornar esta situação de IP Público, mas não é o intuito deste tutorial!

Temos várias possibilidades em realizar a comunicação de ambas as redes, uma delas seria fazer uma simples VPN com a Azure e mandar seu Zabbix coletar as informações.

Mas neste cenários, temos um problema, mesmo que você esteja com seu grupo de recursos aqui no Data Center do Brasil, você terá um grande problema de performance de seu servidor, uma vez que ele irá a todo momento realizar coletas via túnel criptografado, mesmo que você esteja em São Paulo, e sua latência com o data center da Azure seja boa, nunca será menor que da sua rede local.

E é por isso que vamos adotar um Zabbix Proxy dentro da nossa estrutura local, igual ao que configuramos no tutorial Configurando Zabbix Proxy 4.4 com Raspberry PI 3.

Utilizando desta infraestrutura, teremos o Proxy coletando todas informações dentro da rede local, e enviando os dados para nosso Zabbix Server (Cloud) com as métricas reais de nossa rede local.

Além de resolver o problema de latência e performance de nosso servidor, o Zabbix Proxy vai nos possibilitar a fazer a conexão com nosso Zabbix Server sem a utilização de uma VPN.

Também será possível alocar nosso grupo de recurso fora do país. Gerando uma grande economia em nosso custo mensal.

Sem mais, vamos nessa!!!


Vamos começar provisionando nosso Azure Database for MariaDB (PaaS).

E porque um Banco de dados PaaS?

PaaS — Platform as a Service: facilita a implementação, pois reduz o custo, a complexidade de instalação e de gerenciamento de requisitos de hardware e software.

Neste modelo a Azure irá cuidar de todo o hardware e software para nós, facilitando nossa vida e diminuindo nossas responsabilidades.

Lembra de nossa motivação?

“Diminuir custos com operacional (Implantação, manutenção e suporte).”

Conheça um pouco mais do modelo PaaS: https://azure.microsoft.com/pt-br/overview/what-is-paas/

E aqui vai uma dica importante para você que quer começar a migrar seus serviços para a nuvem. Não vá para a nuvem com mentalidade de on premise.

Você deve ir para nuvem não só pela economia financeira, mas também pela praticidade operacional que ela lhe oferece.

Não faz muito sentido sair de sua rede on premise, ir para a nuvem, subir uma máquina virtual (IaaS) e continuar trabalhando da mesma maneira que antes.

Só de ir para nuvem, é obvio que você terá benefícios, mas desta maneira estará deixando de usufruir vários benefícios da computação em nuvem.

1.1 Provisionando Azure Database for MariaDB

Vá ao portal do Azure e pesquise por “Azure Database for MariaDB” em seguida clique em Create.

Preencha os detalhes básicos necessários para o serviço.

  • Subscription: o nome da assinatura que você está usando neste laboratório
  • Resource group: crie um novo resource group az-zabbix-RG
  • Server name: az-zabbix-db
  • Data Source: None
  • Admin username: zabbixadmin
  • Password: Jn77a.zb1234
  • Location: (US) East US
  • Version: 10.3
  • Compute + Storage: General Purpose 2 vCores, 60 GB storage

A configuração do seu banco fica a seu critério, o único ponto de atenção é manter a versão General Purpose, a versão Basic é mais barata, mas não é possível fazer a configuração de endpoints para ela.

Em seguida, clique em Review + create e depois create.

2.1 Debian 10 “Buster”

Vá ao portal do Azure e pesquise por “Debian 10 Buster ” em seguida clique em Create.

Preencha os detalhes básicos necessários para o serviço.

2.2 Basic

  • Subscription: o nome da assinatura que você está usando neste laboratório
  • Resource group: utilize o mesmo resource group criado anteriormente az-zabbix-RG
  • Virtual machine name: az-zabbix-vm
  • Region: (US) East US
  • Availability options: No infrastructure redundancy required
  • Image: Debian 10 “Buster”with backports kernel
  • Azure Spot instance: No
  • Size: Standard D2 v3 2 vcpus, 8 GiB memory
  • Authentication type: Password
  • Username: zabbixadmin
  • Password: Jn77a.zb1234
  • Public inbound ports: Allow selected ports

2.3 Disks

  • Os disk type: Standard HDD

Clique em Next

2.4 Networking

Em Virtual Network, clique em create new e crie um nova rede virtual

  • Virtual network: az-zabbix-RG-vnet
  • Address range: 10.0.0.0/16
  • Subnet name: subnet0
  • Address range: 10.0.0.0/24

Click em OK e em seguida preencha o restante das informações.

  • Public IP: az-zabbix-vm-ip
  • NIC network security group: Basic
  • Public inbound ports: Allow selected ports

Em seguida, clique em Review + create e depois create.

Pronto, agora é só esperar alguns minutos para o deploy de ambos os serviços.

3.1 Configurando Services Endpoints

Agora vamos criar em nossa VNET o endpoint para os serviços de SQL, assim poderemos associá lo ao nosso banco de dados e criar nosso private link e zonas de DNS privado.

Vá ao portal do Azure, acesse seu resource group az-zabbix-RG e entre nas configurações da VNET az-zabbix-RG-vnet.

Clique em Service endpoints, add e configure o serviço.

  • Service: Microsoft.Sql
  • Subnets: subnet0

Clique em add.

4.1 Configurando VNET com Banco de Dados MariaDB

Agora vamos configurar a conectividade de nossa rede privada com nosso banco de dados.

Ainda no resource group az-zabbix-RG acesse o banco de dados az-zabbix-db e vá na opção Connection security.

Em VNET rules clique em + Adding existing virtual network e configure o serviço.

  • Name: az-zabbix-vnet
  • Subscription: o nome da assinatura que você está usando neste laboratório
  • Virtual network: az-zabbix-RG-vnet
  • Subnet name: subnet0 / 10.0.0.0/24

Clique em OK.

5.1 Configurando Private Link e Endpoints

Agora vamos criar nosso link e zonas de DNS privado entre nossa maquina virtual e nosso banco de dados, e para isso utilizaremos o Private Link.

Com sua maquina virtual e banco de dados criados, vá ao portal da Azure, e pesquise por “Private Link ” em seguida clique em Create.

Escolha a opção Build a private connection to a service e click em start.

Preencha os detalhes básicos necessários para o serviço.

5.2 – Basics

  • Subscription: o nome da assinatura que você está usando neste laboratório
  • Resource group: utilize o mesmo resource group criado anteriormente az-zabbix-RG
  • Name: az-zabbix
  • Region: (US) East US

Clique em next.

5.3 Resource

  • Connection method: Connect to an Azure resource in my directory.
  • Subscription: o nome da assinatura que você está usando neste laboratório
  • Resource type: Microsoft.DBforMariaDB/servers
  • Name: az-zabbix-db
  • Target sub-resource: mariadbServer

Clique em next.

5.4 Configuration

  • Virtual network: az-zabbix-RG-vnet
  • Subnet: subnet0 (10.0.0.0/24)
  • Integrate with private DNS zone: Yes
  • Private DNS Zone: privatelink.mariadb.database.azure.com

Em seguida, clique em Review + create e depois create.

6.1 Configurando Regras de Firewall do Banco de Dados

Vamos liberar os IPs de acesso de nossa máquina virtual em nosso banco de dados.

Em resource group az-zabbix-RG acesse o banco de dados az-zabbix-db e vá na opção Connection security. Em Rule libere os IPs de sua máquina virtual.

Você pode conferir os IPs de sua máquina virtual, acessando o resource group az-zabbix-RG, az-zabbix-vm e em Overview você tem as informações de IP público e privado.

Pronto, criamos todo nosso ambiente na Azure, agora vamos para a configuração do Zabbix Server e do Banco de Dados.

7.1 Configurando o Zabbix Server

Já de conhecimento do IP público configurado em sua máquina virtual (anotamos no 6.1), vamos fazer o acesso via ssh para iniciar as configurações.

Você pode acessar usando o PuTTy: faça o download

  • Username: zabbixadmin
  • Password: Jn77a.zb1234

Mude para super administrador (root) utilizando a mesma senha de seu usuário.

sudo su

7.2 Adicionando repositórios

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

Versão 4.4

wget https://repo.zabbix.com/zabbix/4.4/debian/pool/main/z/zabbix-release/zabbix-release_4.4-1+buster_all.deb
dpkg -i zabbix-release_4.4-1+buster_all.deb

7.3 Atualizando o repositório e realizando a instalação

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

8.1 Desativando certificado SSL para acesso ao Banco de Dados

Na próxima etapa, será necessário desabilitar o suporte ao SSL em nosso banco de dados da Azure. Atualmente o Zabbix, não tem suporte para usar o SSL para a conexão com o banco de dados.

O certificado é importante para implantações na nuvem, pois alguns dados registrados (particularmente mensagens de registro) podem conter informações confidenciais.

Mas como nossa topologia está toda na Azure, Banco de Dados e Aplicação, ainda estamos tranquilos quanto a segurança dos dados.

Pesquisando um pouco vi que o setor de desenvolvimento está prometendo suporte nativo para conexões criptografadas no Zabbix 5.0, e estará disponível tanto para MySQL quanto para PostgreSQL.

Assim será possível aplicar mais esta camada de segurança.

Vá ao portal do Azure em resource group az-zabbix-RG acesse o banco de dados az-zabbix-db e vá na opção Connection security, em SSL Setings, Enforce SSL connection clique em DISABLE e salve.

9.1 Banco de Dados MariaDB

Vamos criar a base de dados chamada zabbixdb e usuário e zabbix no MariaDB.

Faça o acesso ao banco de dados:

mariadb --host az-zabbix-db.mariadb.database.azure.com --database zabbixdb --user zabbixadmin -p 
CREATE DATABASE zabbixdb;
CREATE USER 'zabbix'@'%' IDENTIFIED BY 'Jn77a.zb1234';
GRANT ALL PRIVILEGES ON zabbixdb . * TO 'zabbix'@'%';
FLUSH PRIVILEGES;
EXIT;

9.2 Importando a base de dados do Zabbix

Vamos importar a base de dados inicial do zabbix.

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mariadb --host az-zabbix-db.mariadb.database.azure.com --database zabbixdb --user zabbixadmin -p 

9.3 Configurando o Zabbix Server

Vamos editar o arquivo zabbix_server.conf para informar os dados para conexão com o MariaDB.

vim /etc/zabbix/zabbix_server.conf

Altere os seguintes dados:

DBHost=az-zabbix-db.mariadb.database.azure.com
DBName=zabbixdb
DBUser=zabbix
DBPassword=Jn77a.zb1234

9.4 Configurando o PHP para o Zabbix

Edite o arquivo /etc/zabbix/apache.conf descomente e adicione o timezone correto.

 vim /etc/zabbix/apache.conf
php_value date.timezone America/Sao_Paulo

Após a alteração reinicie o apache.

systemctl restart apache2

9.5  Iniciando o Zabbix Server e Agente junto com a inicialização do sistema.

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

10.1 Liberando acessos no Network Security Group da Azure

Vá até o portal da Azure, acesse o resorce group az-zabbix-RG, Network security group az-zabbix-vm-nsg.

Em Inbound security rules clique em add e adicione duas regras. Uma liberando a porta 80 e outra para a comunicação de nosso Zabbix Proxy na porta 10051.

11.1 Configurando o frontend do Zabbix

Agora no seu navegador, abra a URL do servidor Zabbix: http://<server_ip_or_name>/zabbix

Certifique-se de que todos os pré-requisitos de software sejam atendidos.

Digite as informações para se conectar ao banco de dados.

  • Database host: az-zabbix-db.mariadb.database.azure.com
  • Database name: zabbixdb
  • User: zabbix
  • Password: Jn77a.zb1234

Digite os detalhes do servidor Zabbix.

Revise o resumo das configurações.

Termine a instalação.

Logue com Admin e senha zabbix

Instalação finalizada!

Bom, agora é só fazer a configuração do Zabbix Proxy em nosso Zabbix Server on Azure e começar a cadastrar os Hosts a serem monitorados.

Não vou entrar em detalhes sobre a configuração do Zabbix Proxy pois já foi descrita no tutorial Configurando Zabbix Proxy 4.4 com Raspberry PI 3 é só entrar lá e realizar o passo a passo.

Em breve estarei escrevendo um artigo com todos os detalhes do projeto, custos da rede on premise, custos da rede cloud, escolha dos serviços, desempenho, vantagens, desvantagens. Enfim, tudo que você precisa saber se valeu a pena ou não!

Espero que gostem, qualquer dúvida só postar nos comentários!

Forte abraço!

Deixe uma resposta

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