Instalar o Cacti no

Introdução

O Cacti é uma ferramenta de monitoramento de rede que utiliza o RRDTool, PHP e MariaDB para fornecer informações detalhadas sobre o desempenho e a utilização da rede. Com gráficos personalizáveis, o RRDTool coleta dados, enquanto o PHP permite a interação com a interface web. O MariaDB é o banco de dados onde as informações são armazenadas.  O Cacti é amplamente utilizado para identificar gargalos de desempenho, acompanhar o tráfego de rede e realizar análises de tendências. Com recursos de alerta e relatórios, ajuda a garantir um ambiente de rede mais eficiente e confiável.

Preparando seu servidor: Atualizações, Vim e SELinux

Atualizações: 

Antes de executar as atualizações, vamos instalar o repositório EPEL-RELEASE. O "epel-release" é um repositório de pacotes adicionais para sistemas operacionais baseados em Red Hat, como o Oracle Linux, CentOS e o RHEL (Red Hat Enterprise Linux). Ao instalá-lo, você adiciona o repositório EPEL (Extra Packages for Enterprise Linux) ao seu sistema.


sudo dnf install epel-release


Execute as atualizações do sistema:

sudo dnf update

Vim:

Instale o editor de texto Vim para facilitar a edição de arquivos de configuração:

sudo dnf install vim

 

SELinux:

Temporariamente, desabilite o SELinux editando o arquivo de configuração, altere a linha  "SELINUX=enforcing" para "SELINUX=disabled". :

sudo vim /etc/sysconfig/selinux

 

Reinicie o servidor executando "sudo reboot now" para reiniciar o sistema e aplicar as alterações.

sudo reboot now

Com estas etapas garantimos um ambiente atualizado e prático. Lembre-se de reativar o SELinux se necessário, para manter a segurança do sistema.

Instalar o Apache

httpd:

O pacote "httpd" é o servidor web Apache, que permite hospedar e fornecer conteúdo na web.

httpd-tools:

O pacote "httpd-tools" fornece ferramentas e utilitários adicionais para o servidor web Apache.


Para instalá-lo use o seguinte comando:

sudo dnf install httpd httpd-tools

 

com o comando seguinte habilitamos e iniciamos o serviço httpd:

sudo systemctl enable --now httpd

Instalando o PHP

Para que o Cacti funcione adequadamente, é necessário instalar o PHP e os módulos necessários. 


O PHP desempenha um papel fundamental no ambiente do Cacti. Com o suporte aos módulos específicos do PHP instalados, o Cacti pode extrair informações dos dispositivos de rede, armazenar dados em um banco de dados e gerar gráficos e relatórios usando estes dados, que serão usados para monitorar e analisar o desempenho da rede.

Siga os passos abaixo para instalar o PHP e configurá-lo para ser utilizado com o Cacti:

Instale o PHP e os módulos necessários executando o seguinte comando:

sudo dnf install -y php php-xml php-session php-sockets php-ldap php-gd php-json php-mysqlnd php-gmp php-mbstring php-posix php-snmp php-intl

 

Uma vez instalado, teremos de modificar algumas configurações para podermos usar com o Cacti.  A primeira coisa será modificar o arquivo "/etc/php.ini", neste arquivo modificaremos a variável "date.timezone" para usar "America/Sao_Paulo" entre outras. Primeiro, abra o arquivo usando o Vim:

sudo vim /etc/php.ini

 

Localize as linhas abaixo no arquivo e ajuste os valores de como abaixo:

date.timezone = America/Sao_Paulo

memory_limit = 512M

max_execution_time = 60

max_input_vars = 1000

Salve as alterações feitas no arquivo pressionando ESC e digitando ":x" sem aspas para fechar e sair do Vim.

Confira aqui a lista completa dos timezones suportadas pelo PHP

Reinicie os serviços do Apache e PHP:

sudo systemctl restart httpd php-fpm.service

NOTA IMPORTANTE: Caso o Timezone não esteja configurado corretamente, você terá problemas para abrir a interface web. Tenha certeza de inserir a informação correta de acordo com a sua região.

