Introdução – Zabbix ha Cluster! Parte 1 Banco de Dados
Neste artigo, exploraremos a implementação de um ambiente Zabbix Cluster de alta disponibilidade (ha), proporcionando maior robustez e confiabilidade ao seu sistema de monitoramento. A alta disponibilidade é essencial para garantir que seu ambiente de monitoramento permaneça operacional mesmo em situações adversas. Acompanhe este guia passo a passo para criar um cluster Zabbix resiliente e eficiente. Vamos executar a instalação do Zabbix 6.0 LTS neste artigo, pois é a versão estável no momento em que estou escrevendo este tutorial, mas, vamos fazer o upgrade para o Zabbix 7 na sequencia dessa jornada.
Se você busca aprimorar seus conhecimentos, não deixe de conferir os vídeos detalhados em nosso canal no Youtube, @RunbookBR. Lá, você encontrará informações valiosas para impulsionar suas habilidades no universo do Zabbix.
Agora, vamos mergulhar na construção de um ambiente de alta disponibilidade que garantirá a continuidade e a eficácia do seu monitoramento Zabbix. Fique conosco até o final e aproveite o conhecimento compartilhado.
Apresentação da Topologia para o Cluster Zabbix de Alta Disponibilidade
Imagine o seguinte cenário: um ambiente robusto e eficiente, pronto para elevar sua experiência com o Zabbix. Em nossa topologia, delineamos a arquitetura de um cluster Zabbix de alta disponibilidade.
Visualize dois servidores de aplicação e front end, operando em redundância (HA1 e HA2), e um terceiro servidor dedicado ao banco de dados. A cereja do bolo é o IP VIP do cluster Apache, proporcionando acesso seguro por HTTPS, com a conexão ao banco de dados criptografada. Este é o alicerce para um monitoramento resiliente e de alto desempenho. Explore cada detalhe conosco e prepare-se para transformar seu ambiente de monitoramento Zabbix.
Atualizando os Pacotes do Ubuntu 22.04
Antes de mergulharmos no universo do Zabbix, garantimos que nosso ambiente esteja atualizado. Executamos o apt update
e apt upgrade
para assegurar que todos os pacotes do Ubuntu 22.04 estejam na versão mais recente. Esse passo fundamental proporciona uma base sólida para a implantação do Zabbix, garantindo que estejamos utilizando as últimas atualizações de segurança e melhorias. Prepare-se para a jornada, mantendo seu sistema operacional em dia.
apt update && apt upgrade -y
Instalando os Pacotes do MariaDB Server e MariaDB Client
Com a base preparada, avançamos para a instalação do MariaDB, escolhido como o servidor de banco de dados para nosso ambiente Zabbix. Utilizando o comando apt install mariadb-server mariadb-client
, garantimos a presença desses componentes essenciais. O MariaDB, um fork do MySQL, é a escolha robusta para suportar a estrutura do Zabbix. Essa etapa é crucial para estabelecer os alicerces do banco de dados que armazenará as informações vitais para nosso sistema de monitoramento
apt install mariadb-server mariadb-client
Aumentando a Segurança do MariaDB Server
A segurança do MariaDB é crucial para proteger nossos dados. Executamos o comando mysql_secure_installation
, um assistente interativo que nos guia por diferentes medidas de segurança. Primeiramente, podemos configurar uma senha segura para o usuário root do MariaDB, restringindo o acesso não autorizado.
O assistente também oferece a opção de remover usuários anônimos, desativar o login remoto do root e excluir o banco de dados de teste padrão, minimizando potenciais vulnerabilidades.
Outra medida de segurança importante é desabilitar o login de root remoto, prevenindo acessos indesejados. Essas práticas são essenciais para criar uma infraestrutura robusta e resistente a ameaças, garantindo a integridade de nosso ambiente Zabbix.
root@db:~# mysql_secure_installation
NOTA: É recomendável executar todas as partes deste script para TODOS os servidores MariaDB em uso de produção! LEIA CADA PASSO COM ATENÇÃO!
Se voce não definiu uma senha de root, basta dar entender aqui
Enter current password for root (enter for none):
OK, successfully used password, moving on…
Definir a senha root ou usar o unix_socket garante que ninguém pode fazer login no usuário root do MariaDB sem a devida autorização.
Switch to unix_socket authentication [Y/n] Y
Enabled successfully!
Reloading privilege tables..
… Success!
Caso você tenha habilitado o unix_socket_auth, o MySQL te chamará atenção para o fato de você já ter habilitado a segurança do root e te recomendará não alterar a senha de root. Eu particularmente prefiro alterar a senha de root do banco de dados, independente da habilitação ou não do passo anterior.
Change the root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
… Success!
Por padrão, uma instalação do MariaDB possui um usuário anônimo, permitindo que qualquer pessoa faça login no MariaDB sem ter que ter uma conta de usuário criada para eles.
Remova os usuários anônimos
Remove anonymous users? [Y/n] Y
… Success!
Normalmente, apenas o root deve ser permitido conectar-se de ‘localhost’. Isso garante que ninguém tente adivinhar a senha root da rede.
Disallow root login remotely? [Y/n] Y
… Success!
Por padrão, o MariaDB vem com um banco de dados chamado ‘test’ que qualquer pessoa pode acessar. Isso também é destinado apenas para testes e deve ser removido antes de mover para um ambiente de produção.
Remove test database and access to it? [Y/n] Y
Dropping test database…
… Success!
Removing privileges on test database…
… Success!
Por fim, o reload das tabelas de privilégios garantirá que todas as alterações feitas até agora entrem em vigor imediatamente.
Reload privilege tables now? [Y/n] y
… Sucess!
Cleaning up…
Tudo pronto! Se você concluiu todas as etapas acima, sua instalação MariaDB deve estar agora segura.
Habilitando a Criptografia TLS no MariaDB Server
Adicionar uma camada de criptografia TLS ao MariaDB Server é fundamental para garantir a confidencialidade e integridade dos dados. Aqui estão os passos para habilitar essa proteção.
Instalação do OpenSSL:
sudo apt install openssl
Geração de Chaves Criptográficas:
sudo openssl req -newkey rsa:2048 -nodes -keyout /etc/ssl/private/Server.key -x509 -days 36500 -out /etc/ssl/private/Server.crt
Esse comando cria um par de chaves RSA com uma validade de 36500 dias. Preencha as informações solicitadas, garantindo que os certificados atendam aos requisitos de segurança.
Você será solicitado a inserir informações que serão incorporadas à sua solicitação de certificado.
Country Name (2 letter code) [AU]:BR
State or Province Name (full name) [Some-State]:RJ
Locality Name (eg, city):RJ
Organization Name:RunbookBR
Organizational Unit Name (eg, section):TI
Common Name (e.g. Server FQDN or YOUR name):db
Email Address []:[email protected]
Atribuição de Permissões:
chown -R mysql:mysql /etc/ssl
chmod 600 /etc/ssl/private/Server.*
Configuração no Arquivo de MariaDB:
Adicione as seguintes linhas ao arquivo de configuração do MariaDB (geralmente /etc/mysql/mariadb.conf.d/50-server.cnf
)
root@Ubuntu22:~# vi /etc/mysql/mariadb.conf.d/50-Server.cnf
[mysqld]
ssl-ca=/etc/ssl/certs/ca-certificates.crt
ssl-cert=/etc/ssl/private/Server.crt
ssl-key=/etc/ssl/private/Server.key
Reinicie o Serviço MariaDB e valide os Logs:
root@Ubuntu22:~# systemctl restart mariadb.service
root@Ubuntu22:~# systemctl status mariadb.service
root@Ubuntu22:~# cat /var/log/syslog
Ao seguir esses passos, fortalecemos a segurança da comunicação entre o MariaDB Server e os clientes, promovendo um ambiente mais resiliente contra ameaças externas.
Tuning de Configuração do MariaDB Server
O tuning adequado do MariaDB Server é crucial para otimizar o desempenho e garantir a eficiência do banco de dados. Aqui estão algumas configurações importantes:
Edite o arquivo de configuração do MariaDB (geralmente localizado em /etc/mysql/mariadb.conf.d/50-server.cnf
):
root@db:~# vi /etc/mysql/mariadb.conf.d/50-Server.cnf
#Instead of skip-networking the default is now to listen only on
#localhost which is more compatible and is not less secure.
#bind-address = 127.0.0.1
skip-networking= 0
skip-bind-address
# * Fine Tuning
thread_cache_size = 16
key_buffer_size = 8388608
max_allowed_packet = 1073741824
sort_buffer_size = 262144
read_rnd_buffer_size = 262144
bulk_insert_buffer_size = 8M
myisam_sort_buffer_size = 8388608
innodb_buffer_pool_instances = 2
innodb_buffer_pool_size = 3221225472
max_heap_table_size = 256M
tmp_table_size = 256M
join_buffer_size = 8M
max_connections = 151
table_open_cache = 4096
table_definition_cache = 2432
innodb_flush_log_at_trx_commit = 2
innodb_log_file_size = 402653184
innodb_write_io_threads = 4
innodb_read_io_threads = 4
innodb_file_per_table = 1
innodb_flush_method = O_DIRECT
innodb_thread_concurrency = 0
innodb_buffer_pool_chunk_size = 134217728
Portanto, estimamos que a tabela de Eventos ocuparia aproximadamente 4 gigabytes em nosso banco de dados.
Reinicie o Serviço MariaDB e valide novamente os logs.
root@db:~# systemctl restart mariadb.service
root@db:~# systemctl status mariadb.service
mariadb.service – MariaDB 10.6.12 database Server
Active: active (running) since Thu 2023-09-09 22:46:23 UTC; 7s ago
Tuning do Ubuntu 22.04 – Ajustando o Swappiness
O Swappiness é um parâmetro do kernel Linux que controla a tendência do sistema operacional em trocar dados na RAM para a área de swap. Um valor mais baixo de Swappiness reduz a frequência de trocas para o disco, o que pode ser benéfico para o desempenho, especialmente em servidores de banco de dados.
Primeiro vamos ver nosso valor atual de swappiness:
root@Ubuntu22:~# sudo sysctl -a | grep swap
vm.swappiness = 60
Agora vamos ajustar:
root@Ubuntu22:~# sysctl -w vm.swappiness=5
root@Ubuntu22:~# grep swappiness /etc/sysctl.conf
root@Ubuntu22:~#
root@Ubuntu22:~# vi /etc/sysctl.conf
#See https://www.kernel.org/doc/html/latest/admin-guide/sysrq.html
#for what other values do
#kernel.sysrq=438
vm.swappiness = 5
Criando o Banco de Dados Zabbix
A criação do banco de dados Zabbix envolve a configuração do MariaDB Server, a definição de um banco de dados dedicado e a criação de usuários com permissões apropriadas. Siga os passos abaixo para realizar essa configuração. Ao realizar os passos com o usuário root, você será dispensado da necessidade de inserir a senha de root do banco de dados:
root@db:~# mysql -uroot -p
Enter password:
MariaDB [(none)]> create database Zabbix character set utf8mb4 collate utf8mb4_bin;
Query OK, 1 row affected (0.000 sec)
MariaDB [(none)]> create user [email protected] identified by ‘Senh4D0Usu4rioSQLZ4bb1x’;
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> create user [email protected] identified by ‘Senh4D0Usu4rioSQLZ4bb1x’;
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> create user [email protected] identified by ‘Senh4D0Usu4rioSQLZ4bb1x’;
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> grant all privileges on Zabbix.* to [email protected];
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> grant all privileges on Zabbix.* to [email protected];
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> grant all privileges on Zabbix.* to [email protected];
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> set global log_bin_trust_function_creators = 1;
Query OK, 0 rows affected (0.000 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.000 sec)
MariaDB [(none)]> quit
Bye
Agora vamos baixar os scripts SQL para estruturar nosso banco de dados Zabbix:
root@db:~# wget https://repo.Zabbix.com/Zabbix/6.0/ubuntu/pool/main/z/Zabbix-release/Zabbix-release_6.0-4+ubuntu22.04_all.deb
root@db:~# dpkg -i Zabbix-release_6.0-4+ubuntu22.04_all.deb
root@db:~# apt update
root@db:~#apt upgrade
Reading package lists… Done
15 packages can be upgraded.
Do you want toi continue? (Y/n) Y
…
Fetched 32.6 MB in 19s (1741 kB/s)
Extracting templates from packages: 100%
Preconfiguring packages …
done.
root@db:~# apt install Zabbix-sql-scripts Zabbix-agent
Agora vamos importar os schemas e estruturas do banco de dados Zabbix para nosso servidor:
root@db:~# zcat /usr/share/Zabbix-sql-scripts/mysql/Server.sql.gz | mysql –default-character-set=utf8mb4 -uroot -p Zabbix
Enter password:
root@db:~#
Se nenhuma mensagem de erro for exibida, é provável que tenha dado tudo certo.
Podemos confirmar acessando o mysql e exibindo as tabelas geradas no banco de dados Zabbix:
root@db:~# mysql -uroot -p
Enter password:
MariaDB [(none)]> show databases;
…
| Zabbix |
+——————–+
5 rows in set (0.001 sec)
MariaDB [(none)]> use Zabbix;
Database changed
MariaDB [Zabbix]> show tables;
+—————————-+
| Tables_in_Zabbix |
+—————————-+
| acknowledges |
| actions |
…
| correlation |
| dashboard |
…
173 rows in set (0.001 sec)
MariaDB [Zabbix]> quit
Ebook: Desvendando o Zabbix
Aprofunde-se ainda mais no mundo do Zabbix com nosso ebook abrangente. Apoie nosso trabalho e fortaleça seus conceitos em monitoramento.
Este artigo é apenas o ponto de partida! Continue sua jornada pelo universo do Zabbix conosco. Inscreva-se, compartilhe e participe da discussão abaixo, enriquecendo nossa comunidade com suas experiências e dúvidas. Agradecemos por fazer parte da vibrante comunidade RunbookBR.
Enquanto desvendamos os intricados detalhes do Zabbix neste artigo, percebemos que há muito mais a explorar. Se você busca informações mais detalhadas, casos práticos e uma compreensão aprofundada do Zabbix, mergulhe em nosso ebook “Desvendando o Zabbix”.
Nessa obra abrangente, a RunbookBR compartilha anos de experiência prática e especialização no Zabbix. Dos fundamentos às técnicas avançadas, nosso ebook é uma fonte valiosa para todos, desde iniciantes até profissionais experientes.
Ao adquirir o ebook, você não apenas amplia seu conhecimento em monitoramento, mas também apoia ativamente a RunbookBR, possibilitando a criação contínua de conteúdo educativo e envolvente para toda a comunidade de tecnologia. Juntos, construímos conhecimento e fortalecemos nossa comunidade.
Conclusão
Explore a fundo o universo do Zabbix ao garantir seu exemplar do ebook “Desvendando o Zabbix” agora mesmo no Amazon Kindle. Junte-se a nós nessa jornada de aprendizado constante e aprimore suas habilidades em monitoramento com a qualidade da RunbookBR.
Agradecemos imensamente pelo seu apoio contínuo e interesse. Continue conectado com nossas publicações, vídeos e atualizações, pois estamos dedicados a proporcionar o melhor em conhecimento e práticas no universo do Zabbix.
Até a próxima etapa da sua jornada, que seja repleta de sucesso e descobertas no emocionante campo do monitoramento!