Instalando o MariaDB

O MariaDB desempenha um papel essencial no ambiente do Cacti, fornecendo a estrutura necessária para armazenar e gerenciar os dados coletados e processados pelo Cacti. Após a instalação e configuração adequadas do MariaDB, o Cacti pode armazenar dados de monitoramento de rede de forma segura e eficiente, permitindo a geração de relatórios, gráficos e análises precisas sobre o desempenho da rede. 

O MariaDB é uma escolha popular para aplicativos que exigem acesso rápido e eficiente a grandes quantidades de dados por ser robusto, ter bom desempenho e confiabilidade. Você pode instalar outros databases como PostgreSQL, Oracle DB e Microsoft SQL Server porém neste tutorial , seguiremos com o MariaDB.

Instale e habilite o MariaDB com os comandos a seguir:

sudo dnf install -y mariadb-server mariadb

sudo systemctl enable --now mariadb

 

Ao instalar o MariaDB o script mysql_secure_installation será instalado automaticamente, usamos este script para aumentar a segurança em nossa instalação com o seguinte comando:

sudo mysql_secure_installation

 

Ao executar o script acima, teremos de passar algumas respostas:

....

Enter current password for root (enter for none): 

......

Switch to unix_socket authentication [Y/n] Y

.....

Change the root password? [Y/n] Y

New password:  <Nova-senha-usuário-root>

Re-enter new password: <Nova-senha-usuário-root>

....

Remove anonymous users? [Y/n] Y

....

Disallow root login remotely? [Y/n] Y

.....

Remove test database and access to it? [Y/n] Y

......

Reload privilege tables now? [Y/n] Y

...

Thanks for using MariaDB!

Criando o banco de dados do Cacti e configurando o MariaDB


Após garantir a segurança do MariaDB, vamos criar um banco de dados específico para o Cacti e configurar as permissões de acesso. Siga as etapas abaixo:


Faça login no MariaDB utilizando o seguinte comando:

sudo mysql -u root -p


No prompt do MariaDB, execute os seguintes comandos para criar o banco de dados "cacti" e conceder acesso a esse banco de dados para o usuário "cacti":

CREATE DATABASE cacti;

GRANT ALL ON cacti.* TO 'cacti'@'localhost' IDENTIFIED BY '<Senha-usuário-cacti>';

FLUSH PRIVILEGES;

EXIT 


Verifique a versão do MariaDB para que possamos inserir as próximas configurações no local correto do arquivo "mariadb-server.cnf". Execute o seguinte comando:

mariadb --version


Aqui vemos que a versão instalada é a 10.5, então abrimos o arquivo de configuração mariadb-server.cnf e procuramos o bloco para esta versão.

mariadb  Ver 15.1 Distrib 10.5.16-MariaDB, for Linux (x86_64) using  EditLine wrapper

**Se sua versão é diferente, coloque no bloco correspondente à sua versão.


Abra o arquivo de configuração "mariadb-server.cnf" utilizando o editor de texto Vim:

sudo vim /etc/my.cnf.d/mariadb-server.cnf

 

Dentro do arquivo, adicione o seguinte conteúdo ao bloco correspondente à versão do MariaDB que você anotou:

[mariadb-10.5]

character-set-server=utf8mb4

collation-server=utf8mb4_unicode_ci

max_heap_table_size=128M

tmp_table_size=128M

join_buffer_size=256M

innodb_buffer_pool_size=1405M

innodb_file_format=Barracuda

innodb_doublewrite=OFF

innodb_large_prefix=1

innodb_flush_log_at_timeout=3

innodb_read_io_threads=32

innodb_write_io_threads=16

innodb_buffer_pool_instances=16

innodb_io_capacity=5000

innodb_io_capacity_max=10000


Após modificar e salvar o arquivo, reinicie o serviço MariaDB

sudo systemctl restart mariadb


Importe o arquivo de configuração "mysql_test_data_timezone.sql" para garantir que o banco de dados tenha as configurações de fuso horário necessárias:

sudo mysql -u root -p mysql < /usr/share/mariadb/mysql_test_data_timezone.sql


Com as configurações do arquivo mysql_test_data_timezone.sql importadas com sucesso, entre no prompt de comando mysql e execute as configurações Unicode:

sudo mysql -u root -p


No prompt do MariaDB, execute os seguintes comandos para configurar o suporte Unicode:

GRANT SELECT ON mysql.time_zone_name TO cacti@localhost;

ALTER DATABASE cacti CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

FLUSH PRIVILEGES;

QUIT

Instale SNMP e RRD Tool:

Para que o Cacti funcione adequadamente, é necessário instalar o SNMP (Simple Network Management Protocol) e o RRD Tool (Round Robin Database Tool). Estas ferramentas desempenham um papel fundamental no monitoramento e coleta de dados de rede pelo Cacti. 

Execute o seguinte comando para instalar o e habilitar os serviços do RRD Tool e SNMP conforme abaixo:

sudo dnf -y install net-snmp net-snmp-utils net-snmp-libs rrdtool

sudo systemctl enable --now snmpd

Instalando o Cacti

Com os pré-requisitos todos instalados e configurados, agora podemos instalar o Cacti usando o dnf:

sudo dnf install cacti -y

**Caso ocorra algum erro ao tentar instalar o Cacti, verifique se o EPEL RELEASE foi instalado conforme a instrução de preparação do servidor no início do tutorial.


Com o Cacti instalado podemos começar a configurá-lo. Para configurar o Cacti, é necessário importar o arquivo "cacti.sql" para o banco de dados do MariaDB, fornecendo a estrutura e as tabelas necessárias para o funcionamento correto da ferramenta:

sudo mysql -u root -p cacti < /usr/share/doc/cacti/cacti.sql


Em seguida modificamos o usuário e senha no arquivo config.php para que o PHP acesse o Data-base:

sudo vim /usr/share/cacti/include/config.php


Modifique as variáveis $database_default e $database_username no arquivo de configuração para o mesmo usuário e senha criados para no MariaDB, neste exemplo usaremos a palavra "cacti", mas em um ambiente de produção recomendamos usar algo mais seguro.  

$database_type     = 'mysql';

$database_default  = 'cacti';

$database_hostname = 'localhost';

$database_username = 'cacti';

$database_port     = '3306';

$database_retries  = 5;

$database_ssl      = false;

$database_ssl_key  = '';

$database_ssl_cert = '';

$database_ssl_ca   = '';

$database_persist  = false;

$poller_id = 1;

$cacti_session_name = 'Cacti';

$cacti_db_session = false;

$disable_log_rotation = true;

$proxy_headers = null;


Descomente a tarefa cron no arquivo abaixo, simplesmente remova o "#" do início da linha

sudo vim /etc/cron.d/cacti


*/5 * * * *     apache  /usr/bin/php /usr/share/cacti/poller.php > /dev/null 2>&1


Remova as restrições do diretório inicial para podermos finalizar a instalação do Cacti pela interface web, modificando o arquivo abaixo:

sudo vim /etc/httpd/conf.d/cacti.conf


Substitua o "Require host localhost" para " Allow from 10.10.10.0/24" e "Require all denied" para "Require all granted"

Alias /cacti    /usr/share/cacti

 

 

<Directory /usr/share/cacti/>

        <IfModule mod_authz_core.c>

                # httpd 2.4

                Require all granted

        </IfModule>

        <IfModule !mod_authz_core.c>

                # httpd 2.2

                Order deny,allow

                Deny from all

                Allow from 172.16.10.0/24

        </IfModule>

</Directory>


Reinicie o serviço apache

sudo systemctl restart httpd


Finalizamos criando regras de firewall permitindo o serviço apache para o protocolo http:

sudo firewall-cmd --permanent --add-service=http

sudo firewall-cmd --reload


Testamos se o servidor está respondendo requisiçõe http com o comando abaixo:

curl http://localhost/cacti

Você deverá ter um resultado parecido com o seguinte:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">

<html><head>

<title>301 Moved Permanently</title>

</head><body>

<h1>Moved Permanently</h1>

<p>The document has moved <a href="http://localhost/cacti/">here</a>.</p>

</body></html>

Configurando a Interface Web

Após concluir a instalação no servidor, precisamos efetuar a configuração do Cacti no servidor web.

Abra um navegador e digite o IP do servidor seguido de "/cacti" conforme o exemplo abaixo:

http://IP_DO_SERVIDOR/cacti/

2. Se digitada a senha corretamente, o sistema irá solicitar a troca para uma nova senha. Você deve inserir a nova senha com letras maiúsculas, minúsculas, símbolos e números e também com pelo menos 8 caracteres.

Clique em "Salvar" para efetuar a troca da senha.

3. Você será direcionado para a tela de escolha do tema (1), idioma (2) e aceitar os termos de licença (3).

Aqui optamos pelo tema Mitwinter. Você pode deixar no tema padrão, escolher um tema de sua preferência ou selecionar este tema para visualizar as telas seguintes como a deste tutorial. O tema pode ser alterado futuramente.

Clique em Begin (caso esteja em inglês conforme seta) para avançar. Você utilizará este botão para avançar todas as próximas etapas.

4. Agora a instalação irá checar se todos os itens como Banco de Dados, PHP, Webserver etc. foram configurados corretamente. 

5. O sistema pode te sugerir itens a serem modificados, corrigidos ou apenas apontar que está devidamente configurado.

Em nosso caso, o sistema sugeriu que o join_buffer_size e  sort_buffer_size fossem modificados, porém não é necessário e vamos prosseguir a instalação.

6. Nessa tela, apenas prossiga.

7. A instalação irá verificar se todos os diretórios e arquivos e diretórios do Cacti podem ser gravados/alterados pelo sistema. Caso haja problema de permissionamento, ele irá informar o que deve ser corrigido.

8. Nesta tela, você será informado sobre os diretórios dos arquivos do Cacti bem como os logs. Essa parte é extremamente importante para resolução de problemas do sistema. Guarde junto à documentação da ferramenta essas informações.

9. Você também poderá consultar este tutorial para validação dos locais de binários e logs do Cacti e dependências.

/usr/bin/rrdtool

/usr/bin/snmpwalk

/usr/bin/snmpget

/usr/bin/snmpbulkwalk

/usr/bin/snmpgetnext

/usr/bin/snmptrap

/usr/sbin/sendmail

/usr/local/spine/bin/spine

/usr/share/cacti/log/cacti.log

/usr/share/cacti/log/cacti_stderr.log

10. A proteção de validação de entrada por lista de permissões (input validation whitelist protection) é um recurso de segurança essencial no Cacti. Ele ajuda a prevenir ataques de injeção de código, garantindo que apenas dados válidos e seguros sejam aceitos pelo sistema. Ao utilizar uma lista pré-definida de valores permitidos, a proteção de whitelist valida os dados de entrada, rejeitando qualquer entrada que não corresponda aos valores permitidos. Essa medida ajuda a manter a integridade e a segurança dos dados, evitando a exploração de vulnerabilidades.

Marque a caixa que indica que você leu as informações da tela e avance (é para ler viu haha).

11. Informe a rede que o Cacti fará a monitoração conforme abaixo.

12. Avance novamente.

13. Avance novamente.

14. Marque a caixa para confirmar a instalação e clique em install.

15. O Cacti iniciará as configurações e ajustes finais.

16. Com a instalação concluída, clique em "Get Started" para iniciar.

17. Clique em "View".

18. Clique em Local Linux Machine para ver o início do monitoramento do próprio servidor. Deve aparecer os gráficos do Cacti indicando que já está coletano informações.

Pronto, você concluiu a instalação do Cacti corretamente e já poderá efetuar as configurações para receber dados SNMP de sua rede.

Para mais informações, veja a documentação oficial do Cacti aqui.